版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第10章
VHDL基本語(yǔ)句一:主要內(nèi)容:VHDL基本語(yǔ)句講解
①順序語(yǔ)句
②并行語(yǔ)句二:重點(diǎn)掌握:常用VHDL基本語(yǔ)句及應(yīng)用VHDL基本語(yǔ)句用法ppt課件2021/3/261第10章一:主要內(nèi)容:VHDL基本語(yǔ)句講解VHDL基10.1.1賦值語(yǔ)句信號(hào)賦值語(yǔ)句變量賦值語(yǔ)句信號(hào)代入語(yǔ)句:
格式:
目的信號(hào)變量<=信號(hào)變量表達(dá)式例:a<=b;變量賦值語(yǔ)句:格式:
目的變量:=表達(dá)式例:c:=a+d信號(hào)與變量的區(qū)別:(1)信號(hào)賦值可以有延遲時(shí)間,變量賦值無(wú)時(shí)間延遲(2)信號(hào)除當(dāng)前值外還有許多相關(guān)值,如歷史信息等,變量只有當(dāng)前值進(jìn)程對(duì)信號(hào)敏感,對(duì)變量不敏感(3)信號(hào)可以是多個(gè)進(jìn)程的全局信號(hào),但變量只在定義它之后的順序域可見(jiàn)(4)信號(hào)可以看作硬件的一根連線,但變量無(wú)此對(duì)應(yīng)關(guān)系。10.1順序語(yǔ)句VHDL基本語(yǔ)句用法ppt課件2021/3/26210.1.1賦值語(yǔ)句信號(hào)賦值語(yǔ)句變量賦值語(yǔ)句信號(hào)代入語(yǔ)句10.1.2IF語(yǔ)句—已講過(guò)IF條件THEN
…ENDIF;10.1.3CASE語(yǔ)句1)CASE語(yǔ)句的結(jié)構(gòu):CASE表達(dá)式ISWhen選擇值=>順序語(yǔ)句;When選擇值=>順序語(yǔ)句;...【W(wǎng)HENOTHERS=>】;ENDCASE;VHDL基本語(yǔ)句用法ppt課件2021/3/26310.1.2IF語(yǔ)句—已講過(guò)IF條件THEN102)多條件選擇值的一般表達(dá)式:
選擇值[|選擇值]3)選擇值表達(dá)方式:
(1)單個(gè)普通數(shù)值,如6。(2)數(shù)值選擇范圍,如(2TO4),表示取值為2、3或4。(3)并列數(shù)值,如3
5,表示取值為3或者5。(4)混合方式,以上三種方式的混合。
4)CASE語(yǔ)句舉例VHDL基本語(yǔ)句用法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時(shí)選中WHEN1
3=>z2<='1';--當(dāng)sel為1或3時(shí)選中
WHEN4To7
2=>z3<='1';--當(dāng)sel為2、4、5、6或7時(shí)選中
WHENOTHERS=>z4<='1';--當(dāng)sel為8~15中任一值時(shí)選中
ENDCASE;ENDactiv;例【10.1】●CASE語(yǔ)句病句舉例【例10.2】VHDL基本語(yǔ)句用法ppt課件2021/3/265LIBRARYIEEE;例【10.1】●CASE語(yǔ)句10.1.4LOOP語(yǔ)句格式:
[LOOP標(biāo)號(hào):]LOOP
順序語(yǔ)句ENDLOOP[LOOP標(biāo)號(hào)];格式:[LOOP標(biāo)號(hào):]FOR循環(huán)變量,IN循環(huán)次數(shù)范圍LOOP
順序語(yǔ)句
ENDLOOP[LOOP標(biāo)號(hào)];[見(jiàn)例1][見(jiàn)例2][見(jiàn)例3]
1、單個(gè)LOOP語(yǔ)句2、FOR_LOOP語(yǔ)句VHDL基本語(yǔ)句用法ppt課件2021/3/26610.1.4LOOP語(yǔ)句格式:格式:[見(jiàn)例1][見(jiàn)例2]10.15NEXT語(yǔ)句---跳出本次循環(huán)1、格式:
(1)NEXT;
--無(wú)條件終止當(dāng)前的循環(huán),跳回到本次循環(huán)LOOP語(yǔ)句處,開(kāi)始下次循環(huán)。
(2)NEXTLOOP標(biāo)號(hào);--同(1)。
(3)NEXTLOOP標(biāo)號(hào)WHEN條件表達(dá)式;--條件表達(dá)式為TRUE,執(zhí)行NEXT語(yǔ)句,進(jìn)入跳轉(zhuǎn)操作,否則繼續(xù)向下執(zhí)行。2、注意:NEXT語(yǔ)句用于跳出本次循環(huán)
且控制內(nèi)循環(huán)的結(jié)束.
在多重循環(huán)中必加標(biāo)號(hào)。3、舉例例1
例2VHDL基本語(yǔ)句用法ppt課件2021/3/26710.15NEXT語(yǔ)句---跳出本次循環(huán)1、格式:2、10.1.6EXIT語(yǔ)句-----結(jié)束循環(huán)狀態(tài)1、格式:(1)EXIT;--結(jié)束本次循環(huán)(2)EXITLOOP標(biāo)號(hào);--
同上(3)EXITLOOP標(biāo)號(hào)WHEN條件表達(dá)式;2、舉例例13、NEXT與EXIT區(qū)別:
NEXT語(yǔ)句是轉(zhuǎn)向LOOP語(yǔ)句的起始點(diǎn)。
EXIT語(yǔ)句是轉(zhuǎn)向LOOP語(yǔ)句的終點(diǎn)。VHDL基本語(yǔ)句用法ppt課件2021/3/26810.1.6EXIT語(yǔ)句-----結(jié)束循環(huán)狀態(tài)1、格式:10.1.7WAIT語(yǔ)句---等待語(yǔ)句1)格式:
(1)WAIT;--功能:將程序掛起,直到滿足條件。
(2)WAITON信號(hào)表;
(3)WAITUNTIL條件表達(dá)式;
(4)WAITFOR時(shí)間表達(dá)式;2)舉例見(jiàn)例[1]見(jiàn)例[2]【例3】VHDL基本語(yǔ)句用法ppt課件2021/3/2691)格式:2)舉例見(jiàn)例[1]見(jiàn)例[2]【例3】VHDL基說(shuō)明1:一般只有WAIT_UNTIL格式的等待語(yǔ)句可以被綜合器接受(其余語(yǔ)句格式只能在VHDL仿真器中使用),WAIT_UNTIL語(yǔ)句三種表達(dá)方式:WAITUNTIL信號(hào)=Value;--(1)WAITUNTIL信號(hào)’EVENTAND信號(hào)=Value;--(2)WAITUNTILNOT信號(hào)’STABLEAND信號(hào)=Value;--(3)說(shuō)明2:對(duì)應(yīng)的硬件結(jié)構(gòu)相同的時(shí)鐘信號(hào)clock上跳沿應(yīng)用的四條WAIT語(yǔ)句:WAITUNTILclock='1';WAITUNTILrising_edge(clock);WAITUNTILclock='1'ANDclock’EVENT;WAITUNTILNOTclock’STABLEANDclock
='1';3)說(shuō)明說(shuō)明3:WAIT語(yǔ)句可用于Process進(jìn)程中的任何地方,已列出敏感信號(hào)的Process中不能用WAIT語(yǔ)句。VHDL基本語(yǔ)句用法ppt課件2021/3/2610說(shuō)明1:說(shuō)明2:3)說(shuō)明說(shuō)明3:VHDL基本語(yǔ)句10.1.8子程序調(diào)用語(yǔ)句1、過(guò)程調(diào)用
--就是執(zhí)行一個(gè)給定名字和參數(shù)的過(guò)程。1)格式:
過(guò)程名[([形參名=>]實(shí)參表達(dá)式
{,[形參名=>]實(shí)參表達(dá)式})];2)一個(gè)過(guò)程的調(diào)用將分別完成以下三個(gè)步驟:(1)將IN和INOUT模式的實(shí)參值賦給欲調(diào)用的過(guò)程中與它們對(duì)應(yīng)的形參;(2)執(zhí)行這個(gè)過(guò)程;(3)將過(guò)程中IN和INOUT模式的形參值返回給對(duì)應(yīng)的實(shí)參。3)舉例[例1]【例2】VHDL基本語(yǔ)句用法ppt課件2021/3/261110.1.8子程序調(diào)用語(yǔ)句1、過(guò)程調(diào)用--就是執(zhí)行2、函數(shù)調(diào)用函數(shù)調(diào)用與過(guò)程調(diào)用是十分相似的,不同之處:調(diào)用函數(shù)將返還一個(gè)指定數(shù)據(jù)類型的值,函數(shù)的參量只能是輸入值。1)格式:
FUNCTION函數(shù)名(參數(shù)表)RETURN數(shù)據(jù)類型;--函數(shù)首
FUNCTION函數(shù)名(參數(shù)表)RETURN數(shù)據(jù)類型IS--函數(shù)體2)詳細(xì)內(nèi)容已講過(guò)VHDL基本語(yǔ)句用法ppt課件2021/3/26122、函數(shù)調(diào)用函數(shù)調(diào)用與過(guò)程調(diào)用是十分相似的,1)格式:2)詳10.1.9返回語(yǔ)句(RETURN)1)格式:
語(yǔ)句格式一:
RETURN;--只用于結(jié)束過(guò)程,并不返回任何值。
語(yǔ)句格式二:RETURN表達(dá)式;
--只用于函數(shù),并返回一個(gè)值。2)舉例[例1]過(guò)程調(diào)用返回例子[例2幻燈片60]函數(shù)調(diào)用返回例子VHDL基本語(yǔ)句用法ppt課件2021/3/261310.1.9返回語(yǔ)句(RETURN)1)格式:2)舉例[10.1.10空操作語(yǔ)句(NULL)1)語(yǔ)句格式:NULL;例:CASEOpcodeISWHEN"001"=>tmp:=regaANDregb;WHEN"101"=>tmp:=regaORregb;WHEN"110"=>tmp:=NOTrega;WHENOTHERS=>
NULL;ENDCASE;3)說(shuō)明:在上例的CASE語(yǔ)句中,NULL用于排除一些不用的條件。等同:WHENOTHERS=>tmp:=rega;2)舉例:VHDL基本語(yǔ)句用法ppt課件2021/3/261410.1.10空操作語(yǔ)句(NULL)1)語(yǔ)句格式:NU10.2并行語(yǔ)句■結(jié)構(gòu)體中的并行語(yǔ)句種類:1、并行信號(hào)賦值語(yǔ)句(ConcurrentSignalAssignments)。2、進(jìn)程語(yǔ)句(ProcessStatements)。3、塊語(yǔ)句(BlockStatements)。4、條件信號(hào)賦值語(yǔ)句(SelectedSignalAssignments)。5、元件例化語(yǔ)句(ComponentInstantiations),其中包括類屬、配置語(yǔ)句。6、生成語(yǔ)句(GenerateStatements)。7、并行過(guò)程調(diào)用語(yǔ)句(ConcurrentProcedureCalls)。■并行語(yǔ)句位置:
ARCHITECTURE結(jié)構(gòu)體名OF實(shí)體名IS
說(shuō)明語(yǔ)句
BEGIN
并行語(yǔ)句END結(jié)構(gòu)體名;VHDL基本語(yǔ)句用法ppt課件2021/3/261510.2并行語(yǔ)句■結(jié)構(gòu)體中的并行語(yǔ)句種類:■10.2.1并行信號(hào)賦值語(yǔ)句1.簡(jiǎn)單信號(hào)賦值語(yǔ)句格式:賦值目標(biāo)
=表達(dá)式例:ARCHITECTUREcurtOFbc1ISSIGNALs1,e,f,g,h:STD_LOGIC;BEGINoutput1<=aANDb;output2<=c+d;g<=eORf;h<=eXORf;s1<=g;ENDcurt;注:例中的五條信號(hào)賦值語(yǔ)句的執(zhí)行是并行發(fā)生的。VHDL基本語(yǔ)句用法ppt課件2021/3/261610.2.1并行信號(hào)賦值語(yǔ)句1.簡(jiǎn)單信號(hào)賦值語(yǔ)句格式2.條件信號(hào)賦值語(yǔ)句賦值目標(biāo)<=表達(dá)式1
WHEN賦值條件1
ELSE
表達(dá)式2
WHEN賦值條件2
ELSE
...
表達(dá)式n;1)格式:2)舉例:VHDL基本語(yǔ)句用法ppt課件2021/3/26172.條件信號(hào)賦值語(yǔ)句賦值目標(biāo)<=表達(dá)式1WHEN賦【例1】
ENTITYmuxISPORT(a,b,c:INBIT;p1,p2:INBIT;z:OUTBIT);ENDmux;ARCHITECTUREbehvOFmuxISBEGINz<=aWHENp1='1'ELSEbWHENp2='1'ELSEc;END;例1的邏輯電路圖見(jiàn)圖1VHDL基本語(yǔ)句用法ppt課件2021/3/2618【例1】例1的邏輯電路圖見(jiàn)圖1VHDL基本語(yǔ)句用法3.選擇信號(hào)賦值語(yǔ)句WITH
選擇表達(dá)式SELECT
賦值目標(biāo)信號(hào)<=表達(dá)式1
WHEN
選擇值1
表達(dá)式2
WHEN選擇值2
...
表達(dá)式n
WHEN選擇值n;1)格式:2)舉例:[例2][例3]VHDL基本語(yǔ)句用法ppt課件2021/3/26193.選擇信號(hào)賦值語(yǔ)句WITH選擇表達(dá)式SELECT110.2.2塊語(yǔ)句結(jié)構(gòu)(BLOCK)塊標(biāo)號(hào):BLOCK[(塊保護(hù)表達(dá)式)]
接口說(shuō)明
類屬說(shuō)明
BEGIN
并行語(yǔ)句
ENDBLOCK
塊標(biāo)號(hào);1)格式:#標(biāo)號(hào)是必需的;#在對(duì)程序進(jìn)行仿真時(shí),BLOCK中的語(yǔ)句是并行執(zhí)行的,與書(shū)寫順序無(wú)關(guān)。#一個(gè)BLOCK等價(jià)于一個(gè)結(jié)構(gòu)體。2)說(shuō)明:3)舉例:【例2】塊語(yǔ)句嵌套例子:
【例3】
【例1】VHDL基本語(yǔ)句用法ppt課件2021/3/262010.2.2塊語(yǔ)句結(jié)構(gòu)(BLOCK)塊標(biāo)號(hào):BLO10.2.3并行過(guò)程調(diào)用語(yǔ)句1)格式:過(guò)程名(關(guān)聯(lián)參量名);2)舉例:【例1】【例2】【例3】VHDL基本語(yǔ)句用法ppt課件2021/3/262110.2.3并行過(guò)程調(diào)用語(yǔ)句1)格式:過(guò)程名(關(guān)聯(lián)參量名10.2.4元件例化語(yǔ)句
COMPONENT
元件名
ISGENERIC(類屬表);--元件定義(說(shuō)明)語(yǔ)句
PORT(端口名表);ENDCOMPONENT文件名;例化名:元件名
PORTMAP([端口名=>]連接端口名,...);----元件例化(調(diào)用)語(yǔ)句。1)格式:(1)
元件聲明語(yǔ)句用于調(diào)用已生成的元件,這些元件可能在庫(kù)中,也可能是預(yù)先編寫的元件實(shí)體描述.;(2)
元件語(yǔ)句可以在ARCHITECTURE,PACKAGE和BLOCK的說(shuō)明部分.(3)元件例化中,兩層端口名(信號(hào))之間的關(guān)系為映射關(guān)系:
2)說(shuō)明:3)舉例:[例1]
,例[2]
,例
[3]VHDL基本語(yǔ)句用法ppt課件2021/3/262210.2.4元件例化語(yǔ)句1)格式:(1)元件聲明語(yǔ)句10.2.5
生成語(yǔ)句[標(biāo)號(hào):]
FOR
循環(huán)變量IN
取值范圍GENERATE
說(shuō)明
BEGIN
并行語(yǔ)句
ENDGENERATE[標(biāo)號(hào)];2)格式:[標(biāo)號(hào):]IF
條件
GENERATE
說(shuō)明
Begin
并行語(yǔ)句
ENDGENERATE[標(biāo)號(hào)];取值范圍的語(yǔ)句格式,有兩種形式:表達(dá)式TO表達(dá)式;--遞增方式,如1TO5表達(dá)式DOWNTO表達(dá)式;--遞減方式,如5DOWNTO13)說(shuō)明:1)作用:復(fù)制作用,根據(jù)某些條件,設(shè)定好某一元件或設(shè)計(jì)單位,就可利用生成語(yǔ)句復(fù)制一組完全相同的并行元件或設(shè)計(jì)單位。VHDL基本語(yǔ)句用法ppt課件2021/3/262310.2.5生成語(yǔ)句[標(biāo)號(hào):]FOR循環(huán)變量IN■生成語(yǔ)句四部分組成:(2)生成方式(3)說(shuō)明部分(4)并行語(yǔ)句(1)標(biāo)號(hào)*【例1】*【例2】*【例3】■舉例:VHDL基本語(yǔ)句用法ppt課件2021/3/2624■生成語(yǔ)句四部分組成:(2)生成方式(3)說(shuō)明部分(4)并10.2.6REPORT語(yǔ)句--報(bào)告相關(guān)信息語(yǔ)句。--格式:REPORT<字符串>;10.2.7
斷言語(yǔ)句--時(shí)序仿真和程序調(diào)試的人機(jī)對(duì)話。--格式:ASSERT<條件表達(dá)式>REPORT<出錯(cuò)信息>SEVERITY<錯(cuò)誤級(jí)別>VHDL基本語(yǔ)句用法ppt課件2021/3/262510.2.6REPORT語(yǔ)句10.2.7斷言語(yǔ)句VHDL10.3
屬性描述與定義語(yǔ)句可綜合屬性:
LEFT、RIGHT、HIGH、LOW、RANGE、REVERSRANGE、LENGTH、EVENT及STABLE。格式:屬性測(cè)試項(xiàng)目名
’
屬性標(biāo)識(shí)符
1.信號(hào)類屬性
#
(NOTclock’STABLEANDclock=‘1’)--不可綜合#(clock’EVENTANDclock=‘1’)
以上兩語(yǔ)句的功能是一樣的。注意1)EVENT與STABLE測(cè)試功能相反。
2)語(yǔ)句“NOT(clock’STABLEANDclock='1')”的表達(dá)方式是不可綜合的。VHDL基本語(yǔ)句用法ppt課件2021/3/262610.3屬性描述與定義語(yǔ)句可綜合屬性: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基本語(yǔ)句用法ppt課件2021/3/26272、數(shù)據(jù)區(qū)間類屬性【例】3、數(shù)值類屬性...VHDL基本語(yǔ)句4、數(shù)組屬性‘LENGTH...TYPEarry1ARRAY(0TO7)OFBIT;VARIABLEwth:INTEGER;...wth1:=arry1’LENGTH;--wth1=8...5、用戶定義屬性ATTRIBUTE屬性名:數(shù)據(jù)類型;ATTRIBUTE屬性名OF對(duì)象名:對(duì)象類型IS值;VHDL基本語(yǔ)句用法ppt課件2021/3/26284、數(shù)組屬性‘LENGTH...5、用戶定義屬性ATTRIBSynplify綜合器支持的特殊屬性都在synplify.attributes程序包中,使用前加入下面語(yǔ)句:LIBRARYsynplify;USEsynplicity.attributes.all;6、說(shuō)明7、舉例*【例1】*【例2】VHDL基本語(yǔ)句用法ppt課件2021/3/2629Synplify綜合器支持的特殊屬性都在synplify.a■本章程序舉例例[10.2]寄存器■結(jié)束例子:設(shè)計(jì)一個(gè)實(shí)體圖如圖,功能為32位計(jì)數(shù)器VHDL基本語(yǔ)句用法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--高電平時(shí)鐘觸發(fā)BEGINWAITUNTILclk='1';q1<=d;ENDPROCESS;
PROCESS--低電平時(shí)鐘觸發(fā)BEGINWAITUNTILclk='0';q2<=d;ENDPROCESS;PROCESS(clk,clr)--上升沿觸發(fā)/同步清除
BEGINIFclr='1'THEN q3<='0';ELSIFclk'EVENTANDclk='1'THENq3<=d;ENDIF;ENDPROCESS; VHDL基本語(yǔ)句用法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基本語(yǔ)句用法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基本語(yǔ)句用法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計(jì)數(shù)控制;
clk時(shí)鐘;
qa,qb,qc,qd計(jì)數(shù)器輸出例10.1
十二進(jìn)制同步計(jì)數(shù)器VHDL基本語(yǔ)句用法ppt課件2021/3/2634LIBRARYieee;引腳定義:例10.1VHDL基LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;-----設(shè)計(jì)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;
接下頁(yè)例3VHDL基本語(yǔ)句用法ppt課件2021/3/2635LIBRARYIEEE;例3VHDL基本語(yǔ)句用法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基本語(yǔ)句用法ppt課件2021/3/2636VHDL基本語(yǔ)句用法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;
接下頁(yè)例2VHDL基本語(yǔ)句用法ppt課件2021/3/2637LIBRARYIEEE;例2VHDL基本語(yǔ)句用法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時(shí),Q(8)~Q(1)輸出狀態(tài)呈高阻態(tài)ENDARCHITECTUREone;
VHDL基本語(yǔ)句用法ppt課件2021/3/2638(續(xù))VHDL基本語(yǔ)句用法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】下圖是生成語(yǔ)句產(chǎn)生的8個(gè)相同的電路模塊VHDL基本語(yǔ)句用法ppt課件2021/3/2639...【例1】下圖是生成語(yǔ)句產(chǎn)生的8個(gè)相同的電路模塊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基本語(yǔ)句用法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;...塊語(yǔ)句嵌套例子:【例3】VHDL基本語(yǔ)句用法ppt課件2021/3/2641塊語(yǔ)句嵌套例子:【例3】VHDL基本語(yǔ)句用法ppt課件2...
ENTITYgatISGENERIC(l_time:TIME;s_time:TIME);--類屬說(shuō)明
PORT(b1,b2,b3:INOUTBIT);--結(jié)構(gòu)體全局端口定義
ENDENTITYgat;ARCHITECTUREfuncOFgatISSIGNALa1:BIT;--結(jié)構(gòu)體全局信號(hào)a1定義
BEGINBlk1:BLOCK
--塊定義,塊標(biāo)號(hà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)端口連接說(shuō)明
CONSTANTdelay:Time:=1ms;--局部常數(shù)定義
SIGNALs1:BIT;--局部信號(hào)定義
BEGINs1<=pb1AFTERdelay;pb2<=s1AFTERgb1,b1AFTERgb2;
ENDBLOCKBlk1;ENDARCHITECTUREfunc;【例2】塊語(yǔ)句例VHDL基本語(yǔ)句用法ppt課件2021/3/2642...【例2】塊語(yǔ)句例VHDL基本語(yǔ)句用法ppt課件20VHDL基本語(yǔ)句用法ppt課件2021/3/2643VHDL基本語(yǔ)句用法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基本語(yǔ)句用法ppt課件2021/3/2644LIBRARYIEEE;【例2】VHDL基本語(yǔ)句用法pp...WITHseltSELECTmuxout<=aWHEN0|1,--0或1
bWHEN2TO5,--2或3,或4或5
cWHEN6,dWHEN7,'Z'WHENOTHERS;...【例3】VHDL基本語(yǔ)句用法ppt課件2021/3/2645...【例3】VHDL基本語(yǔ)句用法ppt課件2021/3/【例10.2】CASE語(yǔ)句病句舉例
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基本語(yǔ)句用法ppt課件2021/3/2646【例10.2】CASE語(yǔ)句病句舉例VHDL基本語(yǔ)句用法
...
L2:LOOPa:=a+1;EXITL2WHENa>10;--當(dāng)a大于10時(shí)跳出循環(huán)
ENDLOOPL2;...[例.1]VHDL基本語(yǔ)句用法ppt課件2021/3/2647[例.1]VHDL基本語(yǔ)句用法ppt課件2021/3/26【例2
】循環(huán)語(yǔ)句舉例
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基本語(yǔ)句用法ppt課件2021/3/2648【例2】循環(huán)語(yǔ)句舉例VHDL基本語(yǔ)句用法ppt課件202例7.2.4.3循環(huán)語(yǔ)句舉例SIGNALa,b,c:STD_LOGIC_VECTOR(1TO3);...FORnIN1To3LOOPa(n)<=b(n)ANDc(n);ENDLOOP;[例3]此段程序等效于順序執(zhí)行以下三個(gè)信號(hào)賦值操作:a(1)<=b(1)ANDc(1);a(2)<=b(2)ANDc(2);a(3)<=b(3)ANDc(3);VHDL基本語(yǔ)句用法ppt課件2021/3/2649例7.2.4.3循環(huán)語(yǔ)句舉例[例3]此段程序等效于順序執(zhí)行以【例1】NEXT舉例...L1:FORcnt_valueIN1TO8LOOPs1:a(cnt_value):='0';
NEXTWHEN(b=c);--判斷條件s2:a(cnt_value+8):='0';ENDLOOPL1;說(shuō)明:當(dāng)程序執(zhí)行到NEXT判斷,當(dāng)b=c時(shí)執(zhí)行NEXT返回L1,當(dāng)b≠c時(shí)執(zhí)行s2語(yǔ)句VHDL基本語(yǔ)句用法ppt課件2021/3/2650【例1】NEXT舉例說(shuō)明:當(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;...說(shuō)明:當(dāng)(e>f)時(shí),執(zhí)行NEXTL_x
,跳轉(zhuǎn)到L_x執(zhí)行,當(dāng)e>f不成立時(shí),執(zhí)行s3語(yǔ)句VHDL基本語(yǔ)句用法ppt課件2021/3/2651【例2】多重循環(huán)NEXT舉例說(shuō)明:當(dāng)(e>f)時(shí),執(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時(shí)返回LOOP語(yǔ)句繼續(xù)比較例1EXIT語(yǔ)句舉例--兩位數(shù)比較說(shuō)明:程序中當(dāng)a>b時(shí),由EXIT跳出循環(huán)比較程序,并報(bào)告結(jié)果。VHDL基本語(yǔ)句用法ppt課件2021/3/2652例1EXIT語(yǔ)句舉例--兩位數(shù)比較說(shuō)明:程序1)WAITON信號(hào)表結(jié)構(gòu)----用于仿真SIGNALs1,s2:STD_LOGIC;...PROCESSBEGIN...WAITONs1,s2
;--執(zhí)行到此句被掛起來(lái),待s1,s2任一信號(hào)改變,進(jìn)程才重新開(kāi)始。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同時(shí)滿足)VHDL基本語(yǔ)句用法ppt課件2021/3/26532)WAIT_ON結(jié)構(gòu)----用于仿真【例1】例2WAIT語(yǔ)句舉例【例2】用一個(gè)硬件求實(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基本語(yǔ)句用法ppt課件2021/3/2654例2WAIT語(yǔ)句舉例【例2】用一個(gè)硬件求實(shí)現(xiàn)平均值【例3】--用WAIT語(yǔ)句實(shí)現(xiàn)具有同步復(fù)位功能
PROCESSBEGINrst_loop:LOOP
WAITUNTILclock='1'ANDclock’EVENT;--等待時(shí)鐘信號(hào)
NEXTrst_loopWHEN(rst='1');--檢測(cè)復(fù)位信號(hào)rstx<=a;--無(wú)復(fù)位信號(hào),執(zhí)行賦值操作
WAITUNTILclock='1'ANDclock’EVENT;--等待時(shí)鐘信號(hào)
NEXTrst_loopWhen(rst='1');--檢測(cè)復(fù)位信號(hào)rsty<=b;--無(wú)復(fù)位信號(hào),執(zhí)行賦值操作
ENDLOOPrst_loop;ENDPROCESS;-每當(dāng)時(shí)鐘上升沿到來(lái)結(jié)束進(jìn)程的掛起,從而檢測(cè)rst=‘1’是否成立,如果是高電平,則返回循環(huán)起點(diǎn)rst_loop處,否則,執(zhí)行下面的順序語(yǔ)句。VHDL基本語(yǔ)句用法ppt課件2021/3/2655【例3】--用WAIT語(yǔ)句實(shí)現(xiàn)具有同步復(fù)位功能VPACKAGEdata_typesIS--程序包體SUBTYPEdata_elementISINTEGERRANGE0TO3;--定義數(shù)據(jù)類型TYPEdata_arrayISARRAY(1TO3)OFdata_element;ENDdata_types;USEWORK.data_types.ALL;--工作庫(kù)的程序包data_typesENTITYsortISPORT(in_array:INdata_array;out_array:OUTdata_array);ENDsort;ARCHITECTUREexmpOFsortISBEGINPROCESS(in_array)--進(jìn)程開(kāi)始,設(shè)data_types為敏感信號(hào)
PROCEDUREswap(data:INOUTdata_array;
--過(guò)程體開(kāi)始
low,high:ININTEGER)IS--形參名為data、low、highVARIABLEtemp:data_element;BEGIN
--以下過(guò)程的邏輯功能接下頁(yè)
[例1]過(guò)程調(diào)用舉例VHDL基本語(yǔ)句用法ppt課件2021/3/2656PACKAGEdata_typesIS
IF(data(low)>data(high))THEN--檢測(cè)數(shù)據(jù)
temp:=data(low);data(low):=data(high);data(high):=temp;ENDIF;ENDswap;--過(guò)程swap結(jié)束VARIABLEmy_array:data_array;
BEGIN--進(jìn)程開(kāi)始
my_array:=in_array;--將輸入值讀入變量swap(my_array,1,2);
--my_array、1、2是對(duì)應(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基本語(yǔ)句用法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]過(guò)程調(diào)用舉例VHDL基本語(yǔ)句用法ppt課件2021/3/2658ENTITYsort4is[例2]過(guò)程調(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)信號(hào)s=‘1’ANDr=‘1滿足時(shí),RETURN
將中斷過(guò)程。VHDL基本語(yǔ)句用法ppt課件2021/3/2659[例1]當(dāng)信號(hào)s=‘1’ANDr=‘1滿足時(shí),
FUNCTIONopt(a,b,opr:STD_LOGIC)
RETURNSTD_LOGICISBEGINIF(opr='1')THENRETURN(aANDb);ELSERETURN(aORb);ENDIF;ENDFUNCTIONopt;[例2]VHDL基本語(yǔ)句用法ppt課件2021/3/2660[例2]VHDL基本語(yǔ)句用法ppt課件2021/3/2..PROCEDUREadder(SIGNALa,b:INSTD_LOGIC;--過(guò)程名為adderSIGNALsum:OUTSTD_LOGIC);...adder(a1,b1,sum1);--并行過(guò)程調(diào)用...--在此,a1、b1、sum1即為分別對(duì)應(yīng)于a、b、sum的關(guān)聯(lián)參量名
PROCESS(c1,c2);--進(jìn)程語(yǔ)句執(zhí)行
BEGINAdder(c1,c2,s1);--順序過(guò)程調(diào)用,在此c1、c2、s1即為分別對(duì)應(yīng)于a、b、sum的關(guān)聯(lián)參量名
ENDPROCESS;
…【例1】VHDL基本語(yǔ)句用法ppt課件2021/3/2661..【例1】VHDL基本語(yǔ)句用法ppt課件2021/3/
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年血液凈化信息系統(tǒng)項(xiàng)目資金申請(qǐng)報(bào)告代可行性研究報(bào)告
- 公路護(hù)欄施工合同
- 《項(xiàng)目組管理方案》課件
- 2015年中考思品熱點(diǎn)總復(fù)習(xí)(終極預(yù)測(cè))
- 余弦定理課件
- 【培訓(xùn)課件】防雷裝置設(shè)計(jì)技術(shù)評(píng)價(jià)講座
- 16.2《登泰山記》課件 2024-2025學(xué)年統(tǒng)編版高中語(yǔ)文必修上冊(cè)-8
- 2025屆內(nèi)蒙古包頭市高考考前提分語(yǔ)文仿真卷含解析
- 2025屆遼寧省重點(diǎn)協(xié)作校高三一診考試數(shù)學(xué)試卷含解析
- 安徽省安慶市達(dá)標(biāo)名校2025屆高考沖刺英語(yǔ)模擬試題含解析
- 2024年社區(qū)工作者考試必考1000題【歷年真題】
- 全國(guó)計(jì)算機(jī)等級(jí)考試一級(jí)試題及答案(5套)
- 公司安全事故隱患內(nèi)部舉報(bào)、報(bào)告獎(jiǎng)勵(lì)制度
- 歷史常識(shí)單選題100道及答案解析
- 第三單元第1課 標(biāo)志設(shè)計(jì) 課件 2024-2025學(xué)年人教版(2024)初中美術(shù)七年級(jí)上冊(cè)
- 會(huì)計(jì)學(xué)原理智慧樹(shù)知到期末考試答案章節(jié)答案2024年西北農(nóng)林科技大學(xué)
- 新時(shí)代大學(xué)生勞動(dòng)教育智慧樹(shù)知到期末考試答案章節(jié)答案2024年江西中醫(yī)藥大學(xué)
- 尋方問(wèn)藥縱橫談智慧樹(shù)知到期末考試答案章節(jié)答案2024年浙江中醫(yī)藥大學(xué)
- 中國(guó)玉石及玉文化鑒賞智慧樹(shù)知到期末考試答案章節(jié)答案2024年同濟(jì)大學(xué)
- 年產(chǎn)60萬(wàn)噸礦山建設(shè)項(xiàng)目建議書(shū)寫作模板
- 代扣服務(wù)協(xié)議樣本
評(píng)論
0/150
提交評(píng)論