![EDA技術(shù)VHDL順序語(yǔ)句演示文稿_第1頁(yè)](http://file4.renrendoc.com/view/d98912a4b579cc7139012535293cb1de/d98912a4b579cc7139012535293cb1de1.gif)
![EDA技術(shù)VHDL順序語(yǔ)句演示文稿_第2頁(yè)](http://file4.renrendoc.com/view/d98912a4b579cc7139012535293cb1de/d98912a4b579cc7139012535293cb1de2.gif)
![EDA技術(shù)VHDL順序語(yǔ)句演示文稿_第3頁(yè)](http://file4.renrendoc.com/view/d98912a4b579cc7139012535293cb1de/d98912a4b579cc7139012535293cb1de3.gif)
![EDA技術(shù)VHDL順序語(yǔ)句演示文稿_第4頁(yè)](http://file4.renrendoc.com/view/d98912a4b579cc7139012535293cb1de/d98912a4b579cc7139012535293cb1de4.gif)
![EDA技術(shù)VHDL順序語(yǔ)句演示文稿_第5頁(yè)](http://file4.renrendoc.com/view/d98912a4b579cc7139012535293cb1de/d98912a4b579cc7139012535293cb1de5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
EDA技術(shù)VHDL順序語(yǔ)句演示文稿1現(xiàn)在是1頁(yè)\一共有63頁(yè)\編輯于星期日
FORLOOP重復(fù)次數(shù)已知;循環(huán)變量是整數(shù)型變量,不需要在結(jié)構(gòu)體或進(jìn)程中定義,在循環(huán)體中不能通過(guò)信號(hào)或變量給循環(huán)變量賦值。
WHILELOOP重復(fù)次數(shù)未知;標(biāo)號(hào)是可省略;2現(xiàn)在是2頁(yè)\一共有63頁(yè)\編輯于星期日【例】SIGNALbyte:STD_LOGIC_VECTOR(3DOWNTO0);…VARIABLEsum:integerrange0to100:=0;...loop1:WHILEi<=9LOOPi:=i+1;sum:=sum+1;endlooploop1;loop2:foriinbyte’rangeloopsum:=sum+2;endlooploop2;loop3:foriinbyte’lowtobyte’highloopsum:=sum+3;endloop;3DOWNTO00TO33現(xiàn)在是3頁(yè)\一共有63頁(yè)\編輯于星期日【例】
For循環(huán)(奇偶校驗(yàn)電路):Entityparity_checkerIs
Port(data:Instd_logic_vector(7downto
0);
p:Outstd_logic);Endparity_checker;ArcLitecturebehaviorOfparity_checkerIs
Begin
4現(xiàn)在是4頁(yè)\一共有63頁(yè)\編輯于星期日Process(data)
Variabletmp:std_logic;
Begin
tmp:=‘0’;
Forn
in7downto0Loop
tmp:=tmpxordata(n);
EndLoop;
p<=tmp;EndProcess;Endbehavior;5現(xiàn)在是5頁(yè)\一共有63頁(yè)\編輯于星期日思考:如果中間變量tmp修改為信號(hào),電路的功能還能正常實(shí)現(xiàn)嗎?(實(shí)驗(yàn)中練習(xí))6現(xiàn)在是6頁(yè)\一共有63頁(yè)\編輯于星期日【例】利用LOOP語(yǔ)句簡(jiǎn)化同類順序語(yǔ)句的表達(dá)式SIGNALA,B,C:STD_LOGIC_VECTOR(1TO3);…FORNIN1TO3LOOPA(N)<=B(N)ANDC(N);ENDLOOP;等效于:A(1)<=B(1)ANDC(1);A(2)<=B(2)ANDC(2);A(3)<=B(3)ANDC(3);7現(xiàn)在是7頁(yè)\一共有63頁(yè)\編輯于星期日NEXT[LOOP標(biāo)號(hào)][WHEN條件表達(dá)式];NEXT的語(yǔ)句格式NEXT語(yǔ)句四種形式:NEXT;NEXTLOOP標(biāo)號(hào);NEXTWHEN條件表達(dá)式;NEXTLOOP標(biāo)號(hào)WHEN條件表達(dá)式;NEXT語(yǔ)句主要用在LOOP語(yǔ)句中有條件的或無(wú)條件地開(kāi)始下次循環(huán)。8現(xiàn)在是8頁(yè)\一共有63頁(yè)\編輯于星期日當(dāng)LOOP標(biāo)號(hào)缺省時(shí),跳回到本次循環(huán)LOOP語(yǔ)句開(kāi)始處,開(kāi)始下一次循環(huán);否則跳轉(zhuǎn)到指定標(biāo)號(hào)的LOOP語(yǔ)句開(kāi)始處,重新開(kāi)始執(zhí)行循環(huán)操作。當(dāng)WHEN缺省時(shí),即刻無(wú)條件終止當(dāng)前的循環(huán);若WHEN子句出現(xiàn),則當(dāng)條件表達(dá)式的值為T(mén)RUE,則執(zhí)行NEXT語(yǔ)句,進(jìn)入跳轉(zhuǎn)操作,否則繼續(xù)向下執(zhí)行。9現(xiàn)在是9頁(yè)\一共有63頁(yè)\編輯于星期日【例】…L1:FORCNT_VALUEIN1TO8LOOPA(CNT_VALUE):=‘0’;NEXTWHEN(B=C);A(CNT_VALUE+8):=‘0’;ENDLOOPL1;10現(xiàn)在是10頁(yè)\一共有63頁(yè)\編輯于星期日在多重循環(huán)中,NEXT語(yǔ)句必須加上跳轉(zhuǎn)標(biāo)號(hào)。11現(xiàn)在是11頁(yè)\一共有63頁(yè)\編輯于星期日【例】…L_X:FORCNT_VALUEIN1TO8LOOPA(CNT_VALUE):=‘0’;
K:=0;
L_Y:LOOPB(k):=‘0’;
NEXTL_XWHEN(E>F):B(k+8):=‘0’;
K:=K+1;
NEXTLOOPL_Y;NEXTLOOPL_X;…12現(xiàn)在是12頁(yè)\一共有63頁(yè)\編輯于星期日EXIT[LOOP標(biāo)號(hào)][WHEN條件表達(dá)式];EXIT的語(yǔ)句格式EXIT語(yǔ)句四種形式:EXIT;EXITLOOP標(biāo)號(hào);EXITWHEN條件表達(dá)式;EXITLOOP標(biāo)號(hào)WHEN條件表達(dá)式;EXIT語(yǔ)句主要用在LOOP語(yǔ)句中有條件的或無(wú)條件地跳出循環(huán)。13現(xiàn)在是13頁(yè)\一共有63頁(yè)\編輯于星期日當(dāng)LOOP標(biāo)號(hào)缺省時(shí),跳到EndLoop語(yǔ)句的后繼位置,開(kāi)始向后執(zhí)行;如果標(biāo)號(hào)不省略,則可以跳到多層嵌套循環(huán)的指定外層循環(huán)起始處。當(dāng)WHEN缺省時(shí),無(wú)條件跳出循環(huán)。如果“When條件”不省略,則條件為T(mén)rue時(shí),跳出循環(huán)。14現(xiàn)在是14頁(yè)\一共有63頁(yè)\編輯于星期日Next只結(jié)束本次循環(huán),開(kāi)始下一次循環(huán);跳向LOOP語(yǔ)句的起始點(diǎn)。Exit語(yǔ)句結(jié)束整個(gè)循環(huán),跳出循環(huán)體外。跳向LOOP語(yǔ)句的終點(diǎn)。Next語(yǔ)句和Exit語(yǔ)句的區(qū)別15現(xiàn)在是15頁(yè)\一共有63頁(yè)\編輯于星期日【例】SIGNALA,B:STD_LOGIC_VECTOR(1DOWNTO0);SIGNALA_LESS_THEN_B:BOOLEAN;…A_LESS_THEN_B<=FLASE;--設(shè)初始值FORIIN1DOWNTO0LOOPIF(A(I)=‘1’ANDB(I)=‘0’)THENA_LESS_THEN_B<=FALSE;
EXIT;ELSIF(A(I)=‘0’ANDB(I)=‘1’)THENA_LESS_THEN_B<=TRUE;--A<BEXIT;ELSE;
NULL;ENDIF;ENDLOOP;16現(xiàn)在是16頁(yè)\一共有63頁(yè)\編輯于星期日NULL;NULL的語(yǔ)句格式空語(yǔ)句不會(huì)執(zhí)行任何操作;NULL常用于CASE語(yǔ)句中,為滿足所有可能的條件,利用NULL來(lái)表示所余的不用條件下的操作行為。NULL語(yǔ)句17現(xiàn)在是17頁(yè)\一共有63頁(yè)\編輯于星期日【例】CASEOPCODEISWHEN“001”=>TMP:=REGAANDREGB;
WHEN“101”=>TMP:=REGAORREGB;
WHEN“110”=>TMP:=NOTREGA;
WHENOTHERS=>NULL;ENDCASE;此例類似于一個(gè)CPU內(nèi)部的指令譯碼器功能。“001”,"101"和“110”分別代表指令操作碼,對(duì)于它們所對(duì)應(yīng)在寄存器中的操作數(shù)的操作算法,CPU只能對(duì)這三種指令碼作反應(yīng),當(dāng)出現(xiàn)其他碼時(shí),不作任何操作。18現(xiàn)在是18頁(yè)\一共有63頁(yè)\編輯于星期日與其他的EDA工具不同,MAX+plusII對(duì)NULL語(yǔ)句的執(zhí)行會(huì)出現(xiàn)擅自加入鎖存器的情況,因此,應(yīng)避免使用NULL語(yǔ)句,改用確定操作。如可改為:
WHENOTHERS=>TMP:=REGA;19現(xiàn)在是19頁(yè)\一共有63頁(yè)\編輯于星期日WAITUNTIL條件表達(dá)式;WAITFOR時(shí)間表達(dá)式;WAITON信號(hào)列表;WAIT;WAIT的語(yǔ)句格式在進(jìn)程中(包括過(guò)程中),當(dāng)進(jìn)程執(zhí)行到Wait語(yǔ)句時(shí),將被掛起,并設(shè)置好再次執(zhí)行的條件??梢允菬o(wú)限等待(Wait)或有限等待。注意:已列出敏感量的進(jìn)程中不能使用任何形式的WAIT語(yǔ)句WAIT語(yǔ)句20現(xiàn)在是20頁(yè)\一共有63頁(yè)\編輯于星期日信號(hào)列表可以包括一個(gè)或多個(gè)信號(hào),信號(hào)列表中的任何一個(gè)信號(hào)的值發(fā)生變化,進(jìn)程將結(jié)束掛起狀態(tài),進(jìn)入執(zhí)行狀態(tài),執(zhí)行Waiton語(yǔ)句后面的語(yǔ)句。Waiton信號(hào)列表;如:
Waitona,b,s;它等待信號(hào)a、b、s中的任何一個(gè)發(fā)生變化。21現(xiàn)在是21頁(yè)\一共有63頁(yè)\編輯于星期日【例】Entitymux2Is
Port(a,b:Instd_logic;
s:Instd_logic;
f:Outstd_logic);Endmux2;ArchitecturebehaviorOfmux2IsBegin
mux2:Process(a,b,s)
Begin
If(s=‘0’)Thenf<=a;
Elsef<=b;
EndIf;
EndProcess;Endbehavior;mux2:Process()Begin
If(s=‘0’)Thenf<=a;
Elsef<=b;
EndIf;
Waitona,b,s;EndProcess;22現(xiàn)在是22頁(yè)\一共有63頁(yè)\編輯于星期日當(dāng)條件表達(dá)式為“真”時(shí),進(jìn)程將結(jié)束掛起狀態(tài),進(jìn)入執(zhí)行狀態(tài),執(zhí)行WaitUntil語(yǔ)句的后繼語(yǔ)句。WAITUNTIL條件表達(dá)式如:
WaitUntila=’1’;
a的值不是’1’時(shí),進(jìn)程執(zhí)行到該語(yǔ)句將被掛起,a的值為’1’時(shí),進(jìn)程再次被啟動(dòng),繼續(xù)執(zhí)行Wait語(yǔ)句的后繼語(yǔ)句。23現(xiàn)在是23頁(yè)\一共有63頁(yè)\編輯于星期日WAIT_UNTIL語(yǔ)句有以下三種表達(dá)方式:WAITUNTIL信號(hào)=VALUE; WAITUNTIL信號(hào)'EVENTAND信號(hào)=VALUE;WAITUNTILNOT信號(hào)'STABLEAND信號(hào)=VALUE24現(xiàn)在是24頁(yè)\一共有63頁(yè)\編輯于星期日CLOCK上跳沿啟動(dòng)進(jìn)程:WAITUNTILCLOCK=‘1’;WAITUNTILRISING_EDGE(CLOCK);WAITUNTILNOTCLOCK'STABLEANDCLOCK='1';WAITUNTILCLOCK=‘1’ANDCLOCK'EVENT;25現(xiàn)在是25頁(yè)\一共有63頁(yè)\編輯于星期日【例】PROCESSBEGINWAITUNTILCLK=‘1’;AVE<=A;WAITUNTILCLK=‘1’;AVE<=AVE+A;WAITUNTILCLK=‘1’;AVE<=AVE+A;WAITUNTILCLK=‘1’;AVE<=(AVE+A)/4;ENDPROCESS;功能?26現(xiàn)在是26頁(yè)\一共有63頁(yè)\編輯于星期日完成一個(gè)硬件求平均的功能,每一個(gè)時(shí)鐘脈沖由A輸入一個(gè)數(shù)值,4個(gè)時(shí)鐘脈沖后將獲得此4個(gè)數(shù)值的平均值。27現(xiàn)在是27頁(yè)\一共有63頁(yè)\編輯于星期日【例】PROCESSBEGINRST_LOOP:LOOPWAITUNTILCLOCK=‘1’ANDCLOCK'EVENT;
NEXTRST_LOOPWHEN(RST=‘1’); X<=A;
WAITUNTILCLOCK=‘1’ANDCLOCK'EVENT;
NEXTRST_LOOPWHEN(RST=‘1’);Y<=B;
ENDLOOPRST_LOOP;ENDPROCESS;每一時(shí)鐘上升沿都結(jié)束進(jìn)程的掛起,繼而檢測(cè)電路的復(fù)位是否為高。如果是,則返回循環(huán)的起點(diǎn);否則,則進(jìn)行正常的順序語(yǔ)句執(zhí)行操作。28現(xiàn)在是28頁(yè)\一共有63頁(yè)\編輯于星期日WAITFor時(shí)間表達(dá)式如:
WaitFor30ns;
WaitFor語(yǔ)句只能仿真時(shí)使用,不能被綜合。
為超時(shí)語(yǔ)句,從執(zhí)行語(yǔ)句開(kāi)始,在規(guī)定時(shí)間段內(nèi),進(jìn)程掛起,當(dāng)超過(guò)這一時(shí)間段后,進(jìn)程自動(dòng)恢復(fù)執(zhí)行。29現(xiàn)在是29頁(yè)\一共有63頁(yè)\編輯于星期日例如:
Waitonclkuntilclk=‘1’;
復(fù)合Wait語(yǔ)句編程時(shí)注意等待條件的判別,不要出現(xiàn)“死鎖”狀態(tài)(即無(wú)限期等待)。30現(xiàn)在是30頁(yè)\一共有63頁(yè)\編輯于星期日斷言語(yǔ)句主要作為仿真和調(diào)試中的人-機(jī)會(huì)話,給出一個(gè)文字串作為警告和錯(cuò)誤提示信息。當(dāng)執(zhí)行Assert語(yǔ)句時(shí),就會(huì)對(duì)條件進(jìn)行判別。如果條件為“真”,則執(zhí)行下一條語(yǔ)句;如果條件為“假”,則輸出由report指定的輸出信息和由severity指定的錯(cuò)誤級(jí)別。在report后面跟的是設(shè)計(jì)者所寫(xiě)的文字串,通常是說(shuō)明錯(cuò)誤的原因,文字串應(yīng)該用雙引號(hào)“”引起來(lái)。斷言語(yǔ)句不可綜合,僅僅是為了仿真的方便。斷言語(yǔ)句AssertAssert條件[report輸出信息]
[severity級(jí)別]Assert語(yǔ)句的格式31現(xiàn)在是31頁(yè)\一共有63頁(yè)\編輯于星期日例:
Assert
(a<=255)report”a
outofedge”;
severityerror;
該斷言語(yǔ)句的條件是信號(hào)量B=’1’。如果執(zhí)行到該語(yǔ)句時(shí),信號(hào)量B=’0’,說(shuō)明條件不滿足,就會(huì)輸出report后跟的文字串。該文字串說(shuō)明,出現(xiàn)了超時(shí)等待錯(cuò)誤。severity后跟的錯(cuò)誤級(jí)別告訴操作人員,其出錯(cuò)級(jí)別為error。32現(xiàn)在是32頁(yè)\一共有63頁(yè)\編輯于星期日后面介紹。子程序調(diào)用及返回語(yǔ)句33現(xiàn)在是33頁(yè)\一共有63頁(yè)\編輯于星期日小結(jié)順序語(yǔ)句賦值語(yǔ)句轉(zhuǎn)向控制語(yǔ)句
(If、Case、Loop、Next、Exit)等待語(yǔ)句(wait)子程序調(diào)用語(yǔ)句斷言語(yǔ)句(assert)空操作語(yǔ)句(null)34現(xiàn)在是34頁(yè)\一共有63頁(yè)\編輯于星期日作業(yè)1:設(shè)計(jì)一個(gè)3-8譯碼器:35現(xiàn)在是35頁(yè)\一共有63頁(yè)\編輯于星期日
【例】(a)WAIT_UNTIL結(jié)構(gòu)(b)WAIT_ON結(jié)構(gòu)
... LOOPWAITUNTILENABLE=‘1’;WAITONENABLE... EXITWHENENABLE=‘1’;
ENDLOOP;由以上脫離掛起狀態(tài)、重新啟動(dòng)進(jìn)程的兩個(gè)條件可知,例3.4.20結(jié)束掛起所需滿足的條件,實(shí)際上是一個(gè)信號(hào)的上跳沿。因?yàn)楫?dāng)滿足所有條件后ENABLE為1,可推知ENABLE一定是由0變化來(lái)的。因此,上例中進(jìn)程的啟動(dòng)條件是ENABLE出現(xiàn)一個(gè)上跳信號(hào)沿。36現(xiàn)在是36頁(yè)\一共有63頁(yè)\編輯于星期日一般地,在一個(gè)進(jìn)程中使用了WAIT語(yǔ)句后,經(jīng)綜合就會(huì)產(chǎn)生時(shí)序邏輯電路。時(shí)序邏輯電路的運(yùn)行依賴于時(shí)鐘的上升沿或下降沿,同時(shí)還具有數(shù)據(jù)存儲(chǔ)的功能。下例就是一個(gè)比較好的說(shuō)明,此例描述了一個(gè)可預(yù)置校驗(yàn)對(duì)比值的四位奇偶校驗(yàn)電路,它的功能除對(duì)輸入的4位碼DATA(0TO3)進(jìn)行奇偶校驗(yàn)外,還將把校驗(yàn)結(jié)果與預(yù)置的校驗(yàn)值NEW_CORRECT_PARITY進(jìn)行比較,并將比較值PARITY_OK輸出。37現(xiàn)在是37頁(yè)\一共有63頁(yè)\編輯于星期日【例】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYPARIISPORT(CLOCK:INSTD_LOGIC;
SET_PARITY:INSTD_LOGIC;
NEW_CORRECT_PARITY:INSTD_LOGIC;
DATA:INSTD_LOGIC_VECTOR(0TO3);
PARITY_OK:OUTBOOLEAN);ENDPARI;38現(xiàn)在是38頁(yè)\一共有63頁(yè)\編輯于星期日ARCHITECTUREARTOFPARIISSIGNALCORRECT_PARITY:STD_LOGIC;
BEGINPROCESS(CLOCK)VARIABLETEMP:STD_LOGIC;
BEGINWAITUNTILCLOCK'EVENTANDCLOCK=‘1’;IFSET_PARITY=‘1’THENFIRST:CORRECT_PARITY<=NEW_CORRECT_PARITY;39現(xiàn)在是39頁(yè)\一共有63頁(yè)\編輯于星期日
ENDIF;
TEMP:=‘0’;
FORIINDATA'RANGELOOPTEMP:=TEMPXORDATA(I);
ENDLOOP;
SECOND:PARITY_OK<=(TEMP=CORRECT_PARITY);
ENDPROCESS;ENDART;40現(xiàn)在是40頁(yè)\一共有63頁(yè)\編輯于星期日例中,NEW_CORRECT_PARITY是預(yù)置校驗(yàn)值輸入端,SET_PARITY是預(yù)置校驗(yàn)值的輸入與比較控制端。從例可以看出,由于WAIT語(yǔ)句的加入,綜合后引入了兩個(gè)D觸發(fā)器,用于存儲(chǔ)數(shù)據(jù)。第一個(gè)觸發(fā)器存儲(chǔ)CORRECT_PARITY,它來(lái)自標(biāo)號(hào)為FIRST的語(yǔ)句;第二個(gè)觸發(fā)器用于兩個(gè)時(shí)鐘信號(hào)間PARITY_OK的存儲(chǔ),它來(lái)自標(biāo)號(hào)為SECORD的語(yǔ)句。綜合器沒(méi)有為變量TEMP的賦值行為增加觸發(fā)器,因?yàn)門(mén)EMP是一個(gè)臨時(shí)變量。
WAITFOR時(shí)間表達(dá)式為超時(shí)語(yǔ)句,在此語(yǔ)句中定義了一個(gè)時(shí)間段,從執(zhí)行到當(dāng)前的WAIT語(yǔ)句開(kāi)始,在此時(shí)間段內(nèi),進(jìn)程處于掛起狀態(tài),當(dāng)超過(guò)這一時(shí)間段后,進(jìn)程自動(dòng)恢復(fù)執(zhí)行。由于此語(yǔ)句不可綜合,在此不做討論。41現(xiàn)在是41頁(yè)\一共有63頁(yè)\編輯于星期日作業(yè)1:將向量轉(zhuǎn)化為整數(shù)輸出ENTITYconv_intISPORT(vect:IN
BIT_VECTOR(7DOWNTO0);
result:OUT
INTEGER);ENDconv_int;
ARCHITECTUREAOFconv_intISBEGIN
PROCESS(vect)
VARIABLEtmp:INTEGER;
BEGIN tmp:=0; FORiIN7DOWNTO0LOOP IF(vect(i)='1')THEN tmp:=tmp+2**i; ENDIF; ENDLOOP; result<=tmp;
ENDPROCESS;ENDA;ARCHITECTUREBOFconv_intISBEGIN
PROCESS(vect)
VARIABLEtmp:INTEGER;
VARIABLEi:INTEGER;
BEGIN tmp:=0; i:=vect'high WHILE(i>=vect'low)LOOP IF(vect(i)='1')THEN
tmp:=tmp+2**i; ENDIF; i:=i-1;--修改循環(huán)變量 ENDLOOP; result<=tmp;
ENDPROCESS;ENDB;42現(xiàn)在是42頁(yè)\一共有63頁(yè)\編輯于星期日作業(yè)2:設(shè)計(jì)描述4選1總線多路選擇器43現(xiàn)在是43頁(yè)\一共有63頁(yè)\編輯于星期日【例】用CASE語(yǔ)句描述4選1多路選擇器。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYMUX41ISPORT(S1,S2:INSTD_LOGIC;
A,B,C,D:INSTD_LOGIC;
Z:OUTSTD_LOGIC);ENDENTITYMUX41;ARCHITECTUREARTOFMUX41ISSIGNALS:STD_LOGIC_VECTOR(1DOWNTO0);44現(xiàn)在是44頁(yè)\一共有63頁(yè)\編輯于星期日BEGINS<=S1&S2;PROCESS(S1,S2,A,B,C,D)BEGINCASESISWHEN"00"=>Z<=A;
WHEN"01"=>Z<=B;
WHEN"10"=>Z<=C;
WHEN"11"=>Z<=D;
WHENOTHERS=>Z<='X';
ENDCASE;
ENDPROCESS;ENDART;如何用IF語(yǔ)句實(shí)現(xiàn)?45現(xiàn)在是45頁(yè)\一共有63頁(yè)\編輯于星期日注意本例的第五個(gè)條件名是必需的,因?yàn)閷?duì)于定義STD_LOGIC_VECTOR數(shù)據(jù)類型的S,在VHDL綜合過(guò)程中,它可能的選擇值除了00、01、10和11外,還可以有其他定義于STD_LOGIC的選擇值。本例的邏輯圖如圖3.8所示。46現(xiàn)在是46頁(yè)\一共有63頁(yè)\編輯于星期日4選1多路選擇器47現(xiàn)在是47頁(yè)\一共有63頁(yè)\編輯于星期日例:libraryieee;useieee.std_logic_1164.all;entityshiftisport(clk,c0:instd_logic;md:instd_logic_vector(2downto0);d:instd_logic_vector(7downto0);qb:outstd_logic_vector(7downto0);cn:outstd_logic);end;architecturebhofshiftissignalreg:std_logic_vector(7downto0);signalcy:std_logic;48現(xiàn)在是48頁(yè)\一共有63頁(yè)\編輯于星期日beginprocess(clk,md,c0)isbeginifclk'eventandclk='1'thencasemdiswhen"001"=>reg(0)<=c0;reg(7downto1)<=reg(6downto0);cy<=reg(7);when"010"=>reg(0)<=reg(7);reg(7downto1)<=reg(6downto0);when"011"=>reg(7)<=reg(0);eg(6downto0)<=reg(7downto1);when"100"=>reg(7)<=cy;reg(6downto0)<=reg(7downto1);cy<=reg(0);when"101"=>reg(7downto0)<=d(7downto0);whenothers=>reg<=reg;cy<=cy;49現(xiàn)在是49頁(yè)\一共有63頁(yè)\編輯于星期日endcase;endif;endprocess;qb(7downto0)<=reg(7downto0);cn<=cy;end;50現(xiàn)在是50頁(yè)\一共有63頁(yè)\編輯于星期日51現(xiàn)在是51頁(yè)\一共有63頁(yè)\編輯于星期日BEGINsel:=0; --輸入初始值
IF(S1=‘1’)THENSEL:=SEL+1;
ELSIF(S2=‘1’)THENSEL:=SEL+2;
ELSIF(S3=‘1’)THENSEL:=SEL+4;
ELSIF(S4=‘1’)THENSEL:=SEL+8;
ELSENULL; --注意,這里使用了空操作語(yǔ)句
ENDIF;
Z1<=‘0’;Z2<=‘0’;Z3<=‘0’;Z4<=‘0’;--輸入初始值52現(xiàn)在是52頁(yè)\一共有63頁(yè)\編輯于星期日CASETEMPISWHEN0=>Z1<=‘1’; --當(dāng)SEL=0時(shí)選中
WHEN1|3=>Z2<=‘1’;--當(dāng)SEL為1或3時(shí)選中
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 成人小學(xué)教育中的科學(xué)探究方法訓(xùn)練考核試卷
- 寵物犬類嗅覺(jué)搜索技能開(kāi)發(fā)考核試卷
- 醫(yī)療設(shè)備租賃企業(yè)社會(huì)責(zé)任考核試卷
- 合成橡膠在航空航天領(lǐng)域的應(yīng)用考核試卷
- 制革行業(yè)的人力資源管理與培訓(xùn)考核試卷
- 簡(jiǎn)單貨物運(yùn)輸托運(yùn)合同
- 現(xiàn)代化醫(yī)藥倉(cāng)儲(chǔ)物流交易中心可行性研究報(bào)告建議書(shū)
- 2024年智慧醫(yī)療戰(zhàn)略合作合同
- 2025年中國(guó)超級(jí)摩托車行業(yè)市場(chǎng)發(fā)展前景及發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告
- 石材開(kāi)采加工建設(shè)項(xiàng)目項(xiàng)目可行性研究報(bào)告
- 河北省邯鄲市永年區(qū)2024-2025學(xué)年九年級(jí)上學(xué)期期末考試化學(xué)試卷(含答案)
- 2025年閥門(mén)和龍頭項(xiàng)目發(fā)展計(jì)劃
- 消防員證考試題庫(kù)2000題中級(jí)
- 農(nóng)產(chǎn)品質(zhì)量安全檢測(cè)技術(shù)
- 2025初級(jí)會(huì)計(jì)理論考試100題及解析
- 三兄弟分田地宅基地協(xié)議書(shū)范文
- 參觀河南省博物院
- 中考數(shù)學(xué)計(jì)算題練習(xí)100道(2024年中考真題)
- 高考作文備考-議論文對(duì)比論證 課件14張
- 新華師大版七年級(jí)下冊(cè)初中數(shù)學(xué) 7.4 實(shí)踐與探索課時(shí)練(課后作業(yè)設(shè)計(jì))
- 《普通生物學(xué)教案》word版
評(píng)論
0/150
提交評(píng)論