第3章 VHDL基礎(chǔ).ppt_第1頁
第3章 VHDL基礎(chǔ).ppt_第2頁
第3章 VHDL基礎(chǔ).ppt_第3頁
第3章 VHDL基礎(chǔ).ppt_第4頁
第3章 VHDL基礎(chǔ).ppt_第5頁
已閱讀5頁,還剩78頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、3.1 VHDL 基本語法,3.1.1 組合電路描述,圖3-1 mux21a實體 圖3-2 mux21a結(jié)構(gòu)體,第3章 VHDL 基礎(chǔ),3.1.1 組合電路描述,【例3-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 ;,【例3-2】 ENTITY mux21a IS PORT(a,b,s: IN BIT; y: OUT BIT

2、); END ENTITY mux21a; ARCHITECTURE one OF mux21a IS SIGNAL d,e: BIT; BEGIN d=a AND (NOT S); e=b AND s; y=d OR e; END ARCHITECTURE one ;,3.1.1 組合電路描述,【例3-3】 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 E

3、LSE y=b; END IF; END PROCESS; END ARCHITECTURE one ;,3.1.1 組合電路描述,圖3-3 mux21a功能時序波形,3.1.1 組合電路描述,3.1 VHDL 基本語法,3.1.2 VHDL結(jié)構(gòu),【例3-4】 ENTITY e_name IS PORT(p_name: port_m data_type; . p_namei: port_mi data_type ); END ENTITY e_name;,1. 實體表達,3.1 VHDL 基本語法,2. 實體名,3. 端口語句和端口信號名,4. 端口模式,“IN”、“OUT”、“INOUT”、

4、“BUFFER”,5. 數(shù)據(jù)類型,6. 結(jié)構(gòu)體表達,【例3-5】 ARCHITECTURE arch_name OF e_name IS 說明語句 BEGIN (功能描述語句) END ARCHITECTURE arch_name ;,3.1 VHDL 基本語法,7. 賦值符號和數(shù)據(jù)比較符號,IF a THEN . -注意,a的數(shù)據(jù)類型必須是boolean IF (s1=0)AND(s2=1)OR(cb+1) THEN .,8. 邏輯操作符,BIT、BOOLEAN、STD_LOGIC,AND(與)、OR(或)、NAND(與非)、NOR(或非)、XOR(異或)、XNOR(同或)和NOT(取反),

5、9. 條件語句,3.1 VHDL 基本語法,10. WHEN_ELSE條件信號賦值語句,賦值目標 = 表達式 WHEN 賦值條件 ELSE 表達式 WHEN 賦值條件 ELSE . 表達式 ;,z=a WHEN p1=1 ELSE b WHEN p2=1 ELSE c;,3.1 VHDL 基本語法,11. 進程語句和順序語句,12. 文件取名和存盤,IF_THEN_ELSE_END IF; PROCESS. END PROCESS,“.vhd”,adder_f.vhd,3.2 時序電路描述,3.2.1 D 觸發(fā)器,【例3-6】 LIBRARY IEEE; USE IEEE.STD_LOGIC_

6、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,Q1) BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = D ; END IF; END PROCESS; Q=Q1; -將內(nèi)部的暫存數(shù)據(jù)向端口輸出(雙橫線-是注釋符號) END bhv;,圖3-4 D觸發(fā)器,3.

7、2 時序電路描述,3.2.2 時序描述VHDL規(guī)則,1. 標準邏輯位數(shù)據(jù)類型 STD_LOGIC,BIT數(shù)據(jù)類型定義: TYPE BIT IS(0,1); -只有兩種取值 STD_LOGIC數(shù)據(jù)類型定義: TYPE STD_LOGIC IS (U,X,0,1,Z,W,L,H,-); -有9種取值,3.2 時序電路描述,2. 設(shè)計庫和標準程序包,LIBRARY WORK; LIBRARY STD; USE STD.STANDARD.ALL;,LIBRARY ; USE .ALL;,LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL;,3. 信號定義和數(shù)據(jù)對象,E

8、VENT,4. 上升沿檢測表式和信號屬性函數(shù)EVENT,3.2 時序電路描述,【例3-7】 ENTITY COMP_BAD IS PORT(a1,b1:IN BIT; q1:OUT BIT); END; ARCHITECTURE one OF COMP_BAD IS BEGIN PROCESS(a1,b1) BEGIN IF a1b1 THEN q1=1; ELSIF a1b1 THEN q1=0;-未提及當a1=b1時,q1作何操作 END IF; END PROCESS ; END ;,5. 不完整條件語句與時序電路,3.2 時序電路描述,圖3-5 例3-7的電路圖,例3-7的RTL圖,3

9、.2 時序電路描述,【例3-8】 . IF a1 b1 THEN q1 = 1 ; ELSE q1 = 0 ; END IF; .,圖3-6 例3-8的電路圖,3.2 時序電路描述,3.2.3 時序電路的不同表述,【例3-9】 . PROCESS (CLK) BEGIN IF CLKEVENT AND (CLK=1) AND (CLKLAST_VALUE=0) THEN Q = D ; -確保CLK的變化是一次上升沿的跳變 END IF; END PROCESS ; 【例3-10】 . PROCESS (CLK) BEGIN IF CLK=1 AND CLKLAST_VALUE=0 THEN

10、Q = D ; -同例3-9 END IF; END PROCESS ;,3.2 時序電路描述,【例3-11】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY DFF3 IS PORT (CLK,D:IN STD_LOGIC; Q:OUT STD_LOGIC); END; ARCHITECTURE bhv OF DFF3 IS SIGNAL Q1: STD_LOGIC; BEGIN PROCESS(CLK) BEGIN IF rising_edge(CLK) THEN -必須打開STD_LOGIC_1164程序包 Q1 = D; END IF

11、; END PROCESS ; Q = Q1; -在此,賦值語句可以放在進程外,作為并行賦值語句 END ;,3.2.3 實現(xiàn)時序電路的不同表述,【例3-12】 . PROCESS BEGIN wait until CLK = 1 ; -利用wait語句 Q = D ; END PROCESS;,3.2 時序電路描述,3.2 時序電路描述,【例3-13】 . PROCESS (CLK) BEGIN IF CLK = 1 THEN Q = D ; -利用進程的啟動特性產(chǎn)生對CLK的邊沿檢測 END IF; END PROCESS,圖3-7 例3-13的時序波形,3.2 時序電路描述,【例3-14

12、】 . PROCESS (CLK,D) BEGIN IF CLK =1 THEN -電平觸發(fā)型寄存器 Q= D; END IF; END PROCESS;,圖3-8 例3-14的時序波形,3.3 全加器的VHDL描述,3.3.1 半加器描述,3.3 全加器的VHDL描述,3.3.1 半加器描述,3.3 全加器的VHDL描述,3.3.1 半加器描述,【例3-15】 LIBRARY IEEE; -半加器描述(1):布爾方程描述方法 USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT (a, b : IN STD_LOGIC; co, so : O

13、UT STD_LOGIC); END ENTITY h_adder; ARCHITECTURE fh1 OF h_adder is BEGIN so = NOT(a XOR (NOT b) ; co = a AND b ; END ARCHITECTURE fh1;,3.3 全加器的VHDL描述,【例3-16】 LIBRARY IEEE; -半加器描述(2):真值表描述方法 USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT (a, b : IN STD_LOGIC; co, so : OUT STD_LOGIC); END ENTITY h

14、_adder; ARCHITECTURE fh1 OF h_adder is SIGNAL abc: STD_LOGIC_VECTOR(1 DOWNTO 0); -定義標準邏輯位矢量數(shù)據(jù)類型 BEGIN abc so so so so NULL ; END CASE; END PROCESS; END ARCHITECTURE fh1 ;,3.3 全加器的VHDL描述,【例3-17】 LIBRARY IEEE ; -或門邏輯描述 USE IEEE.STD_LOGIC_1164.ALL; ENTITY or2a IS PORT (a, b:IN STD_LOGIC; c:OUT STD_LOGI

15、C ); END ENTITY or2a; ARCHITECTURE one OF or2a IS BEGIN c = a OR b ; END ARCHITECTURE one ;,ARCHITECTURE fd1 OF f_adder IS COMPONENT h_adder -調(diào)用半加器聲明語句 PORT(a,b:IN STD_LOGIC; co,so:OUT STD_LOGIC); END COMPONENT; COMPONENT or2a PORT(a,b:IN STD_LOGIC; c:OUT STD_LOGIC); END COMPONENT; SIGNAL d,e,f: STD

16、_LOGIC; -定義3個信號作為內(nèi)部的連接線。 BEGIN u1 : h_adder PORT MAP(a=ain,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;,3.3 全加器的VHDL描述,【例3-18】 LIBRARY IEEE; -1位二進制全加器頂層設(shè)計描述 USE IEEE.STD_LOGIC_1164.ALL; ENTITY f_adder IS PORT (ain,

17、bin,cin:IN STD_LOGIC; cout,sum:OUT STD_LOGIC ); END ENTITY f_adder;,3.3 全加器的VHDL描述,3.3.2 CASE語句,1. CASE語句,CASE IS When =;.;; When =;.;; . WHEN OTHERS=; END CASE;,3.3 全加器的VHDL描述,2. 標準邏輯矢量數(shù)據(jù)類型,B = 01100010 ; - B(7)為 0 B(4 DOWNTO 1) = 1101 ; - B(4)為 1 B(7 DOWNTO 4) = A ; - B(6)等于 A(2),SIGNAL C :BIT_VEC

18、TOR(3 DOWNTO 0);,B : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ; 或 SIGNAL A :STD_LOGIC_VECTOR(1 TO 4),3. 并置操作符 ,SIGNAL a : STD_LOGIC_VECTOR (3 DOWNTO 0) ; SIGNAL d : STD_LOGIC_VECTOR (1 DOWNTO 0) ; . a = 10d(1)1 ; - 元素與元素并置,并置后的數(shù)組長度為4 . IF a d = 101011 THEN . - 在IF條件句中可以使用并置符,3.3 全加器的VHDL描述,3.3.3 例化語句,COMPON

19、ENT 元件名 IS PORT (端口名表) ; END COMPONENT 文件名 ;,COMPONENT h_adder PORT ( c,d : IN STD_LOGIC; e,f : OUT STD_LOGIC);,例化名 : 元件名 PORT MAP( 端口名 = 連接端口名,.);,3.4 計數(shù)器設(shè)計,【例3-19】 ENTITY CNT4 IS PORT(CLK:IN BIT; Q:BUFFER INTEGER RANGE 15 DOWNTO 0); END; ARCHITECTURE bhv OF CNT4 IS BEGIN PROCESS(CLK) BEGIN IF CLKE

20、VENT AND CLK=1 THEN Q = Q + 1 ; END IF; END PROCESS; END bhv;,3.4 計數(shù)器設(shè)計,1程序說明,表式Q = Q + 1的右項與左項并非處于相同的時刻內(nèi),對于時序電路,除了傳輸延時外,前者的結(jié)果出現(xiàn)于當前時鐘周期;后者,即左項要獲得當前的Q + 1,需等待下一個時鐘周期。,2數(shù)據(jù)類型說明,1 十進制整數(shù) 0 十進制整數(shù) 35 十進制整數(shù) 10E3 十進制整數(shù),等于十進制整數(shù)1000 16#D9# 十六進制整數(shù),等于十六進制整數(shù)D9H 8#720# 八進制整數(shù),等于八進制整數(shù)720O 2#11010010# 二進制整數(shù),等于二進制整數(shù)11

21、010010B,Q : BUFFER NATURAL RANGE 15 DOWNTO 0;,Q : BUFFER INTEGER RANGE 15 DOWNTO 0;,3.4 計數(shù)器設(shè)計,3計數(shù)器的其他表述方法,【例3-20】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT4 IS PORT(CLK:IN STD_LOGIC ; Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END; ARCHITECTURE bhv OF CNT4 IS SI

22、GNAL Q1:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK=1 THEN Q1=Q1+1; END IF; END PROCESS; Q=Q1; END bhv;,3.5 一般計數(shù)器的VHDL設(shè)計方法,【例3-21】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT10 IS PORT (CLK,RST,EN : IN STD_LOGIC; CQ : OUT STD

23、_LOGIC_VECTOR(3 DOWNTO 0); COUT : OUT STD_LOGIC ); END CNT10; ARCHITECTURE behav OF CNT10 IS BEGIN PROCESS(CLK, RST, EN) VARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF RST = 1 THEN CQI := (OTHERS =0) ; -計數(shù)器異步復位 ELSIF CLKEVENT AND CLK=1 THEN -檢測時鐘上升沿 IF EN = 1 THEN -檢測是否允許計數(shù)(同步使能) IF CQI 0); -

24、大于9,計數(shù)值清零 END IF; END IF; END IF; IF CQI = 9 THEN COUT = 1; -計數(shù)大于9,輸出進位信號 ELSE COUT = 0; END IF; CQ = CQI; -將計數(shù)值向端口輸出 END PROCESS; END behav;,3.5.1 相關(guān)語法,SIGNAL d1 : STD_LOGIC_VECTOR(4 DOWNTO 0); VARIABLE a1 : STD_LOGIC_VECTOR(15 DOWNTO 0); . d1 0); a1 := (OTHERS=0);,d1 e(3),3=e(5), OTHERS=e(1) );,f

25、= e(1) ,3.5 一般計數(shù)器的VHDL設(shè)計方法,3.5.2 程序功能分析,圖3-11 例3-21的RTL電路(Synplify綜合),3.5 一般計數(shù)器的VHDL設(shè)計方法,圖3-12 例3-21的工作時序,3.5.3 移位寄存器設(shè)計,【例3-22】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY SHFRT IS - 8位右移寄存器 PORT ( CLK,LOAD : IN STD_LOGIC; DIN : IN STD_LOGIC_VECTOR(7 DOWNTO 0); QB : OUT STD_LOGIC ); END SHFRT;

26、 ARCHITECTURE behav OF SHFRT IS BEGIN PROCESS (CLK, LOAD) VARIABLE REG8 : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN IF CLKEVENT AND CLK = 1 THEN IF LOAD = 1 THEN REG8 := DIN; -由(LOAD=1)裝載新數(shù)據(jù) ELSE REG8(6 DOWNTO 0) := REG8(7 DOWNTO 1); END IF; END IF; QB = REG8(0); - 輸出最低位 END PROCESS; END behav;,3.5 一般計數(shù)器的

27、VHDL設(shè)計方法,圖3-13 例3-22的工作時序,3.5 一般計數(shù)器的VHDL設(shè)計方法,3.6 數(shù)據(jù)對象,3.6.1 常數(shù),CONSTANT 常數(shù)名:數(shù)據(jù)類型 := 表達式 ;,CONSTANT FBT : STD_LOGIC_VECTOR := 010110 ; - 標準位矢類型 CONSTANT DATAIN : INTEGER := 15; - 整數(shù)類型,3.6 數(shù)據(jù)對象,3.6.2 變量,VARIABLE 變量名 : 數(shù)據(jù)類型 := 初始值 ;,VARIABLE a : INTEGER RANGE 0 TO 15 ; -變量a定義為常數(shù),取值范圍是0到5 VARIABLE d : S

28、TD_LOGIC := 1; -變量a定義為標準邏輯位數(shù)據(jù)類型,初始值是1,目標變量名 := 表達式 ;,VARIABLE x,y : INTEGER RANGE 15 DOWNTO 0 ; -分別定義變量x和y為整數(shù)類型 VARIABLE a,b : STD_LOGIC_VECTOR(7 DOWNTO 0) ; x := 11 ; y := 2 + x ; - 運算表達式賦值,y 也是實數(shù)變量 a := b -b向a賦值 a(0 TO 5) := b(2 TO 7) ;,3.6 數(shù)據(jù)對象,3.6.3 信號,SIGNAL 信號名: 數(shù)據(jù)類型 := 初始值 ;,目標信號名 = 表達式 AFTER

29、 時間量;,SIGNAL a,b,c,y,z: INTEGER ; . PROCESS (a,b,c) BEGIN y = a + b ; z = c a ; y = b ; END PROCESS ;,3.6 數(shù)據(jù)對象,3.6.4 進程中的信號賦值與變量賦值,3.6 數(shù)據(jù)對象,【例3-23】 ARCHITECTURE bhv OF DFF3 IS BEGIN PROCESS(CLK) VARIABLE QQ: STD_LOGIC; BEGIN IF CLKEVENT AND CLK=1 THEN QQ:= D1; END IF; END PROCESS ; Q1=QQ; END ;,3.6

30、數(shù)據(jù)對象,【例3-24】 ARCHITECTURE bhv OF DFF3 IS SIGNAL QQ : STD_LOGIC ; BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN QQ = D1 ; END IF; END PROCESS ; Q1 = QQ; END ;,3.6 數(shù)據(jù)對象,【例3-25】 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF3 IS PORT ( CLK,D1 : IN STD_LOGIC ; Q1 : OUT STD_LOGIC ) ; EN

31、D ; ARCHITECTURE bhv OF DFF3 IS SIGNAL A,B : STD_LOGIC ; BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN A = D1 ; B = A ; Q1 = B ; END IF; END PROCESS ; END ;,3.6 數(shù)據(jù)對象,【例3-26】 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF3 IS PORT ( CLK,D1 : IN STD_LOGIC ; Q1 : OUT STD_LOGIC ) ; END

32、 ; ARCHITECTURE bhv OF DFF3 IS BEGIN PROCESS (CLK) VARIABLE A,B : STD_LOGIC ; BEGIN IF CLKEVENT AND CLK = 1 THEN A := D1 ; B := A ; Q1 = B ; END IF; END PROCESS ; END ;,3.6 數(shù)據(jù)對象,3.6.4 進程中的信號賦值與變量賦值,3.6 數(shù)據(jù)對象,【例3-27】 SIGNAL in1,in2,e1, . : STD_LOGIC ; . PROCESS(in1,in2,.) VARIABLE c1,.:STD_LOGIC_VECTO

33、R(3 DOWNTO 0) ; BEGIN IF in1=1 THEN . - 第 1 行 e1=“1010” ; - 第 2 行 . IF in2=0 THEN. - 第 15+n 行 . c1:= 0011; - 第 30+m 行 . END IF; END PROCESS;,【例3-28】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux4 IS PORT (i0,i1,i2,i3,a,b:IN STD_LOGIC; q:OUT STD_LOGIC); END mux4; ARCHITECTURE body_mux4 OF mux

34、4 IS signal muxval:integer range 7 downto 0; BEGIN process(i0,i1,i2,i3,a,b) begin muxvalqqqqnull; end case; end process; END body_mux4;,3.6 數(shù)據(jù)對象,3.6 數(shù)據(jù)對象,【例3-29】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux4 IS PORT (i0,i1,i2,i3,a,b:IN STD_LOGIC; q:OUT STD_LOGIC); END mux4; ARCHITECTURE bod

35、y_mux4 OF mux4 IS BEGIN process(i0,i1,i2,i3,a,b) variable muxval:integer range 7 downto 0; begin muxval:=0; if (a=1) then muxval:=muxval+1; end if; if (b=1) then muxval:=muxval+2; end if; case muxval is when 0=qqqqnull; end case; end process; END body_mux4;,圖3-16 例3-28的RTL電路,3.6 數(shù)據(jù)對象,圖3-17 例3-29的RTL

36、電路,3.6 數(shù)據(jù)對象,3.6 數(shù)據(jù)對象,3.6.4 進程中的信號賦值與變量賦值,圖3-19 例3-29中正確的工作時序,圖3-18 例3-28中錯誤的工作時序,【例3-30】 Library IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY SHIFT IS PORT(CLK,C0:IN STD_LOGIC;-時鐘和進位輸入 MD:IN STD_LOGIC_VECTOR(2 DOWNTO 0); -移位模式控制字 D:IN STD_LOGIC_VECTOR(7 DOWNTO 0); -待加載移位的數(shù)據(jù) QB:OUT STD_LOGIC_VECTOR(7 DO

37、WNTO 0); -移位數(shù)據(jù)輸出 CN:OUT STD_LOGIC); -進位輸出 END ENTITY; ARCHITECTURE BEHAV OF SHIFT IS SIGNAL REG: STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL CY: STD_LOGIC ; BEGIN PROCESS (CLK,MD,C0) BEGIN IF CLKEVENT AND CLK=1 THEN 接下頁,3.6 數(shù)據(jù)對象,CASE MD IS WHEN 001=REG(0)REG(0)REG(7)REG(7)REG(7 DOWNTO 0)REG=REG;CY=CY; -保持

38、END CASE; END IF; END PROCESS; QB(7 DOWNTO 0)=REG(7 DOWNTO 0); CN=CY; -移位后輸出 END BEHAV;,3.6 數(shù)據(jù)對象,3.6 數(shù)據(jù)對象,圖3-20 例3-30中帶進位循環(huán)左移仿真波形(MD=001),3.7 IF語句概述,【例3-31】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY control_stmts IS PORT (a,b,c:IN BOOLEAN; output:OUT BOOLEAN); END control_stmts; ARCHITECTURE

39、 example OF control_stmts IS BEGIN PROCESS (a, b, c) VARIABLE n: BOOLEAN; BEGIN IF a THEN n:=b; ELSE n:=c; END IF; output=n; END PROCESS; END example;,3.7 IF語句概述,【例3-32】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY coder IS PORT (din:IN STD_LOGIC_VECTOR(0 TO 7); output:OUT STD_LOGIC_VECTOR(0 TO

40、 2) ); END coder; ARCHITECTURE behav OF coder IS SIGNAL SINT:STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN PROCESS(din) BEGIN IF (din(7)=0) THEN output=000 ; ELSIF (din(6)=0) THEN output=100 ; ELSIF (din(5)=0) THEN output=010 ; ELSIF (din(4)=0) THEN output=110 ; ELSIF (din(3)=0) THEN output=001 ; ELSIF (din(2

41、)=0) THEN output=101 ; ELSIF (din(1)=0) THEN output=011 ; ELSE output=111 ; END IF ; END PROCESS; END behav;,3.7 IF語句概述,3.7 IF語句概述,3.8 進程語句歸納,3.8.1 進程語句格式,PROCESS語句結(jié)構(gòu)的一般表達格式如下 進程標號: PROCESS ( 敏感信號參數(shù)表 ) IS 進程說明部分 BEGIN 順序描述語句 END PROCESS 進程標號;,3.8.2 進程結(jié)構(gòu)組成,進程說明部分,順序描述語句部分,敏感信號參數(shù)表,3.8 進程語句歸納,3.8.3 進程要

42、點,1. PROCESS為一無限循環(huán)語句,2. PROCESS中的順序語句具有明顯的順序/并行運行雙重性,PROCESS(abc) BEGIN CASE abc IS WHEN 0000 = so so so so so NULL ; END CASE; END PROCESS;,3.8 進程語句歸納,3. 進程必須由敏感信號的變化來啟動,4. 進程語句本身是并行語句,5. 信號是多個進程間的通信線,6. 一個進程中只允許描述對應于一個時鐘信號的同步時序邏輯,3.8 進程語句歸納,【例3-33】 ENTITY mul IS PORT (a,b,c,selx,sely:IN BIT; data_

43、out:OUT BIT); END mul; ARCHITECTURE ex OF mul IS SIGNAL temp:BIT; BEGIN p_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;,3.9 并行賦值語句概述,【例3-3

44、4】 SIGNAL select : INTEGER RANGE 15 DOWNTO 0; . . . Select =0 WHEN s0=0 AND s1=0 ELSE 1 WHEN s0=1 AND s1=0 ELSE 2 WHEN s0=0 AND s1=1 ELSE 3 ; x = a WHEN select=0 ELSE b WHEN select=1 ELSE c WHEN select=2 ELSE d ;,3.10 雙向和三態(tài)電路信號賦值,【例3-36】LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY tri_s IS port

45、 ( enable : IN STD_LOGIC; datain : IN STD_LOGIC_VECTOR(7 DOWNTO 0); dataout : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END tri_s ; ARCHITECTURE bhv OF tri_s IS BEGIN PROCESS(enable,datain) BEGIN IF enable = 1 THEN dataout = datain ; ELSE dataout =ZZZZZZZZ ; END IF ; END PROCESS; END bhv;,3.10.1 三態(tài)門設(shè)計,3.1

46、0 雙向和三態(tài)電路信號賦值,3.10.1 三態(tài)門設(shè)計,圖3-21 8位3態(tài)控制門電路,3.10 雙向和三態(tài)電路信號賦值,【例3-36】 library ieee; use ieee.std_logic_1164.all; entity tri_state is port (control : in std_logic; in1: in std_logic_vector(7 downto 0); q : inout std_logic_vector(7 downto 0); x : out std_logic_vector(7 downto 0); end tri_state; architec

47、ture body_tri of tri_state is begin process(control,q,in1) begin if (control=0) then x=q ; else q=in1; x=“ZZZZZZZZ” ; end if; end process; end body_tri;,3.10.2 雙向端口設(shè)計,3.10 雙向和三態(tài)電路信號賦值,圖3-23 例3-36的仿真波形圖,【例3-37】 (以上部分同上例) process(control,q,in1) begin if (control=0) then x=q ; q=ZZZZZZZZ; else q = in1;

48、 x =“ZZZZZZZZ”; end if; end process; end body_tri;,3.10 雙向和三態(tài)電路信號賦值,圖3-24 例3-37的綜合結(jié)果,圖3-25 例3-37的仿真波形圖,3.10 雙向和三態(tài)電路信號賦值,3.10.3 三態(tài)總線電路設(shè)計,【例3-38】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY tristate2 IS port ( input3, input2, input1, input0 : IN STD_LOGIC_VECTOR (7 DOWNTO 0); enable : IN STD_LOG

49、IC_VECTOR (1 DOWNTO 0); output : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); END tristate2 ; ARCHITECTURE multiple_drivers OF tristate2 IS BEGIN PROCESS(enable,input3, input2, input1, input0 ) BEGIN IF enable = 00 THEN output Z); END IF ; IF enable = 01 THEN output Z); END IF ; IF enable = 10 THEN output Z);

50、 END IF ; IF enable = 11 THEN output Z); END IF ; END PROCESS; END multiple_drivers;,圖3-26 例3-38錯誤的綜合結(jié)果,3.10 雙向和三態(tài)電路信號賦值,3.10 雙向和三態(tài)電路信號賦值,【例3-39】 library ieee; use ieee.std_logic_1164.all; entity tri2 is port (ctl: in std_logic_vector(1 downto 0); datain1,datain2,datain3,datain4: in std_logic_vector

51、(7 downto 0); q:out std_logic_vector(7 downto 0); end tri2; architecture body_tri of tri2 is begin qZ) ; qZ) ; qZ) ; qZ) ; end body_tri;,圖3-27 例3-39正確的綜合結(jié)果,3.10 雙向和三態(tài)電路信號賦值,3.11 仿真延時,3.11.1 固有延時,z = x XOR y AFTER 5ns ;,z = x XOR y ;,B = A AFTER 20ns ;-固有延時模型,3.11.2 傳輸延時,B = TRANSPORT A AFTER 20 ns;- 傳輸延時模型,3.11 仿真延時,3.11.3 仿真 ,VHDL仿真器和綜合器將自動為系統(tǒng)中的信號賦值配置一足夠小而又能滿足邏輯排序的延時量,即仿真軟件的最小分辯時間,這個延時量就稱為仿真(Simulation Delta),或稱 延時,從而

溫馨提示

  • 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

提交評論