




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第7章VHDL基本語句與基本設(shè)計(jì)EDA技術(shù)與VHDL設(shè)計(jì)第7章VHDL基本語句與基本設(shè)計(jì)EDA技術(shù)與VHDL設(shè)計(jì)17.1順序語句
并行語句VHDL組合邏輯電路設(shè)計(jì)VHDL時(shí)序邏輯電路設(shè)計(jì)7.27.37.4VHDL基本語句與基本設(shè)計(jì)7.1順序語句并行語句VHDL組合邏輯電路設(shè)計(jì)V2順序語句的執(zhí)行順序與書寫順序一致,與傳統(tǒng)軟件設(shè)計(jì)語言的特點(diǎn)相似。順序語句只能用于進(jìn)程和子程序中,被用來描述組合邏輯和時(shí)序邏輯。常用的順序描述語句有:賦值語句、IF語句、CASE語句、LOOP語句、NEXT語句、EXIT語句、子程序、RETURN語句、WAIT語句和NULL語句。7.1順序語句順序語句的執(zhí)行順序與書寫順序一致,與傳統(tǒng)軟件設(shè)計(jì)語言的特點(diǎn)相3信號(hào)賦值語句:7.1.1賦值語句
賦值目標(biāo)<=賦值源;變量賦值語句:賦值目標(biāo):=賦值源;信號(hào)賦值語句:7.1.1賦值語句賦值目標(biāo)<=賦值源;變量4根據(jù)語句所設(shè)條件,if語句有選擇地執(zhí)行指定的語句,其語法格式由簡單到復(fù)雜可以分為三種:(1)具有開關(guān)控制的IF語句(2)具有二選擇控制的IF語句(3)具有多選擇控制的IF語句7.1.2IF語句
根據(jù)語句所設(shè)條件,if語句有選擇地執(zhí)行指定的語句,其語法格式5一般格式:if條件then 順序語句; endif;當(dāng)條件成立,執(zhí)行順序語句,否則跳過語句。具有開關(guān)控制的IF語句
一般格式:具有開關(guān)控制的IF語句6if(EN=’1’)thenA<=B;--當(dāng)條件EN=1時(shí),A隨B變化;否則,該語句不執(zhí)行endif;具有開關(guān)控制的IF語句舉例
if(EN=’1’)then具有開關(guān)控制的IF語句舉例7一般格式:if條件then 順序語句; else 順序語句; endif;條件成立執(zhí)行then后順序語句;否則執(zhí)行else后的順序語句。具有二選擇控制的IF語句
一般格式:具有二選擇控制的IF語句8ifOE=‘0’then Y<=notx;else Y<=‘Z’; --高阻符號(hào)“Z”要大寫endif;用IF語句描述三態(tài)非門
ifOE=‘0’then用IF語句描述三態(tài)非門9一般格式:if條件then順序語句; elsif條件then順序語句; [elsif條件then順序語句;] [else順序語句;] endif;具有多選擇控制的IF語句
一般格式:具有多選擇控制的IF語句10case語句根據(jù)表達(dá)式的取值直接從多組順序語句中選擇一組執(zhí)行,其語句格式為: case表達(dá)式is when選擇值=>順序語句;when選擇值=>順序語句;...... whenothers=>順序語句; endcase;7.1.3CASE語句
case語句根據(jù)表達(dá)式的取值直接從多組順序語句中選擇一組執(zhí)行11一般格式:(1)關(guān)鍵詞others只能出現(xiàn)一次,且只能作為最后一種條件取值。使用others的目的是為了使條件句中的所有選擇值能涵蓋表達(dá)式的所有取值,以免綜合器會(huì)插入不必要的鎖存器。使用CASE語句注意事項(xiàng)
一般格式:使用CASE語句注意事項(xiàng)12一般格式:(2)條件句中的選擇值必須在表達(dá)式的取值范圍內(nèi)。(3)case語句中每一條件句的選擇值只能出現(xiàn)一次,不能有相同選擇值的條件語句出現(xiàn)。(4)case語句執(zhí)行必須選中,且僅能選中所列語句中的一條。使用CASE語句注意事項(xiàng)
一般格式:使用CASE語句注意事項(xiàng)13(1)WHEN取值=>順序語句:(2)WHEN取值|取值|…|取值=>順序語句:(3)WHEN取值TO取值=>順序語句;(4)WHEN取值DOWNTO取值=>順序語句;(5)WHENOTHERS=>順序語句;CASE語句中WHEN字句書寫格式
(1)WHEN取值=>順序語句:CASE語句中WHEN字句14d0<=‘0’;d1<=‘0’;d2<=‘0’;d3<=‘0’;CASEselISWHEH“00”=>d0<=d;WHEN“01”=>d1<=d;WHEN“10”=>d2<=d;WHENOTHERS=>d3<=d;ENDCASE;CASE語句應(yīng)用舉例
d0<=‘0’;d1<=‘0’;CASE語句應(yīng)用舉例15LOOP語句與其它高級(jí)語言中的循環(huán)語句相似,它可以使所包含的一組順序語句被循環(huán)執(zhí)行,其執(zhí)行次數(shù)可由設(shè)定的循環(huán)參數(shù)決定。LOOP語句有三種格式:(1)無限LOOP語句(2)FOR_LOOP語句(3)WHILE_LOOP語句7.1.4LOOP語句
LOOP語句與其它高級(jí)語言中的循環(huán)語句相似,它可以使所包含的16[標(biāo)號(hào):]LOOP順序語句EXIT標(biāo)號(hào);ENDLOOP;舉例:L2:LOOPa:=a+1;EXITL2WHENa>10;ENDLOOPL2;無限LOOP語句[標(biāo)號(hào):]LOOP無限LOOP語句17[標(biāo)號(hào)]:FOR循環(huán)變量IN離散范圍LOOP順序處理語句;ENDLOOP[標(biāo)號(hào)];注意:(1)循環(huán)變量是LOOP內(nèi)部自動(dòng)聲明的局部量,僅在LOOP內(nèi)可見。(2)離散范圍必須是可計(jì)算的整數(shù)范圍。循環(huán)次數(shù)范圍規(guī)定LOOP語句中的順序語句被執(zhí)行的次數(shù)。FOR_LOOP語句
[標(biāo)號(hào)]:FOR循環(huán)變量IN離散范圍LOOPFO18LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYparity_checkISPORT(a:INSTD_LOGIC_VECTOR(7DOWNTO0);y:OUTSTD_LOGIC);ENDENTITYparity_check;ARCHITECTUREoneOFparity_checkISBEGINPROCESS(a)VARIABLEtmp:STD_LOGIC;BEGINtmp:=’1’;FORiIN0TO7LOOPtmp:tmpxora(i);ENDLOOP;y<=tmp;ENDPROCESS;END;用FORLOOP語句描述8位奇偶校驗(yàn)電路
LIBRARYIEEE;用FORLOOP語句描述8位奇19[標(biāo)號(hào)]:WHILE循環(huán)條件LOOP順序處理語句;ENDLOOP[標(biāo)號(hào)];例:sum:=0;i:=0;abcd:WHILE(i<10)LOOPsum:=sum+i;i:=i+1;ENDLOOPabcd;WHILE_LOOP語句
[標(biāo)號(hào)]:WHILE循環(huán)條件LOOPWHILE_LO20LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYparity_checkISPORT(a:INSTD_LOGIC_VECTOR(7DOWNTO0);y:OUTSTD_LOGIC);ENDENTITYparity_check;ARCHITECTUREoneOFparity_checkISBEGINPROCESS(a)VARIABLEtmp:STD_LOGIC;VARIABLEi:INTEGER;BEGINtmp:=’0’;i:=0;WHILE(i<8)LOOPtmp:tmpxora(i);i:=i+1;ENDLOOP;y<=tmp;ENDPROCESS;END;用WHILE_LOOP語句描述8位奇偶校驗(yàn)電路
LIBRARYIEEE;用WHILE_LOOP語句描述821在LOOP語句中,NEXT語句用來跳出本次循環(huán)。其格式分三種:(1)NEXT:無條件終止當(dāng)前的循環(huán),跳回到本次循環(huán)LOOP語句開始處,開始下次循環(huán)。(2)NEXT:[標(biāo)號(hào)];無條件終止當(dāng)前的循環(huán),跳轉(zhuǎn)到指定標(biāo)號(hào)的LOOP語句開始處,重新開始執(zhí)行循環(huán)操作。(3)NEXT[標(biāo)號(hào)][WHEN條件表達(dá)式];7.1.5NEXT語句
在LOOP語句中,NEXT語句用來跳出本次循環(huán)。其格式分三種22L1:WHILEi<10LOOPL2:WHILEj<20LOOP
NEXTL1WHENi=j;
ENDLOOPL2;ENDLOOPL1;NEXT語句舉例L1:WHILEi<10LOOPNEXT語句舉例23EXIT語句是LOOP語句的內(nèi)部循環(huán)控制語句,作用是結(jié)束循環(huán)狀態(tài)。而區(qū)別在于NEXT語句是跳向LOOP語句的起始點(diǎn),EXIT語句則是跳向LOOP語句的終點(diǎn)。EXIT的語句格式也有3種:(1)EXIT;(2)EXITLOOP標(biāo)號(hào);(3)EXITLOOP標(biāo)號(hào)WHEN條件表達(dá)式;7.1.6EXIT語句
EXIT語句是LOOP語句的內(nèi)部循環(huán)控制語句,作用是結(jié)束循環(huán)24PROCESS(a)VARIABLEint_a:INTEGER;BEGINint_a:=a;FORiIN0TOmax_limitLOOPIF(int_a<=0)THENEXIT;ELSEint_a:=int_a-1;ENDIF;ENDLOOP;ENDPROCESS;EXIT語句舉例PROCESS(a)EXIT語句舉例25在進(jìn)程中(包括過程中),當(dāng)執(zhí)行到WAIT(等待語句時(shí)),運(yùn)行程序?qū)⒈粧炱?,直到滿足此語句設(shè)置的結(jié)束掛起條件后,才重新開始執(zhí)行進(jìn)程或過程中的程序。WAIT語句有以下四種不同的語句格式:(1)WAIT--無限等待(2)WAITON--敏感信號(hào)量變換(3)WAITUNTIL--條件滿足(可綜合)(4)WAITFOR--時(shí)間到7.1.7WAIT語句
在進(jìn)程中(包括過程中),當(dāng)執(zhí)行到WAIT(等待語句時(shí)),運(yùn)行26進(jìn)程中其一般格式為:WAITON信號(hào)[,信號(hào)];例如,以下兩種描述是完全等價(jià)的:PROCESS(a,b)PROCESSBEGINBEGINy<=aANDb;y<=aANDb;ENDPROCESS;WAITONa,b;ENDPROCESS;敏感信號(hào)量列表和WAIT語句選其一,不能同時(shí)使用。1.WAITON語句
進(jìn)程中其一般格式為:WAITON信號(hào)[,信號(hào)];1.27進(jìn)程中其一般格式為:WAITUNTIL表達(dá)式;例如,WAITUNTIL語句有三種表達(dá)方式:(1)WAITUNTIL信號(hào)=某個(gè)數(shù)值;(2)WAITUNTIL信號(hào)’EVENTAND信號(hào)=某個(gè)數(shù)值;(3)WAITUNTILNOT(信號(hào)’STABLE)AND信號(hào)=某個(gè)數(shù)值;2.WAITUNTIL語句
進(jìn)程中其一般格式為:WAITUNTIL表達(dá)式;2.W28在進(jìn)程中允許對(duì)子程序進(jìn)行調(diào)用。對(duì)子程序的調(diào)用語句是順序語句的一部分。子程序包括過程和函數(shù),可以在VHFL的結(jié)構(gòu)體或程序包中的任何位置對(duì)子程序進(jìn)行調(diào)用。子程序調(diào)用可以在任何地方根據(jù)其名稱調(diào)用子程序。7.1.8子程序調(diào)用語句
在進(jìn)程中允許對(duì)子程序進(jìn)行調(diào)用。對(duì)子程序的調(diào)用語句是順序語句的29調(diào)用過程的語句格式如下:
過程名([參數(shù)名=>]表達(dá)式{,[參數(shù)名=>]表達(dá)式});其中表達(dá)式也稱為實(shí)參,它可以是一個(gè)具體的數(shù)值,也可以是一個(gè)標(biāo)識(shí)符,是當(dāng)前調(diào)用程序中過程形參的接受體。
過程調(diào)用
調(diào)用過程的語句格式如下:過程調(diào)用30函數(shù)調(diào)用與過程調(diào)用十分類似,不同之處是調(diào)用函數(shù)將返回一個(gè)指定類型的值,函數(shù)的參量只能是輸入值。函數(shù)調(diào)用的一般格式為:函數(shù)名([參數(shù)名=>]表達(dá)式{,[參數(shù)名=>]表達(dá)式});函數(shù)調(diào)用
函數(shù)調(diào)用與過程調(diào)用十分類似,不同之處是調(diào)用函數(shù)將返回一個(gè)指定317.2并行語句
并行信號(hào)賦值語句進(jìn)程語句并行過程調(diào)用語句元器件例化語句生成語句7.2并行語句并行信號(hào)賦值語句3233/387.2.1并行信號(hào)賦值語句三種并行信號(hào)賦值:簡單信號(hào)賦值條件信號(hào)賦值選擇信號(hào)賦值33/387.2.1并行信號(hào)賦值語句三種并行信號(hào)賦值:3334/381.并行簡單信號(hào)賦值語句34/381.并行簡單信號(hào)賦值語句3435/382.條件信號(hào)賦值語句35/382.條件信號(hào)賦值語句3536/38用when-else語句描述2選一的MUXentitymux2to1isport(a,b:inbit;sel:inbit; y:outbit);endmux2to1;architectureoneofmux2to1isbeginy<=bwhensel='1'elsea;endone;信號(hào)定義成比特類型,可取0和1。如果把=‘1’去掉,結(jié)果如何?36/38用when-else語句描述2選一的MUXenti3637/38用when-else語句描述4選1的MUXentitymux4to1isport(a,b,c,d:inbit;sel1,sel0:inbit; y:outbit);endmux4to1;architectureoneofmux4to1isbeginy<=awhen(sel1='0')and(sel0='0')elsebwhen(sel1='0')and(sel0='1')else cwhen(sel1='1')and(sel0='0')elsed;endone;問題:如果00時(shí)選a,01時(shí)選b,10和11時(shí)都選c,怎么辦?y<=awhen(sel1='0')and(sel0='0')elsebwhen(sel1='0')and(sel0='1')elsecwhen(sel1=‘1’)and(sel0=‘0’)elsed;37/38用when-else語句描述4選1的MUXenti3738/383.選擇信號(hào)賦值語句38/383.選擇信號(hào)賦值語句3839/38問題:如果00時(shí)選a,01時(shí)選b,10和11時(shí)都選c,怎么辦?architectureoneofmux4to1issignalsel:bit_vector(1downto0);beginsel(1)<=sel1;sel(0)<=sel0;withselselecty<=awhen"00",bwhen"01", cwhenothers;endone;entitymux4to1isport(a,b,c:inbit;sel1,sel0:inbit; y:outbit);endmux4to1;注意:whenothers包含那些未被列出的可能。39/38問題:如果00時(shí)選a,01時(shí)選b,10和11時(shí)都選3940/38如果信號(hào)類型換成STD_LOGIClibraryieee;useieee.std_logic_1164.all;entitymux4to1isport(a,b,c:instd_logic;sel1,sel0:instd_logic; y:outstd_logic);endmux4to1;architectureoneofmux4to1issignalsel:std_logic_vector(1downto0);beginsel(1)<=sel1;sel(0)<=sel0;withselselecty<=awhen"00",bwhen"01", cwhenothers;endone;40/38如果信號(hào)類型換成STD_LOGIClibrary4041/38VHDL模型-并行信號(hào)賦值libraryieee;useieee.std_logic_1164.all;entitycmpl_sigisport(a,b,sel:instd_logic;x,y,z:outstd_logic);endcmpl_sig;architecturelogicofcmpl_sigisbeginx<=(aandnotsel)or(bandsel);y<=awhensel='0'elseb;withselselectz<=awhen'0',bwhen'1','0'whenothers;endlogic;信號(hào)賦值執(zhí)行是并行的,與語句放置的位置先后無關(guān)。41/38VHDL模型-并行信號(hào)賦值libraryieee4142/387.2.2進(jìn)程語句過程語句有(1)隱含的過程:并行信號(hào)賦值語句元件語句過程的敏感信號(hào)在表達(dá)式右邊。(2)直接的過程:也是并行語句只包括順序語句--ExplicitProcessStatementPROCESS(敏感信號(hào)表)ConstantDeclarationsTypeDeclarationsVariableDeclarationsBEGIN
--順序語句#1;--…
…..--順序語句#N;ENDPROCESS;42/387.2.2進(jìn)程語句過程語句有--Explic4243/38Process語句的執(zhí)行process語句靠wait語句和敏感信號(hào)表來控制語句執(zhí)行次數(shù)。敏感信號(hào)表隱含著在process的后面有一個(gè)wait語句。一個(gè)process可以有多個(gè)wait語句。Process必須具有敏感信號(hào)表和wait語句中的一個(gè)。.注意:邏輯綜合將對(duì)wait和敏感信號(hào)表作出限制。process(a,b)begin--sequentialstatementsendprocess;processbegin--sequentialstatementswaiton(a,b);endprocess;43/38Process語句的執(zhí)行process語句靠wai4344/38多進(jìn)程語句一個(gè)構(gòu)造體可以有多個(gè)process。process之間是并發(fā)的。在process內(nèi)部,語句執(zhí)行是有順序的。構(gòu)造體process1
processN信號(hào)信號(hào)44/38多進(jìn)程語句一個(gè)構(gòu)造體可以有多個(gè)process。構(gòu)p4445/38VHDL模型-多進(jìn)程語句process語句的執(zhí)行是并行的,與位置沒有關(guān)系。在process內(nèi)的語句執(zhí)行是順序的。process語句內(nèi)也可進(jìn)行信號(hào)賦值。45/38VHDL模型-多進(jìn)程語句process語句的執(zhí)行是4546/38信號(hào)賦值-延時(shí)(Delay)信號(hào)賦值可以在process語句內(nèi)部也可以在外部進(jìn)行(如三種并行賦值語句)。信號(hào)賦值發(fā)生時(shí)會(huì)有時(shí)延,延時(shí)的類型有兩種:固有(Inertial)延時(shí)(缺省的)信號(hào)在傳輸過程中會(huì)時(shí)間長度增加。傳輸延時(shí)無論距離多近,都有傳輸延時(shí)。在VHDL中,除此之外的延時(shí)均不考慮。46/38信號(hào)賦值-延時(shí)(Delay)信號(hào)賦值可以在proc4647/38請(qǐng)看兩個(gè)程序是否等效?并行賦值語句右邊的變量全為敏感信號(hào)。47/38請(qǐng)看兩個(gè)程序是否等效?并行賦值語句右邊的變量全為敏4748/38這兩個(gè)程序等效嗎?不等效!process內(nèi)部時(shí)順序語句。要從時(shí)序上看。48/38這兩個(gè)程序等效嗎?不等效!process內(nèi)部時(shí)順序4849/38變量說明變量在process內(nèi)部說明變量的說明使用::=信號(hào)說明使用:<=變量說明的兩種方式variable<name>:<data_type>:=<value>;variabletemp:std_logic_vector(7downto0);變量賦值是立即執(zhí)行的,沒有延時(shí)。49/38變量說明變量在process內(nèi)部說明4950/38為變量賦值variabletemp:std_logic_vector(7downto0);所有比特:temp:=“10101010”;temp:=x”AA”;(1076-1993)單個(gè)比特:temp(7):=‘1’;幾個(gè)比特:temp(7downto4):=“1010”;單個(gè)比特使用單引號(hào),多個(gè)比特使用雙引號(hào)。50/38為變量賦值variabletemp:std_5051/38變量使用舉例1變量說明變量賦值變量賦值給信號(hào)51/38變量使用舉例1變量說明變量賦值變量賦值給信號(hào)5152/38變量使用舉例2val是個(gè)變量,只要有賦值給它,它就更新。因此,更新過的val的值用于case語句。52/38變量使用舉例2val是個(gè)變量,只要有賦值給它,它就5253/38信號(hào)與變量的區(qū)別53/38信號(hào)與變量的區(qū)別5354/38信號(hào)與變量類比賦值使用范圍行為y<=ay:=a表示電路內(nèi)連表示局部存儲(chǔ)全局(process之間進(jìn)行通信)局部(process內(nèi)部使用)process結(jié)束時(shí)更新立即更新54/38信號(hào)與變量類比賦值使用范圍行為y<=ay:=a表54表決電路地址譯碼七段顯示譯碼器雙向總線優(yōu)先編碼器8位加法器7.3VHDL組合邏輯電路設(shè)計(jì)
表決電路7.3VHDL組合邏輯電路設(shè)計(jì)55觸發(fā)器寄存器計(jì)數(shù)器分頻器7.4VHDL時(shí)序邏輯電路設(shè)計(jì)
觸發(fā)器7.4VHDL時(shí)序邏輯電路設(shè)計(jì)56第7章VHDL基本語句與基本設(shè)計(jì)EDA技術(shù)與VHDL設(shè)計(jì)第7章VHDL基本語句與基本設(shè)計(jì)EDA技術(shù)與VHDL設(shè)計(jì)577.1順序語句
并行語句VHDL組合邏輯電路設(shè)計(jì)VHDL時(shí)序邏輯電路設(shè)計(jì)7.27.37.4VHDL基本語句與基本設(shè)計(jì)7.1順序語句并行語句VHDL組合邏輯電路設(shè)計(jì)V58順序語句的執(zhí)行順序與書寫順序一致,與傳統(tǒng)軟件設(shè)計(jì)語言的特點(diǎn)相似。順序語句只能用于進(jìn)程和子程序中,被用來描述組合邏輯和時(shí)序邏輯。常用的順序描述語句有:賦值語句、IF語句、CASE語句、LOOP語句、NEXT語句、EXIT語句、子程序、RETURN語句、WAIT語句和NULL語句。7.1順序語句順序語句的執(zhí)行順序與書寫順序一致,與傳統(tǒng)軟件設(shè)計(jì)語言的特點(diǎn)相59信號(hào)賦值語句:7.1.1賦值語句
賦值目標(biāo)<=賦值源;變量賦值語句:賦值目標(biāo):=賦值源;信號(hào)賦值語句:7.1.1賦值語句賦值目標(biāo)<=賦值源;變量60根據(jù)語句所設(shè)條件,if語句有選擇地執(zhí)行指定的語句,其語法格式由簡單到復(fù)雜可以分為三種:(1)具有開關(guān)控制的IF語句(2)具有二選擇控制的IF語句(3)具有多選擇控制的IF語句7.1.2IF語句
根據(jù)語句所設(shè)條件,if語句有選擇地執(zhí)行指定的語句,其語法格式61一般格式:if條件then 順序語句; endif;當(dāng)條件成立,執(zhí)行順序語句,否則跳過語句。具有開關(guān)控制的IF語句
一般格式:具有開關(guān)控制的IF語句62if(EN=’1’)thenA<=B;--當(dāng)條件EN=1時(shí),A隨B變化;否則,該語句不執(zhí)行endif;具有開關(guān)控制的IF語句舉例
if(EN=’1’)then具有開關(guān)控制的IF語句舉例63一般格式:if條件then 順序語句; else 順序語句; endif;條件成立執(zhí)行then后順序語句;否則執(zhí)行else后的順序語句。具有二選擇控制的IF語句
一般格式:具有二選擇控制的IF語句64ifOE=‘0’then Y<=notx;else Y<=‘Z’; --高阻符號(hào)“Z”要大寫endif;用IF語句描述三態(tài)非門
ifOE=‘0’then用IF語句描述三態(tài)非門65一般格式:if條件then順序語句; elsif條件then順序語句; [elsif條件then順序語句;] [else順序語句;] endif;具有多選擇控制的IF語句
一般格式:具有多選擇控制的IF語句66case語句根據(jù)表達(dá)式的取值直接從多組順序語句中選擇一組執(zhí)行,其語句格式為: case表達(dá)式is when選擇值=>順序語句;when選擇值=>順序語句;...... whenothers=>順序語句; endcase;7.1.3CASE語句
case語句根據(jù)表達(dá)式的取值直接從多組順序語句中選擇一組執(zhí)行67一般格式:(1)關(guān)鍵詞others只能出現(xiàn)一次,且只能作為最后一種條件取值。使用others的目的是為了使條件句中的所有選擇值能涵蓋表達(dá)式的所有取值,以免綜合器會(huì)插入不必要的鎖存器。使用CASE語句注意事項(xiàng)
一般格式:使用CASE語句注意事項(xiàng)68一般格式:(2)條件句中的選擇值必須在表達(dá)式的取值范圍內(nèi)。(3)case語句中每一條件句的選擇值只能出現(xiàn)一次,不能有相同選擇值的條件語句出現(xiàn)。(4)case語句執(zhí)行必須選中,且僅能選中所列語句中的一條。使用CASE語句注意事項(xiàng)
一般格式:使用CASE語句注意事項(xiàng)69(1)WHEN取值=>順序語句:(2)WHEN取值|取值|…|取值=>順序語句:(3)WHEN取值TO取值=>順序語句;(4)WHEN取值DOWNTO取值=>順序語句;(5)WHENOTHERS=>順序語句;CASE語句中WHEN字句書寫格式
(1)WHEN取值=>順序語句:CASE語句中WHEN字句70d0<=‘0’;d1<=‘0’;d2<=‘0’;d3<=‘0’;CASEselISWHEH“00”=>d0<=d;WHEN“01”=>d1<=d;WHEN“10”=>d2<=d;WHENOTHERS=>d3<=d;ENDCASE;CASE語句應(yīng)用舉例
d0<=‘0’;d1<=‘0’;CASE語句應(yīng)用舉例71LOOP語句與其它高級(jí)語言中的循環(huán)語句相似,它可以使所包含的一組順序語句被循環(huán)執(zhí)行,其執(zhí)行次數(shù)可由設(shè)定的循環(huán)參數(shù)決定。LOOP語句有三種格式:(1)無限LOOP語句(2)FOR_LOOP語句(3)WHILE_LOOP語句7.1.4LOOP語句
LOOP語句與其它高級(jí)語言中的循環(huán)語句相似,它可以使所包含的72[標(biāo)號(hào):]LOOP順序語句EXIT標(biāo)號(hào);ENDLOOP;舉例:L2:LOOPa:=a+1;EXITL2WHENa>10;ENDLOOPL2;無限LOOP語句[標(biāo)號(hào):]LOOP無限LOOP語句73[標(biāo)號(hào)]:FOR循環(huán)變量IN離散范圍LOOP順序處理語句;ENDLOOP[標(biāo)號(hào)];注意:(1)循環(huán)變量是LOOP內(nèi)部自動(dòng)聲明的局部量,僅在LOOP內(nèi)可見。(2)離散范圍必須是可計(jì)算的整數(shù)范圍。循環(huán)次數(shù)范圍規(guī)定LOOP語句中的順序語句被執(zhí)行的次數(shù)。FOR_LOOP語句
[標(biāo)號(hào)]:FOR循環(huán)變量IN離散范圍LOOPFO74LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYparity_checkISPORT(a:INSTD_LOGIC_VECTOR(7DOWNTO0);y:OUTSTD_LOGIC);ENDENTITYparity_check;ARCHITECTUREoneOFparity_checkISBEGINPROCESS(a)VARIABLEtmp:STD_LOGIC;BEGINtmp:=’1’;FORiIN0TO7LOOPtmp:tmpxora(i);ENDLOOP;y<=tmp;ENDPROCESS;END;用FORLOOP語句描述8位奇偶校驗(yàn)電路
LIBRARYIEEE;用FORLOOP語句描述8位奇75[標(biāo)號(hào)]:WHILE循環(huán)條件LOOP順序處理語句;ENDLOOP[標(biāo)號(hào)];例:sum:=0;i:=0;abcd:WHILE(i<10)LOOPsum:=sum+i;i:=i+1;ENDLOOPabcd;WHILE_LOOP語句
[標(biāo)號(hào)]:WHILE循環(huán)條件LOOPWHILE_LO76LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYparity_checkISPORT(a:INSTD_LOGIC_VECTOR(7DOWNTO0);y:OUTSTD_LOGIC);ENDENTITYparity_check;ARCHITECTUREoneOFparity_checkISBEGINPROCESS(a)VARIABLEtmp:STD_LOGIC;VARIABLEi:INTEGER;BEGINtmp:=’0’;i:=0;WHILE(i<8)LOOPtmp:tmpxora(i);i:=i+1;ENDLOOP;y<=tmp;ENDPROCESS;END;用WHILE_LOOP語句描述8位奇偶校驗(yàn)電路
LIBRARYIEEE;用WHILE_LOOP語句描述877在LOOP語句中,NEXT語句用來跳出本次循環(huán)。其格式分三種:(1)NEXT:無條件終止當(dāng)前的循環(huán),跳回到本次循環(huán)LOOP語句開始處,開始下次循環(huán)。(2)NEXT:[標(biāo)號(hào)];無條件終止當(dāng)前的循環(huán),跳轉(zhuǎn)到指定標(biāo)號(hào)的LOOP語句開始處,重新開始執(zhí)行循環(huán)操作。(3)NEXT[標(biāo)號(hào)][WHEN條件表達(dá)式];7.1.5NEXT語句
在LOOP語句中,NEXT語句用來跳出本次循環(huán)。其格式分三種78L1:WHILEi<10LOOPL2:WHILEj<20LOOP
NEXTL1WHENi=j;
ENDLOOPL2;ENDLOOPL1;NEXT語句舉例L1:WHILEi<10LOOPNEXT語句舉例79EXIT語句是LOOP語句的內(nèi)部循環(huán)控制語句,作用是結(jié)束循環(huán)狀態(tài)。而區(qū)別在于NEXT語句是跳向LOOP語句的起始點(diǎn),EXIT語句則是跳向LOOP語句的終點(diǎn)。EXIT的語句格式也有3種:(1)EXIT;(2)EXITLOOP標(biāo)號(hào);(3)EXITLOOP標(biāo)號(hào)WHEN條件表達(dá)式;7.1.6EXIT語句
EXIT語句是LOOP語句的內(nèi)部循環(huán)控制語句,作用是結(jié)束循環(huán)80PROCESS(a)VARIABLEint_a:INTEGER;BEGINint_a:=a;FORiIN0TOmax_limitLOOPIF(int_a<=0)THENEXIT;ELSEint_a:=int_a-1;ENDIF;ENDLOOP;ENDPROCESS;EXIT語句舉例PROCESS(a)EXIT語句舉例81在進(jìn)程中(包括過程中),當(dāng)執(zhí)行到WAIT(等待語句時(shí)),運(yùn)行程序?qū)⒈粧炱穑钡綕M足此語句設(shè)置的結(jié)束掛起條件后,才重新開始執(zhí)行進(jìn)程或過程中的程序。WAIT語句有以下四種不同的語句格式:(1)WAIT--無限等待(2)WAITON--敏感信號(hào)量變換(3)WAITUNTIL--條件滿足(可綜合)(4)WAITFOR--時(shí)間到7.1.7WAIT語句
在進(jìn)程中(包括過程中),當(dāng)執(zhí)行到WAIT(等待語句時(shí)),運(yùn)行82進(jìn)程中其一般格式為:WAITON信號(hào)[,信號(hào)];例如,以下兩種描述是完全等價(jià)的:PROCESS(a,b)PROCESSBEGINBEGINy<=aANDb;y<=aANDb;ENDPROCESS;WAITONa,b;ENDPROCESS;敏感信號(hào)量列表和WAIT語句選其一,不能同時(shí)使用。1.WAITON語句
進(jìn)程中其一般格式為:WAITON信號(hào)[,信號(hào)];1.83進(jìn)程中其一般格式為:WAITUNTIL表達(dá)式;例如,WAITUNTIL語句有三種表達(dá)方式:(1)WAITUNTIL信號(hào)=某個(gè)數(shù)值;(2)WAITUNTIL信號(hào)’EVENTAND信號(hào)=某個(gè)數(shù)值;(3)WAITUNTILNOT(信號(hào)’STABLE)AND信號(hào)=某個(gè)數(shù)值;2.WAITUNTIL語句
進(jìn)程中其一般格式為:WAITUNTIL表達(dá)式;2.W84在進(jìn)程中允許對(duì)子程序進(jìn)行調(diào)用。對(duì)子程序的調(diào)用語句是順序語句的一部分。子程序包括過程和函數(shù),可以在VHFL的結(jié)構(gòu)體或程序包中的任何位置對(duì)子程序進(jìn)行調(diào)用。子程序調(diào)用可以在任何地方根據(jù)其名稱調(diào)用子程序。7.1.8子程序調(diào)用語句
在進(jìn)程中允許對(duì)子程序進(jìn)行調(diào)用。對(duì)子程序的調(diào)用語句是順序語句的85調(diào)用過程的語句格式如下:
過程名([參數(shù)名=>]表達(dá)式{,[參數(shù)名=>]表達(dá)式});其中表達(dá)式也稱為實(shí)參,它可以是一個(gè)具體的數(shù)值,也可以是一個(gè)標(biāo)識(shí)符,是當(dāng)前調(diào)用程序中過程形參的接受體。
過程調(diào)用
調(diào)用過程的語句格式如下:過程調(diào)用86函數(shù)調(diào)用與過程調(diào)用十分類似,不同之處是調(diào)用函數(shù)將返回一個(gè)指定類型的值,函數(shù)的參量只能是輸入值。函數(shù)調(diào)用的一般格式為:函數(shù)名([參數(shù)名=>]表達(dá)式{,[參數(shù)名=>]表達(dá)式});函數(shù)調(diào)用
函數(shù)調(diào)用與過程調(diào)用十分類似,不同之處是調(diào)用函數(shù)將返回一個(gè)指定877.2并行語句
并行信號(hào)賦值語句進(jìn)程語句并行過程調(diào)用語句元器件例化語句生成語句7.2并行語句并行信號(hào)賦值語句8889/387.2.1并行信號(hào)賦值語句三種并行信號(hào)賦值:簡單信號(hào)賦值條件信號(hào)賦值選擇信號(hào)賦值33/387.2.1并行信號(hào)賦值語句三種并行信號(hào)賦值:8990/381.并行簡單信號(hào)賦值語句34/381.并行簡單信號(hào)賦值語句9091/382.條件信號(hào)賦值語句35/382.條件信號(hào)賦值語句9192/38用when-else語句描述2選一的MUXentitymux2to1isport(a,b:inbit;sel:inbit; y:outbit);endmux2to1;architectureoneofmux2to1isbeginy<=bwhensel='1'elsea;endone;信號(hào)定義成比特類型,可取0和1。如果把=‘1’去掉,結(jié)果如何?36/38用when-else語句描述2選一的MUXenti9293/38用when-else語句描述4選1的MUXentitymux4to1isport(a,b,c,d:inbit;sel1,sel0:inbit; y:outbit);endmux4to1;architectureoneofmux4to1isbeginy<=awhen(sel1='0')and(sel0='0')elsebwhen(sel1='0')and(sel0='1')else cwhen(sel1='1')and(sel0='0')elsed;endone;問題:如果00時(shí)選a,01時(shí)選b,10和11時(shí)都選c,怎么辦?y<=awhen(sel1='0')and(sel0='0')elsebwhen(sel1='0')and(sel0='1')elsecwhen(sel1=‘1’)and(sel0=‘0’)elsed;37/38用when-else語句描述4選1的MUXenti9394/383.選擇信號(hào)賦值語句38/383.選擇信號(hào)賦值語句9495/38問題:如果00時(shí)選a,01時(shí)選b,10和11時(shí)都選c,怎么辦?architectureoneofmux4to1issignalsel:bit_vector(1downto0);beginsel(1)<=sel1;sel(0)<=sel0;withselselecty<=awhen"00",bwhen"01", cwhenothers;endone;entitymux4to1isport(a,b,c:inbit;sel1,sel0:inbit; y:outbit);endmux4to1;注意:whenothers包含那些未被列出的可能。39/38問題:如果00時(shí)選a,01時(shí)選b,10和11時(shí)都選9596/38如果信號(hào)類型換成STD_LOGIClibraryieee;useieee.std_logic_1164.all;entitymux4to1isport(a,b,c:instd_logic;sel1,sel0:instd_logic; y:outstd_logic);endmux4to1;architectureoneofmux4to1issignalsel:std_logic_vector(1downto0);beginsel(1)<=sel1;sel(0)<=sel0;withselselecty<=awhen"00",bwhen"01", cwhenothers;endone;40/38如果信號(hào)類型換成STD_LOGIClibrary9697/38VHDL模型-并行信號(hào)賦值libraryieee;useieee.std_logic_1164.all;entitycmpl_sigisport(a,b,sel:instd_logic;x,y,z:outstd_logic);endcmpl_sig;architecturelogicofcmpl_sigisbeginx<=(aandnotsel)or(bandsel);y<=awhensel='0'elseb;withselselectz<=awhen'0',bwhen'1','0'whenothers;endlogic;信號(hào)賦值執(zhí)行是并行的,與語句放置的位置先后無關(guān)。41/38VHDL模型-并行信號(hào)賦值libraryieee9798/387.2.2進(jìn)程語句過程語句有(1)隱含的過程:并行信號(hào)賦值語句元件語句過程的敏感信號(hào)在表達(dá)式右邊。(2)直接的過程:也是并行語句只包括順序語句--Expli
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 云計(jì)算資源共享平臺(tái)服務(wù)合同
- 綠色能源開發(fā)與儲(chǔ)備合作協(xié)議
- 黑龍江省齊齊哈爾市2025屆高考一模地理試卷(含答案)
- 鋼管買賣合同協(xié)議書
- 企業(yè)人力資源信息統(tǒng)計(jì)表
- 登鸛雀樓探究及其意境體驗(yàn):小學(xué)語文古詩教學(xué)教案
- 投資合同協(xié)議
- 《初中物理力學(xué)與電磁學(xué)探究活動(dòng)》
- 中學(xué)生物理知識(shí)解讀的感悟
- 環(huán)境科學(xué)氣候變化與環(huán)境治理案例分析題集
- 異物管控記錄表
- 模具保養(yǎng)記錄表
- 數(shù)字信號(hào)處理課后習(xí)題答案(吳鎮(zhèn)揚(yáng))
- 蜂膠表彰會(huì)中宏全國通用版模板課件
- 消化系統(tǒng)疾病PBL教學(xué)案例
- DBJ∕T 15-104-2015 預(yù)拌砂漿混凝土及制品企業(yè)試驗(yàn)室管理規(guī)范
- 裝配式建筑疊合板安裝技術(shù)交底
- 2022年HTD-8M同步帶輪尺寸表
- 皮帶滾筒數(shù)據(jù)標(biāo)準(zhǔn)
- 腳手架操作平臺(tái)計(jì)算書
- 煤礦供電系統(tǒng)及供電安全講座方案課件
評(píng)論
0/150
提交評(píng)論