EDA課件第五章_第1頁
EDA課件第五章_第2頁
EDA課件第五章_第3頁
EDA課件第五章_第4頁
EDA課件第五章_第5頁
已閱讀5頁,還剩39頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、EDAEDA技術(shù)技術(shù)實(shí)用教程實(shí)用教程5.1 4位加法計(jì)數(shù)器的位加法計(jì)數(shù)器的VHDL描述描述5.1.1 4位加法計(jì)數(shù)器位加法計(jì)數(shù)器【例【例5-1】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 CLKEVENT AND CLK = 1 THEN Q = Q + 1 ; END IF; END PROCESS ;END bhv;5.1.2 整數(shù)、自然數(shù)和正整數(shù)數(shù)據(jù)類型

2、整數(shù)、自然數(shù)和正整數(shù)數(shù)據(jù)類型整數(shù)常量的書寫方式示例如下:整數(shù)常量的書寫方式示例如下:1 1 十進(jìn)制整數(shù)十進(jìn)制整數(shù)0 0 十進(jìn)制整數(shù)十進(jìn)制整數(shù)3535 十進(jìn)制整數(shù)十進(jìn)制整數(shù)1010E3E3 十進(jìn)制整數(shù)十進(jìn)制整數(shù)16#16#D9#D9# 十六進(jìn)制整數(shù)十六進(jìn)制整數(shù)8#720#8#720# 八進(jìn)制整數(shù)八進(jìn)制整數(shù) 2#11010010# 2#11010010# 二進(jìn)制整數(shù)二進(jìn)制整數(shù)5.1 4位加法計(jì)數(shù)器的位加法計(jì)數(shù)器的VHDL描述描述5.1.3 4位加法計(jì)數(shù)器的另一種表達(dá)方式位加法計(jì)數(shù)器的另一種表達(dá)方式【例【例5-2】 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL

3、 ; 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 ISSIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = Q1 + 1 ; END IF; Q XOTHERS=X) 為了簡(jiǎn)化表達(dá)才使用短語為了簡(jiǎn)

4、化表達(dá)才使用短語“(“(OTHERS=X)”O(jiān)THERS=X)”,這是一個(gè)省略賦這是一個(gè)省略賦值操作符,它可以在較多位的位矢量賦值中作省略化的賦值,值操作符,它可以在較多位的位矢量賦值中作省略化的賦值,如以下語句:如以下語句: SIGNAL d1 : STD_LOGIC_VECTOR(4 DOWNTO 0); VARIABLE a1 : STD_LOGIC_VECTOR(15 DOWNTO 0); . d1 0); a1 := (OTHERS=0) ;5.2.2 帶有復(fù)位和時(shí)鐘使能的帶有復(fù)位和時(shí)鐘使能的10進(jìn)制計(jì)數(shù)器進(jìn)制計(jì)數(shù)器LIBRARY IEEE;USE IEEE.STD_LOGIC_11

5、64.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 IS PORT (CLK,RST,EN : IN STD_LOGIC; CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT : OUT STD_LOGIC ); END CNT10;ARCHITECTURE behav OF CNT10 ISBEGIN PROCESS(CLK, RST, EN) VARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF RST = 1 THEN CQI := (OTHERS

6、 =0) ; -計(jì)數(shù)器復(fù)位計(jì)數(shù)器復(fù)位 ELSIF CLKEVENT AND CLK=1 THEN -檢測(cè)時(shí)鐘上升沿檢測(cè)時(shí)鐘上升沿 IF EN = 1 THEN -檢測(cè)是否允許計(jì)數(shù)檢測(cè)是否允許計(jì)數(shù) IF CQI 0);-大于大于9,計(jì)數(shù)值清零,計(jì)數(shù)值清零 END IF; END IF; END IF; IF CQI = 1001 THEN COUT = 1; -計(jì)數(shù)大于計(jì)數(shù)大于9,輸出進(jìn)位信號(hào),輸出進(jìn)位信號(hào) ELSE COUT = 0; END IF; CQ = CQI; -將計(jì)數(shù)值向端口輸出將計(jì)數(shù)值向端口輸出 END PROCESS;END behav;【例【例5-3】圖圖5-3 例例5-3的

7、的RTL電路電路圖圖5-4 例例5-3的工作時(shí)序的工作時(shí)序5.2.3 帶有并行置位的移位寄存器帶有并行置位的移位寄存器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;ARCHITECTURE behav OF SHFRT IS BEGIN PROCESS (CLK, LOAD) VARIABLE

8、REG8 : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN IF CLKEVENT AND CLK = 1 THEN IF LOAD = 1 THEN - 裝載新數(shù)據(jù)裝載新數(shù)據(jù) REG8 := DIN; ELSE REG8(6 DOWNTO 0) := REG8(7 DOWNTO 1); END IF; END IF; QB = REG8(0); END PROCESS; - 輸出最低位輸出最低位END behav;【例5-4】5.2.3 帶有并行置位的移位寄存器帶有并行置位的移位寄存器圖圖5-5 例例5-4的工作時(shí)序的工作時(shí)序(1 1)在第)在第一個(gè)時(shí)鐘到來時(shí),一個(gè)

9、時(shí)鐘到來時(shí),LOADLOAD恰為高電平恰為高電平(2 2)第二個(gè)時(shí)鐘,以及以后的時(shí)鐘信號(hào)都是移位時(shí)鐘)第二個(gè)時(shí)鐘,以及以后的時(shí)鐘信號(hào)都是移位時(shí)鐘(3 3)第二)第二個(gè)時(shí)鐘后,個(gè)時(shí)鐘后,QBQB輸出了右移出的第輸出了右移出的第2 2個(gè)位個(gè)位115.3 數(shù)據(jù)對(duì)象數(shù)據(jù)對(duì)象DATA OBJECTS5.3.1 常數(shù)(常數(shù)(CONSTANT)常數(shù)定義的一般表述:常數(shù)定義的一般表述: CONSTANT 常數(shù)名:數(shù)據(jù)類型常數(shù)名:數(shù)據(jù)類型 := 表達(dá)式表達(dá)式 ;5.3.2 變量(變量(VARIABLE)定義變量的一般表述:定義變量的一般表述: VARIABLE 變量名變量名 : 數(shù)據(jù)類型數(shù)據(jù)類型 := 初始值初

10、始值 ; 5.3.3 信號(hào)(信號(hào)(SIGNAL)定義格式:定義格式: SIGNAL 信號(hào)名:信號(hào)名: 數(shù)據(jù)類型數(shù)據(jù)類型 := 初始值初始值 ;5.3 數(shù)據(jù)對(duì)象數(shù)據(jù)對(duì)象DATA OBJECTS5.3.4 進(jìn)程中的信號(hào)與變量賦值語句進(jìn)程中的信號(hào)與變量賦值語句 信號(hào)信號(hào)SIGNAL 變量變量VARIABLE基本用法基本用法 用于作為電路中的信號(hào)連線用于作為電路中的信號(hào)連線 用于作為進(jìn)程中局部數(shù)據(jù)存儲(chǔ)單元用于作為進(jìn)程中局部數(shù)據(jù)存儲(chǔ)單元適用范圍適用范圍 在整個(gè)結(jié)構(gòu)體內(nèi)的任何地方都能適用在整個(gè)結(jié)構(gòu)體內(nèi)的任何地方都能適用只能在所定義的進(jìn)程中使用只能在所定義的進(jìn)程中使用行為特性行為特性 在進(jìn)程的最后才對(duì)信號(hào)賦

11、值在進(jìn)程的最后才對(duì)信號(hào)賦值 立即賦值立即賦值表表5-1 信號(hào)與變量賦值語句功能的比較信號(hào)與變量賦值語句功能的比較5.3.4 進(jìn)程中的信號(hào)與變量賦值語句進(jìn)程中的信號(hào)與變量賦值語句【例【例5-5】 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF3 IS PORT ( CLK,D1 : IN STD_LOGIC ; Q1 : OUT STD_LOGIC); END ; ARCHITECTURE bhv OF DFF3 IS BEGIN PROCESS (CLK) VARIABLE QQ : STD_LOGIC ; BEGIN IF CL

12、KEVENT AND CLK = 1 THEN QQ := D1 ; END IF; Q1 = QQ; END PROCESS ; END ;5.3.4 進(jìn)程中的信號(hào)與變量賦值語句進(jìn)程中的信號(hào)與變量賦值語句【例例5-6】 . . . ARCHITECTURE bhv OF DFF3 IS SIGNAL QQ : STD_LOGIC ; BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK =1 THEN QQ = D1 ; END IF; Q1 = QQ; END PROCESS ; END ;5.3.4 進(jìn)程中的信號(hào)與變量賦值語句進(jìn)程中的信號(hào)與變量賦值語

13、句【例【例5-7】 SIGNAL in1,in2,e1, . : STD_LOGIC ; . PROCESS(in1,in2, . . .) VARIABLE c1,. . . : STD_LOGIC_VECTOR(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;【例【例5-8】 LIBRARY IEEE ; USE IEEE.ST

14、D_LOGIC_1164.ALL ; ENTITY DFF3 IS PORT ( CLK,D1 : IN STD_LOGIC ; Q1 : OUT STD_LOGIC); END ; 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 ;5.3.4 進(jìn)程中的信號(hào)與變量賦值語句進(jìn)程中的信號(hào)與變量賦值語句【例【例5-9】LIBRARY IEE

15、E ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF3 IS PORT ( CLK,D1 : IN STD_LOGIC ; Q1 : OUT STD_LOGIC); END ; 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 ;5.3.4 進(jìn)程中的信號(hào)與變量賦值語句進(jìn)程中的信號(hào)與變量賦值語句5

16、.3.4 進(jìn)程中的信號(hào)與變量賦值語句進(jìn)程中的信號(hào)與變量賦值語句DQDQDQDQD1Q1D1Q1CLKCLK圖圖5-6例例5-7的的RTL電路電路 圖圖5-7 例例5-8的的RTL電路電路 【例【例5-10】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 ISPORT (i0, i1, i2, i3, a, b : IN STD_LOGIC; q : OUT STD_LOGIC);END mux4;ARCHITECTURE body_mux4 OF mux4 ISsignal muxval : integer range 7 downto

17、 0;BEGINprocess(i0,i1,i2,i3,a,b)begin muxval = 0;if (a = 1) then muxval = muxval + 1; end if;if (b = 1) then muxval q q q q null;end case;end process; END body_mux4;【例【例5-11】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 ISPORT (i0, i1, i2, i3, a, b : IN STD_LOGIC; q : OUT STD_LOGIC);END mux4;

18、ARCHITECTURE body_mux4 OF mux4 ISBEGINprocess(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 = q q q q null;end case;end process; END body_mux4;圖圖5-8 例例5-10的的

19、RTL電路電路例例5-11的的RTL電路電路圖圖5-10 例例5-10的錯(cuò)誤的工作時(shí)序的錯(cuò)誤的工作時(shí)序圖圖5-11 例例5-11的正確工作時(shí)序的正確工作時(shí)序5.4 雙向電路和三態(tài)控制電路設(shè)計(jì)雙向電路和三態(tài)控制電路設(shè)計(jì)5.4.1 三態(tài)門設(shè)計(jì)三態(tài)門設(shè)計(jì)【例【例5-12】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY tri_s IS port ( enable : IN STD_LOGIC; datain : IN STD_LOGIC_VECTOR(7 DOWNTO 0); dataout : OUT STD_LOGIC_VECTOR(7 DOWNT

20、O 0);END tri_s ; ARCHITECTURE bhv OF tri_s ISBEGINPROCESS(enable,datain) BEGIN IF enable = 1 THEN dataout = datain ; ELSE dataout =ZZZZZZZZ ; END IF ;END PROCESS;END bhv;圖圖5-12 8位位3態(tài)控制門電路態(tài)控制門電路5.4.2 雙向端口設(shè)計(jì)雙向端口設(shè)計(jì)【例【例5-13】library ieee;use ieee.std_logic_1164.all;entity tri_state isport (control : in s

21、td_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;architecture body_tri of tri_state isbeginprocess(control,q,in1)beginif (control = 0) then x = q ; else q = in1; x=ZZZZZZZZ ;end if;end process;end body_tri;5.4.

22、2 雙向端口設(shè)計(jì)雙向端口設(shè)計(jì)圖圖5-13 例例5-13的仿真波形圖的仿真波形圖5.4.2 雙向端口設(shè)計(jì)雙向端口設(shè)計(jì)【例【例5-14】(以上部分同上例)(以上部分同上例)process(control,q,in1)beginif (control=0) then x = q ; q = ZZZZZZZZ; else q = in1; x =ZZZZZZZZ;end if;end process;end body_tri;圖圖5-14 例例5-14的仿真波形圖的仿真波形圖5.4.2 雙向端口設(shè)計(jì)雙向端口設(shè)計(jì)圖圖5-15 例例5-13的綜合結(jié)果的綜合結(jié)果6.4.2 雙向端口設(shè)計(jì)雙向端口設(shè)計(jì)圖圖6-1

23、6 例例6-14的綜合結(jié)果的綜合結(jié)果5.4.3 三態(tài)總線電路設(shè)計(jì)三態(tài)總線電路設(shè)計(jì)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_LOGIC_VECTOR(1 DOWNTO 0); output : OUT STD_LOGIC_VECTOR (7 DOWNTO 0);END tristate2 ; ARCHITECTURE multiple_dr

24、ivers OF tristate2 ISBEGINPROCESS(enable,input3, input2, input1, input0 ) BEGIN IF enable = 00 THEN output = input3 ; ELSE output Z); END IF ; IF enable = 01 THEN output = input2 ; ELSE output Z); END IF ; IF enable = 10 THEN output = input1 ; ELSE output Z); END IF ; IF enable = 11 THEN output = in

25、put0 ; ELSE output Z); END IF ;END PROCESS;END multiple_drivers;【例5-15】5.4.3 三態(tài)總線電路設(shè)計(jì)三態(tài)總線電路設(shè)計(jì)圖圖5-17 例例5-15錯(cuò)誤的綜合結(jié)果錯(cuò)誤的綜合結(jié)果5.4.3 三態(tài)總線電路設(shè)計(jì)三態(tài)總線電路設(shè)計(jì)library ieee;use ieee.std_logic_1164.all;entity tri isport (ctl : in std_logic_vector(1 downto 0); datain1, datain2,datain3, datain4 : in std_logic_vector(7 d

26、ownto 0); q : out std_logic_vector(7 downto 0) );end tri;architecture body_tri of tri isbegin q Z) ; q Z) ; q Z) ; q Z) ;end body_tri;【例【例5-16】5.4.3 三態(tài)總線三態(tài)總線電路設(shè)計(jì)電路設(shè)計(jì)圖圖5-18 例例5-16正正確的綜合結(jié)果確的綜合結(jié)果5.4.4 順序條件語句順序條件語句IF語句語句(1)IF 條件句條件句 Then 順序語句順序語句 END IF ;(2)IF 條件句條件句 Then 順序語句順序語句; ELSE 順序語句順序語句; END IF

27、 ;(3)IF 條件句條件句 Then IF 條件句條件句 Then . END IF; END IF; (4)IF 條件句條件句1 Then 順序語句順序語句; ELSIF 條件句條件句2 then 順序語句順序語句; ELSIF 條件句條件句3 then . ELSE 順序語句順序語句; END IF; 5.4.4 順序條件語句順序條件語句IF語句語句【例【例5-17】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY control_stmts ISPORT (a, b, c: IN BOOLEAN; output: OUT BOOLEA

28、N); END control_stmts; ARCHITECTURE 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;5.4.4 順序條件語句順序條件語句IF語句語句【例【例5-18】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY coder IS PORT ( din : IN STD

29、_LOGIC_VECTOR(0 TO 7); output : OUT STD_LOGIC_VECTOR(0 TO 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) T

30、HEN output = 110 ; ELSIF (din(3)=0) THEN output = 001 ; ELSIF (din(2)=0) THEN output = 101 ; ELSIF (din(1)=0) THEN output = 011 ; ELSE output = 111 ; END IF ; END PROCESS ; END behav;表表5-2 8線線-3線優(yōu)先編碼器真值表線優(yōu)先編碼器真值表 輸輸 入入 輸輸 出出 din0 din1 din2 din3 din4 din5 din6 din7 output0 output1 output2 din0 din1 d

31、in2 din3 din4 din5 din6 din7 output0 output1 output2 x x x x x x x 0 0 0 0 x x x x x x x 0 0 0 0 x x x x x x 0 1 1 0 0 x x x x x x 0 1 1 0 0 x x x x x 0 1 1 0 1 0 x x x x x 0 1 1 0 1 0 x x x x 0 1 1 1 1 1 0 x x x x 0 1 1 1 1 1 0 x x x 0 1 1 1 1 0 0 1 x x x 0 1 1 1 1 0 0 1 x x 0 1 1 1 1 1 1 0 1 x x 0 1 1 1 1 1 1 0 1 x 0 1 1 1 1 1 1 0 1 1 x 0 1 1 1 1 1 1 0 1 1 x 1 1 1 1 1 1 1 1 1 1 x 1 1 1 1 1 1 1 1 1 1注:表中的注:表中的“x”為任意,類似為任意,類似VHDL中的中的“”值。值。5.4.4 順序條件語句順序條件語句IF語句語句5.5 進(jìn)程語句結(jié)構(gòu)進(jìn)程語句結(jié)構(gòu) 5.5.1 進(jìn)程語句格式進(jìn)程語句格式PROCESS語句結(jié)構(gòu)的一般表達(dá)格式如下

溫馨提示

  • 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)論