2013edavhdl第四講設(shè)計初步與實際操作_第1頁
2013edavhdl第四講設(shè)計初步與實際操作_第2頁
2013edavhdl第四講設(shè)計初步與實際操作_第3頁
2013edavhdl第四講設(shè)計初步與實際操作_第4頁
2013edavhdl第四講設(shè)計初步與實際操作_第5頁
已閱讀5頁,還剩96頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、EDAEDA技術(shù)技術(shù)實用教程實用教程今天的內(nèi)容點名(假條)對于4選1多路選擇器的VHDL文本輸入設(shè)計,掌握的學生人數(shù)統(tǒng)計超過一半則跳過第一小節(jié)。第一小節(jié)VHDL描述以及對應的時序仿真圖的簡單解讀課前提問,四種端口類型是哪四種?課前提問,關(guān)上書,實體和結(jié)構(gòu)體的區(qū)別?課前提問,綜合的四個層次?4 與Out 端口比,Buffer端口具有回讀功能,也即內(nèi)部反饋,但在設(shè)計時最好不要使用buffer,因為buffer類型的端口不能連接到其他類型的端口上,無法把包含該類型端口的設(shè)計作為子模塊元件例化,不利于大型設(shè)計和程序的可讀性。若設(shè)計時需要實現(xiàn)某個輸出的回讀功能,可以通過增加中間信號作為緩沖,由該信號完成

2、回讀功能。注:注:outout與與bufferbuffer的區(qū)別總結(jié)的區(qū)別總結(jié):5 雙向端口Inout是四種端口類型中最為特殊的一種,最難以學習和掌握,為此專門提供一個簡單程序進行闡述,部分程序如下:control,in1為in,x為out,q為inout模式。 process(control,q,in1) begin if(control=0)then x=q; else q=in1;x=“ZZZZZZZZ”; end if; end process; process(control,q,in1) begin if(control=0)then x=q;q=“ZZZZZZZZ”; else

3、q=in1;x=“ZZZZZZZZ”; end if; end process;關(guān)于雙向端口關(guān)于雙向端口INOUTINOUT的使用的使用總結(jié)總結(jié):【例4-1】ENTITY mux21a IS PORT( a, b : IN BIT ; s : IN BIT; y : OUT BIT ) ;END ENTITY mux21a ;ARCHITECTURE one OF mux21a IS BEGIN y = a WHEN s = 0 ELSE b ;END ARCHITECTURE one ;實體結(jié)構(gòu)體4.1 多路選擇器多路選擇器VHDL描述描述圖圖4-1 mux21a實體實體圖圖4-2 mux2

4、1a結(jié)構(gòu)體結(jié)構(gòu)體 2選選1多路選擇器的多路選擇器的VHDL描述描述【例例4-2】 ENTITY mux21a IS PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT ); END ENTITY mux21a;ARCHITECTURE one OF mux21a IS SIGNAL d,e : BIT; BEGINd = a AND (NOT S) ;e = b AND s ;y = d OR e ; END ARCHITECTURE one ;【例【例4-3】 . . . ARCHITECTURE one OF mux21a IS BEGIN y =

5、(a AND (NOT s) OR (b AND s) ; END ARCHITECTURE one;4.1.1 2選選1多路選擇器的多路選擇器的VHDL描述描述【例】【例】 ENTITY mux21a IS PORT ( a, b, s: IN BIT; y : OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a IS BEGIN PROCESS (a,b,s) BEGIN IF s = 0 THEN y = a ; ELSE y = b ;END IF; END PROCESS;END ARCHITECTURE one ;4.1.1

6、 2選選1多路選擇器的多路選擇器的VHDL描述描述圖圖4-3 mux21a功能時序波形功能時序波形 以下幾頁,是給記憶不好的同學回憶的,看過以后就是今天進一步強調(diào)的程序書寫的重點4.1.2 VHDL相關(guān)語法說明相關(guān)語法說明1. 1. 實體實體實體語句結(jié)構(gòu)實體語句結(jié)構(gòu)實體說明單元的一般語句結(jié)構(gòu):實體說明單元的一般語句結(jié)構(gòu): ENTITY ENTITY 實體名實體名 IS IS GENERIC ( GENERIC ( 類屬表類屬表 ); ); PORT ( PORT ( 端口表端口表 ); ); END ENTITY END ENTITY 實體名實體名; ;GENERIC類屬說明語句類屬說明語句類

7、屬說明的一般書寫格式如下:類屬說明的一般書寫格式如下: GENERIC( GENERIC( 常數(shù)名常數(shù)名 : : 數(shù)據(jù)類型數(shù)據(jù)類型 : := =設(shè)定值設(shè)定值 ; ;常數(shù)名常數(shù)名 : : 數(shù)據(jù)類型數(shù)據(jù)類型 : := =設(shè)定值設(shè)定值 ) ; ) ; 類屬說明是實體說明中的可選項,放在端口類屬說明是實體說明中的可選項,放在端口說明之前說明之前例: GENERIC(m: TIME:=3ns)例例LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY andn IS GENERIC (n : INTEGER ); -定義類屬參量及其數(shù)據(jù)類定義類屬參量及其數(shù)據(jù)類型

8、型 PORT(a : IN STD_LOGIC_VECTOR(n-1 DOWNTO 0); - 用類屬參量限制矢量長度用類屬參量限制矢量長度 c : OUT STD_LOGIC); END; PORT(端口)說明端口)說明PORT ( PORT ( 端口名端口名 : : 端口模式端口模式 數(shù)據(jù)類型數(shù)據(jù)類型 ; ; 端口名端口名 : : 端口模式端口模式 數(shù)據(jù)類型數(shù)據(jù)類型 ) ; ) ; 其中的端口名是設(shè)計者為實體的每一個對外通道所取的其中的端口名是設(shè)計者為實體的每一個對外通道所取的名字,端口模式是指這些通道上的數(shù)據(jù)流動方式。數(shù)據(jù)類型名字,端口模式是指這些通道上的數(shù)據(jù)流動方式。數(shù)據(jù)類型是指端口上

9、流動的數(shù)據(jù)的表達格式或取值類型,是指端口上流動的數(shù)據(jù)的表達格式或取值類型,VHDL要求要求只有相同數(shù)據(jù)類型的端口信號和操作數(shù)才能相互作用。只有相同數(shù)據(jù)類型的端口信號和操作數(shù)才能相互作用。 PORT PORT說明語句是對一個設(shè)計實體界面的說明及對設(shè)計實說明語句是對一個設(shè)計實體界面的說明及對設(shè)計實體與外部電路的接口通道的說明,其中包括對每一接口的輸體與外部電路的接口通道的說明,其中包括對每一接口的輸入輸出模式和數(shù)據(jù)類型的定義。其格式如下:入輸出模式和數(shù)據(jù)類型的定義。其格式如下:端口模式端口模式INOUTINOUTBUFFER數(shù)據(jù)類型數(shù)據(jù)類型VHDL語言的IEEE1076/93標準規(guī)定,EDA綜合工

10、具提供的數(shù)據(jù)類型為布爾型(Boolean)、位型(Bit)、位矢量型(Bit-Vector)和整數(shù)型(Interger)。結(jié)構(gòu)體的一般語言格式:結(jié)構(gòu)體的一般語言格式: ARCHITECTURE 結(jié)構(gòu)體名結(jié)構(gòu)體名 OF 實體名實體名 IS 說明語句說明語句BEGIN 功能描述語句功能描述語句END ARCHITECTURE 結(jié)構(gòu)體名結(jié)構(gòu)體名; 結(jié)構(gòu)體具體指明了設(shè)計實體的行為,定義了結(jié)構(gòu)體具體指明了設(shè)計實體的行為,定義了設(shè)計實體的功能,規(guī)定了設(shè)計實體的數(shù)據(jù)流程,設(shè)計實體的功能,規(guī)定了設(shè)計實體的數(shù)據(jù)流程,指派了實體中內(nèi)部元件的連接關(guān)系指派了實體中內(nèi)部元件的連接關(guān)系2 結(jié)構(gòu)體結(jié)構(gòu)體o 說明語句對結(jié)構(gòu)內(nèi)

11、部使用的數(shù)據(jù)類型、說明語句對結(jié)構(gòu)內(nèi)部使用的數(shù)據(jù)類型、常數(shù)、信號、子程序和元件等元素進行定常數(shù)、信號、子程序和元件等元素進行定義。說明語句不是必需的義。說明語句不是必需的功能描述語句用于描述實體邏輯功能和電功能描述語句用于描述實體邏輯功能和電路結(jié)構(gòu)。路結(jié)構(gòu)。 功能描述語句可以是并行語句,也可以是功能描述語句可以是并行語句,也可以是順序語句或是它們的混合順序語句或是它們的混合。結(jié)構(gòu)體的組成部分結(jié)構(gòu)體的組成部分 以上幾頁,是給記憶不好的同學回憶的,接下來,是今天進一步強調(diào)的程序書寫的重點用VHDL語言描述結(jié)構(gòu)體功能有3種方法 行為描述法:采用進程語句,順序描述設(shè)計實體的行為 數(shù)據(jù)流描述法:采用進程語

12、句順序描述數(shù)據(jù)流在控制流作用下被加工、處理、存儲的全過程 結(jié)構(gòu)描述法:采用并行處理語句描述設(shè)計實體內(nèi)的結(jié)構(gòu)組織和元件互連關(guān)系功能描述語句結(jié)構(gòu)功能描述語句結(jié)構(gòu)進程語句進程語句信號賦值語句信號賦值語句子程序調(diào)用語句子程序調(diào)用語句元件例化語句元件例化語句3 操作符操作符表表4-1 VHDL操作符列表操作符列表 =等于任何數(shù)據(jù)類型 /=不等于任何數(shù)據(jù)類型 大于枚舉與整數(shù)類型,及對應的一維數(shù)組 =大于等于枚舉與整數(shù)類型,及對應的一維數(shù)組 AND與BIT,BOOLEAN,STD_LOGIC OR或BIT,BOOLEAN,STD_LOGIC NAND與非BIT,BOOLEAN,STD_LOGIC NOR或非

13、BIT,BOOLEAN,STD_LOGIC XOR異或BIT,BOOLEAN,STD_LOGIC XNOR異或非BIT,BOOLEAN,STD_LOGIC邏輯操作符 NOT非BIT,BOOLEAN,STD_LOGIC +正整數(shù)符號操作符 負整數(shù)類 型操作符功 能操作數(shù)數(shù)據(jù)類型運 算 符優(yōu) 先 級NOT, ABS, *最 高 優(yōu) 先 級* , / , MOD, REM+(正 號 ), (負 號 )+ , , &SLL, SLA, SRL, SRA, ROL, ROR=, /=, , , =AND, OR, NAND, NOR, XOR, XNOR最 低 優(yōu) 先 級表表4-2 VHDL操作符優(yōu)先級

14、操作符優(yōu)先級操作符操作符【例】【例】 SIGNAL a ,b,c : STD_LOGIC_VECTOR (3 DOWNTO 0) ; SIGNAL d,e,f,g : STD_LOGIC_VECTOR (1 DOWNTO 0) ; SIGNAL h,I,j,k : STD_LOGIC ; SIGNAL l,m,n,o,p : BOOLEAN ; . a=b AND c; -b、c 相與后向相與后向a賦值,賦值,a、b、c的數(shù)據(jù)類型同屬的數(shù)據(jù)類型同屬4位長的位矢量位長的位矢量 d=e OR f OR g ; - 兩個操作符兩個操作符OR相同,不需括號相同,不需括號 h=(i NAND j)NAN

15、D k ; - NAND不屬上述三種算符中的一種,必須加括號不屬上述三種算符中的一種,必須加括號 l=(m XOR n)AND(o XOR p); - 操作符不同,必須加括號操作符不同,必須加括號 h=i AND j AND k ; - 兩個操作符都是兩個操作符都是AND,不必加括號不必加括號 h=i AND j OR k ; - 兩個操作符不同,未加括號,表達錯誤兩個操作符不同,未加括號,表達錯誤 a=b AND e ; - 操作數(shù)操作數(shù)b 與與 e的位矢長度不一致,表達錯誤的位矢長度不一致,表達錯誤 h=i OR l ; - i 的數(shù)據(jù)類型是位的數(shù)據(jù)類型是位STD_LOGIC,而而l的數(shù)據(jù)

16、類型是的數(shù)據(jù)類型是 . - 布爾量布爾量BOOLEAN,因而不能相互作用,表達錯誤。因而不能相互作用,表達錯誤。邏輯操作符邏輯操作符關(guān)系操作符關(guān)系操作符【例】【例】 ENTITY relational_ops_1 IS PORT ( a,b : IN BITVECTOR (0 TO 3) ; m : OUT BOOLEAN) ; END relational_ops_1 ; ARCHITECTURE example OF relational_ops_1 IS BEGIN m = (a = b) ; END example ; 【例】例】 ENTITY relational_ops_2 IS

17、PORT (a,b : IN INTEGER RANGE 0 TO 3 ; m : OUT BOOLEAN) ; END relational_ops_2 ; ARCHITECTURE example OF relational_ops_2 IS BEGIN m = b) ; END example ;六種關(guān)系運算操作符:“ = ”(“ = ”(等于等于) )、“/=”(“/=”(不等于不等于) )、“ ”(“ ”(大于大于) )、“ ”(“=”(“=”(大于等大于等于于) )“=”(“=”(小于等小于等于于) )5分鐘速記,然后做游戲上一節(jié)課,我們講過IF THEN和CASE WHEN現(xiàn)在系

18、統(tǒng)的列入了本PPT中,大家跟我一起來復習或者學習一次。4. 4. IF_THENIF_THEN條件語句條件語句順序執(zhí)行語句,只能用在進程中,有三種表現(xiàn)形式:IF 條件條件 THENEND IF;IF 條件條件 THENELSEEND IF;IF 條件條件1 THENELSIF 條件條件2ELSE 條件條件nEND IF;例:Library ieee;use ieee.std_logic_1164.all;Entity encoder isPort(d: in std_logic_vector(3 downto 0); q: out std_logic_vector(1 downto 0);en

19、d encoder;architecture example_if of encoder is beginprocess(d) begin if(d(0)=0) then q=“11”; elsif(d(1)=0) then q=“10”; elsif(d(2)=0) then q=“01”; else q=“00”; end if ;end process;End example_if;d3 d2 d1 d0 q2 q1X x x 0 1 1X x 0 1 1 0X 0 1 1 0 10 1 1 1 0 0優(yōu)先級編碼器真值表優(yōu)先級編碼器真值表5. 5. WHEN_ELSEWHEN_ELSE條

20、件信號賦值語句條件信號賦值語句賦值目標賦值目標 = 表達式表達式1 WHEN 賦值條件賦值條件1 ELSE 表達式表達式2 WHEN 賦值條件賦值條件2 ELSE . 表達式表達式n ;注意:注意:1、條件信號語句不能進行嵌套、條件信號語句不能進行嵌套2、條件信號語句是并發(fā)語句,進程內(nèi)外都可以使用、條件信號語句是并發(fā)語句,進程內(nèi)外都可以使用例:用條件信號賦值語句設(shè)計四選一電路模塊Library ieee;Use ieee.std_logic_1164.all;Entitu mux4 isPort(d0,d1,d2,d3,a,b : in std_logic; q: out std_logic)

21、;End mux4;Architecture arch of mux4 is signal sel: std_logic_vector(1 downto 0);Begin sel=b&a; q=d0 when sel=“00” else d1 when sel=“01”else d2 when sel=“10”else d3 when sel=“11”else z;End arch;6. 6. PROCESSPROCESS進程語句和順序語句進程語句和順序語句Process語句在VHDL程序中,是描述硬件并行工作行為的最常用,最基本的語句進程語句格式進程語句格式PROCESS語句結(jié)構(gòu)的一般表達格

22、式如下語句結(jié)構(gòu)的一般表達格式如下 進程標號進程標號: : PROCESS ( PROCESS ( 敏感信號參數(shù)表敏感信號參數(shù)表 ) ) ISIS 進程說明部分進程說明部分 BEGINBEGIN 順序描述語句順序描述語句 END PROCESS END PROCESS 進程標號進程標號; PROCESS 組成組成PROCESS語句結(jié)構(gòu)語句結(jié)構(gòu)進程說明進程說明順序描述語句順序描述語句敏感信號參數(shù)表敏感信號參數(shù)表信號賦值語句變量賦值語句進程啟動語句子程序調(diào)用語句順序描述語句進程跳出語句 進程要點進程要點1 1)PROCESSPROCESS為一無為一無限循環(huán)語句限循環(huán)語句2 2)PROCESSPROC

23、ESS中的順序語句具有明顯的順序中的順序語句具有明顯的順序/ /并行運行雙重性并行運行雙重性3 3)進程必須由敏感信號的變化來啟動)進程必須由敏感信號的變化來啟動4 4)進程語句本身是并行語句)進程語句本身是并行語句5 5)信號是多個進程間的通信線)信號是多個進程間的通信線6 6)一個進程中只允許描述對應于一個時鐘信號的同步時)一個進程中只允許描述對應于一個時鐘信號的同步時序邏輯序邏輯 【例例】ENTITY mul ISPORT (a, b, c, selx, sely : IN BIT; data_out : OUT BIT);END mul;ARCHITECTURE ex OF mul I

24、S SIGNAL temp : BIT;BEGINp_a : PROCESS (a, b, selx) BEGIN IF (selx = 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 data_out = c; END IF; END PROCESS p_b;END ex;7. 7. 文件取名和存盤文件取名和存盤1)取名最好與文件實體名相同;2)文件后綴名必須是.vhd3)VH

25、DL設(shè)計文件必須存于指定為工程的目錄中,此目錄將被設(shè)定為work庫,work庫的路徑即為此目錄的路徑 總結(jié)總結(jié) 一個完整的VHDL語言程序通常包括實體、構(gòu)造體、配置、包集合和庫5個部分。實體用于描述所設(shè)計的系統(tǒng)的外部接口信號;構(gòu)造體用于描述系統(tǒng)內(nèi)部的結(jié)構(gòu)和行為;包集合存放各設(shè)計模塊都能共享的數(shù)據(jù)類型、常數(shù)和子程序等;配置用于從庫中選取所需單元組成系統(tǒng)設(shè)計的不同版本;庫存放已經(jīng)編譯的實體、構(gòu)造體、包集合、和配置。接下來,是自學內(nèi)容,相對比較簡單有疑問提問,5分鐘后我提問,回答上來的加分4.2 寄存器描述及其寄存器描述及其VHDL語言現(xiàn)象語言現(xiàn)象4.2.1 D觸發(fā)器的觸發(fā)器的VHDL描述描述【例4

26、-9】LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF1 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ; ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1 : STD_LOGIC ; -類似于在芯片內(nèi)部定義一個數(shù)據(jù)的暫存節(jié)點 BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = D ; END IF; Q = Q1 ; -將內(nèi)部的暫存數(shù)據(jù)向端

27、口輸出 END PROCESS ; END bhv;D觸發(fā)器觸發(fā)器4.2.2 D觸發(fā)器觸發(fā)器VHDL描述的語言現(xiàn)象說明描述的語言現(xiàn)象說明1. 1. 標準邏輯位數(shù)據(jù)類型標準邏輯位數(shù)據(jù)類型STD_LOGICSTD_LOGICBIT數(shù)據(jù)類型定義: TYPE BIT IS(0,1);TYPE BIT IS(0,1);STD_LOGIC數(shù)據(jù)類型定義:TYPE STD_LOGIC IS (U,X,0,1,Z,W,L,H,-);TYPE STD_LOGIC IS (U,X,0,1,Z,W,L,H,-);STD_LOGIC所定義的9種數(shù)據(jù)的含義是:UU表示未初始化的;表示未初始化的; XX表示強未知的;表示強

28、未知的; 0 0表示強表示強邏輯邏輯0 0; 1 1表示強邏輯表示強邏輯1 1; ZZ表示高阻態(tài);表示高阻態(tài); W W 表示弱未知的;表示弱未知的; LL表示弱邏輯表示弱邏輯0 0; HH表示弱表示弱邏輯邏輯1 1; - -表示忽略。表示忽略。Library ieee;USE IEEE.STD_LOGIC_1164 ENTITY mux21a IS PORT( a, b : IN std_logic ; s : IN std_logic ; y : OUT std_logic ) ;END mux21a ;ARCHITECTURE one OF mux21a IS BEGIN y = a WH

29、EN s = 0 ELSE b ;END one ;例:2. 2. 設(shè)計庫和標準程序包設(shè)計庫和標準程序包 庫是用來存儲和放置可編譯的設(shè)計單元的地方,通庫是用來存儲和放置可編譯的設(shè)計單元的地方,通過其目錄可查詢、調(diào)用。設(shè)計庫中的設(shè)計單元可以用作過其目錄可查詢、調(diào)用。設(shè)計庫中的設(shè)計單元可以用作其他其他VHDL描述的資源描述的資源 一般的,設(shè)計庫中放程序包,不同庫中所放的程一般的,設(shè)計庫中放程序包,不同庫中所放的程序包的個數(shù)不一致。程序包放子程序,子程序中含有序包的個數(shù)不一致。程序包放子程序,子程序中含有函數(shù)、過程、元件等基礎(chǔ)設(shè)計單元。函數(shù)、過程、元件等基礎(chǔ)設(shè)計單元。 庫的種類庫的種類VHDL的庫設(shè)

30、計庫:對當前項目是可見默認的,無需聲明。包括STD庫和WORK庫。STD庫中包括STANDARD和TEXTIO兩個程序包資源庫:常規(guī)元件和標準模塊存放的庫,使用前需預先說明。有些是IEEE標準化組織認可的,稱為IEEE庫使用庫和程序包的一般定義表式是: LIBRARY LIBRARY ; USE USE .ALL ; ALL ; USE語句的使用有兩種常用格式: USE 庫名庫名.程序包名程序包名.項目名項目名 ; USE 庫名庫名.程序包名程序包名.ALL ; LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.STD_ULOGIC ; USE IEEE.STD_L

31、OGIC_1164.RISING_EDGE ; 常用的預定義的程序包常用的預定義的程序包STD_LOGIC_1164程序包程序包STD_LOGIC_ARITH程序包程序包STD_LOGIC_UNSIGNED和和STD_LOGIC_SIGNED程序包程序包STANDARD和和TEXTIO程序包程序包VHDL程序包程序包例:計數(shù)器Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_unsigned.all;Entity count is port(clk : in std_logic; q : out std_logic_vect

32、or(3 downto 0);End count;Architecture arch of count is signal m : std_logic_vector(3 downto 0); begin process(clk) begin if clkevent and clk=1 then if(m=“1111”) then m=“0000”; else m=m+1; end if; end if; end process; q=m;End arch;3. 3. SIGNALSIGNAL信號定義和數(shù)據(jù)對象信號定義和數(shù)據(jù)對象定義格式:定義格式: SIGNAL 信號名:信號名: 數(shù)據(jù)類型數(shù)據(jù)類

33、型 := 初始值初始值 ;信號的使用和定義范圍是實體、結(jié)構(gòu)體和程序包,在進程和子程序的順序語句中不允許定義信號信號賦值語句:目標信號名=表達式;Signal a,b,c : std_logic;Process(a,b) begin c=a+b;End process;【例4-10】ARCHITECTURE bhv OF DFF1 IS BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q = D ; END IF; END PROCESS ;END ;數(shù)據(jù)對象數(shù)據(jù)對相類似于一種容器,它接受不同數(shù)據(jù)類型的賦值。數(shù)據(jù)對象有三類:信號,變量

34、和常量4. 4. 上升沿檢測表式和信號屬性函數(shù)上升沿檢測表式和信號屬性函數(shù)EVENTEVENT 關(guān)鍵詞EVENT是信號屬性,VHDL通過以下表達式來測定某信號的跳變邊沿: EVENTEVENT邊沿檢測語句:邊沿檢測語句: clockEVENT and clock=1 檢測上升沿 clockEVENT and clock=0 檢測下降沿*現(xiàn)場可編程門陣列 field programmable gate array(FPGA)*復雜可編程邏輯器件complex programmable logic device (CPLD)*硬件描述語言hardware description language(

35、HDL)大規(guī)模集成large scale integration (LSI) 中規(guī)模集成medium scale integration (MSI)5. 5. 不完整條件語句與時序電路不完整條件語句與時序電路【例【例4-9】ENTITY COMP_BAD IS PORT( a1 : IN BIT; b1 : IN BIT; q1 : OUT BIT ); END ; ARCHITECTURE one OF COMP_BAD IS BEGIN PROCESS (a1,b1) BEGIN IF a1 b1 THEN q1 = 1 ; ELSIF a1 b1 THEN q1 b1 THEN q1 =

36、 1 ; ELSE q1 = 0 ; END IF; END PROCESS ; END 圖圖4-6 例例4-10的電路圖的電路圖4.2.3 實現(xiàn)時序電路的實現(xiàn)時序電路的VHDL不同表達方式不同表達方式【例【例4-11】.PROCESS (CLK) BEGINIF CLKEVENT AND (CLK=1) AND (CLKLAST_VALUE=0) THEN Q = D ; -確保確保CLK的變化是一次上升沿的跳變的變化是一次上升沿的跳變 END IF; END PROCESS ;【例【例4-12】.PROCESS (CLK) BEGINIF CLK=1 AND CLKLAST_VALUE=0

37、 -同例同例4-13 THEN Q = D ; END IF; END PROCESS ;4.2.3 實現(xiàn)時序電路的實現(xiàn)時序電路的VHDL不同表達方式不同表達方式【例【例4-13】LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY DFF3 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ; ARCHITECTURE bhv OF DFF3 IS SIGNAL Q1 : STD_LOGIC; BEGIN PROCESS (CLK) BEGIN IF

38、 rising_edge(CLK) - CLK的數(shù)據(jù)類型必須是的數(shù)據(jù)類型必須是STD_LOGIC THEN Q1 = D ; END IF; Q = Q1 ; END PROCESS ; END ;4.2.3 實現(xiàn)時序電路的實現(xiàn)時序電路的VHDL不同表達方式不同表達方式【例4-14】 . PROCESS BEGIN wait until CLKevent and clk=1; -利用利用wait語句語句 Q = D ; END PROCESS;【例4-15】. PROCESS (CLK) BEGIN IF CLK = 1 THEN Q = D ; -利用進程的啟動特性產(chǎn)生對利用進程的啟動特性產(chǎn)

39、生對CLK的邊沿檢測的邊沿檢測 END IF; END PROCESS ;【例4-16】. PROCESS (CLK,D) BEGIN IF CLK = 1 -電平觸發(fā)型寄存器電平觸發(fā)型寄存器 THEN Q = D ; END IF; END PROCESS ;4.2.3 實現(xiàn)時序電路的實現(xiàn)時序電路的VHDL不同表達方式不同表達方式圖圖4-7 邊沿型觸發(fā)器時序波形邊沿型觸發(fā)器時序波形圖圖4-8 電平觸發(fā)型寄存器的時序波形電平觸發(fā)型寄存器的時序波形異步時序電路特點*1.電路中除可以使用帶時鐘的觸發(fā)器外,還可以使用不帶時鐘的觸發(fā)器和延遲元件作為存儲元件; 2.電路中沒有統(tǒng)一的時鐘; 3. 電路狀態(tài)

40、的改變由外部輸入的變化直接引起。設(shè)計*一般分為兩步:第一步確定各位觸發(fā)器時鐘信號,第二步求電路狀態(tài)方程、激勵方程、輸出方程。顯然,第二步工作是建立在第一步工作基礎(chǔ)上,只有確定了時鐘信號,才能有效設(shè)計其它電路。是否能將異步時序電路設(shè)計僅通過對其時鐘設(shè)計一步完成?筆者在教學過程中,認真分析異步時序電路特點,提出了基于時鐘設(shè)計的異步時序邏輯電路設(shè)計法,從而避免了求解電路狀態(tài)方程、驅(qū)動方程,簡化了異步時序電路設(shè)計。例:帶異步復位的D觸發(fā)器LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF4 IS PORT (CLK : IN STD_LOGIC

41、 ; clr,D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END DFF4; ARCHITECTURE bhv OF DFF1 IS BEGIN PROCESS (CLK,clr) BEGIN if clr=0 then Q=0; elsif CLKEVENT AND CLK = 1 THEN Q = D ; END IF; END PROCESS ; END bhv;4.3.1 半加器描述和半加器描述和CASE語句語句【例【例4-20】 LIBRARY IEEE ;-或門邏輯描述或門邏輯描述 USE IEEE.STD_LOGIC_1164.ALL; ENT

42、ITY or2a IS PORT (a, b :IN STD_LOGIC; c : OUT STD_LOGIC ); END ENTITY or2a; ARCHITECTURE one OF or2a IS BEGIN c = a OR b ; END ARCHITECTURE one;【例【例4-21】LIBRARY IEEE; -半加器描述半加器描述(1)USE IEEE.STD_LOGIC_1164.ALL; ENTITY adder IS PORT (a, b : IN STD_LOGIC; co, so : OUT STD_LOGIC); END ENTITY adder; ARCH

43、ITECTURE fh1 OF adder is BEGIN so = NOT(a XOR (NOT b) ; co = a AND b ; END ARCHITECTURE fh1; 4.3 1位二進制全加器的位二進制全加器的VHDL設(shè)計設(shè)計圖圖4-10半加器半加器h_adder電路圖電路圖圖圖4-11 全加器全加器f_adder電路圖電路圖ab so co0000011010101101表表4-1 半加器半加器h_adder邏輯功能真值表邏輯功能真值表【例【例4-22】LIBRARY IEEE; -半加器描述半加器描述(2)USE IEEE.STD_LOGIC_1164.ALL; ENTI

44、TY h_adder IS PORT (a, b : IN STD_LOGIC; co, so : OUT STD_LOGIC); END ENTITY h_adder; ARCHITECTURE fh1 OF h_adder is SIGNAL abc : STD_LOGIC_VECTOR(1 DOWNTO 0) ;BEGIN abc so=0; co so=1; co so=1; co so=0; co NULL ; END CASE; END PROCESS;END ARCHITECTURE fh1 ;【例例4-22】 . -半加器描述半加器描述(3) SIGNAL abc,cso :

45、STD_LOGIC_VECTOR(1 DOWNTO 0 ); BEGIN abc = a & b ; co = cso(1) ; so cso cso cso csoain,b=bin,co=d,so=e); u2 : h_adder PORT MAP(a=e,b=cin,co=f,so=sum); u3 : or2a PORT MAP(a=d,b=f,c=cout); END ARCHITECTURE fd1;4.3.1 半加器描述和半加器描述和CASE語句語句1. 1. CASECASE語句語句CASE語句的一般表式是:語句的一般表式是:CASE ISWhen = ; . ; ;When

46、= ; . ; ;.when others =END CASE ;Case語句常用來描述總線行為、編碼器和譯碼器的結(jié)構(gòu)例:例:PROCESS(abc) BEGIN CASE abc IS WHEN 00 = so=0; co so=1; co so=1; co so=0; co NULL ; END CASE; END PROCESS;process(s,a,b,c,d) begin case s is when 00=zzzznull; end case; end process; end behav;library ieee;use ieee.std_logic_1164.all;enti

47、ty mux4 isport(s1,s2: in std_logic; a,b,c,d : in std_logic; z : out std_logic);end entity mux4;architecture behav of mux4 is signal s : std_logic_vector(1 downto 0);begin s=s1&s2;結(jié)論: 選擇器的行為描述即可以用if語句,也可以用case語句 If語句是有序的,先處理最起始、最優(yōu)先的條件,后處理次優(yōu)先的條件 Case語句是無序的,所有表達式值都并行處理。 Case語句中的條件表達式中的值必須舉窮盡,又不能重復 不能窮盡的條件表達式的值用others表示接下來是操作指導請自己對照文本和之前我教的進行。看能否理解步驟。(注意,軟件界面不同,不要照

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論