版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第10章
VHDL基本語句一:主要內(nèi)容:VHDL基本語句講解
①順序語句
②并行語句二:重點(diǎn)掌握:常用VHDL基本語句及應(yīng)用VHDL基本語句用法ppt課件2021/3/261第10章一:主要內(nèi)容:VHDL基本語句講解VHDL基10.1.1賦值語句信號賦值語句變量賦值語句信號代入語句:
格式:
目的信號變量<=信號變量表達(dá)式例:a<=b;變量賦值語句:格式:
目的變量:=表達(dá)式例:c:=a+d信號與變量的區(qū)別:(1)信號賦值可以有延遲時間,變量賦值無時間延遲(2)信號除當(dāng)前值外還有許多相關(guān)值,如歷史信息等,變量只有當(dāng)前值進(jìn)程對信號敏感,對變量不敏感(3)信號可以是多個進(jìn)程的全局信號,但變量只在定義它之后的順序域可見(4)信號可以看作硬件的一根連線,但變量無此對應(yīng)關(guān)系。10.1順序語句VHDL基本語句用法ppt課件2021/3/26210.1.1賦值語句信號賦值語句變量賦值語句信號代入語句10.1.2IF語句—已講過IF條件THEN
…ENDIF;10.1.3CASE語句1)CASE語句的結(jié)構(gòu):CASE表達(dá)式ISWhen選擇值=>順序語句;When選擇值=>順序語句;...【W(wǎng)HENOTHERS=>】;ENDCASE;VHDL基本語句用法ppt課件2021/3/26310.1.2IF語句—已講過IF條件THEN102)多條件選擇值的一般表達(dá)式:
選擇值[|選擇值]3)選擇值表達(dá)方式:
(1)單個普通數(shù)值,如6。(2)數(shù)值選擇范圍,如(2TO4),表示取值為2、3或4。(3)并列數(shù)值,如3
5,表示取值為3或者5。(4)混合方式,以上三種方式的混合。
4)CASE語句舉例VHDL基本語句用法ppt課件2021/3/2642)多條件選擇值的一般表達(dá)式:3)選擇值表達(dá)方式:4)CLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux41ISPORT(s4,s3,s2,s1:INSTD_LOGIC;z4,z3,z2,z1:OUTSTD_LOGIC);ENDmux41;ARCHITECTUREactivOFmux41ISSIGNALsel:INTEGERRANGE0TO15;BEGINz1<='0';z2<='0';z3<='0';z4<='0';--輸入初始值
CASEselISWHEN0=>z1<='1';--當(dāng)sel=0時選中WHEN1
3=>z2<='1';--當(dāng)sel為1或3時選中
WHEN4To7
2=>z3<='1';--當(dāng)sel為2、4、5、6或7時選中
WHENOTHERS=>z4<='1';--當(dāng)sel為8~15中任一值時選中
ENDCASE;ENDactiv;例【10.1】●CASE語句病句舉例【例10.2】VHDL基本語句用法ppt課件2021/3/265LIBRARYIEEE;例【10.1】●CASE語句10.1.4LOOP語句格式:
[LOOP標(biāo)號:]LOOP
順序語句ENDLOOP[LOOP標(biāo)號];格式:[LOOP標(biāo)號:]FOR循環(huán)變量,IN循環(huán)次數(shù)范圍LOOP
順序語句
ENDLOOP[LOOP標(biāo)號];[見例1][見例2][見例3]
1、單個LOOP語句2、FOR_LOOP語句VHDL基本語句用法ppt課件2021/3/26610.1.4LOOP語句格式:格式:[見例1][見例2]10.15NEXT語句---跳出本次循環(huán)1、格式:
(1)NEXT;
--無條件終止當(dāng)前的循環(huán),跳回到本次循環(huán)LOOP語句處,開始下次循環(huán)。
(2)NEXTLOOP標(biāo)號;--同(1)。
(3)NEXTLOOP標(biāo)號WHEN條件表達(dá)式;--條件表達(dá)式為TRUE,執(zhí)行NEXT語句,進(jìn)入跳轉(zhuǎn)操作,否則繼續(xù)向下執(zhí)行。2、注意:NEXT語句用于跳出本次循環(huán)
且控制內(nèi)循環(huán)的結(jié)束.
在多重循環(huán)中必加標(biāo)號。3、舉例例1
例2VHDL基本語句用法ppt課件2021/3/26710.15NEXT語句---跳出本次循環(huán)1、格式:2、10.1.6EXIT語句-----結(jié)束循環(huán)狀態(tài)1、格式:(1)EXIT;--結(jié)束本次循環(huán)(2)EXITLOOP標(biāo)號;--
同上(3)EXITLOOP標(biāo)號WHEN條件表達(dá)式;2、舉例例13、NEXT與EXIT區(qū)別:
NEXT語句是轉(zhuǎn)向LOOP語句的起始點(diǎn)。
EXIT語句是轉(zhuǎn)向LOOP語句的終點(diǎn)。VHDL基本語句用法ppt課件2021/3/26810.1.6EXIT語句-----結(jié)束循環(huán)狀態(tài)1、格式:10.1.7WAIT語句---等待語句1)格式:
(1)WAIT;--功能:將程序掛起,直到滿足條件。
(2)WAITON信號表;
(3)WAITUNTIL條件表達(dá)式;
(4)WAITFOR時間表達(dá)式;2)舉例見例[1]見例[2]【例3】VHDL基本語句用法ppt課件2021/3/2691)格式:2)舉例見例[1]見例[2]【例3】VHDL基說明1:一般只有WAIT_UNTIL格式的等待語句可以被綜合器接受(其余語句格式只能在VHDL仿真器中使用),WAIT_UNTIL語句三種表達(dá)方式:WAITUNTIL信號=Value;--(1)WAITUNTIL信號’EVENTAND信號=Value;--(2)WAITUNTILNOT信號’STABLEAND信號=Value;--(3)說明2:對應(yīng)的硬件結(jié)構(gòu)相同的時鐘信號clock上跳沿應(yīng)用的四條WAIT語句:WAITUNTILclock='1';WAITUNTILrising_edge(clock);WAITUNTILclock='1'ANDclock’EVENT;WAITUNTILNOTclock’STABLEANDclock
='1';3)說明說明3:WAIT語句可用于Process進(jìn)程中的任何地方,已列出敏感信號的Process中不能用WAIT語句。VHDL基本語句用法ppt課件2021/3/2610說明1:說明2:3)說明說明3:VHDL基本語句10.1.8子程序調(diào)用語句1、過程調(diào)用
--就是執(zhí)行一個給定名字和參數(shù)的過程。1)格式:
過程名[([形參名=>]實(shí)參表達(dá)式
{,[形參名=>]實(shí)參表達(dá)式})];2)一個過程的調(diào)用將分別完成以下三個步驟:(1)將IN和INOUT模式的實(shí)參值賦給欲調(diào)用的過程中與它們對應(yīng)的形參;(2)執(zhí)行這個過程;(3)將過程中IN和INOUT模式的形參值返回給對應(yīng)的實(shí)參。3)舉例[例1]【例2】VHDL基本語句用法ppt課件2021/3/261110.1.8子程序調(diào)用語句1、過程調(diào)用--就是執(zhí)行2、函數(shù)調(diào)用函數(shù)調(diào)用與過程調(diào)用是十分相似的,不同之處:調(diào)用函數(shù)將返還一個指定數(shù)據(jù)類型的值,函數(shù)的參量只能是輸入值。1)格式:
FUNCTION函數(shù)名(參數(shù)表)RETURN數(shù)據(jù)類型;--函數(shù)首
FUNCTION函數(shù)名(參數(shù)表)RETURN數(shù)據(jù)類型IS--函數(shù)體2)詳細(xì)內(nèi)容已講過VHDL基本語句用法ppt課件2021/3/26122、函數(shù)調(diào)用函數(shù)調(diào)用與過程調(diào)用是十分相似的,1)格式:2)詳10.1.9返回語句(RETURN)1)格式:
語句格式一:
RETURN;--只用于結(jié)束過程,并不返回任何值。
語句格式二:RETURN表達(dá)式;
--只用于函數(shù),并返回一個值。2)舉例[例1]過程調(diào)用返回例子[例2幻燈片60]函數(shù)調(diào)用返回例子VHDL基本語句用法ppt課件2021/3/261310.1.9返回語句(RETURN)1)格式:2)舉例[10.1.10空操作語句(NULL)1)語句格式:NULL;例:CASEOpcodeISWHEN"001"=>tmp:=regaANDregb;WHEN"101"=>tmp:=regaORregb;WHEN"110"=>tmp:=NOTrega;WHENOTHERS=>
NULL;ENDCASE;3)說明:在上例的CASE語句中,NULL用于排除一些不用的條件。等同:WHENOTHERS=>tmp:=rega;2)舉例:VHDL基本語句用法ppt課件2021/3/261410.1.10空操作語句(NULL)1)語句格式:NU10.2并行語句■結(jié)構(gòu)體中的并行語句種類:1、并行信號賦值語句(ConcurrentSignalAssignments)。2、進(jìn)程語句(ProcessStatements)。3、塊語句(BlockStatements)。4、條件信號賦值語句(SelectedSignalAssignments)。5、元件例化語句(ComponentInstantiations),其中包括類屬、配置語句。6、生成語句(GenerateStatements)。7、并行過程調(diào)用語句(ConcurrentProcedureCalls)?!霾⑿姓Z句位置:
ARCHITECTURE結(jié)構(gòu)體名OF實(shí)體名IS
說明語句
BEGIN
并行語句END結(jié)構(gòu)體名;VHDL基本語句用法ppt課件2021/3/261510.2并行語句■結(jié)構(gòu)體中的并行語句種類:■10.2.1并行信號賦值語句1.簡單信號賦值語句格式:賦值目標(biāo)
=表達(dá)式例:ARCHITECTUREcurtOFbc1ISSIGNALs1,e,f,g,h:STD_LOGIC;BEGINoutput1<=aANDb;output2<=c+d;g<=eORf;h<=eXORf;s1<=g;ENDcurt;注:例中的五條信號賦值語句的執(zhí)行是并行發(fā)生的。VHDL基本語句用法ppt課件2021/3/261610.2.1并行信號賦值語句1.簡單信號賦值語句格式2.條件信號賦值語句賦值目標(biāo)<=表達(dá)式1
WHEN賦值條件1
ELSE
表達(dá)式2
WHEN賦值條件2
ELSE
...
表達(dá)式n;1)格式:2)舉例:VHDL基本語句用法ppt課件2021/3/26172.條件信號賦值語句賦值目標(biāo)<=表達(dá)式1WHEN賦【例1】
ENTITYmuxISPORT(a,b,c:INBIT;p1,p2:INBIT;z:OUTBIT);ENDmux;ARCHITECTUREbehvOFmuxISBEGINz<=aWHENp1='1'ELSEbWHENp2='1'ELSEc;END;例1的邏輯電路圖見圖1VHDL基本語句用法ppt課件2021/3/2618【例1】例1的邏輯電路圖見圖1VHDL基本語句用法3.選擇信號賦值語句WITH
選擇表達(dá)式SELECT
賦值目標(biāo)信號<=表達(dá)式1
WHEN
選擇值1
表達(dá)式2
WHEN選擇值2
...
表達(dá)式n
WHEN選擇值n;1)格式:2)舉例:[例2][例3]VHDL基本語句用法ppt課件2021/3/26193.選擇信號賦值語句WITH選擇表達(dá)式SELECT110.2.2塊語句結(jié)構(gòu)(BLOCK)塊標(biāo)號:BLOCK[(塊保護(hù)表達(dá)式)]
接口說明
類屬說明
BEGIN
并行語句
ENDBLOCK
塊標(biāo)號;1)格式:#標(biāo)號是必需的;#在對程序進(jìn)行仿真時,BLOCK中的語句是并行執(zhí)行的,與書寫順序無關(guān)。#一個BLOCK等價于一個結(jié)構(gòu)體。2)說明:3)舉例:【例2】塊語句嵌套例子:
【例3】
【例1】VHDL基本語句用法ppt課件2021/3/262010.2.2塊語句結(jié)構(gòu)(BLOCK)塊標(biāo)號:BLO10.2.3并行過程調(diào)用語句1)格式:過程名(關(guān)聯(lián)參量名);2)舉例:【例1】【例2】【例3】VHDL基本語句用法ppt課件2021/3/262110.2.3并行過程調(diào)用語句1)格式:過程名(關(guān)聯(lián)參量名10.2.4元件例化語句
COMPONENT
元件名
ISGENERIC(類屬表);--元件定義(說明)語句
PORT(端口名表);ENDCOMPONENT文件名;例化名:元件名
PORTMAP([端口名=>]連接端口名,...);----元件例化(調(diào)用)語句。1)格式:(1)
元件聲明語句用于調(diào)用已生成的元件,這些元件可能在庫中,也可能是預(yù)先編寫的元件實(shí)體描述.;(2)
元件語句可以在ARCHITECTURE,PACKAGE和BLOCK的說明部分.(3)元件例化中,兩層端口名(信號)之間的關(guān)系為映射關(guān)系:
2)說明:3)舉例:[例1]
,例[2]
,例
[3]VHDL基本語句用法ppt課件2021/3/262210.2.4元件例化語句1)格式:(1)元件聲明語句10.2.5
生成語句[標(biāo)號:]
FOR
循環(huán)變量IN
取值范圍GENERATE
說明
BEGIN
并行語句
ENDGENERATE[標(biāo)號];2)格式:[標(biāo)號:]IF
條件
GENERATE
說明
Begin
并行語句
ENDGENERATE[標(biāo)號];取值范圍的語句格式,有兩種形式:表達(dá)式TO表達(dá)式;--遞增方式,如1TO5表達(dá)式DOWNTO表達(dá)式;--遞減方式,如5DOWNTO13)說明:1)作用:復(fù)制作用,根據(jù)某些條件,設(shè)定好某一元件或設(shè)計單位,就可利用生成語句復(fù)制一組完全相同的并行元件或設(shè)計單位。VHDL基本語句用法ppt課件2021/3/262310.2.5生成語句[標(biāo)號:]FOR循環(huán)變量IN■生成語句四部分組成:(2)生成方式(3)說明部分(4)并行語句(1)標(biāo)號*【例1】*【例2】*【例3】■舉例:VHDL基本語句用法ppt課件2021/3/2624■生成語句四部分組成:(2)生成方式(3)說明部分(4)并10.2.6REPORT語句--報告相關(guān)信息語句。--格式:REPORT<字符串>;10.2.7
斷言語句--時序仿真和程序調(diào)試的人機(jī)對話。--格式:ASSERT<條件表達(dá)式>REPORT<出錯信息>SEVERITY<錯誤級別>VHDL基本語句用法ppt課件2021/3/262510.2.6REPORT語句10.2.7斷言語句VHDL10.3
屬性描述與定義語句可綜合屬性:
LEFT、RIGHT、HIGH、LOW、RANGE、REVERSRANGE、LENGTH、EVENT及STABLE。格式:屬性測試項(xiàng)目名
’
屬性標(biāo)識符
1.信號類屬性
#
(NOTclock’STABLEANDclock=‘1’)--不可綜合#(clock’EVENTANDclock=‘1’)
以上兩語句的功能是一樣的。注意1)EVENT與STABLE測試功能相反。
2)語句“NOT(clock’STABLEANDclock='1')”的表達(dá)方式是不可綜合的。VHDL基本語句用法ppt課件2021/3/262610.3屬性描述與定義語句可綜合屬性:LEFT、R2、數(shù)據(jù)區(qū)間類屬性【例】...SIGNALrange1:INSTD
LOGIC
VECTOR(0TO7);...FORiINrange1'RANGELOOP...3、數(shù)值類屬性...PROCESS(clock,a,b);TYPEobjISARRAY(0TO15)OFBIT;SIGNALele1,ele2,ele3,ele4:INTEGER;BEGINele1<=obj’RIGNT;ele2<=obj’LEFT;ele3<=obj’HIGH;ele4<=obj’LOW;...VHDL基本語句用法ppt課件2021/3/26272、數(shù)據(jù)區(qū)間類屬性【例】3、數(shù)值類屬性...VHDL基本語句4、數(shù)組屬性‘LENGTH...TYPEarry1ARRAY(0TO7)OFBIT;VARIABLEwth:INTEGER;...wth1:=arry1’LENGTH;--wth1=8...5、用戶定義屬性ATTRIBUTE屬性名:數(shù)據(jù)類型;ATTRIBUTE屬性名OF對象名:對象類型IS值;VHDL基本語句用法ppt課件2021/3/26284、數(shù)組屬性‘LENGTH...5、用戶定義屬性ATTRIBSynplify綜合器支持的特殊屬性都在synplify.attributes程序包中,使用前加入下面語句:LIBRARYsynplify;USEsynplicity.attributes.all;6、說明7、舉例*【例1】*【例2】VHDL基本語句用法ppt課件2021/3/2629Synplify綜合器支持的特殊屬性都在synplify.a■本章程序舉例例[10.2]寄存器■結(jié)束例子:設(shè)計一個實(shí)體圖如圖,功能為32位計數(shù)器VHDL基本語句用法ppt課件2021/3/2630■本章程序舉例例[10.2]寄存器■結(jié)束例例[10.2]寄存器ENTITYreginfIS PORT(d,clk,clr,pre,load,data :INBIT;q1,q2,q3,q4,q5,q6,q7:OUTBIT);ENDreginf;ARCHITECTUREmaxpldOFreginfISBEGINPROCESS--高電平時鐘觸發(fā)BEGINWAITUNTILclk='1';q1<=d;ENDPROCESS;
PROCESS--低電平時鐘觸發(fā)BEGINWAITUNTILclk='0';q2<=d;ENDPROCESS;PROCESS(clk,clr)--上升沿觸發(fā)/同步清除
BEGINIFclr='1'THEN q3<='0';ELSIFclk'EVENTANDclk='1'THENq3<=d;ENDIF;ENDPROCESS; VHDL基本語句用法ppt課件2021/3/2631例[10.2]寄存器ENTITYreginfISVPROCESS(clk,clr)
--下降沿觸發(fā)/同步清除
BEGINIFclr='0'THEN q4<='0';ELSIFclk'EVENTANDclk='0'THENq4<=d;ENDIF;ENDPROCESS;PROCESS(clk,pre)
--上升沿觸發(fā)/同步預(yù)置”1”
BEGINIFpre='1'THEN q5<='1';ELSIFclk'EVENTANDclk='1'THENq5<=d;ENDIF;ENDPROCESS;(續(xù))[例10.2]寄存器
VHDL基本語句用法ppt課件2021/3/2632PROCESS(clk,clr)--下降沿觸發(fā)/同步PROCESS(clk,load,data)
--上升沿觸發(fā)/同步預(yù)置數(shù)據(jù)
BEGINIFload='1'THEN q6<=data;ELSIFclk'EVENTANDclk='1'THENq6<=d;ENDIF;ENDPROCESS;
PROCESS(clk,clr,pre)
--上升沿觸發(fā)/同步置”1”和清除
BEGINIFclr='1'THEN q7<='0';ELSIFpre='1'THENq7<='1';ELSIFclk'EVENTANDclk='1'THENq7<=d;ENDIF;ENDPROCESS;ENDmaxpld;例[10.2]寄存器(續(xù))VHDL基本語句用法ppt課件2021/3/2633PROCESS(clk,load,data)-LIBRARYieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycount12isport(clk,reset,en:instd_logic;qa,qb,qc,qd:outstd_logic);endcount12;architecturebehaveofcount12issignalcount_4:std_logic_vector(3downto0);beginqa<=count_4(0);qb<=count_4(1);qc<=count_4(2);qd<=count_4(3);process(clk,reset)beginif(reset='0')thencount_4<="0000";elsif(clk'eventandclk='1')thenif(en='1')thenif(count_4="1011")thencount_4<="0000";elsecount_4<=count_4+'1';endif;endif;endif;endprocess;endbehave;引腳定義:
reset復(fù)位;en計數(shù)控制;
clk時鐘;
qa,qb,qc,qd計數(shù)器輸出例10.1
十二進(jìn)制同步計數(shù)器VHDL基本語句用法ppt課件2021/3/2634LIBRARYieee;引腳定義:例10.1VHDL基LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;-----設(shè)計DFF元件ENTITYd_ffISPORT(d,clk_s:INSTD_LOGIC;q:OUTSTD_LOGIC;nq:OUTSTD_LOGIC);ENDENTITYd_ff;ARCHITECTUREa_rs_ffOFd_ffISBEGINbin_rs_ff:PROCESS(CLK_S)BEGINIFclk_s='1'ANDclk_s'EVENTTHENq<=d;nq<=NOTd;ENDIF;ENDPROCESS;ENDARCHITECTUREa_rs_ff;
接下頁例3VHDL基本語句用法ppt課件2021/3/2635LIBRARYIEEE;例3VHDL基本語句用法ppt課LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYcnt_bin_nisGENERIC(n:INTEGER:=6);PORT(q:OUTSTD_LOGIC_VECTOR(0TOn-1);in_1:INSTD_LOGIC);ENDENTITYcnt_bin_n;ARCHITECTUREbehvOFcnt_bin_nISCOMPONENTd_ffPORT(d,clk_s:INSTD_LOGIC;Q,NQ:OUTSTD_LOGIC);ENDCOMPONENTd_ff;
SIGNALs:STD_LOGIC_VECTOR(0TOn);BEGINs(0)<=in_1;
q_1:FORiIN0TOn-1GENERATEdff:d_ffPORTMAP(s(i+1),s(I),q(i),s(i+1));
ENDGENERATE;ENDARCHITECTUREbehv;VHDL基本語句用法ppt課件2021/3/2636VHDL基本語句用法ppt課件2021/3/2636LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYSN74373ISPORT(D:INSTD_LOGIC_VECTOR(8DOWNTO1);OEN,G:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR(8DOWNTO1);ENDENTITYSN74373;ARCHITECTUREtwoOFSN74373ISSIGNALsigvec_save:STD_LOGIC_VECTOR(8DOWNTO1);BEGINPROCESS(D,OEN,G,sigvec_save)BEGINIFOEN='0'THENQ<=sigvec_save;ELSEQ<="ZZZZZZZZ";ENDIF;IFG='1'THENSigvec_save<=D;ENDIF;ENDPROCESS;ENDARCHITECTUREtwo;
接下頁例2VHDL基本語句用法ppt課件2021/3/2637LIBRARYIEEE;例2VHDL基本語句用法ppt課(續(xù))ARCHITECTUREoneOFSN74373ISCOMPONENTLatchPORT(D,ENA:INSTD_LOGIC;Q:OUTSTD_LOGIC);ENDCOMPONENT;SIGNALsig_mid:STD_LOGIC_VECTOR(8DOWNTO1);BEGIN
GeLatch:FORD(inNum)IN1TO8GENERATE
Latchx:LatchPORTMAP(D(inNum),G,sig_mid(inNum));ENDGENERATE;Q<=sig_midWHENOEN='0'ELSE"ZZZZZZZZ";--當(dāng)OEN=1時,Q(8)~Q(1)輸出狀態(tài)呈高阻態(tài)ENDARCHITECTUREone;
VHDL基本語句用法ppt課件2021/3/2638(續(xù))VHDL基本語句用法ppt課件2021/3/2638...COMPONENTcompPORT(x:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDCOMPONENT;SIGNALa:STD_LOGIC_VECTOR(0TO7);SIGNALb:STD_LOGIC_VECTOR(0TO7);...gen:FORiINa’RANGEGENERATEu1:compPORTMA(x=>a(i),y=>b(i));ENDGENERATEgen,...【例1】下圖是生成語句產(chǎn)生的8個相同的電路模塊VHDL基本語句用法ppt課件2021/3/2639...【例1】下圖是生成語句產(chǎn)生的8個相同的電路模塊LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYrsISPORT(set,reset:INBIT;q,qb:BUFFERBIT);ENDrs;ARCHITECTURErsff1OFrsISCOMPONENTnand2PORT(a,b:INBIT;c:OUTBIT);ENDCOMPONENT;BEGINU1:nand2PORTMAP(a=>set,b=>qb,c=>q);U2:nand2PORTMAP(a=>reset,b=>q,c=>qb);ENDrsff1;例[3]RS觸發(fā)器電路實(shí)現(xiàn)VHDL基本語句用法ppt課件2021/3/2640LIBRARYIEEE;例[3]RS觸發(fā)器電路實(shí)現(xiàn)V
...b1:BLOCKSIGNALs1:BIT;BEGINS1<=aANDb;
b2:BLOCKSIGNALs2:BIT;BEGINs2<=cANDd;
b3:BLOCKBEGINZ<=s2;
ENDBLOCKb3;
ENDBLOCKb2;y<=s1;
ENDBLOCKb1;...塊語句嵌套例子:【例3】VHDL基本語句用法ppt課件2021/3/2641塊語句嵌套例子:【例3】VHDL基本語句用法ppt課件2...
ENTITYgatISGENERIC(l_time:TIME;s_time:TIME);--類屬說明
PORT(b1,b2,b3:INOUTBIT);--結(jié)構(gòu)體全局端口定義
ENDENTITYgat;ARCHITECTUREfuncOFgatISSIGNALa1:BIT;--結(jié)構(gòu)體全局信號a1定義
BEGINBlk1:BLOCK
--塊定義,塊標(biāo)號名是Blk1GENERIC(gb1,gb2:Time);--定義塊中的局部類屬參量
GENERICMAP(gb1=>l_time,gb2=>s_time);--局部端口參量設(shè)定
PORT(pb:INBIT;pb2:INOUTBIT);--塊結(jié)構(gòu)中局部端口定義
PORTMAP(pb1=>b1,pb2=>a1);--塊結(jié)構(gòu)端口連接說明
CONSTANTdelay:Time:=1ms;--局部常數(shù)定義
SIGNALs1:BIT;--局部信號定義
BEGINs1<=pb1AFTERdelay;pb2<=s1AFTERgb1,b1AFTERgb2;
ENDBLOCKBlk1;ENDARCHITECTUREfunc;【例2】塊語句例VHDL基本語句用法ppt課件2021/3/2642...【例2】塊語句例VHDL基本語句用法ppt課件20VHDL基本語句用法ppt課件2021/3/2643VHDL基本語句用法ppt課件2021/3/2643LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYdecoderISPORT(a,b,c:INSTD_LOGIC;data1,data2:INSTD_LOGIC;dataout:OUTSTD_LOGIC);ENDdecoder;ARCHITECTUREconcuntOFdecoderISSIGNALinstruction:STD_LOGIC_VECTOR(2DOWNTO0);BEGINinstruction<=c&b&a;WITHinstructionSELECTdataout<=data1ANDdata2WHEN"000",data1ORdata2WHEN"001",data1NANDdata2WHEN"010",data1NORdata2WHEN"011",data1XORdata2WHEN"100",data1XNORdata2WHEN"101",'Z'WHENOTHERS;ENDconcunt;【例2】VHDL基本語句用法ppt課件2021/3/2644LIBRARYIEEE;【例2】VHDL基本語句用法pp...WITHseltSELECTmuxout<=aWHEN0|1,--0或1
bWHEN2TO5,--2或3,或4或5
cWHEN6,dWHEN7,'Z'WHENOTHERS;...【例3】VHDL基本語句用法ppt課件2021/3/2645...【例3】VHDL基本語句用法ppt課件2021/3/【例10.2】CASE語句病句舉例
SIGNALvalue:INTEGERRANGE0TO15;SIGNALout1:STD_LOGIC;
...CASEvalueIS--缺少以WHEN引導(dǎo)的條件句
ENDCASE;...
CASEvalueISWHEN0=>out1<='1';
WHEN1=>out1<='0';--value2~15的值未包括進(jìn)去ENDCASE...
CASEvalueISWHEN0TO10=>out1<='1';--選擇值中5~10的值有重疊
WHEN5TO15=>out1<='0';ENDCASE;VHDL基本語句用法ppt課件2021/3/2646【例10.2】CASE語句病句舉例VHDL基本語句用法
...
L2:LOOPa:=a+1;EXITL2WHENa>10;--當(dāng)a大于10時跳出循環(huán)
ENDLOOPL2;...[例.1]VHDL基本語句用法ppt課件2021/3/2647[例.1]VHDL基本語句用法ppt課件2021/3/26【例2
】循環(huán)語句舉例
LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYp_checkISPORT(a:INSTD_LOGIC_VECTOR(7DOWNTO0);y:OUTSTD_LOGIC);ENDp_check;ARCHITECTUREoptOFp_checkISSIGNALtmp:STD_LOGIC;BEGINPROCESS(a)BEGINtmp<='0';
FORnIN0TO7LOOPtmp<=tmpXORa(n);ENDLOOP;y<=tmp;ENDPROCESS;
ENDopt;VHDL基本語句用法ppt課件2021/3/2648【例2】循環(huán)語句舉例VHDL基本語句用法ppt課件202例7.2.4.3循環(huán)語句舉例SIGNALa,b,c:STD_LOGIC_VECTOR(1TO3);...FORnIN1To3LOOPa(n)<=b(n)ANDc(n);ENDLOOP;[例3]此段程序等效于順序執(zhí)行以下三個信號賦值操作:a(1)<=b(1)ANDc(1);a(2)<=b(2)ANDc(2);a(3)<=b(3)ANDc(3);VHDL基本語句用法ppt課件2021/3/2649例7.2.4.3循環(huán)語句舉例[例3]此段程序等效于順序執(zhí)行以【例1】NEXT舉例...L1:FORcnt_valueIN1TO8LOOPs1:a(cnt_value):='0';
NEXTWHEN(b=c);--判斷條件s2:a(cnt_value+8):='0';ENDLOOPL1;說明:當(dāng)程序執(zhí)行到NEXT判斷,當(dāng)b=c時執(zhí)行NEXT返回L1,當(dāng)b≠c時執(zhí)行s2語句VHDL基本語句用法ppt課件2021/3/2650【例1】NEXT舉例說明:當(dāng)程序執(zhí)行到NEXT判斷,當(dāng)【例2】多重循環(huán)NEXT舉例...L_x:FORcnt_valueIN1TO8LOOPs1:a(cnt_value):='0';k:=0;L_y:LOOPs2:b(k):='0';
NEXTL_xWHEN(e>f);s3:b(k+8):='0';k:=k+1;
NEXTLOOPL_y;NEXTLOOPL_x;...說明:當(dāng)(e>f)時,執(zhí)行NEXTL_x
,跳轉(zhuǎn)到L_x執(zhí)行,當(dāng)e>f不成立時,執(zhí)行s3語句VHDL基本語句用法ppt課件2021/3/2651【例2】多重循環(huán)NEXT舉例說明:當(dāng)(e>f)時,執(zhí)行NSIGNALa,b:STD_LOGIC_VECTOR(1DOWNTO0);SIGNALa_less_then_b:Boolean;...a_less_then_b<=FALSE;--設(shè)初始值
FORiIN1DOWNTO0LOOPIF(a(i)='1'ANDb(i)='0')THENa_less_then_b<=FALSE;--a>b
EXIT;ELSIF(a(i)='0'ANDb(i)='1')THENa_less_then_b<=TRUE;--a<b
EXIT;ELSENULL;ENDIF;ENDLOOP;--當(dāng)i=1時返回LOOP語句繼續(xù)比較例1EXIT語句舉例--兩位數(shù)比較說明:程序中當(dāng)a>b時,由EXIT跳出循環(huán)比較程序,并報告結(jié)果。VHDL基本語句用法ppt課件2021/3/2652例1EXIT語句舉例--兩位數(shù)比較說明:程序1)WAITON信號表結(jié)構(gòu)----用于仿真SIGNALs1,s2:STD_LOGIC;...PROCESSBEGIN...WAITONs1,s2
;--執(zhí)行到此句被掛起來,待s1,s2任一信號改變,進(jìn)程才重新開始。ENDPROCESS;2)WAIT_ON結(jié)構(gòu)----用于仿真
LOOP
Waitonenable;
EXITWHENenable='1';ENDLOOP;
3)WAIT_UNTIL條件表達(dá)式結(jié)構(gòu)----用于綜合
...
Waituntilenable=‘1’;...【例1】
例2)、3)中:
待enable上升沿。(即:兩條件enable改變ANDnable=1同時滿足)VHDL基本語句用法ppt課件2021/3/26532)WAIT_ON結(jié)構(gòu)----用于仿真【例1】例2WAIT語句舉例【例2】用一個硬件求實(shí)現(xiàn)平均值的功能...PROCESSBEGINWAITUNTILclk='1';ave<=a;WAITUNTILclk='1';ave<=ave+a;WAITUNTILclk='1';ave<=ave+a;WAITUNTILclk='1';ave<=(ave+a)/4;ENDPROCESS;VHDL基本語句用法ppt課件2021/3/2654例2WAIT語句舉例【例2】用一個硬件求實(shí)現(xiàn)平均值【例3】--用WAIT語句實(shí)現(xiàn)具有同步復(fù)位功能
PROCESSBEGINrst_loop:LOOP
WAITUNTILclock='1'ANDclock’EVENT;--等待時鐘信號
NEXTrst_loopWHEN(rst='1');--檢測復(fù)位信號rstx<=a;--無復(fù)位信號,執(zhí)行賦值操作
WAITUNTILclock='1'ANDclock’EVENT;--等待時鐘信號
NEXTrst_loopWhen(rst='1');--檢測復(fù)位信號rsty<=b;--無復(fù)位信號,執(zhí)行賦值操作
ENDLOOPrst_loop;ENDPROCESS;-每當(dāng)時鐘上升沿到來結(jié)束進(jìn)程的掛起,從而檢測rst=‘1’是否成立,如果是高電平,則返回循環(huán)起點(diǎn)rst_loop處,否則,執(zhí)行下面的順序語句。VHDL基本語句用法ppt課件2021/3/2655【例3】--用WAIT語句實(shí)現(xiàn)具有同步復(fù)位功能VPACKAGEdata_typesIS--程序包體SUBTYPEdata_elementISINTEGERRANGE0TO3;--定義數(shù)據(jù)類型TYPEdata_arrayISARRAY(1TO3)OFdata_element;ENDdata_types;USEWORK.data_types.ALL;--工作庫的程序包data_typesENTITYsortISPORT(in_array:INdata_array;out_array:OUTdata_array);ENDsort;ARCHITECTUREexmpOFsortISBEGINPROCESS(in_array)--進(jìn)程開始,設(shè)data_types為敏感信號
PROCEDUREswap(data:INOUTdata_array;
--過程體開始
low,high:ININTEGER)IS--形參名為data、low、highVARIABLEtemp:data_element;BEGIN
--以下過程的邏輯功能接下頁
[例1]過程調(diào)用舉例VHDL基本語句用法ppt課件2021/3/2656PACKAGEdata_typesIS
IF(data(low)>data(high))THEN--檢測數(shù)據(jù)
temp:=data(low);data(low):=data(high);data(high):=temp;ENDIF;ENDswap;--過程swap結(jié)束VARIABLEmy_array:data_array;
BEGIN--進(jìn)程開始
my_array:=in_array;--將輸入值讀入變量swap(my_array,1,2);
--my_array、1、2是對應(yīng)于data、low、high的實(shí)參
s,2,3);--位置關(guān)聯(lián)法調(diào)用,第2第3元素交換
s,1,2);--第1第2元素再次交換
out_array<=my_array;ENDProcess;ENDexmp;[例1](續(xù))VHDL基本語句用法ppt課件2021/3/2657IF(data(low)>data(high))TENTITYsort4isGENERIC(top:INTEGER:=3);PORT(a,b,c,d:INBIT_VECTOR(0TOtop);ra,rb,rc,rd:OUTBIT_VECTOR(0TOtop));ENDsort4;ARCHITECTUREmuxesOFsort4ISPROCEDUREsort2(x,y:INOUTBIT_VECTOR(0TOtop))isVARIABLEtmp:BIT_VECTOR(0TOtop);BEGINIFx>yTHENtmp:=x;x:=y;y:=tmp;ENDIF;ENDsort2;BEGINPROCESS(a,b,c,d)VARIABLEva,vb,vc,vd:BIT_VECTOR(0TOtop);BEGINva:=a;vb:=b;vc:=c;vd:=d;sort2(va,vc);sort2(vb,vd);sort2(va,vb);sort2(vc,vd);sort2(vb,vc);ra<=va;rb<=vb;rc<=vc;rd<=vd;ENDPROCESS;ENDmuxes;
[例2]過程調(diào)用舉例VHDL基本語句用法ppt課件2021/3/2658ENTITYsort4is[例2]過程調(diào)用舉例VHPROCEDURErs(SIGNALs,r:INSTD_LOGIC;SIGNALq,nq:INOUTSTD_LOGIC)ISBEGINIF(s='1'ANDr='1')THENREPORT"Forbiddenstate:sandrarequualto'1'";
RETURN;ELSEq<=sANDnqAFTER5ns;nq<=sANDqAFTER5ns;ENDIF;ENDPROCEDURErs;[例1]當(dāng)信號s=‘1’ANDr=‘1滿足時,RETURN
將中斷過程。VHDL基本語句用法ppt課件2021/3/2659[例1]當(dāng)信號s=‘1’ANDr=‘1滿足時,
FUNCTIONopt(a,b,opr:STD_LOGIC)
RETURNSTD_LOGICISBEGINIF(opr='1')THENRETURN(aANDb);ELSERETURN(aORb);ENDIF;ENDFUNCTIONopt;[例2]VHDL基本語句用法ppt課件2021/3/2660[例2]VHDL基本語句用法ppt課件2021/3/2..PROCEDUREadder(SIGNALa,b:INSTD_LOGIC;--過程名為adderSIGNALsum:OUTSTD_LOGIC);...adder(a1,b1,sum1);--并行過程調(diào)用...--在此,a1、b1、sum1即為分別對應(yīng)于a、b、sum的關(guān)聯(lián)參量名
PROCESS(c1,c2);--進(jìn)程語句執(zhí)行
BEGINAdder(c1,c2,s1);--順序過程調(diào)用,在此c1、c2、s1即為分別對應(yīng)于a、b、sum的關(guān)聯(lián)參量名
ENDPROCESS;
…【例1】VHDL基本語句用法ppt課件2021/3/2661..【例1】VHDL基本語句用法ppt課件2021/3/
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鋁板外立面維護(hù)方案
- 郫縣管網(wǎng)建設(shè)施工方案
- 2025年中國螺桿膨脹機(jī)行業(yè)發(fā)展監(jiān)測及投資前景展望報告
- 2025年中國補(bǔ)腎養(yǎng)血丸行業(yè)發(fā)展監(jiān)測及發(fā)展趨勢預(yù)測報告
- 2025年點(diǎn)火器配件項(xiàng)目可行性研究報告
- 牛皮膠原蛋白可行性研究報告申請建議書
- 鮮花綠植配送承諾書
- 2025年新型環(huán)保箱式變壓器采購合同標(biāo)準(zhǔn)范本14篇
- 紅河2025年云南紅河河口縣事業(yè)單位校園招聘5人筆試歷年參考題庫附帶答案詳解
- 2025年新三板協(xié)議轉(zhuǎn)讓股權(quán)專項(xiàng)股權(quán)轉(zhuǎn)讓與并購重組合同3篇
- 新能源行業(yè)市場分析報告
- 2025年高考?xì)v史復(fù)習(xí)之小題狂練300題(選擇題):秦漢時期(20題)
- 鉆機(jī)安全操作規(guī)程(3篇)
- 2025年產(chǎn)業(yè)園區(qū)運(yùn)營與管理企業(yè)組織結(jié)構(gòu)及部門職責(zé)
- 巖土工程勘察.課件
- 第五章 無土育苗技術(shù)
- 2022年7月2日江蘇事業(yè)單位統(tǒng)考《綜合知識和能力素質(zhì)》(管理崗)
- 福建省福州三牧中學(xué)2024-2025學(xué)年七年級上學(xué)期期中生物試題(無答案)
- 2024統(tǒng)戰(zhàn)工作總結(jié)
- 銀行營業(yè)網(wǎng)點(diǎn)詐騙、冒領(lǐng)等突發(fā)事件應(yīng)急預(yù)案
- 初一英語語法練習(xí)
評論
0/150
提交評論