EDA技術(shù)實用教程4_第1頁
EDA技術(shù)實用教程4_第2頁
EDA技術(shù)實用教程4_第3頁
EDA技術(shù)實用教程4_第4頁
EDA技術(shù)實用教程4_第5頁
已閱讀5頁,還剩70頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 Very high speed integrated circuit Hardware Description Language (VHDL)y是IEEE、工業(yè)標準硬件描述語言y用語言的方式而非圖形等方式描述硬件電路x容易修改x容易保存y特別適合于設(shè)計的電路有:x復雜組合邏輯電路,如: 譯碼器、編碼器、加減法器、多路選擇器、地址譯碼器.x狀態(tài)機x等等.是什么是VHDL?Labz VHDL 描述y輸入端口y輸出端口y電路的行為和功能zVHDL有過兩個標準:yIEEE Std 1076-1987 (called VHDL 1987)yIEEE Std 1076-1993 (called VHDL

2、 1993)VHDLVHDL的功能和標準的功能和標準Lab 簡單組合電路的VHDL描述z多路選擇器Lab多路選擇器的多路選擇器的VHDLVHDL描述描述2選選1多路選擇器多路選擇器absymux21Lab圖圖 mux21a功能時序波形功能時序波形多路選擇器功能示意波形Lab【例】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 ARCHITECTU

3、RE one ;實體結(jié)構(gòu)體2選選1多路選擇器的多路選擇器的VHDL描述描述實體Lab實體(ENTITYENTITY)ENTITY mux21a IS PORT( a, b : IN BIT ; s : IN BIT; y : OUT BIT ) ;END ENTITY mux21a ;實體實體名端口類型數(shù)據(jù)類型Lab 實體名實體名 PORT PORT語句和端口信號名語句和端口信號名 端口類型端口類型INOUTINOUTBUFFER 數(shù)據(jù)類型:數(shù)據(jù)類型:BITBIT實體 相關(guān)VHDL語法Lab【例【例】ENTITY e_name IS PORT ( p_name : port_m data_ty

4、pe; . p_namei : port_mi data_type );END ENTITY e_name;或:或:ENTITY e_name IS PORT ( p_name : port_m data_type; . p_namei : port_mi data_type );END e_name;實體表達實體表達Lab結(jié)構(gòu)體(ARCHITECTUREARCHITECTURE)ARCHITECTURE one OF mux21a IS BEGIN y = a WHEN s = 0 ELSE b ;END ARCHITECTURE one ;結(jié)構(gòu)體結(jié)構(gòu)體名VHDL功能描述實體名Lab【例【例

5、】ARCHITECTURE arch_name OF e_name IS (說明語句說明語句)BEGIN (功能描述語句功能描述語句)END ARCHITECTURE arch_name ;或:或:ARCHITECTURE arch_name OF e_name IS (說明語句說明語句)BEGIN (功能描述語句功能描述語句)END arch_name ;結(jié)構(gòu)體表達結(jié)構(gòu)體表達Lab信號傳輸信號傳輸( (賦值賦值) )符號和數(shù)據(jù)比較符號符號和數(shù)據(jù)比較符號z信號傳輸信號傳輸( (賦值賦值) )符號符號: :y=z數(shù)據(jù)比較符號數(shù)據(jù)比較符號: :y= , = , LabWHEN_ELSEWHEN_E

6、LSE條件信號賦值語句條件信號賦值語句賦值目標賦值目標 = 表達式表達式 WHEN 賦值條件賦值條件 ELSE 表達式表達式 WHEN 賦值條件賦值條件 ELSE . 表達式表達式 ;y = a WHEN s = 0 ELSE b ;Lab【例例】 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

7、OR e ; END ARCHITECTURE one ;【例【例】 . . . ARCHITECTURE one OF mux21a IS BEGIN y = (a AND (NOT s) OR (b AND s) ; END ARCHITECTURE one;2選選1多路選擇器的多路選擇器的VHDL描述(其它)描述(其它)Lab邏輯操作符邏輯操作符VHDLVHDL的邏輯操作符直接用文字來表示:的邏輯操作符直接用文字來表示:如:如:AND AND 與與OROR 或或NOTNOT 非非XORXOR 異或異或Lab【例【例】 ENTITY mux21a IS PORT ( a, b, s: IN

8、 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 ;2選選1多路選擇器的多路選擇器的VHDL描述(其它)描述(其它)LabIF_THENIF_THEN條件語句條件語句IF s = 0 THENy = a ; ELSE y = b ;END IF;LabPROCESSPROCESS進程語句進程語句在下一節(jié)詳

9、細講述,請課后預習Lab數(shù)據(jù)類型信號賦值符條件比較符實體結(jié)構(gòu)體端口定義端口模式邏輯操作符IF條件語句WHEN條件語句VHDL設(shè)計的基本概念和語句小節(jié)設(shè)計的基本概念和語句小節(jié)LabyGraphic is what you draw is what you getx“ tell me what hardware you want and I will give it to you”yVHDL is what you write is what functional you getx“ tell me how your circuit should behave and the VHDL compi

10、ler will give you the hardware that does the job”x but the designer can not control how the circuit implement原理圖輸入與 VHDL文本輸入設(shè)計的區(qū)別LabzEasy to ModifyzIt is more powerful than GraphiczVHDL is a portable language becauseyis device independentythe same code can be applied to Device manufactured by Compan

11、y A or Company B Why using VHDL instead of GraphicLabzVHDL: “tell me how your circuit should behave and I will give you hardware that does the job”zABEL, PALASM, AHDL:“tell me what hardware you want and I will give it to you”VHDL Synthesis vs. other HDLs SynthesisLab寄存器描述及其寄存器描述及其VHDL語言現(xiàn)象語言現(xiàn)象D觸發(fā)器Lab

12、【例】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 DFF1;ARCHITECTURE bhv OF DFF1 ISBEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q = D ; END IF; END PROCESS ; END bhv;D觸發(fā)器觸發(fā)器D觸發(fā)器的觸發(fā)器的VHDL描述描述標準邏輯位進程體邊沿檢測庫與程序包聲明

13、Lab設(shè)計庫(設(shè)計庫(LIBRARY)z格式:yLIBRARY zIEEE標準庫:yLIBRARY IEEEz默認加載的設(shè)計庫ySTD標準庫yWORK工作庫(當前設(shè)計)Lab程序包的使用(程序包的使用(USE)z格式:yLIBRARY ;yUSE .ALL;zIEEE標準庫中的STD_LOGIC_1164:z含STD_LOGIC及STD_LOGIC_VECTOR的定義zIEEE 1164LabSTD_LOGICzBIT數(shù)據(jù)類型的定義:zTYPE BIT IS (0,1);zSTD_LOGIC數(shù)據(jù)類型:y(U,X,0,1,Z,W,L,H,-) 九值邏輯STD_LOGIC所定義的9種數(shù)據(jù)的含義是:

14、UU表示未初始化的;表示未初始化的; XX表示強未知的;表示強未知的; 0 0表示強表示強邏輯邏輯0 0; 1 1表示強邏輯表示強邏輯1 1; ZZ表示高阻態(tài);表示高阻態(tài); W W 表示弱未知的;表示弱未知的; LL表示弱邏輯表示弱邏輯0 0; HH表示弱表示弱邏輯邏輯1 1; - -表示忽略。表示忽略。LabSTD_LOGIC的綜合器支持對于STD_LOGIC類型,綜合器只支持X(或-),0,1,ZLab上升沿檢測上升沿檢測zCLKEVENT AND CLK = 1z信號屬性EVENTyEVENTz函數(shù)yRISING_EDGE(CLK)Lab比較用5種不同語句的D觸發(fā)器VHDL程序Entit

15、y test1 isport (clk, d : in bit; q : out bit);end test1;architecture body of test1 issignal q1 : bit ;beginprocess (clk)beginif clk=1 AND clklast_value=0 then q1 = d; end if;end process; q = q1 ;end test1_body;LabLIBRARY IEEE;USE IEEE.std_logic_1164.all;Entity test1 isport (clk, d : in bit; q : out

16、bit);end test1;architecture body of test1 isbeginprocess (clk,d)begin if rising_edge(clk) then q = d;end process; end if;end test1_body;LabEntity test1 isport (clk : in bit; d : in bit; q : out bit);end test1;architecture body of test1 issignal q1 : bit ;beginprocess (clk)begin if (clk = 1) then q1

17、= d; end if;end process; q = q1 ;end body;LabEntity test1 isport (clk : in bit; d : in bit; q : out bit);end test1;architecture body of test1 isbeginprocessbegin wait until (clkevent and clk=1); q = d;end process;end body;LabEntity test1 isport (clk, d : in bit; q : out bit);end test1;architecture b

18、ody of test1 issignal q1 : bit ;beginprocess (clk)begin if clk=1 AND clklast_value=0 then q1 = d; end if;end process; q = q1 ;end test1_body;LIBRARY IEEE;USE IEEE.std_logic_1164.all;Entity test1 isport (clk, d : in bit; q : out bit);end test1;architecture body of test1 isbeginprocess (clk,d)begin if

19、 rising_edge(clk) then q = d; end if;end process;end test1_body;Entity test1 isport (clk : in bit; d : in bit; q : out bit);end test1;architecture body of test1 isbeginprocessbegin wait until (clkevent and clk=1); q = d;end process;end body;Entity test1 isport (clk : in bit; d : in bit; q : out bit)

20、;end test1;architecture body of test1 issignal q1 : bit ;beginprocess (clk)begin if (clk = 1) then q1 = d; end if;end process;q = q1 ;end body;5種不同語句的D觸發(fā)器VHDL程序Lab進程(PROCESS)z敏感信號z進程體z順序語句z并行語句LabHow Many Registers?ENTITY reg1 ISPORT ( d : in BIT;clk : in BIT;q: out BIT);END reg1;ARCHITECTURE reg1 O

21、F reg1 ISSIGNAL a, b : BIT;BEGINPROCESS (clk)BEGINIF clk=1 AND clkevent THENa = d;b = a;q b1 THEN q1 = 1 ; ELSIF a1 b1 THEN q1 b1 THEN q1 = 1 ; ELSE q1 = 0 ; END IF; END PROCESS ; END 圖圖 例例3-12的電路圖的電路圖完整條件語句完整條件語句Lab【例【例】.PROCESS (CLK) BEGINIF CLKEVENT AND (CLK=1) AND (CLKLAST_VALUE=0) THEN Q = D ;

22、-確保確保CLK的變化是一次上升沿的跳變的變化是一次上升沿的跳變 END IF; END PROCESS ;【例【例】.PROCESS (CLK) BEGINIF CLK=1 AND CLKLAST_VALUE=0 -同例同例3-13 THEN Q = D ; END IF; END PROCESS ;3.2.3 實現(xiàn)時序電路的實現(xiàn)時序電路的VHDL不同表達方式不同表達方式Lab【例【例】LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY DFF3 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ;

23、Q : OUT STD_LOGIC ); END ; ARCHITECTURE bhv OF DFF3 IS SIGNAL Q1 : STD_LOGIC; BEGIN PROCESS (CLK) BEGIN IF rising_edge(CLK) - CLK的數(shù)據(jù)類型必須是的數(shù)據(jù)類型必須是STD_LOGIC THEN Q1 = D ; END IF; Q = Q1 ; END PROCESS ; END ;實現(xiàn)時序電路的實現(xiàn)時序電路的VHDL不同表達方式不同表達方式Lab【例】 . PROCESS BEGIN wait until CLK = 1 ; -利用利用wait語句語句 Q = D ;

24、 END PROCESS;【例】. PROCESS (CLK) BEGIN IF CLK = 1 THEN Q = D ; -利用進程的啟動特性產(chǎn)生對利用進程的啟動特性產(chǎn)生對CLK的邊沿檢測的邊沿檢測 END IF; END PROCESS ;【例】. PROCESS (CLK,D) BEGIN IF CLK = 1 -電平觸發(fā)型寄存器電平觸發(fā)型寄存器 THEN Q = D ; END IF; END PROCESS ;實現(xiàn)時序電路的實現(xiàn)時序電路的VHDL不同表達方式不同表達方式Lab圖圖 邊沿型觸發(fā)器時序波形邊沿型觸發(fā)器時序波形圖圖 電平觸發(fā)型寄存器的時序波形電平觸發(fā)型寄存器的時序波形實現(xiàn)時

25、序電路的實現(xiàn)時序電路的VHDL不同表達方式不同表達方式Lab. ARCHITECTURE bhv OF MULTI_DFF IS SIGNAL Q1,Q2 : STD_LOGIC; BEGINPRO1: PROCESS (CLK) BEGIN IF CLKEVENT AND CLK=1 THEN Q1 = NOT (Q2 OR A); END IF; END PROCESS ;PRO2:PROCESS (Q1) BEGIN IF Q1EVENT AND Q1=1 THEN Q2 = D; END IF; QQ = Q2 ; END PROCESS ; 圖圖 例例3-19綜合的電路綜合的電路異步

26、時序電路設(shè)計異步時序電路設(shè)計Lab數(shù)據(jù)類型數(shù)據(jù)對象信號屬性時鐘檢測VHDL庫程序包時序電路異步時序VHDL設(shè)計基本概念和語言現(xiàn)象小節(jié)設(shè)計基本概念和語言現(xiàn)象小節(jié)Lab 4.3 含有層次結(jié)構(gòu)的VHDL描述z以下通過一個一位二進制全加器的設(shè)計一位二進制全加器的設(shè)計流程,介紹含有層次結(jié)構(gòu)的VHDL程序,其中包含兩個重要的語句,元件調(diào)用聲明語句和元件例化語句。Lab圖圖 半加器半加器h_adder電路圖電路圖圖圖 全加器全加器f_adder電路圖電路圖 1位二進制全加器的位二進制全加器的VHDL設(shè)計設(shè)計Lababsoco0000011010101101表表4-1 半加器半加器h_adder邏輯功能真值表

27、邏輯功能真值表1. 1. CASECASE語句語句CASE語句的一般表式是:語句的一般表式是:CASE ISWhen = ; . ; ;When = ; . ; ;.END CASE ;半加器描述和半加器描述和CASE語句語句Lab2. 2. 標準邏輯矢量數(shù)據(jù)類型標準邏輯矢量數(shù)據(jù)類型STD_LOGIC_VECTORSTD_LOGIC_VECTOR3. 3. 并置操作符并置操作符 以下是一些并置操作示例:以下是一些并置操作示例:SIGNAL a : STD_LOGIC_VECTOR (3 DOWNTO 0) ;SIGNAL d : STD_LOGIC_VECTOR (1 DOWNTO 0) ;

28、.a = 1 0 d(1) 1 ; - 元素與元素并置,并置后的數(shù)組長度為元素與元素并置,并置后的數(shù)組長度為4 .IF a d = 101011 THEN . - 在在IF條件句中可以使用并置符條件句中可以使用并置符 在使用STD_LOGIC_VECTOR中,必須注明其數(shù)組寬度,即位寬,如: B : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ; 或或 SIGNAL A :STD_LOGIC_VECTOR(1 TO 4)半加器描述和半加器描述和CASE語句語句Lab【例】 LIBRARY IEEE ;-或門邏輯描述 USE IEEE.STD_LOGIC_1164.ALL;

29、 ENTITY 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 fu1;【例】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; ARCHITECTUR

30、E fh1 OF adder is BEGIN so = NOT(a XOR (NOT b) ; co = a AND b ; END ARCHITECTURE fh1; 半加器描述和半加器描述和CASE語句語句Lab【例】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_adder; ARCHITECTURE fh1 OF h_adder is SIGNAL abc : ST

31、D_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 ;Lab【例】 . -半加器描述(3) SIGNAL abc,cso : 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,

32、co=f,so=sum); u3 : or2a PORT MAP(a=d, b=f, c=cout); END ARCHITECTURE fd1;Lab 元件例化語句由兩部分組成,第一部分是對一個現(xiàn)成的設(shè)計實體定元件例化語句由兩部分組成,第一部分是對一個現(xiàn)成的設(shè)計實體定義為一個元件,語句的功能是對待調(diào)用的元件作出義為一個元件,語句的功能是對待調(diào)用的元件作出調(diào)用聲明調(diào)用聲明,它的最,它的最簡表達式如下所示:簡表達式如下所示: COMPONENT 元件名元件名 IS PORT (端口名表端口名表) ; END COMPONENT 文件名文件名 ; 元件例化語句的第二部分則是此元件與當前設(shè)計實體元件

33、例化語句的第二部分則是此元件與當前設(shè)計實體(頂層文件頂層文件)中中元件間及端口的元件間及端口的連接說明連接說明。語句的表達式如下:。語句的表達式如下: 例化名例化名 : 元件名元件名 PORT MAP( 端口名端口名 = 連接端口名連接端口名,.);全加器描述和例化語句全加器描述和例化語句Lab全加器描述z LIBRARY IEEE; -1位二進制全加器頂層設(shè)計描述z USE IEEE.STD_LOGIC_1164.ALL;z USE IEEE.STD_LOGIC_UNSIGNED.ALL;z ENTITY adder ISz PORT (ain,bin,cin : IN STD_LOGIC;

34、z cout,sum : OUT STD_LOGIC );z END ENTITY adder;z ARCHITECTURE RTL OF adder ISz SIGNAL ADDO : STD_LOGIC_VECTOR(1 DOWNTO 0); z BEGINz ADDO= 0&AIN+ BIN +CIN;z SUM=ADDO(0);COUT=ADDO(1);z END ARCHITECTURE RTL;Lab 4.4 計數(shù)器設(shè)計z 【例4-20】z ENTITY CNT4 IS z PORT ( CLK : IN BIT ; z Q : BUFFER INTEGER RANGE 15 DO

35、WNTO 0 ) ; z END ; z ARCHITECTURE bhv OF CNT4 ISz BEGIN z PROCESS (CLK) z BEGIN z IF CLKEVENT AND CLK = 1 THEN z Q = Q + 1 ; z END IF;z END PROCESS ;z END bhv;Lab4位加法計數(shù)器 z注意:表面上注意:表面上BUFFER具有雙向端口具有雙向端口INOUT的功能,但實際上其輸入功能是不的功能,但實際上其輸入功能是不完整的,它只能將自己輸出的信號再反饋完整的,它只能將自己輸出的信號再反饋回來,并不含有回來,并不含有IN的功能。的功能。z建議:

36、不使用建議:不使用BufferLab 整數(shù)類型z整數(shù)常量的書寫方式示例如下:z1十進制整數(shù)z0十進制整數(shù)z35 十進制整數(shù)z10E3十進制整數(shù),等于十進制整數(shù)1000z16#D9# 十六進制整數(shù),等于十六進制整數(shù)D9Hz8#720# 八進制整數(shù),等于八進制整數(shù)720Oz2#11010010# 二進制整數(shù),等于二進制整數(shù)11010010 Labz自然數(shù)類型NATURAL z正整數(shù)類型POSITIVE z與BIT、BIT_VECTOR一樣,數(shù)據(jù)類型INTEGER、NATURAL和POSITIVE都定義在VHDL標準程序包STANDARD中。由于是默認打開的,所以在例4-20中,沒有以顯式打開STD

37、庫和程序包STANDARD。 Lab 計數(shù)器設(shè)計的另一種表述z【例例4-21】z LIBRARY IEEE ; z USE IEEE.STD_LOGIC_1164.ALL ; z USE IEEE.STD_LOGIC_UNSIGNED.ALL ; z ENTITY CNT4 IS z PORT ( CLK : IN STD_LOGIC ; z Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) ; z END ; z ARCHITECTURE bhv OF CNT4 ISzSIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0);z BEGIN z PROCESS (CLK) z BEGIN z IF CLKEVENT AND CLK = 1 THENz Q1 = Q1 + 1 ; z END IF;z END PROCESS ;z Q 0) ; -計數(shù)器異步復位計數(shù)器異步復位 z ELSIF CLKEVENT AND CLK=1 THEN -檢測時鐘上升沿檢測時鐘上升沿z IF EN = 1 THEN -檢測是否允許計數(shù)(同步

溫馨提示

  • 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

提交評論