版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
§3.5
VHDL并行語句第三
章3.5
VHDL并行語句生成語句條件信號賦值語句元件例化語句并行信號賦值語句塊語句進程語句并行過程調(diào)用語句信號信號信號信號信號信號ARCHITECTUREENDARCHITECTUREConcurrentSignalAssignment
--并行信號賦值語句Componentinstantiations--元件例化語句Process--進程語句ConcurrentProcedureCall --并發(fā)過程調(diào)用語句Block --塊語句ASSERT --并行斷言語句Genera --生成語句(硬件的拷貝)VHDL語言是并行處理語言,能夠進行并行處理的語句有:3.5
VHDL并行語句ARCHITECTURE
結(jié)構(gòu)體名OF
實體名IS
說明語句;
BEGIN
并行語句;ENDARCHITECTURE
結(jié)構(gòu)體名;并行語句在結(jié)構(gòu)體中的使用格式如下:進程語句最具有VHDL語言特色。提供了一種用算法描述硬件行為的方法。特點:(1)進程的并行執(zhí)行性。(2)進程內(nèi)部的順序性。(3)進程啟動由Process后的敏感信號來觸發(fā),也可用WAIT語句等待一個觸發(fā)條件的成立。(4)各進程之間的通信是由信號來傳遞的。(5)進程的啟動和掛起。3.5.1進程Process語句3.5
VHDL并行語句結(jié)構(gòu)體并行語句process并行語句process并行語句process信號信號信號3.5
VHDL并行語句[進程名:]PROCESS[(敏感信號表)][IS]
[進程說明部分:變量說明語句;]BEGIN
順序描述語句;
ENDPROCESS[進程名];敏感信號表:進程內(nèi)要讀取的所有敏感信號(包括端口)的列表。每一個敏感信號的變化都將啟動進程。
格式:信號{,信號}3.5
VHDL并行語句P1:PROCESS(clk)BEGINIF(clk'EVENT'ANDclk='1')THENq<=d;
ENDIF;
ENDPROCESSP1;3.5
VHDL并行語句【例3.5.1】ARCHITECTUREARTOFSTATISBEGINP1:PROCESSIS BEGINWAITUNTICLOCK;
IF(DRIVER=‘1’)THENCASEOUTPUTISWHENS1=>OUTPUT<=S2;
WHENS2=>OUTPUT<=S3;
WHENS3=>OUTPUT<=S4;
WHENS4=>OUTPUT<=S1;
ENDCASE;
ENDPROCESSP1;
ENDARCHITECTUREART;
ARCHITECTURE
behav
OF
half_adder
ISBEGINPadder:
PROCESS(a,b)BEGINSum<=aXORb;
Carry<=aANDb;ENDPROCESSPadder;ENDbehav;利用進程語句設(shè)計的半加器3.5
VHDL并行語句敏感信號表的特點:
1、同步進程的敏感信號表中只有時鐘信號。如:process(clk)begin
if(clk'eventandclk='1')then
ifreset='1'thendata<="00";else
data<=in_data;endif;endif;endprocess;3.5
VHDL并行語句
2、異步進程的敏感信號表中除了時鐘信號還有其它信號。如:process(clk,reset)
begin
ifreset='1'thendata<="00";
elsif(clk'eventandclk='1')then
data<=in_data;endif;endprocess;3.5
VHDL并行語句3、如果有WAIT語句,則不許使用敏感信號表process(a,b)begin順序語句;endprocess;processbegin順序語句;waitona,b;endprocess;進程可實現(xiàn)組合邏輯電路、時序邏輯電路3.5
VHDL并行語句LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT10ISPORT(CLR:INSTD_LOGIC;
IN1:INSTD_LOGIC_VECTOR(3DOWNTO0);
OUT1:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDENTITYCNT10;ARCHITECTUREARTOFCNT10ISBEGIN
PROCESS(IN1,CLR)ISBEGIN
IF(CLR=‘1’ORIN1="1001")THENOUT1<="0000";
ELSEOUT1<=IN1+1; ENGIF;ENDPROCESS;ENDARCHITECTUREART;3.5
VHDL并行語句組合電路型十進制加法器CNT10綜合后的RTL硬件結(jié)構(gòu)圖3.5
VHDL并行語句LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT10ISPORT(CLR,CLK:INSTD_LOGIC;
CNT:BUFFERSTD_LOGIC_VECTOR(3DOWNTO0));ENDENTITYCNT10;ARCHITECTUREARTOFCNT10ISBEGINPROCESSISBEGINWAITUNTICLK'EVENTANDCLK=‘1’;
IF(CLR=‘1’ORCNT=9)THENCNT<=“0000”;ELSECNT<=CNT+1;ENDIF;ENDPROCESS;ENDARCHITECTUREART;3.5
VHDL并行語句組合電路型十進制加法器CNT10綜合后的
RTL硬件結(jié)構(gòu)圖
(增加了D觸發(fā)器)用進程實現(xiàn)組合邏輯電路entitycounteris
port(clear:inbit;
in_count:inintegerrange0to9;
out_count:outintegerrange0to9);endcounter;architecturert1ofcounterisbegin
process(in_count,clear)begin
if(clear='1'orin_count=9)then
out_count<=0;else
out_count<=in_count+1;endif;
endprocess;endrt1;3.5
VHDL并行語句用進程實現(xiàn)時序邏輯電路entitycounteris
port(clear,clock:inbit;count:bufferintegerrange0to9);endcounter;architecturert1ofcounterisbeginprocessbeginwaituntil(clock'eventandclock='1');
if(clear='1'orin_count=9)then
out_count<=0;else
out_count<=in_count+1;endif;endprocess;endrt1;3.5
VHDL并行語句定義:給一個信號賦值,即為該信號創(chuàng)建一個驅(qū)動器(驅(qū)動信號)。多個進程或并發(fā)語句給同一個信號賦值,則該信號為多信號源驅(qū)動。功能:在同一條線上的不同時刻內(nèi)傳輸不同的信息3.5
VHDL并行語句三態(tài)緩沖器總線結(jié)構(gòu)與多驅(qū)動信號ARCHITECTURErt1ofdrivebeginA_OUT<=AWHEN(ENA)ELSE'Z';B_OUT<=BWHEN(ENA)ELSE'Z';C_OUT<=CWHEN(ENA)ELSE‘Z’;PROCESS(A_OUT)ISBEGINBUS_OUT<=A_OUT;ENDPROCESS;PROCESS(B_OUT)ISBEGINBUS_OUT<=B_OUT;ENDPROCESS;PROCESS(C_OUT)ISBEGINBUS_OUT<=C_OUT;ENDPROCESS;3.5
VHDL并行語句塊(Block)可看作結(jié)構(gòu)體中子模塊,將一系列并行描述語句進行組合,可改善可讀性,使得結(jié)構(gòu)體中的并行語句層次、結(jié)構(gòu)鮮明。3.5.2塊(Block)語句1.格式如下:塊標(biāo)號:Block[(塊保護表達式)]
塊說明項
BEGIN
并行語句
ENDBlock[塊標(biāo)號];3.5
VHDL并行語句地位:塊語句的使用不影響邏輯功能描述一:a1:out1<='1'after2ns;a2:out2<='1'after2ns;a3:out3<='1'after2ns;描述二:a1:out1<='1'after2ns;blk:block
begin
a2:out2<='1'after2ns;
a3:out3<='1'after2ns;
endblockblk;以下兩種描述結(jié)果相同3.5
VHDL并行語句2、嵌套塊的應(yīng)用兩個獨立的2輸入與門
B1:blocksignals:bitbegin
s<=aandb;
B2:blocksignals:bit
s<=aandc;
B3:blockbeginz<=s;endblockB3;endblockB2;y<=s;endblockB1;子塊聲明與父塊聲明同名時,子塊聲明,將忽略父塊聲明3.5
VHDL并行語句采用BLOCK語句描述二選一電路ENTITYmuxISPORT(a,b,s:INBIT;
y:OUTBIT);ENDENTITY;ARCHITECTUREconnectOFmuxISSIGNALtmp1,tmp2,tmp3:BIT;BEGIN
block1:BLOCKBEGINtmp1<=aands;tmp2<=band(NOTa);tmp3<=tmp1ortmp2;y<=tmp3;
ENDblock1;ENDconnect;3.5
VHDL并行語句4.衛(wèi)式(Guarded)塊由保護表達式的值決定真、假塊語句的執(zhí)行與否。entityeg1is
port(a:inbit;
z:outbit);endeg1;architecturert1ofeg1isbegin
guarded_block:block(a='1')beginz<='1'whenguardelseendblock;endrt1;綜合不支持3.5
VHDL并行語句(1)簡單信號賦值語句
(CONCURRENTSIGNALASSIGNMENT)(2)條件信號賦值語句
(CONDITIONALSIGNALASSIGNMENT)(3)選擇信號賦值語句
(SELECTIVESIGNALASSIGNMENT)3.5.3并行信號賦值語句分3種類型:共同特點:1、賦值目標(biāo)必須是信號,與其它并發(fā)語句同時執(zhí)行,與書寫及是否在塊語句中無關(guān)。2、每一信號賦值語句等效與一個進程語句。所有輸入信號的變化都將啟動該語句的執(zhí)行3.5
VHDL并行語句書寫格式為:信號<=表達式;1)簡單信號賦值語句一個簡單信號賦值語句相當(dāng)于一個進程語句的縮寫兩種表達式完全等同ARCHITECTURErt1OFm4ISBEGINy<=aandb;ENDrt1;ARCHITECTURErt1OFm4ISBEGINprocess(a,b)beginy<=aandb;endprocess;ENDrt1;3.5
VHDL并行語句兩種表達式等效LIBRARYieee;USEieee.std_logic_1164.all;ENTITYexIS
PORT(a,b:INSTD_LOGIC;
y:OUTSTD_LOGIC);ENDex2;ARCHITECTUREr1OFexISSIGNALc:STD_LOGICBEGIN
c<=aandb;y<=c;ENDr1;LIBRARYieee;USEieee.std_logic_1164.all;ENTITYex2IS
PORT(a,b:INSTD_LOGIC;
y:OUTSTD_LOGIC);ENDex2;ARCHITECTURErt1OFexISSIGNALc:STD_LOGICBEGINprocess1:PROCESS(a,b)BEGINc<=aandb;ENDPROCESSprocess1;process2:PROCESS(c)BEGINy<=c;ENDPROCESSprocess2;ENDrt1;3.5
VHDL并行語句兩種表達式不等效LIBRARYieee;USEieee.std_logic_1164.all;ENTITYex2IS
PORT(a,b:INSTD_LOGIC;
y:OUTSTD_LOGIC);ENDex2;ARCHITECTUREr1OFexISSIGNALc:STD_LOGICBEGIN
c<=aandb;y<=c;ENDr1;LIBRARYieee;USEieee.std_logic_1164.all;ENTITYex2IS
PORT(a,b:INSTD_LOGIC;
y:OUTSTD_LOGIC);ENDex2;ARCHITECTUREr1OFexISBEGINSIGNALc:STD_LOGIC
process1:PROCESS(a,b,c)BEGIN
c<=aandb;y<=c;ENDPROCESSprocess1;ENDr1;3.5
VHDL并行語句ARCHITECTUREARTOFXHFZISSIGNAS1:STD_LOGIC;
BEGINOUTPUT1<=AANDB;
OUTPUT2<=C+D;B1:BLOCKISSIGNAE,F(xiàn),G,H:STD_LOGIC;
BEGING<=EORF;
H<=EXORF;ENDBLOCKB1;
S1<=G;ENDARCHITECTUREART;五條信號賦值語句的執(zhí)行是并行發(fā)生的3.5
VHDL并行語句
2)條件信號賦值語句
(ConditionalSignalAssignment)屬于并發(fā)描述語句的范疇,可以根據(jù)不同的條件將不同的表達式的值代入目標(biāo)信號。書寫格式為:目標(biāo)信號<=表達式1WHEN條件1ELSE
表達式2WHEN條件2ELSE
…....
表達式n-1WHEN條件n-1ELSE
表達式n;3.5
VHDL并行語句例:四選一電路LIBRARYieee;USEieee.std_logic_1064.allENTITYmux4IS
PORT(input:INstd_logic_vector(3DOWNTO0);
sel:INstd_logic_vector(1DOWNTO0);y:OUT
std_logic);ENDmux4;ARCHITECTURErt1OFmux4ISBEGINy<=input(0)WHEN
sel="00"ELSEinput(1)WHEN
sel="01"ELSEinput(2)WHEN
sel="10"ELSEinput(4);ENDrt1;input[3..0]sel[1..0]y3.5
VHDL并行語句條件信號賦值語句與進程中的多選擇IF語句等價(功能上):q<=aWHENsela='1'ELSEbWHENselb='1'ELSEc;PRCESS(sela,selb,a,b,c)BEGINIFsela='1'THENq<=a;ELSIFselb='1'THEN
q<=b;ELSE
q<=c;ENDPROCESS;3.5
VHDL并行語句WITH
表達式
SELECT目標(biāo)信號<=
表達式1WHEN
條件1
,
表達式2WHEN
條件2,
表達式3WHEN
條件3,
…
表達式nWHEN條件n;1)不能有重疊的條件分支.2)最后條件可為others,否則其它條件必須能包含表達式的所有可能值3)選擇信號代入語句與進程中的case語句等價3)選擇信號賦值語句的格式為:3.5
VHDL并行語句例:四選一電路LIBRARYieee;USEieee.std_logic_1064.allENTITYmux4IS
PORT(input:INstd_logic_vector(3DOWNTO0);
sel:INstd_logic_vector(1DOWNTO0);y:OUT
std_logic);ENDmux4;ARCHITECTURErt1OFmux4ISBEGINWITHselSELECTy<=input(0)WHEN"00",input(1)WHEN"01",input(2)WHEN"10",input(4)WHEN"11",
'X'WHENOTHERS
;ENDrt1;input[3..0]sel[1..0]y3.5
VHDL并行語句選擇信號賦值語句與進程中的多選擇CASE語句等價:WITHselSELECTq<=aWHEN"00",bWHEN"01",cWHEN"01",dWHENothers;PRCESS(sel,a,b,c,d)BEGINCASEselISWHEN"00"=>q<=a;WHEN"01"=>q<=b;WHEN"01"=>q<=c;WHEN"01"=>q<=d;ENDCASE;ENDPROCESS;3.5
VHDL并行語句簡單的指令譯碼器3.5
VHDL并行語句LIBRARY
ieee;USEieee.std_logic_1164.ALL;USEieee.std_logic_unsigned.all;ENTITYdecoderIS
PORT(a,b,c:INstd_logic;data1,data2:instd_logic;
dataout:outstd_logic);ENDdecoder;3.5
VHDL并行語句ARCHITECTUREartOFdecoderISSIGNALins:std_logic_vector(2downto0);BEGINins<=c&b&a;WITHinsSELECT
dataout<=data1ANDdata2WHEN"000",data1ORdata2WHEN"001",data1NANDdata2WHEN"010",data1NORdata2WHEN"011",data1XORdata2WHEN"100",data1NXORdata2WHEN"101",'Z'WHENOTHERS;ENDart;3.5
VHDL并行語句練習(xí)設(shè)計一數(shù)據(jù)選擇器MUX,其系統(tǒng)模塊圖和功能表如下圖所示。試采用whenelse
語句來描述該數(shù)據(jù)選擇器MUX的實體與結(jié)構(gòu)體。模塊圖功能表3.5
VHDL并行語句復(fù)習(xí)上一次課堂教學(xué)主要內(nèi)容
并行信號賦值語句
(ConcurrentSignalAssignment)(1)簡單信號賦值語句(2)條件信號賦值語句(3)選擇信號賦值語句3.5
VHDL并行語句位置:結(jié)構(gòu)體、塊語句功能:等效于一個過程調(diào)用語句的進程。書寫格式:過程名(關(guān)聯(lián)參量名)。3.5.4并行過程調(diào)用語句3.5
VHDL并行語句PACKAGEpackexpIS--定義程序包FUNCTIONmax(a,b:INSTD_LOGIC_VECTOR)RETURNSTD_LOGIC_VECTOR;FUNCTIONfuncl(a,b,c:REAL)RETURNREAL;FUNCTION"*"(a,b:ININTEGER)RETURNINTEGER;FUNCTIONas2(SIGNALin1,in2:INREAL)RETURNREAL;ENDpackexp;3.5
VHDL并行語句PACKAGEBODYpackexpISFUNCTIONmax(a,b:INSTD_LOGIC_VECTOR)RETURNSTD_LOGIC_VECTORISBEGINIF(a>b)THENRETURNa;ELSERETURNb;ENDIF;ENDFUNCTIONmax;ENDpackexp;3.5
VHDL并行語句USEWORKpackexp.ALL;ENTITYexpISPORT(....);ENDexp;ARCHITECTUREbehavOFexpISBEGIN
out<=max(dat1,dat2);--賦值語句中并行函數(shù)
PROCESS(dat3,dat4)BEGIN
out<=max(dat3,dat4);--順序函數(shù)調(diào)用語句
ENDPROCESS;.....ENDbehav;
3.5
VHDL并行語句【例3.5.17】…CHBLK:BLOCKISSIGNAS1:STD_LOGIC_VECTOR(0TO0);
--過程調(diào)用前設(shè)定矢量尺寸
SIGNAS2:STD_LOGIC_VECTOR(0TO1);
SIGNAS3:STD_LOGIC_VECTOR(0TO2);
SIGNAS4:STD_LOGIC_VECTOR(0TO3);3.5
VHDL并行語句SIGNAE1,E2,E3,E4:BOOLEAN;
BEGINCHECK(S1,E1);
--并行過程調(diào)用,關(guān)聯(lián)參數(shù)名為S1、E1CHECK(S2,E2);
--并行過程調(diào)用,關(guān)聯(lián)參數(shù)名為S2、E2CHECK(S3,E3);
--并行過程調(diào)用,關(guān)聯(lián)參數(shù)名為S3、E3CHECK(S4,E4);
--并行過程調(diào)用,關(guān)聯(lián)參數(shù)名為S4、E4ENDBLOCKCHBLK;…
圖3.20為此檢測模塊的邏輯電路結(jié)構(gòu)圖。
3.5
VHDL并行語句塊CHBLK的邏輯電路結(jié)構(gòu)圖3.5
VHDL并行語句本次課的內(nèi)容
元件例化語句生成語句3.5
VHDL并行語句層次化設(shè)計示意Higher-levelComponent圖形化的方式表示層次化設(shè)計3.5
VHDL并行語句VHDL層次化設(shè)計示意:mid_a.vhd
entity-arch"mid_a"component"bottom_a"top.vhdentity-architecture"top"component"mid_a"component"mid_b"bottom_a.vhd
entity-arch"bottom_a"mid_b.vhd
entity-arch"mid_b"component"bottom_a"component"bottom_b"bottom_b.vhd
entity-arch"bottom_b"3.5
VHDL并行語句
元件聲明類似實體ENTITY聲明3.5.5元件例化語句(元件聲明和元件調(diào)用)語法:COMPONENT
元件名[IS
]
[GENERIC說明;]--類屬參數(shù)說明
PORT
說明;
--端口數(shù)據(jù)說明ENDCOMPONENT[元件名];
元件聲明定義:對所調(diào)用的較低層次的實體模塊(元件)名稱的類屬參數(shù)、端口數(shù)據(jù)類型的聲明。3.5
VHDL并行語句例:元件聲明(調(diào)用元件之前要先元件聲明)componentaddis
generic(n:positive);
port(x,y:inbit_vector(n-1downtoo);
z:outbit_vector(n-1downto0);
carry:outbit);endcomponentadd;componentand2
port(i1,i2:inbit;O1:outbit);endcomponent;3.5
VHDL并行語句可在以下部分聲明元件:●結(jié)構(gòu)體(Architecture)
●程序包(Package)
●塊(Block)被聲明元件的來源:
1.VHDL設(shè)計實體;
2.其它HDL設(shè)計實體;
3.另外一種標(biāo)準(zhǔn)格式的元件,如EDIF或XNF4.廠商提供的工藝庫中的元件、IP核3.5
VHDL并行語句
例:U1:ADDgenericmap(N=>4);portmap(x1,y1,z1,carry1);元件例化語句(元件聲明和元件調(diào)用)例化名稱:元件名稱
[genericmap(類屬名稱=>表達式;{,類屬名稱=>表達式})];portmap([端口名稱=>]當(dāng)前端口或者信號;
{,[端口名稱=>]當(dāng)前端口或者信號});元件調(diào)用定義:把低層元件安裝(調(diào)用)到當(dāng)前層次設(shè)計實體內(nèi)部的過程。包括:類屬參數(shù)傳遞(映射)、元件端口映射。3.5
VHDL并行語句PORT端口映射方式
●名稱關(guān)聯(lián)方式
portmap(低層次端口名=>當(dāng)前層次端口名,..);例:
or2portmap(o=>n6,i1=>n3,i2=>n1);
●位置關(guān)聯(lián)方式
portmap(當(dāng)前層次端口名,當(dāng)前層次端口名,..);例:or2portmap(n3,n1,n6);注:位置關(guān)聯(lián)方式中,例化的端口表達式(信號)必須與元件聲明語句中的端口順序一致。3.5
VHDL并行語句一個低層次設(shè)計在被調(diào)用前必須有一個元件聲明.ENTITYexamis
PORT(ea,eb:INBIT_VECTOR(3DOWNTO0);
ey:OUTBIT_LOGIC);ENDexam;ARCHITECTUREexam_archOFexamISBEGIN
ENDexam_arch;u1:comparePORTMAP(ea,eb,ey);--元件調(diào)用COMPONENTcompare
PORT(a:INBIT_VECTOR(3DOWNTO0);
b:INBIT_VECTOR(3DOWNTO0);y:OUTBIT);ENDCOMPONENT;--元件聲明3.5
VHDL并行語句ORD41邏輯原理圖3.5
VHDL并行語句LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYND2ISPORT(A,B:INSTD_LOGIC;
C:OUTSTD_LOGIC);ENDENTITYND2;ARCHITECTUREARTND2OFND2ISBEGINC<=ANANDB;ENDARCHITECTUREARTND2;ND的VHDL語言描述3.5
VHDL并行語句LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYORD41ISPORT(A1,B1,C1,D1:INSTD_LOGIC;
Z1:OUTSTD_LOGIC);ENDENTITYORD41;ARCHITECTUREARTORD41OFORD41ISCOMPONENTND2ISPORT(A,B:INSTD_LOGIC;
C:OUTSTD_LOGIC);ENDCOMPONENTND2;ORD41頂層描述3.5
VHDL并行語句SIGNAS1,S2:STD_LOGIC;BEGINU1:ND2PORTMAP(A1,B1,S1);
--位置關(guān)聯(lián)方式
U2:ND2PORTMAP(A=>C1,C=>S2,B=>D1);
--名字關(guān)聯(lián)方式
U3:ND2PORTMAP(S1,S2,C=>Z1);
--混合關(guān)聯(lián)方式ENDARCHITECTUREARTORD41;3.5
VHDL并行語句4位移位寄存器4位移位寄存器由四個結(jié)構(gòu)相同的DFF組成,對應(yīng)的元件例化語句如下:clkabENTITYshiftISport(a,clk:INBIT;
b:OUTBIT);ENDshift;3.5
VHDL并行語句architecturegen_shiftofshiftis
componentdff
port(d,clk:inBIT;g:outBIT);endcomponent;
SIGNALX:BIT_VECTOR(0TO4);BEGINX(0)<=a;b<=X(4)U0:dffPORTMAP(X(0),clk,x(1));
U1:dffPORTMAP(X(1),clk,x(2));
U2:dffPORTMAP(X(2),clk,x(3));
U3:dffPORTMAP(X(3),CLK,x(4));endarchitecture;3.5
VHDL并行語句生成語句作用:復(fù)制產(chǎn)生多個相同的結(jié)構(gòu)建立0個或多個備份(并行結(jié)構(gòu))3.5.6
生成語句GENERATE分為兩類:FOR-------GENERATE:采用一個離散的范圍決定備份的數(shù)目IF-------GENERATE:有條件地生成0個或
1個備份3.5
VHDL并行語句①
FOR-------GENERATE語句語法:
標(biāo)號:for循環(huán)變量
in范圍
generate{并行語句}endgenerate[標(biāo)號];范圍:整數(shù)表達式to
整數(shù)表達式整數(shù)表達式downto
整數(shù)表達式for--loop
語句與for--generate語句比較3.5
VHDL并行語句例:用生成語句創(chuàng)建多個備份componentcomp
port(x:inbit;
y:outbit);endcomponent;......signala,b:bit_vector(0to7);......gen:foriina'rangegenerate
U:compportmap(x=>a(i),y=>b(i));endgenerategen;3.5
VHDL并行語句clkabarchitecturegen_shiftofshiftis
componentdff
port(d,clk:inBIT;q:outBIT);endcomponent;signalx:std_logic_VECTOR(0to4);beginx(0)<=a;b<=x(4);register1:foriin
0to3
generateUx:dffportmap(x(i),clk,x(i+1));endgenerate;endarchitecture;4位移位寄存器3.5
VHDL并行語句architecturegen_shiftofshiftis
componentdff
port(d,clk:inBIT;g:outBIT);endcomponent;X(0)<=a;b<=X(4)U0:dffPORTMAP(X(0),clk,X(1));
U1:dffPORTMAP(X(1),clk,X(2));
U2:dffPORTMAP(X(2),clk,X(3));
U3:dffPORTMAP(X(3),CLK,X(4));endarchitecture;clkab4位移位寄存器等效描述3.5
VHDL并行語句②
IF-------GENERATE語句語法:
標(biāo)號:IF條件表達式
generate{并行語句}endgenerate[標(biāo)號];if語句與if-generate語句的區(qū)別:1、if-generate沒有類似于IF語句的
ELSE或ELSIF分支語句
2、IF語句是順序語句,if-generate則為并行語句3.5
VHDL并行語句8bit并串轉(zhuǎn)換器52346170523461708bit并串轉(zhuǎn)換器(續(xù))3.4VHDL描述語句8bit并串轉(zhuǎn)換器仿真結(jié)果3.4VHDL描述語句SN74373的內(nèi)部邏輯結(jié)構(gòu)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYLATCHISPORT(D:INSTD_LOGIC;
ENA:INSTD_LOGIC;
Q:OUTSTD_LOGIC);ENDENTITYLATCH;ARCHITECTUREONEOFLATCHISSIGNAS0:STD_LOGIC;
BEGINPROCESS(D,ENA)ISBEGINIFENA=‘1’THENS0<=D;
ENDIF;
Q<=S0;
ENDPROCESS;ENDARCHITECTUREONE;1位鎖存器LATCH的邏輯描述3.5
VHDL并行語句LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYSN74373IS PORT(D:INSTD_LOGIC_VECTOR(8DOWNTO1);OEN:INSTD_LOGIC;
G:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR(8DOWNTO1); ENDENTITYSN74373;ARCHITECTUREONEOFSN74373ISCOMPONENTLATCHIS PORT(D,ENA:INSTD_LOGIC;
Q:OUTSTD_LOGIC);ENDCOMPONENTLATCH;SN74373的邏輯描述3.5
VHDL并行語句SIGNAS1:STD_LOGIC_VECTOR(8DOWNTO1);BEGINGELATCH:FORNOIN1TO8GENERATELATCHX:LATCHPORTMAP(D(NO),G,S1(NO));ENDGENERATEGELATCH;Q<=S1WHENOEN=0ELSE“ZZZZZZZZ”;ENDARCHITECTUREONE;ARCHITECTURETWOOFSN74373ISSIGNAS2:STD_LOGIC_VECTOR(8DOWNTO1);BEGINPROCESS(D,OEN,G)ISBEGINIFOEN=‘0’THEN Q<=S2;ELSEQ<="ZZZZZZZZ";ENDIF;
3.5
VHDL并行語句IFG=‘1’THENS2<=D;ENDIF;ENDPROCESS;ENDARCHITECTURETWO;3.5
VHDL并行語句總結(jié)①元件例化語句:元件聲明元件調(diào)用②生成語句:FOR-------GENERATEIF-------GENERATE3.4VHDL描述語句作業(yè)裝訂線1.已知一個簡單的波形發(fā)生器的數(shù)字部分系統(tǒng)框圖如下圖所示3.4VHDL描述語句其VHDL描述中Entity部分分別如下:ENTITYlcntIS
PORT(clock:INSTD_LOGIC; q:OUTSTD_LOGIC_VECTOR(9DOWNTO0));ENDlcnt;ENTITYlromISPORT (address:INSTD_LOGIC_VECTOR(9DOWNTO0);q:OUTSTD_LOGIC_VECTOR(9DOWNTO0)
);ENDlrom;試用VHDL描述該系統(tǒng)的頂層設(shè)計(注:使用例化語句)。3.4VHDL描述語句定義:獨立的、有名稱的算法位置:結(jié)構(gòu)體或程序包中的任何位置特點:可重載性允許多個重名的子程序,子程序的參數(shù)類型及返回值數(shù)據(jù)類型不同)3.6子程序在VHDL語言中,子程序分兩類(1)過程(PROCEDURE)(2)函數(shù)(FUNCTION)過程:0個或多個in(默認)inout、out參數(shù)函數(shù):0個或者多個in參數(shù),一個return值子程序首:指明其名稱、參數(shù)及返回值子程序體:描述子程序要實現(xiàn)的功能。過程:一個語句函數(shù):表達式的一部分函數(shù):包括函數(shù)首(程序包)和函數(shù)體函數(shù)首:函數(shù)名、參數(shù)表和返回值函數(shù)首格式:FUNCTION函數(shù)名(參數(shù)表)
RETURN
數(shù)據(jù)類型名函數(shù)名:普通的標(biāo)識符,運算符(“”)參數(shù)表:定義輸入值3.6.1函數(shù)函數(shù)語句的一般書寫格式為:
[FUNCTION函數(shù)名(參數(shù)表)RETURN
數(shù)據(jù)類型名]
--函數(shù)首
FUNCTION函數(shù)名(參數(shù)表)RETURN
數(shù)據(jù)類型名IS[定義語句];
--變量定義
BEGIN[順序處理語句];
END過程名;函數(shù)體2、函數(shù)調(diào)用:執(zhí)行一個給定名字和輸入?yún)?shù)的過程,返回一個指定數(shù)據(jù)類型的值。語句格式如下:
函數(shù)名([形參名=>]實參表達式{,[形參名=>]實參表達式});
PACKAGEpackexpIS--定義程序包
FUNCTION
max(a,b:INBIT)RETURN
BIT;END
packexp;PACKAGEBODYpackexpIS
FUNCTION
max(a,b:IN
BIT)RETURN
BITISBEGIN
IF(a>b)THENRETURNa;
ELSERETURNb;
ENDIF;
ENDFUNCTIONmax;ENDpackexp;--函數(shù)首--函數(shù)體USEWORK.packexp.ALL;ENTITYpISPORT(dat1,dat2,dat3,dat4:inbit;out1,out2:outbit);ENDp;ARCHITECTUREbehavOFpISBEGIN
out1<=max(dat1,dat2);--賦值語句中并行函數(shù)
PROCESS(dat3,dat4)BEGIN
out2<=max(dat3,dat4);--順序函數(shù)調(diào)用語句
ENDPROCESS;ENDbehav;
ENTITYfuncIS
PORT(a:INBIT_VECTOR(0to2);
m:OUTBIT_VECTOR(0to2));ENDENTITYfunc;ARCHITECTUREdemoOFfuncIS
FUNCTIONsam(x,y,z:BIT)RETURNBITISBEGINRETURN(xANDy)ORZ;ENDFUNCTIONsam;BEGIN
PROCESS(a)BEGIN
m(0)<=sam(a(0),a(1),a(2));m(1)<=sam(a(2),a(0),a(1));m(2)<=sam(a(1),a(2),a(0));ENDPROCESS;ENDARCHITECTUREdemo;但這時要求函數(shù)中定義的操作數(shù)具有不同的數(shù)據(jù)類型,以便調(diào)用時用以分辨不同功能的同名函數(shù)。在不同數(shù)據(jù)類型操作數(shù)構(gòu)成的同名函數(shù)中,以運算符重載式函數(shù)最為常用。3.6.2重載函數(shù)(OVERLOADEDFUNCTION)重載函數(shù):VHDL允許以相同的函數(shù)名定義函數(shù)。[PROCEDURE過程名(參數(shù)1;…)]--過程首PROCEDURE過程名(參數(shù)1;參數(shù)2;…)
IS[定義語句];
--變量定義
BEGIN
[順序處理語句]END過程名;
--過程語句3.6.3、過程語句的一般書寫格式為:過程體過程首不是必須的(除在程序包外),過程體是必須的在任何地方根據(jù)名稱調(diào)用語句
過程首:過程名和參數(shù)表
(可對常數(shù)、變量和信號作出說明,用關(guān)鍵字IN、OUT和INOUT定義這些參數(shù)的工作模式)
PROCEDUREro1(VARIABLE
a,b::INOUTINTEGER);PROCEDUREpro2(CONSTANTa1:INTEGER;
VARIABLE
b1:OUTINTEGER);PROCEDUREpro3(SIGNALsig:INOUTBIT);PACKAGEDATA_TYPESIS--定義程序包
TYPEDTYPE1ISINTEGERRANGE0TO3;
--定義數(shù)據(jù)類型
TYPEDTYPE2ISARRAY(1TO3)OFDTYPE1;ENDPACKAGEDATA_TYPES;USEWORK.DATA_TYPES.ALL;
--打開以上建立在當(dāng)前工作庫的程序包DATA_TYPESENTITYSORTISPORT(SR:INDTYPE2;
SC:OUTDTYPE2);ENDENTITYSORT;ARCHITECTUREARTOFSORTISBEGINPROCESS(SR)IS
PROCEDURESWAP(DATA:INOUTDTYPE2;
LOW,HIGH:ININTEGER)IS--SWAP的形參名為DATA、LOW、HIGHVARIABLEV1:DTYPE1;
BEGINIF(DATA(LOW)>DATA(HIGH))THEN--檢測數(shù)據(jù)
V1:=DATA(LOW);
DATA(LOW):=DATA(HIGH);
DATA(HIGH):=V1;
ENDIF;ENDPROCEDURESWAP;
--過程SWAP定義結(jié)束
VARIABLEV2:DTYPE2;--在本進程中定義變量V2BEGIN --進程開始
V2:=SR;--將輸入值讀入變量
SWAP(V2,1,2);
--V2、1、2是對應(yīng)于DATA、LOW、HIGH的實參
SWAP(V2,2,3);
--位置關(guān)聯(lián)法調(diào)用,第2、第3元素交換
SWAP(V2,1,2);
--位置關(guān)聯(lián)法調(diào)用,第1、第2元素再次交換
SC<=V2;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 美甲店服務(wù)員工作感悟
- 有害廢棄物安全回收流程
- 2025年中考化學(xué)一輪復(fù)習(xí)之化學(xué)式的書寫與意義
- 酒店管理工作關(guān)鍵職責(zé)講解
- 稅務(wù)報告與申報流程
- 銀行員工感悟
- 整形行業(yè)采購工作總結(jié)
- 2024年設(shè)備監(jiān)理師考試題庫【原創(chuàng)題】
- 別墅度假休閑旅游合同
- 讀書報告:儒學(xué)
- (完整版)非計劃性拔管魚骨圖
- DB32∕T 3377-2018 城市公共建筑人防工程規(guī)劃設(shè)計規(guī)范
- 中建三局住宅工程精益建造實施指南
- 分布式光伏發(fā)電項目并網(wǎng)驗收意見單
- 網(wǎng)站隱私政策模板
- YY∕T 1831-2021 梅毒螺旋體抗體檢測試劑盒(免疫層析法)
- 消弧產(chǎn)品規(guī)格實用標(biāo)準(zhǔn)化規(guī)定
- 裝飾裝修工程施工合理化建議和降低成本措施提要:完整
- 第十四章35kV變電站保護整定值計算實例
- 液態(tài)模鍛工藝介紹
- 水泵水輪機結(jié)構(gòu)介紹
評論
0/150
提交評論