數(shù)字邏輯:5.5.3 VHDL的行為描述_第1頁(yè)
數(shù)字邏輯:5.5.3 VHDL的行為描述_第2頁(yè)
數(shù)字邏輯:5.5.3 VHDL的行為描述_第3頁(yè)
數(shù)字邏輯:5.5.3 VHDL的行為描述_第4頁(yè)
數(shù)字邏輯:5.5.3 VHDL的行為描述_第5頁(yè)
已閱讀5頁(yè),還剩32頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

5.5.3VHDL的行為描述并發(fā)(Concurrent)描述語(yǔ)句順序(Sequential)描述語(yǔ)句行為描述語(yǔ)句順序語(yǔ)句:描述邏輯關(guān)系、算法并行語(yǔ)句:硬件并行的特點(diǎn)一、VHDL的并行語(yǔ)句并行行為賦值語(yǔ)句(簡(jiǎn)單、選擇、條件)進(jìn)程語(yǔ)句(process)例化語(yǔ)句(component)描述硬件最基本的本質(zhì)特性--并行行為。進(jìn)程行為之間并行關(guān)系,進(jìn)程內(nèi)部是順序行為。

信號(hào)〈=表達(dá)式;1.賦值語(yǔ)句:語(yǔ)法格式賦值的原則:相同位寬,相同數(shù)據(jù)類型。(1)簡(jiǎn)單并行賦值:特點(diǎn):執(zhí)行與書(shū)寫(xiě)順序無(wú)關(guān)。每一個(gè)賦值相當(dāng)于一個(gè)進(jìn)程。ENTITYexeISport(a,b:INbit;y:OUTbit);ENDexe;

ARCHITECTUREartOFexeIS

SIGNALc:bit;

BEGINy<=c;c<=aandb;

ENDart1;(2)選擇賦值with-select-whenWITH

選擇表達(dá)式SELECT信號(hào)名<=表達(dá)式1WHEN

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

...

表達(dá)式nWHENothers

;

不能有重疊的條件分支。最后條件為others。選擇值必須覆蓋所有取值可能。沒(méi)有優(yōu)先級(jí)判斷。語(yǔ)法格式結(jié)束為“,”例:用選擇賦值語(yǔ)句描述四選一電路

LIBRARY

ieee;USEieee.std_logic_1164.all;entitymux4is

port

(d0,d1,d2,d3,a0,a1:in

std_logic;f:outstd_logic);endmux4;architecturertl

ofmux4issignal

sel:std_logic_vector(1downto0);beginsel<=a1&a0;

withselselectf<=d0when“00”,d1when“01”,d2when

“10”,d3when

others;end

rtl;

MUX4(3)條件賦值when-else信號(hào)名<=表達(dá)式1WHEN

條件式1ELSE

表達(dá)式2WHEN

條件式2ELSE

...條件式n-1

ELSE

表達(dá)式n;

注意:最后的Else項(xiàng)是必須的;

有優(yōu)先級(jí)邏輯關(guān)系,先判斷第一條件

類似if(在process中使用)的嵌套語(yǔ)句語(yǔ)法格式libraryieee;

use

ieee.std_logic_1164.all;

entitycoderis

port

(D:instd_logic_vector(7downto0);A:outstd_logic_vector(2downto0));

endcoder;例:8-3優(yōu)先編碼器。architecturertl

ofcoderisbeginA<=“000”whenD(7)=‘0’else“001”whenD(6)=‘0’else“010”whenD(5)=‘0’else“011”whenD(4)=‘0’else“100”whenD(3)=‘0’else“101”whenD(2)=‘0’else“110”whenD(1)=‘0’else“111”;Endtr1

語(yǔ)句With-select-whenWhen-elseIf-elseCase-when選擇條件一個(gè)信號(hào)的不同值,互斥多個(gè)信號(hào)多種組合,不必互斥多個(gè)信號(hào)多種組合,不必互斥一個(gè)信號(hào)的不同值,互斥語(yǔ)句屬性并行并行順序順序用途編碼、譯碼、多路選擇器優(yōu)先編碼器,地址譯碼器優(yōu)先編碼器,地址譯碼器編碼、譯碼、多路選擇器狀態(tài)機(jī)libraryieee;useieee.std_logic_1164.all;entitydec38isport(A:instd_logic_vector(2downto0);Y:outstd_logic_vector(7downto0));enddec38;architecturem1ofdec38isbeginwithAselectY<=“11111110"when"000",“11111101"when"001",“11111011"when"010",“11110111"when"011",“11101111"when"100",“11011111"when"101","10111111"when"110",“01111111"when"111","11111111"whenothers;

endm1;libraryieee;useieee.std_logic_1164.all;entitybcdisport(A:instd_logic_vector(3downto0);Y:outstd_logic_vector(6downto0));endbcd;七段顯示譯碼器A3A2A1A0fgabcde5107七段顯示譯碼器architecturem1ofbcdisBeginy<="1111110"whenA="0000"else

--0"0001100"when

A="0001"else--1"1101101"whenA="0010"else--2"1111001"whenA="0011"else--3"0110011"whenA="0100"else

--4"1011011"whenA="0101"else

--5“0011111"whenA="0110"else

--6"1110000"whenA="0111"else

--7"1111111"whenA="1000"else

--8"1110011"whenA="1001"else--9"0000000";Endm1;3、進(jìn)程語(yǔ)句語(yǔ)法格式[進(jìn)程名:]PROCESS

(敏感信號(hào)表)

[變量說(shuō)明語(yǔ)句];

BEGIN

順序說(shuō)明語(yǔ)句;

ENDPROCESS;提供了一種用算法描述硬件行為的方法。幾個(gè)進(jìn)程語(yǔ)句之間是并行行為。外部并行,內(nèi)部順序。敏感信號(hào)表:進(jìn)程中要讀取的信號(hào)。敏感信號(hào)的變化都將啟動(dòng)進(jìn)程。組合邏輯中,所有輸入都作為敏感信號(hào)。architecturebehavofa_varisbeginoutput<=a(i);endbehav;architecturebehavofa_varisbeginprocess(a,i)beginoutput<=a(i);endprocess;endbehav;一個(gè)簡(jiǎn)單并行信號(hào)賦值語(yǔ)句是一個(gè)進(jìn)程的縮寫(xiě)。進(jìn)程的并發(fā)特點(diǎn):等效:LIBRARYieee;USEieee.std_logic_1164.all;ENTITYex1ISPORT(a,b:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDex1;ARCHITECTURErtlOFex1ISSIGNALc:STD_LOGIC;BEGIN

y<=c;c<=aandb;ENDrtl;LIBRARYieee;USEieee.std_logic_1164.all;ENTITYex2ISPORT(a,b:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDex2;ARCHITECTURErtlOFex2ISSIGNALc:STD_LOGIC;BEGINPROCESS(a,b)BEGINc<=aandb;ENDPROCESS;

PROCESS(c)BEGINy<=c;ENDPROCESS;ENDrtl;不等效:LIBRARYieee;USEieee.std_logic_1164.all;ENTITYex1ISPORT(a,b:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDex1;ARCHITECTURErtlOFex1ISSIGNALc:STD_LOGIC;BEGINc<=aandb;y<=c;ENDrtl;LIBRARYieee;USEieee.std_logic_1164.all;ENTITYex2ISPORT(a,b:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDex2;ARCHITECTURErtlOFex2ISSIGNALc:STD_LOGIC;BEGIN

PROCESS(a,b,c)BEGINc<=aandb;y<=c;ENDPROCESS;ENDrtl;二、VHDL順序語(yǔ)句執(zhí)行順序與書(shū)寫(xiě)順序一致。只能出現(xiàn)在進(jìn)程(process)和子程序中。描述邏輯關(guān)系,具體算法(類似C)。順序行為If-then-elseCase–is-whenFor-loop

賦值語(yǔ)句

信號(hào)〈=表達(dá)式;語(yǔ)法格式賦值的原則:相同位寬,相同數(shù)據(jù)類型。(1)簡(jiǎn)單順序賦值:

變量:=表達(dá)式;賦值對(duì)象可為信號(hào)、變量變量賦值與信號(hào)賦值的差異:硬件實(shí)現(xiàn)的功能不同信號(hào):實(shí)際的硬件連線;變量:電路單元內(nèi)部的操作,代表暫存的臨時(shí)數(shù)據(jù)。

賦值行為的不同信號(hào)賦值:延遲更新數(shù)值;變量賦值:立即更新數(shù)值。

信號(hào)的多次賦值

a.一個(gè)進(jìn)程:最后一次賦值有效

b.多個(gè)進(jìn)程:多源驅(qū)動(dòng)線與、線或、三態(tài)總線

變量賦值:

architecturertlofvarisbegin

process(a,b,c)variabled:std_logic;--定義變量

begind:=a;x<=canddd:=b;y<=canddendprocess;endrtl;

-結(jié)果:x=cay=cb例:信號(hào)賦值與變量賦值的比較

信號(hào)賦值:

architecturertlofsigis

signald:std_logic;begin

process(a,b,c)

begind<=a;x<=candd;d<=b;y<=candd;

endprocess;

endrtl;--定義信號(hào)讀出(process中)更新(endprocess后)-結(jié)果:x=cby=cb不要在一個(gè)process中對(duì)同一信號(hào)多次賦值(2)轉(zhuǎn)向控制語(yǔ)句:主要有:

if

語(yǔ)句、case

語(yǔ)句、loop

語(yǔ)句通過(guò)條件控制決定是否執(zhí)行一條或幾條語(yǔ)句,或重新執(zhí)行一條或幾條語(yǔ)句,仿真時(shí)順序進(jìn)行。if、case、loop語(yǔ)句必需在Process語(yǔ)句中。注意!if語(yǔ)句的門閂控制(不完全if)if

條件式

then

順序處理語(yǔ)句;end

if

;1)if語(yǔ)句對(duì)于不完全的if語(yǔ)句,VHDL綜合器將引進(jìn)一個(gè)時(shí)序元件保持當(dāng)前狀態(tài)值。用于鎖存器或觸發(fā)器。if語(yǔ)句的電平觸發(fā)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.all;ENTITYlatchIS

port(ena,d:INstd_logic;q:OUTstd_logic);

ENDlatch;

ARCHITECTURErt1OFlatchIS

BEGIN

PROCESS(ena,d)

BEGIN

IF(ena=‘1’)thenq<=d;

ENDIF;

ENDPROCESS;ENDrt1;

綜合后生成鎖存器(latch)敏感信號(hào)表敏感信號(hào)表無(wú)d的波形LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.all;ENTITYfdISport(clk,d:INstd_logic;q:OUTstd_logic);

ENDfd;ARCHITECTURErt1OFfdIS

BEGIN

PROCESS(clk)

BEGIN

IF(clk’eventandclk=‘1’)thenq<=d;

ENDIF;

ENDPROCESS;ENDrt1;if語(yǔ)句的時(shí)鐘沿觸發(fā)敏感信號(hào)表

綜合后生成寄存器(register)時(shí)鐘上升沿觸發(fā)LIBRARY

ieee;USEieee.std_logic_1164.all;ENTITYdffIS

PORT

(d:instd_logic;clk:instd_logic;q:outstd_logic);ENDdff;ARTHITECTUREarc

OFdffIS

BEGIN

PROCESS(clk)

VARIABLEa,b:std_logic;

BEGINIF(clk’eventAND

clk='1')THENa:=d;b:=a;q<=b;

ENDIF;

ENDPROCESS;

ENDarc;LIBRARYieee;USEieee.std_logic_1164.all;ENTITYreg3IS

PORT

(d:instd_logic;clk:instd_logic;q:outstd_logic);ENDreg3;

ARTHITECTUREarc

OFreg3ISSIGNAL

a,b:std_logic;

BEGINPROCESS(clk)

BEGIN

IF

(clk’eventANDclk='1')THENa<=d;b<=a;q<=b;

ENDIF;

ENDPROCESS;

ENDarc;語(yǔ)法格式IF

條件表達(dá)式1

THEN

順序語(yǔ)句11;順序語(yǔ)句12;ELSIF

條件表達(dá)式2

THEN

順序語(yǔ)句21;順序語(yǔ)句22;ELSIF

ELSE

順序語(yǔ)句n1;順序語(yǔ)句n2;

ENDIF;

if_then_elsif語(yǔ)句中最先出現(xiàn)的條件優(yōu)先級(jí)最高(自上而下優(yōu)先)??梢杂卸鄠€(gè)elsif,但只能有一個(gè)else(組合邏輯)。if多選擇語(yǔ)句libraryieee;

use

ieee.std_logic_1164.all;

entitycoderis

port

(input:instd_logic_vector(7downto0);output:outstd_logic_vector(2downto0));

endcoder;例:8-3優(yōu)先編碼器。architectureartofcoderisbegin

process(input)begin

ifinput(7)=‘0’thenoutput<=“000”;

elsifinput(6)=‘0’

thenoutput<=“001”;

elsif

input(5)=‘0’thenoutput<=“010”;

elsif

input(4)=‘0’thenoutput<=“011”;

elsif

input(3)=‘0’

thenoutput<=“100”;

elsifinput(2)=‘0’thenoutput<=“101”;

elsif

input(1)=‘0’thenoutput<=“110”’;

elseoutput<=“111”;

endif;

end

process;

endart;組合邏輯一定有else,否則綜合為鎖存器CASE語(yǔ)句根據(jù)某個(gè)表達(dá)式的值來(lái)選擇執(zhí)行體。無(wú)優(yōu)先級(jí)。

(2)CASE語(yǔ)句語(yǔ)法格式CASE

選擇表達(dá)式

IS

WHEN

分支值1=>順序處理語(yǔ)句11;語(yǔ)句12;

WHEN分支值2=>順序處理語(yǔ)句21;語(yǔ)句22;

WHENOTHERS=>順序處理語(yǔ)句32;語(yǔ)句32;

END

CASE;

分支條件須在表達(dá)式范圍內(nèi),且不能重合。執(zhí)行時(shí)必須選中且只能選中一個(gè)分支。所有值必須列舉窮盡,對(duì)sted_logic等必須用others。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYtest_caseISPORT(

s1,s0:IN

STD_LOGIC;

d0,d1,d2,d3:INSTD_LOGIC;

z:OUTSTD_LOGIC

);END

test_case;ARCHITECTUREbehaveOFtest_caseISSIGNAL

s:STD_LOGIC_VECTOR(1DOWNTO0);BEGIN

PROCESS(s1,s0,d0,d1,d2,

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論