第5章VHDL基本描述語(yǔ)句_第1頁(yè)
第5章VHDL基本描述語(yǔ)句_第2頁(yè)
第5章VHDL基本描述語(yǔ)句_第3頁(yè)
第5章VHDL基本描述語(yǔ)句_第4頁(yè)
第5章VHDL基本描述語(yǔ)句_第5頁(yè)
已閱讀5頁(yè),還剩68頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第5章VHDL基本描述語(yǔ)句順序語(yǔ)句:用來實(shí)現(xiàn)模型的算法描述并行語(yǔ)句:則用來表示各模塊算法描述之間的連接關(guān)系。本章內(nèi)容:5.1順序語(yǔ)句按照語(yǔ)句的出現(xiàn)順序加以執(zhí)行的。激活后按順序逐一的被執(zhí)行,前面語(yǔ)句的執(zhí)行結(jié)果可能直接影響后面語(yǔ)句的結(jié)果。但是從時(shí)鐘的角度來看,所有語(yǔ)句又都是在激活的那一時(shí)刻被執(zhí)行,信號(hào)的延遲不會(huì)隨語(yǔ)句的順序而改變,因?yàn)樾盘?hào)的延遲只和硬件的延遲有關(guān)。只能用在進(jìn)程、子程序(函數(shù)和過程)內(nèi)部,不能在結(jié)構(gòu)體中直接使用。

5.1順序語(yǔ)句VHDL順序語(yǔ)句種類:賦值語(yǔ)句IF語(yǔ)句CASE語(yǔ)句LOOP、EXIT、NEXT語(yǔ)句WAIT語(yǔ)句NULL語(yǔ)句順序賦值語(yǔ)句主要用在進(jìn)程和子程序中,包括信號(hào)賦值和變量賦值兩種,在進(jìn)程中順序執(zhí)行。5.1.1賦值語(yǔ)句信號(hào)在實(shí)體、結(jié)構(gòu)體中定義,可作為結(jié)構(gòu)體內(nèi)多個(gè)進(jìn)程的連接信號(hào)。變量只能在進(jìn)程或子程序內(nèi)定義,只在該進(jìn)程或子程序中使用。語(yǔ)句格式:變量賦值目標(biāo):=賦值源;信號(hào)賦值目標(biāo)<=賦值源;比較:(1)信號(hào)賦值有一定的延時(shí),在時(shí)序電路中,在時(shí)鐘信號(hào)觸發(fā)下的信號(hào)賦值,目標(biāo)信號(hào)要比源信號(hào)延遲一個(gè)時(shí)鐘周期;變量賦值語(yǔ)句立即執(zhí)行,沒有延時(shí)。(2)進(jìn)程中同一變量多次賦值時(shí)按順序立即執(zhí)行,而信號(hào)多次賦值時(shí),只有進(jìn)程結(jié)束前最后一個(gè)賦值被執(zhí)行。5.1.1賦值語(yǔ)句例5-3architectureBehavioraloffuzhiissignald1:std_logic;beginprocess(clk,rst)beginifrst='0'then d1<='0'; q<='0';

elsif

clk'eventandclk='1'then d1<=d; q<=d1; endif;endprocess; endBehavioral;5.1.1賦值語(yǔ)句例5-4architectureBehavioraloffuzhiisbeginprocess(clk,rst)variabled1:std_logic;beginifrst='0'then d1:='0'; q<='0';

elsif

clk'eventandclk='1'then d1:=d; q<=d1; endif;endprocess; endBehavioral;5.1.1賦值語(yǔ)句圖5-1波形仿真圖圖5-2RTL原理圖5.1.1賦值語(yǔ)句圖5-3波形仿真圖圖5-4RTL原理圖【例5-5】SIGNALS1,S2:STD_LOGIC;SIGNALSVEC:STD_LOGIC_VECTOR(0TO7);...PROCESS(S1,S2)ISVARIABLEV1,V2:STD_LOGIC;BEGIN

V1:=‘1’;

--立即將V1置位為1

V2:=‘1’;

--立即將V2置位為1

S1<=‘1’;

--S1被賦值為1

S2<=‘1’;

--不是最后一個(gè)賦值語(yǔ)句故不作任何賦值操作多個(gè)賦值源

SVEC(0)<=V1;--將V1在上面的賦值1,賦給SVEC(0)SVEC(1)<=V2;--將V2在上面的賦值1,賦給SVEC(1)SVEC(2)<=S1;

--將S1在上面的賦值1,賦給SVEC(2)SVEC(3)<=S2;

--將最下面的賦予S2的值‘0’,賦給SVEC(3)

V1:=‘0’;

--將V1置入新值0

V2:=‘0’;

--將V2置入新值0

S2<=‘0’;

--對(duì)S2最后一次賦值,賦值有效

SVEC(4)<=V1;--將V1在上面的賦值0,賦給SVEC(4)SVEC(5)<=V2;--將V2在上面的賦值0,賦給SVEC(5)SVEC(6)<=S1;--將S1在上面的賦值1,賦給SVEC(6)SVEC(7)<=S2;--將S2在上面的賦值0,賦給SVEC(7)ENDPROCESS;多個(gè)賦值源不完整IF語(yǔ)句二選一IF語(yǔ)句多重條件IF語(yǔ)句IF語(yǔ)句嵌套5.1.2IF語(yǔ)句

不完整IF語(yǔ)句語(yǔ)句格式:

IF條件THEN

順序執(zhí)行語(yǔ)句;

ENDIF;

執(zhí)行過程:如果條件成立,即條件表達(dá)式為TURE,則執(zhí)行順序語(yǔ)句,否則跳過順序語(yǔ)句結(jié)束IF。由于該IF語(yǔ)句中沒有指出條件不滿足時(shí)做何操作,即在條件句中沒有給出各種可能的條件時(shí)的處理方式,所以是一種不完整的條件語(yǔ)句。

不完整IF語(yǔ)句作用:形成鎖存,用于構(gòu)成時(shí)序電路,而組合電路只能使用完整的IF語(yǔ)句。

例5-6:

IF(clk’eventandclk=’1’)thenQ<=d;Endif;

二選一IF語(yǔ)句語(yǔ)句格式:

IF條件THEN

順序執(zhí)行語(yǔ)句1;ELSE

順序執(zhí)行語(yǔ)句2;ENDIF;

執(zhí)行過程:如果條件成立,則執(zhí)行順序語(yǔ)句1,否則執(zhí)行順序語(yǔ)句2。

完整的描述了條件成立、不成立時(shí)的操作,對(duì)應(yīng)組合電路的二選一選擇結(jié)構(gòu)。典型應(yīng)用:二選一電路

ifsel=‘0’then

q<=d0;

else

q<=d1;

endif;

二選一IF語(yǔ)句語(yǔ)句格式:

IF條件THEN

順序執(zhí)行語(yǔ)句;

ELSIF條件THEN

順序執(zhí)行語(yǔ)句;

ELSIF條件THEN

順序執(zhí)行語(yǔ)句;

ELSE

順序執(zhí)行語(yǔ)句;

ENDIF;

多重條件IF語(yǔ)句注意:ELSIF可以多次使用,而ELSE僅能使用一次。

例:4位寬的四選一多路選擇器的功能。

Libraryieee;

Useieee.std_logic_1164.all;

Entitymux4is

Port(a,b,c,d:instd_logic_vector(3downto0);

S:instd_logic_vector(1downto0);

X::outstd_logic_vector(3downto0));

Endmux4;多重條件IF語(yǔ)句Architecturearchmux4ofmux4is

Begin

Mux4:process(a,b,c,d,s)

Begin

Ifs=”00”then

X<=a;

Elsifs=”01”then

X<=b;

Elsifs=”10”then

X<=c;

Else

X<=d;

Endif;

Endprocessmux4;

Endarchmux4;多重條件IF語(yǔ)句語(yǔ)句格式:

IF條件1THEN

IF條件2THEN

順序語(yǔ)句;

ENDIF;

ENDIF;IF語(yǔ)句嵌套例5-9:

Libraryieee;

Useieee.std_logic_1164.all;

Useieee.std_logic_unsigned.all;

Useieee.std_logic_arith.all;

entitycnt4is

port(rst:instd_logic;

clk:instd_logic;

en:instd_logic;

cnt:bufferstd_logic_vector(3downto0)

);

endcnt4;IF語(yǔ)句嵌套architectureBehavioralofcnt4is

begin

process(clk,rst,en)

begin

ifrst='0'then

cnt<="0000";

elsif

clk'eventandclk='1'then

ifen='1'then

cnt<=cnt+1;

endif;

endif;

endprocess;

endBehavioral;IF語(yǔ)句嵌套5.1.3CASE語(yǔ)句一般格式為:

CASE條件表達(dá)式ISWHEN值1=>順序語(yǔ)句1;WHEN值2=>順序語(yǔ)句2;WHEN值3=>順序語(yǔ)句3;……WHENOTHERS=>順序語(yǔ)句m;ENDCASE;5.1.3CASE語(yǔ)句WHEN選擇值表示:

單個(gè)值;并列數(shù)值:值1|值2|值3|…|值n;數(shù)值范圍:值1TO值n;混合方式:上述3種的混合。5.1.3CASE語(yǔ)句注意:

WHEN的數(shù)量無限制,但不能共用相同值;WHEN語(yǔ)句的值必須覆蓋表達(dá)式的所有值;只能有一個(gè)OTHERS,且位于最后。5.1.3CASE語(yǔ)句例5-10

Architecturearchmux4ofmux4isBeginMux4:process(a,b,c,d,s)BeginCasesisWhen"00"=>X<=a;When"01"=>X<=b;When"10"=>X<=c;When"11"=>X<=d;Whenothers=>Null;--空語(yǔ)句

Endcase;Endprocessmux4;Endarchmux4;5.1.3CASE語(yǔ)句例5-11:IF與CASE混合使用

Mux4:process(EN,a,b,c,d,s)BeginIFEN=’0’thenX<=”0000”;ELSECasesisWhen"00"=>X<=a;When"01"=>X<=b;When"10"=>X<=c;When"11"=>X<=d;Whenothers=>Null;--空語(yǔ)句

Endcase;ENDIF;Endprocessmux4;【例】case語(yǔ)句使用中幾種容易發(fā)生的錯(cuò)誤

SIGNALvalue:INTEGERRANGE0TO15;SIGNALout1:STD_LOGIC;...CASEvalueIS--缺少以WHEN引導(dǎo)的條件句

ENDCASE;

...CASEvalueISWHEN0=>out1<='1';--value2~15的值未包括進(jìn)去

WHEN1=>out1<='0';ENDCASE...CASEvalueISWHEN0TO10=>out1<='1';--選擇值中5~10的值有重疊

WHEN5TO15=>out1<='0';ENDCASE;5.1.4LOOP語(yǔ)句兩種循環(huán)控制語(yǔ)句:

FORLOOP循環(huán)和WHILELOOP循環(huán)。

FORLOOP循環(huán)主要用在規(guī)定數(shù)目的重復(fù)情況;WHILELOOP則根據(jù)控制條件執(zhí)行循環(huán)直到條件為FALSE。FORLOOP格式:[標(biāo)號(hào):]FOR循環(huán)變量

IN循環(huán)次數(shù)范圍

LOOP

順序處理語(yǔ)句;ENDLOOP[標(biāo)號(hào)];FORLOOP語(yǔ)句循環(huán)變量:屬于LOOP語(yǔ)句的局部變量,不需要事先定義,也不能被賦值,它的值從循環(huán)次數(shù)范圍的初值開始,執(zhí)行一次順序語(yǔ)句自動(dòng)加一,當(dāng)其值超出循環(huán)次數(shù)范圍時(shí),則退出循環(huán)語(yǔ)句。FORLOOP語(yǔ)句例5-12ARCHITECTUREbehaveOFpcISBEGIN

PROCESS(a)VARIABLEtmp:STD_LOGIC;BEGIN

tmp:='0';FORiIN0TO7LOOP

tmp:=tmpXORa(i);ENDLOOP;y<=tmp;ENDPROCESS;ENDbehave;WHILELOOP格式:

[標(biāo)號(hào):]WHILE條件LOOP

順序處理語(yǔ)句

ENDLOOP[標(biāo)號(hào)];

如果條件為真,則進(jìn)行循環(huán),否則結(jié)束循環(huán)。WHILELOOP語(yǔ)句WHILELOOP語(yǔ)句例5-13PROCESS(a)VARIABLEtmp:STD_LOGIC;VARIABLEI:INTEGER;BEGIN

tmp:='0';i:=0;Whilei<8loop

Tmp:=tmpXORa(i);I:=I+1;Endloop;y<=tmp;ENDPROCESS;5.1.5NEXT語(yǔ)句用在LOOP循環(huán)語(yǔ)句中,表示跳出本次循環(huán),執(zhí)行下一次循環(huán)或其他循環(huán)操作。語(yǔ)句格式:Next[循環(huán)標(biāo)號(hào)][when條件表達(dá)式];

當(dāng)條件表達(dá)式滿足條件時(shí),結(jié)束本次循環(huán)操作,跳轉(zhuǎn)到[循環(huán)標(biāo)號(hào)]對(duì)應(yīng)的循環(huán)語(yǔ)句,若無[循環(huán)標(biāo)號(hào)]語(yǔ)句,則結(jié)束本次循環(huán),執(zhí)行下一個(gè)循環(huán)操作。5.1.5NEXT語(yǔ)句【例5-14】計(jì)算8位數(shù)據(jù)總線DATA中“1”的個(gè)數(shù)。PROCESS(DATA)BEGINForIIN0TO7LOOPIFDATA(I)=’0’THENNEXT;--跳出本次循環(huán),進(jìn)行下一數(shù)據(jù)位判斷

ELSEM<=M+1;--如數(shù)據(jù)總線本位信號(hào)為‘1’,則計(jì)數(shù)器M加1ENDIF;ENDLOOP;ENDPROCESS;5.1.5NEXT語(yǔ)句【例5-15】計(jì)算8位數(shù)據(jù)總線DATA中“1”的個(gè)數(shù)。PROCESS(DATA)BEGINForIIN0TO7LOOPNEXTWHENDATA(I)=’0’;--則跳出本次循環(huán)

M<=M+1;--如數(shù)據(jù)總線本位信號(hào)為‘1’,則計(jì)數(shù)器M加1ENDLOOP;ENDPROCESS;5.1.6EXIT語(yǔ)句用在LOOP循環(huán)語(yǔ)句中,表示表示退出整個(gè)循環(huán)操作。語(yǔ)句格式:

EXIT[循環(huán)標(biāo)號(hào)];或EXIT[循環(huán)標(biāo)號(hào)][WHEN條件];

5.1.6EXIT語(yǔ)句例5-16process(inp)variablem:std_logic_vector(2downto0);beginm:="111";foriin7downto0loopifinp(i)='0'then m:=m-1; else exit;endif;endloop;

outp<=m;endprocess; 5.1.8NULL語(yǔ)句空操作語(yǔ)句功能是使運(yùn)行流程繼續(xù),進(jìn)入下一條語(yǔ)句的執(zhí)行。在CASE語(yǔ)句中使用,用于排除一些不用的條件。Signalinp:std_logic_vector(0to1);…caseinpiswhen"00"=>outp<="0001"; when"01"=>outp<="0010"; when"10"=>outp<="0100"; when"11"=>outp<="1000"; whenothers=>null;--排除inp其他取值

endcase;5.2并行語(yǔ)句并行語(yǔ)句是硬件描述語(yǔ)言與一般軟件程序最大的區(qū)別所在,所有并行語(yǔ)句在結(jié)構(gòu)體中的執(zhí)行都是同時(shí)進(jìn)行的,即它們的執(zhí)行順序與語(yǔ)句書寫的順序無關(guān)。這種并行性是由硬件本身的并行性決定的,即一旦電路接通電源,它的各部分就會(huì)按照事先設(shè)計(jì)好的方案同時(shí)工作。

5.2并行語(yǔ)句VHDL并行語(yǔ)句:賦值語(yǔ)句PROCESS進(jìn)程語(yǔ)句元件例化語(yǔ)句BLOCK塊語(yǔ)句GENERATE語(yǔ)句5.2.1并行信號(hào)賦值語(yǔ)句賦值語(yǔ)句在進(jìn)程內(nèi)使用是順序執(zhí)行,在進(jìn)程外即在結(jié)構(gòu)體中直接使用就是并行語(yǔ)句。并行信號(hào)賦值語(yǔ)句有3種形式:簡(jiǎn)單信號(hào)賦值、條件信號(hào)賦值和選擇信號(hào)賦值。

簡(jiǎn)單信號(hào)賦值語(yǔ)句語(yǔ)句格式:目標(biāo)信號(hào)<=表達(dá)式;例5-19:architectureBehavioralofgate2isbeginout1<=AandB; out2<=AorB;endBehavioral;

條件信號(hào)賦值語(yǔ)句語(yǔ)句格式:

目標(biāo)信號(hào)<=表達(dá)式1WHEN條件1ELSE

表達(dá)式2WHEN條件2ELSE

表達(dá)式3WHEN條件3ELSE…

表達(dá)式n;

說明:從條件1開始逐項(xiàng)測(cè)定,一旦賦值條件為Ture,立即將相應(yīng)表達(dá)式值賦給目標(biāo)信號(hào);其功能與進(jìn)程中的IF語(yǔ)句相同;最后一項(xiàng)表達(dá)式可以不跟條件子句,以上所有條件都不滿足時(shí),將表達(dá)式n賦給目標(biāo)信號(hào)。

條件信號(hào)賦值語(yǔ)句例5-20:ARCHITECTUREArcmuxOFmux4ISBEGINy<=i0WHENsel="00"ELSE--條件代入語(yǔ)句,句末無符號(hào)

i1WHENsel="01"ELSEi2WHENsel="10"ELSEi3;ENDarcmux;

選擇信號(hào)賦值語(yǔ)句語(yǔ)句格式:

WITH選擇條件表達(dá)式SELECT

目標(biāo)信號(hào)<=表達(dá)式1WHEN選擇值1,

表達(dá)式2WHEN選擇值2,:

表達(dá)式nWHEN選擇值n,

表達(dá)式WHENothers;

說明:根據(jù)選擇條件表達(dá)式取值,將相應(yīng)選擇值對(duì)應(yīng)的表達(dá)式賦給目標(biāo)信號(hào);該語(yǔ)句與CASE語(yǔ)句相似,要求覆蓋條件表達(dá)式的所有取值,并且不允許有條件重疊現(xiàn)象。除最后一句外各子句句末全是‘,’,而不是‘;’

選擇信號(hào)賦值語(yǔ)句例5-21:ARCHITECTUREArcmuxOFmux4ISBEGINWITHSELSELECTy<=i0WHEN"00",--使用“,”i1WHEN"01",i2WHEN"10",i3WHEN"11",‘Z’WHENothers;ENDarcmux;

5.2.2PROCESS進(jìn)程語(yǔ)句進(jìn)程語(yǔ)句是個(gè)復(fù)合語(yǔ)句,由順序語(yǔ)句組成,進(jìn)程內(nèi)部的語(yǔ)句是順序執(zhí)行的。在一個(gè)結(jié)構(gòu)體中可以有多個(gè)進(jìn)程,各個(gè)進(jìn)程是并發(fā)執(zhí)行的,即結(jié)構(gòu)體中多個(gè)進(jìn)程的執(zhí)行與各進(jìn)程的書寫順序無關(guān)多進(jìn)程間的通信依靠信號(hào)來傳遞。語(yǔ)句格式:

[進(jìn)程標(biāo)號(hào):]PROCESS[(敏感信號(hào)列表)][說明部分];BEGIN

順序描述語(yǔ)句;

[WAITUNTIL條件表達(dá)式];[WAITFOR時(shí)間表達(dá)式];ENDPROCESS[進(jìn)程標(biāo)號(hào)];5.2.2PROCESS進(jìn)程語(yǔ)句語(yǔ)句組成:敏感信號(hào)列表列出啟動(dòng)進(jìn)程的輸入信號(hào);也可以使用進(jìn)程順序部分的WAIT語(yǔ)句來控制進(jìn)程的啟動(dòng);WAIT語(yǔ)句和敏感列表只能出現(xiàn)一個(gè),但可以有多個(gè)WAIT語(yǔ)句。說明部分用于定義一些進(jìn)程內(nèi)部有效的局部量,包括:變量、常數(shù)、數(shù)據(jù)類型、屬性、子程序等,不允許定義信號(hào)。順序描述部分描述進(jìn)程模塊的功能。一般采用IF語(yǔ)句描述算法,實(shí)現(xiàn)模塊的行為功能。5.2.2PROCESS進(jìn)程語(yǔ)句進(jìn)程特點(diǎn):進(jìn)程狀態(tài)獨(dú)立的無限循環(huán)程序結(jié)構(gòu)。進(jìn)程有兩種運(yùn)行狀態(tài),即執(zhí)行狀態(tài)(激活)和等待狀態(tài)(掛起)。當(dāng)敏感信號(hào)列表中信號(hào)有變化或者WAIT條件滿足時(shí),進(jìn)程進(jìn)入執(zhí)行狀態(tài),順序執(zhí)行進(jìn)程內(nèi)順序描述語(yǔ)句,遇到ENDPROCESS語(yǔ)句后停止執(zhí)行,自動(dòng)返回起始語(yǔ)句PROCESS,進(jìn)入等待狀態(tài)。5.2.2PROCESS進(jìn)程語(yǔ)句進(jìn)程的并行性進(jìn)程內(nèi)部雖然是順序語(yǔ)句,但其綜合后的硬件是一個(gè)獨(dú)立模塊,所以進(jìn)程內(nèi)部的順序語(yǔ)句具有順序和并行雙重性;不同進(jìn)程是并行運(yùn)行的,進(jìn)程之間的通信通過信號(hào)傳遞,這也反映了信號(hào)的全局特征。時(shí)鐘驅(qū)動(dòng)

一般一個(gè)進(jìn)程中只能描述針對(duì)同一時(shí)鐘的同步時(shí)序邏輯,異步時(shí)序邏輯則需要由多個(gè)進(jìn)程來表達(dá)。進(jìn)程特點(diǎn)組合進(jìn)程【例5-22

】ARCHITECTUREconnectOFmux1ISBEGIN

cale:--進(jìn)程名

PROCESS(d0,d1,sel)--輸入信號(hào)為敏感信號(hào)

VARIABLEtmp1,tmp2,tmp3:std_logic;--在進(jìn)程中定義變量

BEGINtmp1:=d0ANDsel;--輸入端口向變量賦值

tmp2:=d1AND(NOTsel);tmp3:=tmp1ORtmp2;q<=tmp3;--變量值賦給輸出信號(hào)

ENDPROCESScale;ENDconnect;進(jìn)程示例時(shí)序進(jìn)程【例5-23】

ARCHITECTURErig_dOFffdISbeginprocess(clk)--時(shí)鐘為敏感信號(hào)

beginifclk’eventandclk=’1’then--時(shí)鐘clk的上升沿檢測(cè)

q<=d;endif;endprocess;endrig_d;進(jìn)程示例多進(jìn)程并行

【例5-24】ENTITYmulISPORT(a,b,c,selx,sely:INBIT;

data_out:OUTBIT);ENDmul;ARCHITECTUREexOFmulISSIGNALtemp:BIT;BEGIN進(jìn)程示例

p_a:PROCESS(a,b,selx)BEGINIF(selx='0')THENtemp<=a;ELSEtemp<=b;ENDIF;ENDPROCESSp_a;

p_b:PROCESS(temp,c,sely)BEGINIF(sely='0')THENdata_out<=temp;ELSEdata_out<=c;ENDIF;ENDPROCESSp_b;ENDex;多進(jìn)程并行例6-16的綜合結(jié)果多進(jìn)程并行異步時(shí)序進(jìn)程【例5-25】ARCHITECTUREcnt_4OFffdISsignalq0,q1:std_logic;begin

p_a:process(clk)--時(shí)鐘clk為敏感信號(hào)

beginifclk’eventandclk=’1’then--時(shí)鐘clk的上升沿檢測(cè)

q0<=notq0;endif;endprocessp_a;

進(jìn)程示例p_b:process(q0)--q0為敏感信號(hào)

beginifq0’eventandq0=’1’then--時(shí)鐘q0的上升沿檢測(cè)

q1<=notq1;endif;endprocessp_b;y<=q0&q1;endcnt_4;異步時(shí)序進(jìn)程異步時(shí)序進(jìn)程元件例化就是將預(yù)先設(shè)計(jì)好的設(shè)計(jì)實(shí)體定義為一個(gè)元件,然后利用特定的語(yǔ)句將此元件與當(dāng)前的設(shè)計(jì)實(shí)體中的指定端口相連接,從而為當(dāng)前設(shè)計(jì)實(shí)體引入一個(gè)新的低一級(jí)的設(shè)計(jì)層次。元件例化是可以多層次的,在一個(gè)設(shè)計(jì)實(shí)體中被調(diào)用安插的元件本身也可以是一個(gè)低層次的當(dāng)前設(shè)計(jì)實(shí)體,因而可以調(diào)用其他的元件,以便構(gòu)成更低層次的電路模塊。5.2.3元件例化語(yǔ)句元件例化語(yǔ)句由兩個(gè)語(yǔ)句組成:

元件說明語(yǔ)句(Component)和元件映射語(yǔ)句(Portmap)。其中component語(yǔ)句在結(jié)構(gòu)體說明部分中定義,portmap語(yǔ)句在結(jié)構(gòu)體并行執(zhí)行語(yǔ)句中使用。5.2.3元件例化語(yǔ)句元件說明語(yǔ)句格式:Component元件名is[類屬語(yǔ)句]Port(端口語(yǔ)句);Endcomponent;語(yǔ)句說明:

相當(dāng)于對(duì)一個(gè)設(shè)計(jì)好的實(shí)體進(jìn)行封裝,留出對(duì)外的接口界面。其中,元件名為要定義模塊的實(shí)體名;類屬語(yǔ)句及端口語(yǔ)句的說明與要定義模塊的實(shí)體相同,即名稱及順序要完全一致。元件說明語(yǔ)句在結(jié)構(gòu)體的說明部分定義。

元件說明語(yǔ)句

完成元件與當(dāng)前設(shè)計(jì)實(shí)體的連接,需要說明元件端口與其他模塊的連接關(guān)系,即映射。VHDL映射方式有位置關(guān)聯(lián)和名稱關(guān)聯(lián)兩種方式。格式一:例化名:Portmap(元件端口1=>映射信號(hào)1,…,元件端口n=>映射信號(hào)n);

其中例化名相當(dāng)于元件標(biāo)號(hào),是必須的;“=>”是關(guān)聯(lián)符,采用名稱關(guān)聯(lián),表示左邊的元件端口與右邊的映射信號(hào)相連;各端口關(guān)聯(lián)說明的順序任意。元件映射語(yǔ)句元件映射語(yǔ)句格式二:

例化名Portmap(映射信號(hào)1,映射信號(hào)2,…,映射信號(hào)n);

使用位置關(guān)聯(lián),采用順序一致原則,即將元件說明語(yǔ)句中的端口按順序依次與映射信號(hào)1到映射信號(hào)n連接。ORD41邏輯原理圖層次化、結(jié)構(gòu)化描述示例LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYND2ISPORT(A,B:INSTD_LOGIC;C:OUTSTD_LOGIC);ENDENTITYND2;ARCHITECTUREARTND2OFND2ISBEGINC<=ANANDB;ENDARCHITECTUREARTND2;下層元件描述LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYORD41ISPORT(A1,B1,C1,D1:INSTD_L

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論