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

下載本文檔

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

文檔簡(jiǎn)介

第3章VHDL基本描述語(yǔ)句主要內(nèi)容:1、順序語(yǔ)句

2、并行語(yǔ)句

重點(diǎn)內(nèi)容:順序語(yǔ)句和并行語(yǔ)句1第3章VHDL基本描述語(yǔ)句順序語(yǔ)句就是在語(yǔ)句的執(zhí)行過程中,語(yǔ)句的執(zhí)行順序是按照語(yǔ)句的書寫順序一個(gè)語(yǔ)句一個(gè)語(yǔ)句地執(zhí)行的。順序語(yǔ)句只能出現(xiàn)在進(jìn)程、過程和函數(shù)中,用以定義在進(jìn)程、過程和函數(shù)中所執(zhí)行的算法。并發(fā)語(yǔ)句是并行執(zhí)行的。例如進(jìn)程語(yǔ)句,在一個(gè)結(jié)構(gòu)體中的各進(jìn)程語(yǔ)句是并發(fā)執(zhí)行的。23.1VHDL中的順序描述語(yǔ)句賦值語(yǔ)句Wait語(yǔ)句If語(yǔ)句Case語(yǔ)句Loop語(yǔ)句Next語(yǔ)句Null語(yǔ)句斷言語(yǔ)句過程調(diào)用語(yǔ)句33.1.1信號(hào)代入語(yǔ)句和變量賦值語(yǔ)句信號(hào)代入語(yǔ)句的書寫格式:

目標(biāo)信號(hào)<=表達(dá)式;該語(yǔ)句表示將代入符號(hào)“<=”右邊表達(dá)式的值賦給左的目標(biāo)信號(hào),注意代入符號(hào)兩邊的信號(hào)和表達(dá)式的數(shù)據(jù)型和長(zhǎng)度必須保持一致。變量只能在VHDL源代碼的順序部分進(jìn)行說明和使用,只能出現(xiàn)在進(jìn)程、過程和函數(shù)內(nèi)。變量賦值語(yǔ)句的書寫格式:

目標(biāo)變量:=表達(dá)式;

43.1.2Wait語(yǔ)句在VHDL源代碼中的進(jìn)程總是處于兩種狀態(tài):執(zhí)行和掛起。Wait語(yǔ)句可以控制進(jìn)程的執(zhí)行或掛起。當(dāng)進(jìn)程執(zhí)行到wait語(yǔ)句時(shí)將被掛起,并等待wait語(yǔ)句條件滿足時(shí)進(jìn)程再次被執(zhí)行。有4種不同的方法來描述一個(gè)wait語(yǔ)句。

wait——無限等待

waiton——敏感信號(hào)量變化

waituntil——條件滿足

waitfor——時(shí)間到51.WAIT(無限等待語(yǔ)句)

這種形式的WAIT語(yǔ)句在關(guān)鍵字“WAIT”后面不帶任何信息,是無限等待的情況。2.WAITON信號(hào)表(敏感信號(hào)等待語(yǔ)句)第3章VHDL基本描述語(yǔ)句waiton語(yǔ)句的完整書寫格式:

waiton敏感信號(hào)[,敏感信號(hào)];

waiton語(yǔ)句使進(jìn)程掛起,直到敏感信號(hào)表中的某個(gè)信號(hào)發(fā)生了變化才能夠把進(jìn)程激活。6例[A]PROCESSBEGINy<=aANDb;WAITONa,b;ENDPROCESS;例[B]PROCESS(a,b)BEGINy<=aANDb;

ENDPROCESS;

①在使用WAITON語(yǔ)句的進(jìn)程中,敏感信號(hào)量應(yīng)寫在進(jìn)程中的WAITON語(yǔ)句后面;②在不使用WAITON語(yǔ)句的進(jìn)程中,敏感信號(hào)量應(yīng)在開頭的關(guān)鍵詞PROCESS后面的敏感信號(hào)表中列出。

③VHDL規(guī)定,已列出敏感信號(hào)表的進(jìn)程不能使用任何形式的WAIT語(yǔ)句。

第3章VHDL基本描述語(yǔ)句3.1.2Wait語(yǔ)句7例:異步復(fù)位的D觸發(fā)器Libraryieee;Useieee.std_logic_1164.all;Entityreset_dff1isport(clk,reset:instd_logic;d:instd_logic;q:outstd_logic);Endentityreset_dff1;Architecturertlofreset_dff1isBegin

ProcessBeginif(reset=‘1’)thenq<=‘0’;elsif(clk’eventandclk=‘1’)thenq<=d;endif;

waitonclk,reset;

endprocess;Endrtl;3.1.2Wait語(yǔ)句process(reset,clk)Beginif(reset=‘1’)thenq<=‘0’;elsif(clk’eventandclk=‘1’)thenq<=d;endif;83.WAITUNTIL條件(條件等待語(yǔ)句)WAITUNTIL語(yǔ)句需滿足以下條件:①在條件表達(dá)式中所含的信號(hào)發(fā)生了變化;②此信號(hào)改變后,且滿足WAITUNTIL語(yǔ)句中表達(dá)式的條件。這兩個(gè)條件缺一不可,且必須按照上述順序來完成。第3章VHDL基本描述語(yǔ)句3.1.2Wait語(yǔ)句waituntil語(yǔ)句的完整書寫格式:

waituntil條件表達(dá)式;waituntil語(yǔ)句將使進(jìn)程掛起,直到該條件表達(dá)式返回一個(gè)為“true”的值,進(jìn)程才能夠再次被啟動(dòng)。當(dāng)表達(dá)式中任何一個(gè)信號(hào)有事件發(fā)生時(shí),就會(huì)立即對(duì)該表達(dá)式進(jìn)行計(jì)算。9WAITUNTIL語(yǔ)句有以下三種表達(dá)方式:

WAITUNTIL信號(hào)=VALUE;

WAITUNTIL信號(hào)’EVENTAND信號(hào)=VALUE;

WAITUNTIL信號(hào)’STABLEAND信號(hào)=VALUE;例如:

WAITUNTILclock=“1”;

WAITUNTILrising_edge(clk);

WAITUNTILclk=‘1’ANDclk’EVENT;

WAITUNTILNOTclk’STABLEANDclk=“1”;

一般的,在一個(gè)進(jìn)程中使用了WAIT語(yǔ)句后,綜合器會(huì)綜合產(chǎn)生時(shí)序邏輯電路。時(shí)序邏輯電路的運(yùn)行依賴WAITUNTIL表達(dá)式的條件,同時(shí)還具有數(shù)據(jù)存儲(chǔ)的功能。第3章VHDL基本描述語(yǔ)句10例:同步復(fù)位的D觸發(fā)器Libraryieee;Useieee.std_logic_1164.all;Entityreset_dff3isport(clk,reset:instd_logic;d:instd_logic;q:outstd_logic);Endentityreset_dff3;Architecturertlofreset_dff3isBegin

Process

Beginwaituntilclk’eventandclk=‘1’;if(reset=‘1’)thenq<=‘0’;elsethenq<=d;endif;

endprocess;Endrtl;3.1.2Wait語(yǔ)句114.WAITFOR時(shí)間表達(dá)式(超時(shí)等待語(yǔ)句)例[A]:WAITFOR40ns;

在該語(yǔ)句中,時(shí)間表達(dá)式為常數(shù)40ns,當(dāng)進(jìn)程執(zhí)行到該語(yǔ)句時(shí),將等待40ns,經(jīng)過40ns之后,進(jìn)程執(zhí)行WAITFOR的后繼語(yǔ)句。例[B]:WAITFOR(a*(b+c));

在此語(yǔ)句中,(a*(b+c))為時(shí)間表達(dá)式,WAITFOR語(yǔ)句在執(zhí)行時(shí),首先計(jì)算表達(dá)式的值,然后將計(jì)算結(jié)果返回作為該語(yǔ)句的等待時(shí)間。

第3章VHDL基本描述語(yǔ)句125.多條件等待語(yǔ)句

Wait語(yǔ)句可以同時(shí)使用多個(gè)等待條件。在多條件等待語(yǔ)句的表達(dá)式中,至少應(yīng)該有一個(gè)值包含信號(hào)。例:waitonabuntil(c’eventandc=‘1’)for10ns;第3章VHDL基本描述語(yǔ)句13If語(yǔ)句是在VHDL描述硬件電路的過程中使用最頻繁的語(yǔ)句。If語(yǔ)句的完整書寫格式:

if<條件>then<順序語(yǔ)句>;

[elsif<條件>then<順序語(yǔ)句>;][elsif<條件>then<順序語(yǔ)句>;]……[else<順序語(yǔ)句>;]endif;從if開始到endif結(jié)束,endif要分開寫條件是一個(gè)布爾表達(dá)式,返回值為布爾類型。當(dāng)條件滿足時(shí)執(zhí)行接下來的順序語(yǔ)句;當(dāng)條件不滿足時(shí)就去執(zhí)行接下來的順序語(yǔ)句elsif子句或else子句或結(jié)束if語(yǔ)句。根據(jù)if語(yǔ)句的完整書寫格式,If語(yǔ)句的三種常用形式。3.1.3IF語(yǔ)句143.1.3IF語(yǔ)句1、門閂控制語(yǔ)句IF<條件>THEN

<順序語(yǔ)句>;

ENDIF;

第3章VHDL基本描述語(yǔ)句15

當(dāng)程序執(zhí)行到這種門閂控制型IF語(yǔ)句時(shí),首先判斷語(yǔ)句中所指定的條件是否成立。如果條件成立,則程序繼續(xù)執(zhí)行IF語(yǔ)句中所含的順序處理語(yǔ)句;如果條件不成立,程序?qū)⑻^IF語(yǔ)句所包含的順序處理語(yǔ)句,而向下執(zhí)行IF的后繼語(yǔ)句。

例:利用IF語(yǔ)句引入D觸發(fā)器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYdffISPORT(clk,d:INSTD_LOGIC;

q:OUTSTD_LOGIC);ENDdff;ARCHITECTURErtlOFdffISBEGIN

PROCESS(clk)

BEGIN

IF(clk’EVENTANDclk=’1’)

THEN

q<=d;

ENDIF;

ENDPROCESS;END

rtl;第3章VHDL基本描述語(yǔ)句162、二選一控制語(yǔ)句

IF<條件>THEN

<順序語(yǔ)句>;

ELSE

<

順序語(yǔ)句>;

ENDIF;

當(dāng)IF條件成立時(shí),程序執(zhí)行THEN和ELSE之間的順序語(yǔ)句部分;當(dāng)IF語(yǔ)句的條件得不到滿足時(shí),程序執(zhí)行ELSE和ENDIF之間的順序處理語(yǔ)句。即依據(jù)IF所指定的條件是否滿足,程序可以進(jìn)行兩條不同的執(zhí)行路徑。

第3章VHDL基本描述語(yǔ)句17例:二選一電路結(jié)構(gòu)體的描述ARCHITECTURErtlOFmux2ISBEGINPROCESS(a,b,s)BEGIN

IF(s=’1’)THEN

c<=a;

ELSE

c<=b;

ENDIF;ENDPROCESS;END

rtl;

第3章VHDL基本描述語(yǔ)句183、多選擇控制語(yǔ)句IF<條件>THEN

<順序語(yǔ)句>;

ELSEIF

<順序語(yǔ)句>;ELSEIF

<順序語(yǔ)句>;ELSE

<順序語(yǔ)句>;ENDIF;

這種多選擇控制的IF語(yǔ)句,實(shí)際上就是條件嵌套。它設(shè)置了多個(gè)條件,當(dāng)滿足所設(shè)置的多個(gè)條件之一時(shí),就執(zhí)行該條件后的順序處理語(yǔ)句。當(dāng)所有設(shè)置的條件都不滿足時(shí),程序執(zhí)行ELSE和ENDIF之間的順序處理語(yǔ)句。第3章VHDL基本描述語(yǔ)句19例:利用多選控制語(yǔ)句設(shè)計(jì)的四選一多路選擇器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux4ISPORT(input:INSTD_LOGIC_VECTOR(3DOWNTO0);

sel:INSTD_LOGIC_VECTOR(1DOWNTO0);

y:OUTSTD_LOGIC);ENDmux4;第3章VHDL基本描述語(yǔ)句20ARCHITECTURErtlOFmux4ISBEGINPROCESS(input,sel)BEGIN

IF(sel=“00”)THENy<=input(0);

ELSIF(sel=“01”)THENy<=input(1);

ELSIF(sel=“10”)THENy<=input(2);

ELSEy<=input(3);

ENDIF;ENDPROCESS;ENDrtl;第3章VHDL基本描述語(yǔ)句213.1.4CASE語(yǔ)句第3章VHDL基本描述語(yǔ)句Case語(yǔ)句完整書寫形式:

case<表達(dá)式>iswhen<選擇>=><順序語(yǔ)句>;

when<選擇>=><順序語(yǔ)句>;

……

whenothers=><順序語(yǔ)句>;

endcase;Case語(yǔ)句中如果表達(dá)式的值與某一個(gè)when語(yǔ)句的選擇值或與others值相匹配,則執(zhí)行它們后面所跟的順序執(zhí)行語(yǔ)句,執(zhí)行完順序語(yǔ)句后將結(jié)束該case語(yǔ)句。Case語(yǔ)句中的所有條件必須被枚舉,不允許when語(yǔ)句后的選擇有相同的。When語(yǔ)句后面的選擇值必須是表達(dá)式的所有取值,不能遺漏??梢岳胦thers來表示所有具有相同操作的選擇。Case語(yǔ)句中的when語(yǔ)句可以顛倒次序而不影響操作,但保留字others必須放在作后面。22當(dāng)執(zhí)行到CASE語(yǔ)句時(shí),首先計(jì)算CASE和IS之間的表達(dá)式的值,然后根據(jù)條件語(yǔ)句中與之相同的選擇值,執(zhí)行對(duì)應(yīng)的順序語(yǔ)句,最后結(jié)束CASE語(yǔ)句。第3章VHDL基本描述語(yǔ)句在case語(yǔ)句中的“when<選擇>=><順序語(yǔ)句>;”有四種表示形式:

When值=><順序語(yǔ)句>;When值|值|…|值=><順序語(yǔ)句>;--表示并行關(guān)系

When值to值=><順序語(yǔ)句>;--表示范圍

Whenothers=><順序語(yǔ)句>;23CASE語(yǔ)句需要注意的幾點(diǎn)(1)CASE語(yǔ)句中每一條語(yǔ)句的選擇值只能出現(xiàn)一次,即不能有相同選擇值的條件語(yǔ)句出現(xiàn)。(2)CASE語(yǔ)句執(zhí)行中必須選中,且只能選中所列條件語(yǔ)句中的一條,即CASE語(yǔ)句至少包含一個(gè)條件語(yǔ)句。(3)除非所有條件語(yǔ)句中的選擇值能完全覆蓋CASE語(yǔ)句中表達(dá)式的取值,否則最末一個(gè)條件語(yǔ)句中的選擇必須用“OTHERS”表示,它代表已給出的所有條件語(yǔ)句中未能列出的其他可能的取值。關(guān)鍵詞OTHERS只能出現(xiàn)一次,且只能作為最后一種條件取值。第3章VHDL基本描述語(yǔ)句24例:七段顯示譯碼器Libraryieee;Useieee.std_logic_1164.all;Entityse7isport(input:instd_logic_vector(3downto0);output:outstd_logic_vector(6downto0));Endse7;Architecturese7_arcofse7isBeginprocess(input)3.1.4CASE語(yǔ)句25

Begincaseinputiswhen“0000”=>output<=“0111111”;when“0001”=>output<=“0000110”;when“0010”=>output<=“1011011”;when“0011”=>output<=“1001111”;when“0100”=>output<=“1100110”;when“0101”=>output<=“1101101”;when“0110”=>output<=“1111101”;when“0111”=>output<=“0000111”;when“1000”=>output<=“1111111”;when“1001”=>output<=“1101111”;when“1010”=>output<=“1110111”;when“1011”=>output<=“1111100”;when“1100”=>output<=“0111001”;when“1101”=>output<=“1011110”;when“1110”=>output<=“1111001”;when“1111”=>output<=“1110001”;whenothers=>output<=“0000000”;endcase;endprocess;endse7_arc;3.1.4CASE語(yǔ)句例:七段顯示譯碼器Libraryieee;Useieee.std_logic_1164.all;Entityse7isport(input:instd_logic_vector(3downto0);output:outstd_logic_vector(6downto0));Endse7;Architecturese7_arcofse7isBeginprocess(input)26例3-8譯碼器

LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYdecoder3_8ISPORT(a,b,c,g1,g2a,g2b:INSTD_LOGIC;y:OUTSTD_LOGIC_VECTOR(7DOWNTO0);ENDdecoder3_8;ARCHITECTURErtlOFdecoder3_8ISSIGNALindata:STD_LOGIC_VECTOR(2DOWNTO0);

BEGIN

indata<=c&b&a;

PROCESS(indata,g1,g2a,g2b)

BEGIN第3章VHDL基本描述語(yǔ)句27IF(g1=‘1’ANDg2a=‘0’ANDg2b=‘0’)THEN

CASEindataISWHEN“000”=>y<=“11111110”;

WHEN“001”=>y<=“11111101”;

WHEN“010”=>y<=“11111011”;

WHEN“011”=>y<=“11110111”;

WHEN“100”=>y<=“11101111”;

WHEN“101”=>y<=“11011111”;

WHEN“110”=>y<=“10111111”;

WHEN“111”=>y<=“01111111”;

WHENOTHERS=>y<=“XXXXXXXX”;ENDCASE;

ELSEy<=“11111111”;

ENDIF;

ENDPROCESS;

ENDrtl;第3章VHDL基本描述語(yǔ)句283.1.5LOOP語(yǔ)句

LOOP語(yǔ)句就是循環(huán)語(yǔ)句,它可以使包含的一組順序語(yǔ)句被循環(huán)執(zhí)行,其執(zhí)行的次數(shù)受迭代算法控制。在VHDL中常用來描述迭代電路的行為。第3章VHDL基本描述語(yǔ)句VHDL提供了兩種循環(huán)控制語(yǔ)句:

Forloop循環(huán)

Whileloop循環(huán)Forloop循環(huán)主要用于在規(guī)定重復(fù)數(shù)目的重復(fù)情況;whileloop循環(huán)將連續(xù)執(zhí)行操作直到控制條件被判斷為“false”。29第3章VHDL基本描述語(yǔ)句1.forloop循環(huán)

Forloop循環(huán)的完整書寫格式為:

[循環(huán)標(biāo)號(hào):]for循環(huán)變量

in

離散范圍loop<順序處理語(yǔ)句>;

Endloop[循環(huán)標(biāo)號(hào)];循環(huán)標(biāo)號(hào)作為該forloop循環(huán)的標(biāo)志符;循環(huán)變量的值在每次的循環(huán)中都將發(fā)生變化;循環(huán)變量每取一個(gè)值,就要執(zhí)行一次循環(huán)體中的順序處理語(yǔ)句。離散范圍用來指定循環(huán)變量的取值范圍,循環(huán)變量的取值將從取值范圍最左邊的值開始并且遞增到取值范圍最右邊的值,實(shí)際上也是限定了循環(huán)的次數(shù)。離散范圍的值不一定指定為整數(shù)值,也可以是其他類型的。只是要保證數(shù)值是離散的就可以。30例:8位奇偶校驗(yàn)電路LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYparity_checkISPORT(a:INSTD_LOGIC_VECTOR(7DOWNTO0);y:OUTSTD_LOGIC);ENDparity_check;第3章VHDL基本描述語(yǔ)句31BEGIN

tmp:=‘0’;

FORiIN0TO7LOOP

tmp:=tmpXORa(i);

ENDLOOP;

y<=tmp;

ENDPROCESS;ENDrtl;第3章VHDL基本描述語(yǔ)句ARCHITECTURErtlOFparity_checkISBEGIN

PROCESS(a)

VARIABLEtmp:STD_LOGIC

322.whileloop循環(huán)whileloop循環(huán)的完整書寫格式為:

[循環(huán)標(biāo)號(hào):]while<條件>loop<順序處理語(yǔ)句>;

endloop[循環(huán)標(biāo)號(hào)];MAX+PlusII不支持whileloop語(yǔ)句。循環(huán)標(biāo)號(hào)用來作為該whileloop循環(huán)語(yǔ)句的標(biāo)志符;Whileloop循環(huán)語(yǔ)句當(dāng)檢測(cè)到保留字while后面的條件滿足時(shí)才去執(zhí)行順序處理語(yǔ)句。Whileloop循環(huán)語(yǔ)句在每次執(zhí)行前都要先檢查條件,如檢查出條件為“true”就去執(zhí)行循環(huán)體中的順序處理語(yǔ)句,執(zhí)行完后返回該循環(huán)的開始,將再次檢查條件;如果條件為“false”將結(jié)束循環(huán),去執(zhí)行whileloop循環(huán)語(yǔ)句后面的其他語(yǔ)句。3.1.5LOOP語(yǔ)句33例:8位奇偶校驗(yàn)電路的WHILE_LOOP設(shè)計(jì)形式

LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYparity_checkISPORT(a:INSTD_LOGIC_VECTOR(7DOWNTO0);

y:OUTSTD_LOGIC);ENDparity_check;ARCHITECTUREbehavOFparity_checkISBEGINPROCESS(a)

VARIABLEtmp:STD_LOGIC第3章VHDL基本描述語(yǔ)句34BEGIN

tmp:=‘0’;

i:=0;

WHILE(i<8)LOOP

tmp:=tmpXORa(i);

i:=i+1;

ENDLOOP;

y<=tmp;

ENDPROCESS;ENDbehav;第3章VHDL基本描述語(yǔ)句在該LOOP語(yǔ)句中,沒有給出循環(huán)次數(shù)的范圍,而是給出了循環(huán)執(zhí)行順序語(yǔ)句的條件;沒有自動(dòng)遞增循環(huán)變量的功能,而是在順序處理語(yǔ)句中增加了一條循環(huán)次數(shù)計(jì)算語(yǔ)句,用于循環(huán)語(yǔ)句的控制。

循環(huán)控制條件為布爾表達(dá)式,當(dāng)條件為“真”時(shí),則進(jìn)行循環(huán),如果條件為“假”,則結(jié)束循環(huán)。ARCHITECTUREbehavOFparity_checkISBEGIN

PROCESS(a)

VARIABLEtmp:STD_LOGIC353.1.6next語(yǔ)句VHDL提供了兩種跳出循環(huán)的操作,一種是跳出本次循環(huán)的next語(yǔ)句,另一種是跳出整個(gè)循環(huán)的exit語(yǔ)句。Next語(yǔ)句用在loop循環(huán)語(yǔ)句的內(nèi)部,它可以有條件或者是無條件地結(jié)束當(dāng)前此次循環(huán)并開始下一次的循環(huán)。next語(yǔ)句的完整書寫格式為:

next[循環(huán)標(biāo)號(hào)][when條件];“循環(huán)標(biāo)號(hào)”表明了結(jié)束本次循環(huán)后下一次循環(huán)的起始位置。“when條件”則表明了跳出本次循環(huán)的條件。當(dāng)“循環(huán)標(biāo)號(hào)”和“when條件”省略后則表明只要執(zhí)行到該next語(yǔ)句就立即無條件地跳出本次循環(huán),回到本loop循環(huán)語(yǔ)句地起始位置進(jìn)行下一次循環(huán)。36例:NEXT語(yǔ)句應(yīng)用舉例┇WHILEdata>1LOOPdata:=data+1;NEXTWHENdata=3data:=data*data;ENDLOOP;N1:FORiIN10DOWNTO1LOOPN2:FORjIN0TOiLOOPNEXTN1WHENi=j;

matrix(i,j):=j*i+1;

ENDLOOPN2;ENDLOOPN1;第3章VHDL基本描述語(yǔ)句37第3章VHDL基本描述語(yǔ)句VHDL提供了exit語(yǔ)句,允許設(shè)計(jì)人員從目前正在執(zhí)行的循環(huán)中跳出。Exit語(yǔ)句的完整書寫格式:

exit[循環(huán)標(biāo)號(hào)][when條件];“循環(huán)標(biāo)號(hào)”表明了要終止的loop循環(huán)標(biāo)號(hào)。“when條件”則表明了終止本循環(huán)的條件。當(dāng)“循環(huán)標(biāo)號(hào)”和“when條件”省略后則表明只要執(zhí)行到該exit語(yǔ)句就立即無條件地跳出本循環(huán),繼續(xù)執(zhí)行l(wèi)oop循環(huán)語(yǔ)句后面的其他語(yǔ)句。3.1.7exit語(yǔ)句38Exit語(yǔ)句有三種基本的書寫格式:一種是沒有“循環(huán)標(biāo)志”或“when條件”的書寫格式。執(zhí)行該語(yǔ)句時(shí)只從當(dāng)前所屬的loop循環(huán)語(yǔ)句中跳出。一種是帶有“循環(huán)標(biāo)號(hào)”的書寫格式。當(dāng)執(zhí)行該語(yǔ)句時(shí),將終止循環(huán)標(biāo)號(hào)所指示的循環(huán)的執(zhí)行。一種是帶有“when條件”的書寫格式。當(dāng)執(zhí)行到該語(yǔ)句時(shí),只有當(dāng)條件為真時(shí)才會(huì)終止循環(huán)標(biāo)號(hào)所指示的循環(huán)的執(zhí)行或跳出當(dāng)前所屬的loop循環(huán)。第3章VHDL基本描述語(yǔ)句3.1.7exit語(yǔ)句39例:兩個(gè)元素位矢量a、b進(jìn)行比較,當(dāng)發(fā)現(xiàn)a與b不同時(shí),跳出循環(huán)比較程序并報(bào)告比較結(jié)果。SIGNALa,b:STD_LOGIC_VECTOR(0TO1);SIGNALa_less_than_b:BOOLEAN;┇a_less_than_b<=FALSE;FORiIN1TO0LOOPIF(a(i)=‘1’ANDb(i)=‘0’)THENa_less_than_b<=FALSE;EXIT;ELSEIF(a(i)=‘0’ANDb(i)=‘1’)THENa_less_than_b<=TRUE;EXIT;ELSENULLENDIF;ENDLOOP;第3章VHDL基本描述語(yǔ)句403.1.8斷言語(yǔ)句斷言語(yǔ)句可以對(duì)VHDL描述中的模型添加限制條件,為設(shè)計(jì)人員報(bào)告一條文本的字符串。斷言語(yǔ)句的書寫格式:

assert<條件>report<輸出信息>severity<出錯(cuò)級(jí)別>;在執(zhí)行過程中,斷言語(yǔ)句首先檢查條件的布爾表達(dá)式的真假。如果布爾表達(dá)式為“true”,則向下執(zhí)行另外一條語(yǔ)句。如果布爾表達(dá)式為“false”,斷言語(yǔ)句將輸出一條設(shè)計(jì)人員規(guī)定的字符串到標(biāo)準(zhǔn)輸出終端,并給出輸出字符串的出錯(cuò)級(jí)別。第3章VHDL基本描述語(yǔ)句41

3.1.9、REPORT語(yǔ)句

REPORT語(yǔ)句不增加硬件任何功能,但提供順序斷言語(yǔ)句的短格式,在仿真時(shí)使用REPORT語(yǔ)句可以提高程序的可讀性。REPORT語(yǔ)句的書寫格式為:REPORT輸出信息[SEVERITY出錯(cuò)級(jí)別];第3章VHDL基本描述語(yǔ)句42return語(yǔ)句Return語(yǔ)句只能用在函數(shù)和過程體中,主要用來結(jié)束當(dāng)前的最內(nèi)層的函數(shù)或者是過程體的執(zhí)行。在過程體中return語(yǔ)句不能有表達(dá)式;而函數(shù)體中的return語(yǔ)句必須有一個(gè)表達(dá)式,它也是結(jié)束函數(shù)體執(zhí)行的唯一條件。Return語(yǔ)句的書寫格式如下:

return[表達(dá)式];null語(yǔ)句Null語(yǔ)句表示一種只占位置的空操作,它不進(jìn)行任何動(dòng)作,執(zhí)行該語(yǔ)句只是使源代碼去執(zhí)行下一個(gè)語(yǔ)句。Null語(yǔ)句的書寫格式如下:

null;例:casetmpiswhen0=>q<=d0;when1=>q<=d1;when2=>q<=d2;when3=>q<=d3;whenothers=>null;第3章VHDL基本描述語(yǔ)句433.2并行語(yǔ)句

在VHDL中,并行語(yǔ)句在結(jié)構(gòu)體中的執(zhí)行是同時(shí)并發(fā)執(zhí)行的,其書寫次序與其執(zhí)行順序并無關(guān)聯(lián),并行語(yǔ)句的執(zhí)行順序是由他們的觸發(fā)事件來決定的。第3章VHDL基本描述語(yǔ)句進(jìn)程語(yǔ)句塊語(yǔ)句并行信號(hào)代入并行斷言語(yǔ)句并行過程調(diào)用語(yǔ)句參數(shù)傳遞語(yǔ)句元件例化語(yǔ)句生成語(yǔ)句并行語(yǔ)句的種類:44第3章VHDL基本描述語(yǔ)句3.2.1并行信號(hào)代入語(yǔ)句信號(hào)代入語(yǔ)句有兩種:在結(jié)構(gòu)體中的進(jìn)程內(nèi)使用,作為一種順序語(yǔ)句;在結(jié)構(gòu)體中的進(jìn)程之外使用,是一種并行語(yǔ)句,稱之為并行信號(hào)代入語(yǔ)句。注意:一條信號(hào)代入語(yǔ)句和一個(gè)信號(hào)代入的進(jìn)程語(yǔ)句是等價(jià)的。45第3章VHDL基本描述語(yǔ)句3.2.1并行信號(hào)代入語(yǔ)句例:2輸入與門Libraryieee;Useieee.std_logic_1164.all;entityand_gateisport(a:instd_logic;b:instd_logic;y:outstd_logic);endand_gate;architecturebehaveofand_gateisbegin

y<=aandb;endbehave;Begin

process(a,b)beginy<=aandb;endprocess;Endbehave;等價(jià)于并行信號(hào)代入語(yǔ)句46第3章VHDL基本描述語(yǔ)句3.2.1并行信號(hào)代入語(yǔ)句信號(hào)代入語(yǔ)句有兩種:在結(jié)構(gòu)體中的進(jìn)程內(nèi)使用,作為一種順序語(yǔ)句;在結(jié)構(gòu)體中的進(jìn)程之外使用,是一種并行語(yǔ)句,稱之為并行信號(hào)代入語(yǔ)句。注意:一條信號(hào)代入語(yǔ)句和一個(gè)信號(hào)代入的進(jìn)程語(yǔ)句是等價(jià)的。47第3章VHDL基本描述語(yǔ)句3.2.1并行信號(hào)代入語(yǔ)句在VHDL中提供了三種并行信號(hào)代入語(yǔ)句:

?并發(fā)信號(hào)代入語(yǔ)句

?條件信號(hào)代入語(yǔ)句

?選擇信號(hào)代入語(yǔ)句481.并發(fā)信號(hào)代入語(yǔ)句信號(hào)代入語(yǔ)句在結(jié)構(gòu)體的進(jìn)程外出現(xiàn)時(shí),它作為并發(fā)語(yǔ)句的形式出現(xiàn)。并發(fā)信號(hào)代入語(yǔ)句在結(jié)構(gòu)體中是并行執(zhí)行的,它們的執(zhí)行順序與書寫順序無關(guān)。并發(fā)信號(hào)代入語(yǔ)句是靠時(shí)間驅(qū)動(dòng)的,只有代入符號(hào)“<=”右邊的對(duì)象有事件發(fā)生時(shí)才會(huì)執(zhí)行該語(yǔ)句。常用來進(jìn)行加法器、乘法器、除法器和比較器等許多邏輯電路的描述。3.2.1并行信號(hào)代入語(yǔ)句第3章VHDL基本描述語(yǔ)句49Libraryieee;Useieee.std_logic_1164.all;

entityadd_1isport(A:instd_logic;B:instd_logic;Cin:instd_logic;Co:outstd_logic;S:outstd_logic);endadd_1;architecturedataflowofadd_1issignaltmp1,tmp2:std_logic;Begin

tmp1<=AxorB;tmp2<=tmp1andCin;S<=tmp1xorCin;Co<=tmp2or(AandB);enddataflow;并發(fā)信號(hào)代入語(yǔ)句3.2.1并行信號(hào)代入語(yǔ)句50條件信號(hào)代入語(yǔ)句也是一種并發(fā)描述語(yǔ)句,是根據(jù)不同的表達(dá)式代入目的信號(hào)的語(yǔ)句書寫格式:

<目的信號(hào)><=<表達(dá)式1>when<條件1>else<表達(dá)式2>when<條件2>else<表達(dá)式3>when<條件3>else……<表達(dá)式n-1>when<條件>else<表達(dá)式n>;功能說明:當(dāng)VHDL源代碼執(zhí)行到該語(yǔ)句時(shí)要先進(jìn)行條件判斷,如果條件滿足,就將條件前面的那個(gè)表達(dá)式的值代入目的信號(hào);如果條件不滿足,就去判斷下一個(gè)條件;最后一個(gè)表達(dá)式?jīng)]有條件,也就是說在前面條件都不滿足時(shí),就將該表達(dá)式的值代入目的信號(hào)。3.2.1并行信號(hào)代入語(yǔ)句

2.條件信號(hào)代入語(yǔ)句51例:采用條件代入語(yǔ)句描述的七段顯示譯碼器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYse7ISPORT(input:INSTD_LOGIC_VECTOR(3DOWNTO0);output:OUTSTD_LOGIC_VECTOR(6DOWNTO0));ENDse7;第3章VHDL基本描述語(yǔ)句52第3章VHDL基本描述語(yǔ)句Architecturertlofse7isBegin

output<="0111111"wheninput="0000"else"0000110"wheninput="0001"else"1011011"wheninput="0010"else"1001111"wheninput="0011"else

"1100110"wheninput="0100"else

"1101101"wheninput="0101"else

"1111101"wheninput="0110"else"0000111"wheninput="0111"else"1111111"wheninput="1000"else

"1101111"wheninput="1001"else"1110111"wheninput="1010"else"1111100"wheninput="1011"else

"1011110"wheninput="1101"else

"1111001"wheninput="1110"else"1110001"wheninput="1111"else

"0111001"wheninput="1100"else"0000000";Endrtl;在七段數(shù)碼管結(jié)構(gòu)體中,用一個(gè)條件代入語(yǔ)句來完成所有狀態(tài)的顯示譯碼。在保留字WHEN的前面是驅(qū)動(dòng)顯示數(shù)碼管的七位位矢量;在保留字WHEN的后面是譯碼的條件。53第3章VHDL基本描述語(yǔ)句條件信號(hào)代入語(yǔ)句與if語(yǔ)句的區(qū)別:(1)If語(yǔ)句是順序語(yǔ)句,只能在進(jìn)程中使用;條件信號(hào)代入語(yǔ)句是并行語(yǔ)句,必須用在進(jìn)程之外。(2)If語(yǔ)句中else是可有可無的;條件信號(hào)代入語(yǔ)句中的else語(yǔ)句是必須有的。(3)If語(yǔ)句能嵌套使用;條件信號(hào)代入語(yǔ)句不能嵌套,不能生成鎖存器。(4)使用if語(yǔ)句來描述不需要太多硬件知識(shí);使用條件信號(hào)代入語(yǔ)句則要求設(shè)計(jì)人員具有較多的硬件電路的知識(shí)。2.條件信號(hào)代入語(yǔ)句543.選擇信號(hào)代入語(yǔ)句第3章VHDL基本描述語(yǔ)句選擇信號(hào)代入語(yǔ)句的書寫格式:With<表達(dá)式>select<目的信號(hào)><=<表達(dá)式1>when<條件1>,

<表達(dá)式2>when<條件2>,

<表達(dá)式3>when<條件3>,

……<表達(dá)式n>when<條件n>;功能說明:當(dāng)VHDL源代碼執(zhí)行到該語(yǔ)句時(shí),目的信號(hào)根據(jù)表達(dá)式的當(dāng)前值來進(jìn)行表達(dá)式代入。當(dāng)表達(dá)式的值符合某個(gè)條件時(shí),就將條件前的信號(hào)代入目的信號(hào);如果條件不符合,語(yǔ)句繼續(xù)向下判斷,直到找到滿足的條件為止。選擇信號(hào)代入語(yǔ)句與case語(yǔ)句一樣,必須把表達(dá)式的值在條件中都列出來。55LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux4ISPORT(d0:INSTD_LOGIC_VECTOR(7DOWNTO0);

d1:INSTD_LOGIC_VECTOR(7DOWNTO0);

d2:INSTD_LOGIC_VECTOR(7DOWNTO0);

d3:INSTD_LOGIC_VECTOR(7DOWNTO0);

s0:INSTD_LOGIC;

s1:INSTD_LOGIC;

q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDmux4;第3章VHDL基本描述語(yǔ)句例:四選一8位總線選擇器56ARCHITECTURErtlOFmux4ISSIGNALcomb:STD_LOGIC_VECTOR(1DOWNTO0);;BEGIN

comb<=s1&s0;

WITH

combSELECT

q<=d0WHEN“00”;

d1WHEN“01”;

d2WHEN“10”d3WHENOTHERS;ENDrtl;第3章VHDL基本描述語(yǔ)句例:四選一8位總線選擇器573.2.2并行斷言語(yǔ)句并行斷言語(yǔ)句和順序斷言語(yǔ)句書寫格式一致、功能一致。并行斷言語(yǔ)句用在結(jié)構(gòu)體中,順序斷言語(yǔ)句只能用在進(jìn)程、函數(shù)和過程中。任何并行斷言語(yǔ)句都對(duì)應(yīng)著一個(gè)等價(jià)的被動(dòng)進(jìn)程語(yǔ)句,被動(dòng)進(jìn)程語(yǔ)句沒有輸出,并行斷言語(yǔ)句的執(zhí)行將不會(huì)引起任何事件的發(fā)生,只是在斷言條件為“false”時(shí)給出一條信息報(bào)告。58例:Libraryieee;

Useieee.std_logic_1164.all;Useieee.std_logic_unsigned.all;Entitymaxisport(in1:instd_logic_vector(7downto0);in2:instd_logic_vector(7downto0);in3:instd_logic_vector(7downto0);q:instd_logic_vector(7downto0));Endmax;Architecturebehaveofexampleissignalcomb:std_logic_vector(1downto0);Beginassertfalse;report“Thisentityisaexampletodescriptassertstatement”severitynote;Endbehave;

3.2.2并行斷言語(yǔ)句593.2.4并行過程調(diào)用語(yǔ)句過程調(diào)用語(yǔ)句在進(jìn)程內(nèi)執(zhí)行時(shí),它是一種順序語(yǔ)句;過程調(diào)用語(yǔ)句在結(jié)構(gòu)體中的進(jìn)程之外執(zhí)行時(shí),它作為并發(fā)語(yǔ)句的形式出現(xiàn)。作為并行過程調(diào)用語(yǔ)句,在結(jié)構(gòu)體中它們是并行執(zhí)行的,執(zhí)行順序與書寫順序無關(guān)。60例:求最大值libraryieee;useieee.std_logic_1164.all;entitymaxisport(in1:instd_logic_vector(7downto0);in2:instd_logic_vector(7downto0);in3:instd_logic_vector(7downto0);q:outstd_logic_vector(7downto0));endmax;architecturertlofmaxis3.2.4并行過程調(diào)用語(yǔ)句61ARCHITECTURErtlOFmaxIS

PROCEDURE

maximun(a,b:INSTD_LOGIC_VECTOR;

SIGNALc:OUTSTD_LOGIC_VECTOR)IS

VARIABLEtemp:STD_LOGIC_VECTOR(a’RANGE);

BEGIN

IF(a>b)THENtemp:=a;

ELSE

temp

:=b;

ENDIF;

c<=temp;

END

maximun;

SIGNALtmp1,tmp2:STD_LOGIC_VECTOR(7DOWNTO0);

BEGINmaximun(in1,in2,tmp1);

maximun(tmp1,in3,tmp2);

q<=tmp2;ENDrtl;3.2.4并行過程調(diào)用語(yǔ)句62

塊(BLOCK)語(yǔ)句可以看作是結(jié)構(gòu)體中的子模塊,塊語(yǔ)句把許多并行語(yǔ)句組合在一起形成一個(gè)子模塊,而它本身也是一個(gè)并行語(yǔ)句。1、基本結(jié)構(gòu)

[塊標(biāo)號(hào):]BLOCK[保護(hù)表達(dá)式][類屬子句[類屬接口表;]];

[端口子句[端口接口表;]];

[塊說明部分]BEGIN<并行語(yǔ)句1><并行語(yǔ)句2>┇ENDBLOCK[塊標(biāo)號(hào)];第3章VHDL基本描述語(yǔ)句

3.2.5塊語(yǔ)句63例:利用塊語(yǔ)句描述的全加器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYaddISPORT(A:INSTD_LOGIC;

B:INSTD_LOGIC;

Cin:INSTD_LOGIC;

Co:OUTSTD_LOGIC;

S:OUTSTD_LOGIC);ENDadd;第3章VHDL基本描述語(yǔ)句64ARCHITECTUREdataflowOFaddISBEGINex:BLOCKPORT(a_A:INSTD_LOGIC;

a_B:INSTD_LOGIC;

a_Cin:INSTD_LOGIC;

a_Co:OUTSTD_LOGIC;

a_S:OUTSTD_LOGIC);

PORTMAP(a_A=>A,a_B=>B,a_Cin=>Cin,

a_Co=>Co,a_S=>S);

SIGNALtmp1,tmp2:STD_LOGIC;第3章VHDL基本描述語(yǔ)句65BEGINlabel1:PROCESS(a_A,a_B)BEGINtmp1<=a_AXORa_B;ENDPROCESSlabel1;

label2:PROCESS(tmp1,a_Cin)

BEGINtmp2<=tmp1ANDa_Cin

ENDPROCESSlabel2;

label3:PROCESS(tmp1,a_Cin)

BEGINa_S<=tmp1XORa_Cin

;

ENDPROCESSlabel3;第3章VHDL基本描述語(yǔ)句66

label4:PROCESS(a_A,a_B,tmp2)BEGINa_Co<=tmp2OR(a_AANDa_B);ENDPROCESSlabel4;ENDBLOCKex;ENDdataflow;

在上面的例子中,結(jié)構(gòu)體內(nèi)含有4個(gè)進(jìn)程語(yǔ)句,這4個(gè)進(jìn)程語(yǔ)句是并行關(guān)系,共同形成了一個(gè)塊語(yǔ)句。第3章VHDL基本描述語(yǔ)句672、模塊間的信號(hào)傳遞和端口映射在編寫VHDL程序時(shí),會(huì)遇到塊內(nèi)的信號(hào)或參數(shù)要傳遞到塊外去,塊外的信號(hào)或參數(shù)要傳遞到塊內(nèi)去的情況。解決以上問題的辦法是合理使用PORT和PORTMAP語(yǔ)句。

PORT和PORTMAP語(yǔ)句可以作為塊頭的定義語(yǔ)句,可以用來擴(kuò)展或增加塊的功能。例:LIBRARYieee;USEieee.std_logic_1164.all;PACKAGEmathISTYPEtw32ISARRAY(31DOWNTO0)OFstd_logicFUNCTIONtw_add(a,b:tw32)RETURNtw32;FUNCTIONtw_sub(a,b:tw32)RETURNtw32;

第3章VHDL基本描述語(yǔ)句68ENDmath;USEwork.math.all;ENTITYcpuIS

PORT(clk,interrupt:INstd_logic;add:OUTtw32;

comt:ININTEGER;data:INOUTtw32);ENDcpu;ARCHITECTUREcpu_blkOFcpuISSIGNALaddr_bus,data_bus:tw32;BEGINALU:BLOCK

PORT(a_bus,b_bus:INtw32;

c_bus:ININTEGER;

第3章VHDL基本描述語(yǔ)句69

d_out:OUTtw32);PORTMAP(a_bus=>addr_bus;

b_bus=>data_bus;

c_bus=>comt;

d_out=>data)BEGIN

d_out<=tw_add(a_bus,b_bus)WHEN

c_bus=0ELSE

tw_sub(a_bus,b_bus)WHENc_bus=1ELSE

a_bus;ENDBLOCKALU;ENDcpu_blk;

第3章VHDL基本描述語(yǔ)句703、模塊并發(fā)性及執(zhí)行條件語(yǔ)句的并發(fā)執(zhí)行分為兩類:一類是無條件并發(fā)執(zhí)行,另一類是有條件并發(fā)執(zhí)行。有條件并發(fā)執(zhí)行的BLOCK稱為GUARDEDBLOCK。

例:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYdffbISPORT(d,clk:INbit;

g,gb:OUTbit);ENDdffb;ARCHITECHTUREexampleOFdffbISBEGIN

第3章VHDL基本描述語(yǔ)句71

B1:BLOCK(clk=‘1’)BEGINg<=GUARDEDd;

gb<=GUARDEDNOT(d);ENDBOLOCKB1;ENDexample;第3章VHDL基本描述語(yǔ)句723.2.6參數(shù)傳遞語(yǔ)句參數(shù)傳遞語(yǔ)句(generic)主要用來傳遞信息給設(shè)計(jì)實(shí)體的某個(gè)具體元件,如用來定義端口寬度、器件延遲時(shí)間等參數(shù)后并將這些參數(shù)傳遞給設(shè)計(jì)實(shí)體。這些參數(shù)是待定的,在模擬時(shí),只要generic語(yǔ)句將待定參數(shù)初始化即可。73例:兩輸入與門Libraryieee;useieee.std_logic_1164.all;Entityand2is

generic(delay:time:=10ns);Port(a,b:INSTD_LOGIC;c:OUTSTD_LOGIC);ENDand2;ARCHITECTUREbehaveOFand2ISBEGINc<=aandbafter(delay);ENDbehave;3.2.6參數(shù)傳遞語(yǔ)句74例:例化元件來改變參數(shù)值libraryieee;useieee.std_logic_1164.all;entityexampleISport(a1,b1,a2,b2:instd_logic;out1,out2:outstd_logic);endexample;architecturebehaveofexampleis

componentand2

generic(delay:time);port(a,b:instd_logic;c:outstd_logic);endcomponent;Beginu1:and2genericmap(6ns)

portmap(a1,b1,out1);u2:and2genericmap(8ns)portmap(a2,b2,out2);Endbehave;3.2.6參數(shù)傳遞語(yǔ)句參數(shù)匹配命令genericmap將二輸入與門中的延遲時(shí)間參數(shù)分別映射為6ns和8ns,以滿足不同工藝、不同材料器件的要求。元件例化語(yǔ)句:將端口a映射到信號(hào)a1,端口b映射到b1,端口c映射到out1。753.2.7元件例化語(yǔ)句結(jié)構(gòu)體描述方式就是在多層次的設(shè)計(jì)中,通過調(diào)用庫(kù)中的元件或是已經(jīng)設(shè)計(jì)好的模塊來完成設(shè)計(jì)實(shí)體功能的描述。在結(jié)構(gòu)體中,描述只表示元件(或模塊)和元件(或模塊)之間的互連關(guān)系,就像網(wǎng)表一樣。描述元件間的互連關(guān)系就是用元件例化語(yǔ)句實(shí)現(xiàn)的。在進(jìn)行元件例化時(shí),首先要進(jìn)行例化元件的說明,元件說明部分使用component語(yǔ)句,說明在結(jié)構(gòu)體中所調(diào)用的模塊。如果所調(diào)用的模塊在元件庫(kù)中并不存在時(shí),必須要首先進(jìn)行元件的創(chuàng)建,然后將其放在工作庫(kù)中,通過調(diào)用工作庫(kù)來引用該元件。元件例化語(yǔ)句是一種應(yīng)用十分廣泛的語(yǔ)句,主要用于模塊化的設(shè)計(jì)。76component語(yǔ)句的書寫格式為:component<引用元件名>[generic<參數(shù)說明>;]port<端口說明>;endcomponent;其中:“引用元件名”用來指定結(jié)構(gòu)體中的例化元件,該元件必須已經(jīng)存在于調(diào)用的工作庫(kù)中;generic語(yǔ)句表示需要參數(shù)傳遞說明。component語(yǔ)句對(duì)要引用的元件說明以后,就可以在結(jié)構(gòu)體中進(jìn)行元件例化以使用該元件,元件例化語(yǔ)句的書寫格式為:<標(biāo)號(hào)名:><元件名>[genericmap(參數(shù)映射)]portmap(端口映射);其中:標(biāo)號(hào)名是元件例化的唯一標(biāo)志。映射語(yǔ)句把元件的參數(shù)和端口與實(shí)際連接的信號(hào)對(duì)應(yīng)起來,以進(jìn)行元件的應(yīng)用。3.2.7元件例化語(yǔ)句771.位置映射:portmap語(yǔ)句中實(shí)際信號(hào)的書寫順序與component語(yǔ)句中端口說明中的書寫順序保持一致。3.2.7元件例化語(yǔ)句映射方法:位置映射

溫馨提示

  • 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)論