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

下載本文檔

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

文檔簡介

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

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

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

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

5、進程被 激活,從而執(zhí)行內(nèi)部順序語句。 注意:可以有多個敏感信號,用逗號隔開,任何一個變化都激活進 程,否則進程掛起。c)進程聲明區(qū):進程聲明區(qū): 用于定義進程內(nèi)部的局部變量,信號不可在此聲明。進程之間數(shù)據(jù) 交流通過全局信號。d)順序語句: 進程內(nèi)部語句順序執(zhí)行。e)用處:適合描述時序電路。也可用于組合邏輯電路的設(shè)計。例例1:進程語句例程:進程語句例程帶異步復(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 時鐘沿的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:進程語句總結(jié):進程語句總結(jié):l 進程僅在敏感信號發(fā)生變化時才執(zhí)行。l 特點:進程內(nèi)部,順序語句;進程語句之間,并行。l 不同進程內(nèi)不可以對同一信號賦值,即不可多重賦值。l 進程內(nèi)信號和變

8、量賦值效果不同。l 一個進程內(nèi)不能同時撲捉同一個時鐘信號的上升沿或者下降沿。例如下面語句是錯誤的: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、信號和變量異同:(1)、聲明范圍:。 信號:ENTITY,ARCHITECTURE,PACKAGE(ALL) 變量:順序語句中(PROCESS、子程序)(2)、作用:動態(tài)數(shù)值傳遞,存儲運算中間結(jié) 果(變量)。(3)、使用范圍:全局(sig),局部(var)。(4)、變量結(jié)果

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

11、 ; - 信號量代入 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 ;進程li_1的運行結(jié)果:q0 = d1 OR d3 并且 q1 = d1 OR d3進程li_2的運行結(jié)果:q0 = d0 OR d3 而 q1 = d1 OR d

12、3 語法說明:進程當中的賦值:變量:立即更新。信號:process執(zhí)行完畢賦值才生效。同時,進程中的信號賦值語句允許有多個不同的賦值驅(qū)動源,但僅最后 一個驅(qū)動源有效3、IF語句語句IF語句 IF語句是根據(jù)所指定的條件來確定執(zhí)行哪些語句,適用于比較器、譯碼器等需要條件控制的邏輯電路設(shè)計,通常有以下三種類型。(1)用作門閥控制時的IF語句書寫格式為 IF (條件) THEN 順序處理語句; END IF; 例程: PROCESS(clk) BEGIN IF clkevent and clk=1 THEN q=d; qb=NOT d; END IF; END PROCESS;(2)用作選擇控制時的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)用作多選擇控制時的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計數(shù)器;l N位移位寄存器(右移);作業(yè)1: (1)、N位移位寄存器(左移); (2)、通用模n計數(shù)器;CLKDQCDQCDQCq3q2q1DQCq0dIF 語句使用總結(jié)語句使用總結(jié) If語句必須要有else,尤其組合邏輯 嵌套計數(shù)不能太多,否則關(guān)鍵路徑會很長,會嚴重影響性能; 分支較多的if應(yīng)想辦法采用case代替; If條件判斷不能太長,若邏輯比較復(fù)雜,盡量用新產(chǎn)生信號代替; 注意if的優(yōu)先級; 盡量不使用 、=比較符。4、CASE語句語句CASE語句的一般

16、格式為: CASE 表達式表達式 IS WHEN 值值1= 多條賦值語句;多條賦值語句; WHEN 值值2= 語句語句2; WHEN OTHERS = 語句語句3(null、unaffected);); END CASE;當需要對多個條件進行判斷時:(1)、WHEN 值= 語句; -單個值(2)、WHEN 值 | 值 | 值 | 值=語句;-多個值的“或”(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 相當于 THEN (3)、分支入口條件必須唯一,且取值在表達式范圍內(nèi)。 (4)、分支入口選擇(并行),與書寫順序無關(guān)。 (5)、OTHERS (必須列出條件表達式的所有可能) , NULL 。Case語句的條件沒有優(yōu)先級,綜合后是一個并行多路選擇器。注意:如果if語句太長,應(yīng)該盡可能用case語句代替。適用于編寫組合邏輯電路:譯碼器,編碼器等。語法說明:語

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

19、XT:跳出本次循環(huán) label: NEXT loop_label when 條件表達式;(4)、EXIT:結(jié)束整個循環(huán)操作 label: EXIT loop_label when 條件表達式;例: 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; -跳出當前循環(huán),使LOOP循環(huán)結(jié)束。 END CASE;END LOOP ;1、利用LOOP/EXIT語句設(shè)計一個連0檢測器對輸入矢量中連續(xù)出現(xiàn)的零的個數(shù)進行統(tǒng)計(從矢量左端開始統(tǒng)計)課堂練習(xí)課堂練習(xí)2課堂練習(xí)課堂練習(xí)2l 2、利用loop語句描述一個n位的逐級進位加法器:FAS3A3 B3C4FAS2A2 B2C3FAS1A1 B1C2FAS0A0 B0C107. WAIT語句語句1、作用:替代PROCESS敏感信號列表。2、WAIT語句語法格式: WAIT -無限等待(仿真) WAIT FOR time -時間到

21、(仿真,不可綜合) WAIT UNTIL signal_condition -條件滿足(可綜合) WAIT ON signal1,signal2,; -敏感信號發(fā)生變化(可綜合) 7.1、WAIT 語句說明語句說明 作用:仿真復(fù)位信號的產(chǎn)生:作用:仿真復(fù)位信號的產(chǎn)生: reset_proc:process begin reset=1 ; wait for reset_period; reset=0 ; wait; end process;7.2、 WAIT FOR 語句語句作用:常用于描述仿真激勵信號,產(chǎn)生時鐘信號;例: 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使進程語句進入等待狀態(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 語句使進程進入等待狀態(tài),直到ON之后信號狀態(tài)發(fā)生變化才被激活,相當于進程的敏感信號列表。 WAIT ON clk,reset; -相當于在進程敏感信號列表中寫clk,reset。【注意】

溫馨提示

  • 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論