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

下載本文檔

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

文檔簡(jiǎn)介

1、VHDL語言描述語句語言描述語句一、VHDL語句分類;二、基本的VHDL順序語句三、基本的VHDL并行語句四、常用組合單元電路VHDL設(shè)計(jì)五、常用時(shí)序單元電路VHDL設(shè)計(jì)一、一、VHDL語句分類語句分類l 按照功能分類:按照功能分類:n 賦值語句;n 數(shù)據(jù)流控制語句(轉(zhuǎn)向控制語句):1. Case when ( 順序 );2. If else ( 順序 );3. with select when ( 并 );4. When else ( 并 );n 模塊化設(shè)計(jì)語句:process ; component ; generate ; block ;forloop ; 子程序調(diào)用語句n 仿真語句:

2、wait ; n 按照語句的執(zhí)行方式特點(diǎn)分為:按照語句的執(zhí)行方式特點(diǎn)分為:n 并行語句:u 按動(dòng)作特點(diǎn):語句執(zhí)行順序與書寫順序無關(guān);u 使用范圍 :進(jìn)程語句外部的語句都是并行的;u 實(shí)際應(yīng)用 :對(duì)應(yīng)于各自獨(dú)立運(yùn)行的邏輯電路;n 順序語句:u 按動(dòng)作特點(diǎn):照語句書寫順序執(zhí)行;u 使用范圍 :進(jìn)程、函數(shù)和過程內(nèi)部出現(xiàn);u 實(shí)際應(yīng)用 :時(shí)序電路、數(shù)據(jù)流控制電路;基本的基本的VHDL順序語句順序語句l VHDL中的順序語句用于描述進(jìn)程或子程序的內(nèi)部功能,且只能出現(xiàn)在PROCESS、FUNCTION、PROCEDURE等語句中。l 可以用來設(shè)計(jì) 時(shí)序電路、組合電路。l 主要作用:時(shí)序流控制、程序控制、條

3、件和迭代等,行為描述代碼。l 常用的順序語句見下表。順序語句順序語句語句作用語句作用是否可綜合是否可綜合順序賦值語句信號(hào)或變量賦值可綜合IF語句條件控制可綜合CASE語句條件控制可綜合LOOP語句循環(huán)控制循環(huán)次數(shù)有限時(shí)可綜合WAIT語句描述延遲WAIT ON和WAIT UNTIL可綜合NULL語句空操作可綜合ASSERT語句仿真時(shí)報(bào)告錯(cuò)誤不可綜合1、process(進(jìn)程進(jìn)程);2、信號(hào)和變量;、信號(hào)和變量;3、IF語句;語句;4、C ASE語句;語句;5、CASE語句和語句和IF語句的比較;語句的比較;6、LOOP語句;語句;7、WAIT語句;語句;8、使用順序代碼設(shè)計(jì)組合邏輯電路;、使用順序

4、代碼設(shè)計(jì)組合邏輯電路;基本的基本的VHDL順序語句順序語句5.3.1 進(jìn)程(PROCESS)語句語法說明:1、Process為過程語句,定義如下:進(jìn)程標(biāo)號(hào): Process 觸發(fā)信號(hào)1,觸發(fā)信號(hào)2, 定義區(qū) Begin順序語句End Process 進(jìn)程標(biāo)號(hào) ;注: 方括號(hào)內(nèi)容可以省略;觸發(fā)信號(hào)將決定該過程是否執(zhí)行;一個(gè)結(jié)構(gòu)體當(dāng)中可以有多個(gè)過程;多個(gè)進(jìn)程語句之間是并行執(zhí)行,進(jìn)程內(nèi)部屬于順序執(zhí)行語句。2.進(jìn)程語句進(jìn)程語句語法說明語法說明a)進(jìn)程標(biāo)號(hào)進(jìn)程標(biāo)號(hào):用于標(biāo)識(shí)進(jìn)程,可選。多個(gè)進(jìn)程時(shí),提高程序可讀性;a)敏感敏感信號(hào)列表信號(hào)列表:敏感信號(hào)發(fā)生變化(上升沿或者下降沿)變化(上升沿或者下降沿),

5、進(jìn)程被 激活,從而執(zhí)行內(nèi)部順序語句。 注意:可以有多個(gè)敏感信號(hào),用逗號(hào)隔開,任何一個(gè)變化都激活進(jìn) 程,否則進(jìn)程掛起。c)進(jìn)程聲明區(qū):進(jìn)程聲明區(qū): 用于定義進(jìn)程內(nèi)部的局部變量,信號(hào)不可在此聲明。進(jìn)程之間數(shù)據(jù) 交流通過全局信號(hào)。d)順序語句: 進(jìn)程內(nèi)部語句順序執(zhí)行。e)用處:適合描述時(shí)序電路。也可用于組合邏輯電路的設(shè)計(jì)。例例1:進(jìn)程語句例程:進(jìn)程語句例程帶異步復(fù)位的帶異步復(fù)位的D觸發(fā)器觸發(fā)器LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY cydff ISPORT ( d,clk,rst : IN STD_LOGIC ; q : OUT STD_L

6、OGIC ) ;END ENTITY cydff ;ARCHITECTURE behave OF cydff ISBEGINcydff_inst : PROCESS ( clk,rst ) BEGIN IF (rst=1) then q=0; elsIF ( clk=1 AND clkLAST_VALUE=0 AND clkEVENT ) THEN q=d; END IF ; END PROCESS cydff_inst ;END ARCHITECTURE behave ;l 語法說明:n 時(shí)鐘沿的VHDL描述方法總結(jié)(3種): clkevent and clk=1 ; clkevent an

7、d clk=0 ; clk=1 AND clkEVENT AND clkLAST_VALUE=0 clk=0 AND clkEVENT AND clkLAST_VALUE=1 rising_edge(clk) ; falling_edge(clk);Clkevent ?上升沿描述上升沿描述1:下降沿描述下降沿描述1:上升沿描述上升沿描述2:下降沿描述下降沿描述2:上升沿描述上升沿描述3:下降沿描述下降沿描述3:進(jìn)程語句總結(jié):進(jìn)程語句總結(jié):l 進(jìn)程僅在敏感信號(hào)發(fā)生變化時(shí)才執(zhí)行。l 特點(diǎn):進(jìn)程內(nèi)部,順序語句;進(jìn)程語句之間,并行。l 不同進(jìn)程內(nèi)不可以對(duì)同一信號(hào)賦值,即不可多重賦值。l 進(jìn)程內(nèi)信號(hào)和變

8、量賦值效果不同。l 一個(gè)進(jìn)程內(nèi)不能同時(shí)撲捉同一個(gè)時(shí)鐘信號(hào)的上升沿或者下降沿。例如下面語句是錯(cuò)誤的:PROCESS(clk)BEGINIF rising_edge(clk) then elsif falling_edge(clk) then end if; end peocess;entity mul isport (a,b,c,selx,sely : IN bit; data_out: OUT BIT);end mul;ARCHITECTURE ex OF mul IS SIGNAL temp :BIT ; BEGIN p_a: PROCESS(a,b,selx) BEGIN IF(SELX=

9、0) THEN temp=a; ELSE temp=b; END IF; END PROCESS p_a; p_b: PROCESS(temp,c,sely) BEGIN IF(SELy=0) THEN data_out=temp; ELSE temp=c; END IF; END PROCESS p_b;end ex;1、信號(hào)和變量異同:(1)、聲明范圍:。 信號(hào):ENTITY,ARCHITECTURE,PACKAGE(ALL) 變量:順序語句中(PROCESS、子程序)(2)、作用:動(dòng)態(tài)數(shù)值傳遞,存儲(chǔ)運(yùn)算中間結(jié) 果(變量)。(3)、使用范圍:全局(sig),局部(var)。(4)、變量結(jié)果

10、只能由信號(hào)傳遞到外部。(5)、動(dòng)作特點(diǎn): 變量:立即更新。 信號(hào):process執(zhí)行完畢才生效。(允許多驅(qū)動(dòng)源,僅最后 一個(gè)有效)(6)、操作符: 信號(hào): = 變量: :=2、信號(hào)和變量、信號(hào)和變量例2 :ARCHITECTURE behavioral OF example_duibi ISSIGNAL d0, d1, d2, d3 : STD_LOGIC ; - 定義信號(hào) SIGNAL q0, q1 : STD_LOGIC ;BEGINli_1 :PROCESS (d0, d1, d2, d3 ) BEGIN d2 = d0 ; - 信號(hào)量代入 q0 = d2 OR d3 ; d2 = d1

11、 ; - 信號(hào)量代入 q1 = d2 OR d3 ; END PROCESS cduibi_1 ;li_2 : PROCESS (d0, d1, d3 ) VARIABLE m2 : STD_LOGIC ; BEGIN m2 : = d0 ; - 變量賦值 q0 = m2 OR d3 ; m2 : = d1 ; - 變量賦值 q1 = m2 OR d3 ; END PROCESS cduibi_2 ;END behavioral ;進(jìn)程li_1的運(yùn)行結(jié)果:q0 = d1 OR d3 并且 q1 = d1 OR d3進(jìn)程li_2的運(yùn)行結(jié)果:q0 = d0 OR d3 而 q1 = d1 OR d

12、3 語法說明:進(jìn)程當(dāng)中的賦值:變量:立即更新。信號(hào):process執(zhí)行完畢賦值才生效。同時(shí),進(jìn)程中的信號(hào)賦值語句允許有多個(gè)不同的賦值驅(qū)動(dòng)源,但僅最后 一個(gè)驅(qū)動(dòng)源有效3、IF語句語句IF語句 IF語句是根據(jù)所指定的條件來確定執(zhí)行哪些語句,適用于比較器、譯碼器等需要條件控制的邏輯電路設(shè)計(jì),通常有以下三種類型。(1)用作門閥控制時(shí)的IF語句書寫格式為 IF (條件) THEN 順序處理語句; END IF; 例程: PROCESS(clk) BEGIN IF clkevent and clk=1 THEN q=d; qb=NOT d; END IF; END PROCESS;(2)用作選擇控制時(shí)的I

13、F語句書寫格式為 IF (條件) THEN 順序處理語句1; ELSE 順序處理語句2; END IF;PROCESS(a,b,en) BEGIN IF (en=1) THEN c=a; ELSE c=b; END IF;END PROCESS;(3)用作多選擇控制時(shí)的IF語句書寫格式為 IF 條件1 THEN 順序處理語句1; ELSIF 條件2 THEN 順序處理語句2; ELSIF 條件N-1 THEN 順序處理語句N-1; ELSE 順序處理語句N; END IF;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 IS PORT(

14、 input:IN STD_LOGIC_VECTOR(3 DOWNTO 0); en:IN STD_LOGIC_VECTOR(1 DOWNTO 0); y:OUT STD_LOGIC);END mux4;ARCHITECTURE aa OF mux4 ISBEGIN PROCESS(input,en) BEGIN IF (en=00) THEN y=input(0); ELSIF (en=01) THEN y=input(1); ELSIF (en=10) THEN y=input(2); ELSE y=input(3); END IF; END PROCESS;END aa; 例例2(例(例

15、5-9)四選一數(shù)據(jù)選擇器)四選一數(shù)據(jù)選擇器IF語句應(yīng)用例語句應(yīng)用例2l 8-3優(yōu)先編碼器(74HC148)課堂練習(xí)課堂練習(xí)1l 模10計(jì)數(shù)器;l N位移位寄存器(右移);作業(yè)1: (1)、N位移位寄存器(左移); (2)、通用模n計(jì)數(shù)器;CLKDQCDQCDQCq3q2q1DQCq0dIF 語句使用總結(jié)語句使用總結(jié) If語句必須要有else,尤其組合邏輯 嵌套計(jì)數(shù)不能太多,否則關(guān)鍵路徑會(huì)很長(zhǎng),會(huì)嚴(yán)重影響性能; 分支較多的if應(yīng)想辦法采用case代替; If條件判斷不能太長(zhǎng),若邏輯比較復(fù)雜,盡量用新產(chǎn)生信號(hào)代替; 注意if的優(yōu)先級(jí); 盡量不使用 、=比較符。4、CASE語句語句CASE語句的一般

16、格式為: CASE 表達(dá)式表達(dá)式 IS WHEN 值值1= 多條賦值語句;多條賦值語句; WHEN 值值2= 語句語句2; WHEN OTHERS = 語句語句3(null、unaffected);); END CASE;當(dāng)需要對(duì)多個(gè)條件進(jìn)行判斷時(shí):(1)、WHEN 值= 語句; -單個(gè)值(2)、WHEN 值 | 值 | 值 | 值=語句;-多個(gè)值的“或”(3)、WHEN 值 TO 值=語句; -取值范圍,枚舉例5-10 用CASE語句描述4選1電路。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 IS PORT(s1,s2,a,b,c

17、,d:IN STD_LOGIC; z:OUT STD_LOGIC);END mux4;ARCHITECTURE a OF mux4 IS SIGNAL s :STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN SZZZZZ 相當(dāng)于 THEN (3)、分支入口條件必須唯一,且取值在表達(dá)式范圍內(nèi)。 (4)、分支入口選擇(并行),與書寫順序無關(guān)。 (5)、OTHERS (必須列出條件表達(dá)式的所有可能) , NULL 。Case語句的條件沒有優(yōu)先級(jí),綜合后是一個(gè)并行多路選擇器。注意:如果if語句太長(zhǎng),應(yīng)該盡可能用case語句代替。適用于編寫組合邏輯電路:譯碼器,編碼器等。語法說明:語

18、法說明:5、語句與語句比較: 1、有優(yōu)先級(jí)的電路,用IF語句。 2、CASE語句可提高程序可讀性,經(jīng)常用來設(shè)計(jì)狀態(tài)機(jī)電路。6、LOOP及相關(guān)語句l 用途:當(dāng)一段代碼需要多次重復(fù)執(zhí)行時(shí)。l LOOP語句的語法結(jié)構(gòu)有以下兩種。l 順序語句,使用范圍:進(jìn)程、函數(shù)、過程。(1) FOR/LOOP :循環(huán)固定次數(shù) label: FOR 循環(huán)變量 IN 范圍 LOOP 順序處理語句; END LOOP 循環(huán)標(biāo)號(hào); (2)WHILE/LOOP:循環(huán)執(zhí)行直到某個(gè)條件不再滿足 label : WHILE (條件) LOOP 順序處理語句; END LOOP 循環(huán)標(biāo)號(hào);6、LOOP及相關(guān)語句及相關(guān)語句(3)、NE

19、XT:跳出本次循環(huán) label: NEXT loop_label when 條件表達(dá)式;(4)、EXIT:結(jié)束整個(gè)循環(huán)操作 label: EXIT loop_label when 條件表達(dá)式;例: FOR I IN 0 TO LOOP temp : = temp XOR cdata ( i ) ; END LOOP ; FOR I IN 0 TO LOOP不可綜合,靜態(tài)參數(shù)。循環(huán)次數(shù)必須為確定值或者用屬性語句來定義 例:VARIABLE sum_temp : INTEGER : = 0 ;VARIABLE i : INTEGER : = 0 ;BEGINsum_example : WHILE

20、( i count:=count+1; WHEN others =EXIT; -跳出當(dāng)前循環(huán),使LOOP循環(huán)結(jié)束。 END CASE;END LOOP ;1、利用LOOP/EXIT語句設(shè)計(jì)一個(gè)連0檢測(cè)器對(duì)輸入矢量中連續(xù)出現(xiàn)的零的個(gè)數(shù)進(jìn)行統(tǒng)計(jì)(從矢量左端開始統(tǒng)計(jì))課堂練習(xí)課堂練習(xí)2課堂練習(xí)課堂練習(xí)2l 2、利用loop語句描述一個(gè)n位的逐級(jí)進(jìn)位加法器:FAS3A3 B3C4FAS2A2 B2C3FAS1A1 B1C2FAS0A0 B0C107. WAIT語句語句1、作用:替代PROCESS敏感信號(hào)列表。2、WAIT語句語法格式: WAIT -無限等待(仿真) WAIT FOR time -時(shí)間到

21、(仿真,不可綜合) WAIT UNTIL signal_condition -條件滿足(可綜合) WAIT ON signal1,signal2,; -敏感信號(hào)發(fā)生變化(可綜合) 7.1、WAIT 語句說明語句說明 作用:仿真復(fù)位信號(hào)的產(chǎn)生:作用:仿真復(fù)位信號(hào)的產(chǎn)生: reset_proc:process begin reset=1 ; wait for reset_period; reset=0 ; wait; end process;7.2、 WAIT FOR 語句語句作用:常用于描述仿真激勵(lì)信號(hào),產(chǎn)生時(shí)鐘信號(hào);例: constant clk_period : time:=10ns clk

22、_process : process begin clk=0 ; wait for clk_period/2; clk=1; wait for clk_period/2; END PROCESS ; 或者: Clk_process:process(clk) begin clk=NOT clk AFTER period/2; end process;7.3 WAIT UNTIL使進(jìn)程語句進(jìn)入等待狀態(tài),直到UNTIL之后的條件滿足后才激活。例:帶同步復(fù)位端的D出觸發(fā)器 PROCESS BEGIN WAIT UNTIL (clkevent and clk=1); if (rst=1) then output0); elsif clkevent and clk=1 then output= input; end if; end process;7.4 WAIT ON WAIT ON 語句使進(jìn)程進(jìn)入等待狀態(tài),直到ON之后信號(hào)狀態(tài)發(fā)生變化才被激活,相當(dāng)于進(jìn)程的敏感信號(hào)列表。 WAIT ON clk,reset; -相當(dāng)于在進(jìn)程敏感信號(hào)列表中寫clk,reset。【注意】

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論