第5章基本邏輯電路的VHDL設計_第1頁
第5章基本邏輯電路的VHDL設計_第2頁
第5章基本邏輯電路的VHDL設計_第3頁
第5章基本邏輯電路的VHDL設計_第4頁
第5章基本邏輯電路的VHDL設計_第5頁
已閱讀5頁,還剩95頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第第5章章 基本邏輯電路的基本邏輯電路的VHDL設計設計【學習目標【學習目標】 通過本章學習應掌握組合邏輯電路設計,主要有基本門電路、編碼器、譯碼器、加法器、三態輸出電路等組合邏輯電路設計技術;時序邏輯電路設計,主要有觸發器、移位寄存器、計數器等時序邏輯電路設計技術;狀態機基本概念、狀態機設計流程、一般有限狀態機的VHDL設計、Moore型有限狀態機設計、Mealy型有限狀態機設計、有限狀態機的編碼等。5.1 組合邏輯電路設計組合邏輯電路設計5.1.1 基本門電路設計基本門電路設計 1與非門電路與非門電路 與非門電路包括二輸入與非門、三輸入與非門、四輸入與非門和多輸入與非門等。下面介紹二輸入與

2、非門電路的設計方法,其他的設計方法與二輸入與非門的設計方法類似,在這里不作更多論述。二輸入與非門電路的邏輯方程式為Y= ,邏輯真值表見表5.1,二輸入與非門的電路符號如圖5.1所示AB輸入輸出ABY001011101110表5.1 二輸入與非門的真值表 圖5.1 二輸入與非門的電路符號 5.1 組合邏輯電路設計組合邏輯電路設計5.1.1 基本門電路設計基本門電路設計 1與非門電路與非門電路(1)VHDL設計方法二輸入與非門電路的邏輯真值表見表5.1,二輸入與非門的電路符號如圖5.1所示。5.1.1 基本門電路設計基本門電路設計 1與非門電路與非門電路(1)VHDL設計方法【例【例5.1】二輸入

3、與非門的VHDL描述方法一:LIBRARY ieee;USE ieee.STD_LOGIC_1164.ALL;ENTITY nand_2 ISPORT (a, b: IN STD_LOGIC; y: OUT STD_LOGIC);END;ARCHITECTURE one OF nand_2 ISBEGINy=a nand b;END;5.1 組合邏輯電路設計組合邏輯電路設計5.1.1 基本門電路設計基本門電路設計 1與非門電路與非門電路(1)VHDL設計方法【例【例5.2】二輸入與非門的VHDL描述方法二:LIBRARY ieee;USE ieee.STD_LOGIC_1164.ALL;ENT

4、ITY nand_2 ISPORT (a, b: INSTD_LOGIC; y: OUTSTD_LOGIC);END;ARCHITECTURE one OF nand_2 ISSIGNAL ab: STD_LOGIC_VECTOR (1 DOWNTO 0);BEGINaby” 相當于THEN或于是 when 01=yyyy=null;end case;end process;end; 5.1 組合邏輯電路設計組合邏輯電路設計(a) 用nand實現的二輸入 與非門的RTL電路(b)用 case語句實現的二輸入 與非門的RTL電路圖5.2 二輸入與非門RTL電路 5.1 組合邏輯電路設計組合邏輯電

5、路設計5.1.1 基本門電路設計基本門電路設計 1與非門電路與非門電路(1)VHDL設計方法 二輸入與非門的功能仿真結果如圖5.3所示,觀察波形可知,輸入為a與b,輸出為y,且其邏輯關系滿足二輸入與非門真值表的要求。 圖5.3 二輸入與非門的功能仿真圖5.1 組合邏輯電路設計組合邏輯電路設計5.1.1 基本門電路設計基本門電路設計 1與非門電路與非門電路(2)仿真結果)仿真結果5.1.1 基本門電路設計基本門電路設計2 基本邏輯門電路的基本邏輯門電路的VHDL描述描述【例【例5.3】基本邏輯門電路的VHDL描述LIBRARY ieee;USE ieee.STD_LOGIC_1164.ALL;E

6、NTITY gate ISPORT (a, b: IN STD_LOGIC; y1,y2,y3,y4,y5,y6: OUT STD_LOGIC);END;ARCHITECTURE one OF gate IS BEGIN y1=a and b; -構成與門 y2=a or b; -構成或門 y3= not a ; -構成非門 y4=a nand b; -構成與非門 y5=a nor b; -構成異或門 y6yyyyyyyyy=000; end case; end process; end process; end;5.1 組合邏輯電路設計組合邏輯電路設計5.1.2 編碼器設計編碼器設計1. 8

7、線線-3線編碼器的線編碼器的VHDL描述描述 本例中,運用了case語句完成了編碼器內部邏輯結構設計,其RTL電路圖如圖5.4所示。 圖5.4 8線-3線編碼器的RTL電路圖 5.1 組合邏輯電路設計組合邏輯電路設計5.1.2 編碼器設計編碼器設計1. 8線線-3線編碼器的線編碼器的VHDL描述描述2. 8線線-3線編碼器的功能仿真線編碼器的功能仿真 8線-3線編碼器的功能仿真結果如圖5.5所示。圖5.5 8線-3線編碼器功能仿真波形圖 5.1 組合邏輯電路設計組合邏輯電路設計5.1.2 編碼器設計編碼器設計5.1.3 譯碼器設計譯碼器設計 譯碼是編碼的逆過程,它的功能是將具有特定含義的二進制

8、碼進行辨別,并轉換成控制信號。具有譯碼功能的邏輯電路稱為譯碼器。5.1 組合邏輯電路設計組合邏輯電路設計5.1.3 譯碼器設計譯碼器設計1. 2線線- 4線譯碼器線譯碼器 2線-4線譯碼器的真值表見表5.3所示。 輸入 輸出 A1 A2Z3Z2Z1Z0000001010010100100111000表5.3 2線-4線譯碼器的真值表 5.1 組合邏輯電路設計組合邏輯電路設計(1)2線線-4線譯碼器的線譯碼器的VHDL設計設計library ieee; -【例【例5.5】 2線-4線譯碼器的VHDL代碼use ieee.std_logic_1164.all;use ieee.std_logic_

9、unsigned.all;entity decode_24 isport (a: in std_logic_vector(1 downto 0); z: out std_logic_vector(3 downto 0);end ;architecture str of decode_24 isBeginwith a select z LED LED LED LED LED LED LED LED LED LED LED LED LED LED LED LED NULL ; END CASE; END PROCESS; END;5.1 組合邏輯電路設計組合邏輯電路設計5.1.3 譯碼器設計譯碼器

10、設計 2. 7段數碼顯示譯碼器設計段數碼顯示譯碼器設計 例5.6中輸出信號LED 的7位分別接數碼管的7個段,高位在左,低位在右。例如當LED輸出為“1101111”時,數碼管的7個段:g、f、e、d、c、b、a分別接1、1、0、1、1、1、1;接有高電平的段點亮,低電平的段不亮,于是數碼管顯示“9”,其功能仿真如圖5.8所示。圖5.8 7段數碼顯示譯碼電路功能仿真波形 5.1 組合邏輯電路設計組合邏輯電路設計5.1.3 譯碼器設計譯碼器設計 2. 7段數碼顯示譯碼器設計段數碼顯示譯碼器設計5.1.4 加法器設計加法器設計1.四位二進制全加器的VHDL5.1 組合邏輯電路設計組合邏輯電路設計【

11、例【例5.7】 四位二進制全加器的VHDL描述 LIBRARY ieee; USE ieee.STD_LOGIC_1164.ALL; USE ieee.STD_LOGIC_unsigned.ALL; ENTITY adder_4bit IS PORT (a, b: IN STD_LOGIC_VECTOR(3 DOWNTO 0); ci: IN STD_LOGIC; s: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); co: OUT STD_LOGIC); END; ARCHITECTURE one OF adder_4bit IS SIGNAL temp: STD_LOG

12、IC_VECTOR (4 DOWNTO 0); BEGIN temp=(0&a)+b+ci; s=temp (3 downto 0); co=temp(4); END;圖5.9 4位二進制全加器的RTL電路圖 5.1 組合邏輯電路設計組合邏輯電路設計5.1.4 加法器設計加法器設計2 4位全加器的仿真結果仿真結果 例5.7中的4位全加器的功能仿真結果如圖5-10所示,其時序仿真結果如圖5-17所示。從波形中可以看出, 當a、b和ci取不同的值時,執行a+b+ci操作后,和數s與進位co均滿足4位全加器的邏輯功能要求。5.10 4位二進制全加器的功能仿真結果 5.1 組合邏輯電路設計組合邏輯電路

13、設計5.1.4 加法器設計加法器設計5.1.5 三態門與雙向緩沖電路設計三態門與雙向緩沖電路設計 三態門,是指邏輯門的輸出除有高、低電平兩種狀態外,還有第三種狀態高阻狀態的門電路,高阻態相當于隔斷狀態。三態門都有一個EN為控制使能端,來控制門電路的通斷。具備這三種狀態的器件就叫做三態(門、總線、.)。VHDL設計中,如果用STD_LOGIC數據類型的Z對一個變量賦值,即會引入三態門,并在使能信號的控制下可使其輸出呈高阻態,這等效于使三態門禁止輸出。 5.1 組合邏輯電路設計組合邏輯電路設計5.1.5 三態門與雙向緩沖電路設計三態門與雙向緩沖電路設計1三態門設計三態門設計 【例5.8】4位三態控

14、制門電路的VHDL描述LIBRARY ieee;USE ieee.STD_LOGIC_1164.ALL;USE ieee.STD_LOGIC_unsigned.ALL;ENTITY tri_gate IS PORT(en : IN STD_LOGIC; din: IN STD_LOGIC_VECTOR(3 DOWNTO 0); dout: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END;ARCHITECTURE one OF tri_gate IS BEGIN PROCESS (en ,din) BEGIN IF (en=1) then dout=din; else

15、dout=ZZZZ; end if; end process;END;5.1 組合邏輯電路設計組合邏輯電路設計圖5.11 三態門電路的RTL電路5.1 組合邏輯電路設計組合邏輯電路設計5.1.5 三態門與雙向緩沖電路設計三態門與雙向緩沖電路設計1三態門設計三態門設計圖5.12 三態門電路的功能仿真圖 5.1 組合邏輯電路設計組合邏輯電路設計5.1.5 三態門與雙向緩沖電路設計三態門與雙向緩沖電路設計1三態門設計三態門設計2. 雙向總線緩沖器雙向總線緩沖器 雙向總線緩沖器用于對數據總線的驅動和緩沖,典型雙向總線緩沖電路圖如圖5.13所示。 一般雙向總線緩沖器的模式為:兩個數據端口a、 b,一個使

16、能端en,一個方向控制端dr。其操作行為真值表如表5.4所示。 5.1 組合邏輯電路設計組合邏輯電路設計5.1.5 三態門與雙向緩沖電路設計三態門與雙向緩沖電路設計2. 雙向總線緩沖器雙向總線緩沖器 ain=a; a=aout; 圖5.13 雙向總線驅動電路 如果A為輸入端口,即ain=a時,aout應為“ZZZZZZZZ”EnDr功能00a=b01b=a1X高阻表5.4雙向總線驅動電路真值表 5.1 組合邏輯電路設計組合邏輯電路設計5.1.5 三態門與雙向緩沖電路設計三態門與雙向緩沖電路設計2. 雙向總線緩沖器雙向總線緩沖器【例【例5.9】 雙向總線緩沖器的VHDL描述library iee

17、e;use ieee.std_logic_1164.all;ENTITY DUB_GATE ISPORT (a,b: INOUT STD_LOGIC_VECTOR(7 DOWNTO 0);en: IN STD_LOGIC;dr: INOUT STD_LOGIC);END DUB_GATE;ARCHITECTURE a OF DUB_GATE ISSIGNAL abuf, bbuf: STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINP1: PROCESS (a, dr, en)BEGINif (en=0) and (dr=1) thenbbuf = a; -接下頁5.1 組合

18、邏輯電路設計組合邏輯電路設計5.1.5 三態門與雙向緩沖電路設計三態門與雙向緩沖電路設計 else - 接上頁 bbuf=ZZZZZZZZ;end if;b=bbuf; END PROCESS;P2: PROCESS (b,dr,en)BEGINif (en=0) and (dr=0) thenabuf = b;elseabuf=ZZZZZZZZ;end if;a=abuf;END PROCESS;END a;5.1 組合邏輯電路設計組合邏輯電路設計5.1.5 三態門與雙向緩沖電路設計三態門與雙向緩沖電路設計圖5.14 雙向總線緩沖器的RTL電路圖5.1 組合邏輯電路設計組合邏輯電路設計5.1

19、.5 三態門與雙向緩沖電路設計三態門與雙向緩沖電路設計 雙向總線緩沖器的RTL電路圖如圖5.14所示。5.2 時序邏輯電路設計時序邏輯電路設計5.2.1 觸發器設計觸發器設計 1.RS觸發器設計觸發器設計 RS觸發器由兩個與非門(或者或非門)的輸入和輸出交觸發器由兩個與非門(或者或非門)的輸入和輸出交叉連接而成,如圖叉連接而成,如圖5.15所示,所示, 真值表見表真值表見表5.5。 圖5.15 RS觸發器原理圖 輸入輸出RSQQ非0001011010不變不變11不定不定表5.5 RS觸發器真值表5.2.1 觸發器設計觸發器設計 1.RS觸發器設計觸發器設計【例5.10】 RS觸發器的VHDL程

20、序代碼 LIBRARY ieee;USE ieee.STD_LOGIC_1164.ALL;ENTITY RSFF IS PORT(R, S: IN STD_LOGIC; Q, QB: OUT STD_LOGIC);END;ARCHITECTURE one OF RSFF ISSIGNAL Q_TEMP,QB_TEMP: STD_LOGIC;BEGIN Q_TEMP=S NAND QB_TEMP; QB_TEMP=R NAND Q_TEMP; Q=Q_TEMP; QB=QB_TEMP;END; 5.2 時序邏輯電路設計時序邏輯電路設計BUF (CUT)SQQBnode1Q_TEMP0QB_TEM

21、P0R圖5.16 RS觸發器的RTL電路圖5.17 RS觸發器功能仿真波形圖5.2 時序邏輯電路設計時序邏輯電路設計5.2.1 觸發器設計觸發器設計 1.RS觸發器設計觸發器設計5.2.1 觸發器設計觸發器設計 2. JK觸發器設計觸發器設計 JK觸發器的狀態方程是:Q_tmp=j +q_temp。用VHDL邏輯表達式對JK觸發器進行描述。其真值表見表5.6所示。 輸入輸出jkq00保持01010111翻轉表5.6 JK觸發器真值表5.2 時序邏輯電路設計時序邏輯電路設計5.2.1 觸發器設計觸發器設計 【例5.11】 JK觸發器VHDL程序library ieee;use ieee.std_

22、logic_1164.all;entity jkff1 is port (j, k, clk: in std_logic; q: out std_logic);end;architecture one of jkff1 is signal q_temp :std_logic;begin p1:processbegin wait until(clkevent and clk=1); q_temp=(j and (not q_temp) or (not k) and q_temp);end process; q=q_temp;end; 5.2 時序邏輯電路設計時序邏輯電路設計圖5.18 JK觸發器

23、的RTL電路圖5.19 JK觸發器的功能仿真圖5.2 時序邏輯電路設計時序邏輯電路設計5.2.1 觸發器設計觸發器設計 2. JK觸發器設計觸發器設計 5.2.2 移位寄存器設計移位寄存器設計 移位寄存器是一個具有移位功能的寄存器,是指寄存器中所存的代碼能夠在移位脈沖的作用下依次左移或右移。既能左移又能右移的稱為雙向移位寄存器,只需要改變左、右移的控制信號便可實現雙向移位要求。根據移位寄存器存取信息的方式不同分為:串入串出、串入并出、并入串出、并入并出四種形式。 5.2 時序邏輯電路設計時序邏輯電路設計5.2.2 移位寄存器設計移位寄存器設計【例5.12】8位右移移位寄存器的VHDL描述LIB

24、RARY ieee;USE ieee.STD_LOGIC_1164.ALL;ENTITY SHFRT IS PORT (CLK, LOAD: IN STD_LOGIC; DIN: IN STD_LOGIC_VECTOR (7 DOWNTO 0); QB: OUT STD_LOGIC);END;ARCHITECTURE ONE OF SHFRT ISBEGIN -接下頁5.2 時序邏輯電路設計時序邏輯電路設計 PROCESS (CLK, LOAD) -接上頁 VARIABLE REG8:STD_LOGIC_VECTOR (7 DOWNTO 0); BEGIN IF CLKEVENT AND CL

25、K=1 THEN IF LOAD=1 THEN REG8:=DIN; ELSE REG8 (6 DOWNTO 0):=REG8(7 DOWNTO 1); END IF; END IF; QB0); -計數器高電平復位 ELSIF CLKEVENT AND CLK=1 THEN IF EN=1 THEN -計數器控制端高電平有效 IF CQI0); END IF; END IF; END IF; IF CQI=15 THEN COUT=1; -計數滿16產生一個進位 ELSE COUT=0; END IF; CQ0 THEN CQI: =CQI-1; ELSE CQI: =1111; END I

26、F; END IF; END IF; CQ=CQI; END PROCESS;END; 5.2 時序邏輯電路設計時序邏輯電路設計十六進制減法計數器的仿真結果如圖5.24所示。圖5.24 十六進制減法計數器功能仿真波形圖 5.2 時序邏輯電路設計時序邏輯電路設計5.2.3計數器設計計數器設計 3.異步計數器設計異步計數器設計 異步計數器,它的下一位計數器的輸出作為上一位計數器的時鐘信號,這樣一級一級串行連接起來就構成了一個異步計數器。 用VHDL語言描述異步邏輯電路時,由于一個時鐘進程只能構成對應單一時鐘信號的時序電路,如果在進程中需要構成多觸發器時序電路,也只能產生對應某個單一時鐘的同步時序邏

27、輯,異步時序邏輯一般采取多個時鐘進程來構成。 5.2 時序邏輯電路設計時序邏輯電路設計5.2.3計數器設計計數器設計【例5.15】4個觸發器構成的異步計數器的VHDL底層模塊程序library ieee;use ieee.std_logic_1164.all;entity dffr isport (clk, clr, d:in std_logic; q, qb: out std_logic);end;architecture str of dffr issignal q_in:std_logic;Begin -接下頁5.2 時序邏輯電路設計時序邏輯電路設計5.2.3計數器設計計數器設計qb=n

28、ot(q_in); -接上頁q=q_in;process (clk) begin if (clr=1) then q_in=0; elsif (clkevent and clk=1) then q_in=d; end if;end process;end; 5.2 時序邏輯電路設計時序邏輯電路設計5.2.3計數器設計計數器設計圖5.25 異步計數器的底層模塊的RTL電路圖 5.2 時序邏輯電路設計時序邏輯電路設計5.2.3計數器設計計數器設計【例5.16】 4個觸發器構成的異步計數器的頂層VHDL描述library ieee;use ieee.std_logic_1164.all;entity

29、 rplcont isport(clk,clr:in std_logic; count:out std_logic_vector(3 downto 0);end;architecture str of rplcont issignal count_in_bar:std_logic_vector(4 downto 0);-接下頁5.2 時序邏輯電路設計時序邏輯電路設計5.2.3計數器設計計數器設計component dffr is -接上頁port(clk,clr,d:in std_logic; q,qb:out std_logic);end component;begin count_in_b

30、ar(0)count_in_bar(i), clr=clr,d=count_in_bar(i+1), q=count(i),qb=count_in_bar(i+1);end generate;end;5.2 時序邏輯電路設計時序邏輯電路設計5.2.3計數器設計計數器設計圖5.26 4個觸發器構成的異步計數器的RTL電路圖5.2 時序邏輯電路設計時序邏輯電路設計5.2.3計數器設計計數器設計 5.3.1 狀態機概述狀態機概述1.什么是狀態機什么是狀態機 通俗地說,狀態機就是事物存在狀態的一種綜合描述。 比如,一個單向路口的一盞紅綠燈,它有“亮紅燈”、“亮綠燈”和“亮黃燈”3種狀態。在不同情況下,

31、3種狀態可以互相轉換。轉換的條件可以是經過多少時間,比如經過30秒鐘由“亮紅燈”狀態變為“亮綠燈”狀態;也可以是特殊條件,比如有緊急事件,不論處于什么狀態都將轉變為“亮紅燈”狀態。而所謂的狀態機,就是對這盞紅綠燈3種狀態的綜合描述,說明任意兩個狀態之間的轉變條件。 5.3 狀態機的設計狀態機的設計 狀態機是由狀態寄存器狀態寄存器和組合邏輯電路組合邏輯電路構成的,能夠根據控制信號按照預先設定的狀態進行狀態轉移,是協調相關信號動作、完成特定操作的控制中心。 狀態機可歸納為4個要素:即現態、條件、動作及次態即現態、條件、動作及次態。這樣的歸納,主要是出于對狀態機的內在因果關系的考慮。“現態”和“條件

32、”是因,“動作”和“次態”是果。 5.3 狀態機的設計狀態機的設計 5.3.1 狀態機概述狀態機概述1.什么是狀態機什么是狀態機 現態現態:是指當前所處的狀態。條件:條件:又稱為“事件”。當一個條件被滿足,將會觸發一個動作,或者執行一次狀態的遷移。動作:動作:條件滿足后執行的動作。動作執行完畢后,可以遷移到新的狀態,也可以仍舊保持原狀態。動作不是必需的,當條件滿足后,也可以不執行任何動作,直接遷移到新狀態。次態:次態:條件滿足后要遷往的新狀態。“次態”是相對于“現態”而言的,“次態”一旦被激活,就轉變成新的“現態”了。 5.3 狀態機的設計狀態機的設計 5.3.1 狀態機概述狀態機概述1.什么

33、是狀態機什么是狀態機 根據時序輸出信號產生機理的不同,狀態機可以分成兩類:摩爾摩爾(Moore)型型狀態機和和米勒米勒(Mealy)型型狀態機。 兩種狀態機的區別:兩種狀態機的區別: 前者的輸出僅是當前狀態的函數,后著的輸出 是當前狀態和輸入信號的函數。 米勒型狀態機輸出的變化先于摩爾型。 5.3 狀態機的設計狀態機的設計 5.3.1 狀態機概述狀態機概述1.什么是狀態機什么是狀態機 所有的狀態均可表達為CASE WHEN結構中的一條CASE語句,而狀態的轉移則通過IF_THEN_ELSE語句實現。 應用VHDL設計有限狀態機的流程如圖5.27所示。 5.3 狀態機的設計狀態機的設計 5.3.

34、1 狀態機概述狀態機概述2. 有限狀態機的設計流程有限狀態機的設計流程根據系統要求建立狀態轉移圖根據狀態轉移圖編寫VHDL代碼利用EDA工具進行仿真和驗證 圖5.27 VHDL設計有限狀態機的流程圖 (1)選擇狀態機類型(2)建立狀態表或者畫出狀態圖(3)根據狀態表或狀態圖,構建狀態機的VHDL模型(4)利用EDA工具進行仿真、驗證 5.3 狀態機的設計狀態機的設計 5.3.1 狀態機概述狀態機概述2. 有限狀態機的設計流程有限狀態機的設計流程5.3.2 一般有限狀態機的一般有限狀態機的VHDL設計設計 一般和最常用的狀態機通常包含: 說明部分 主控時序進程 主控組合進程 輔助進程幾個部分5.

35、3 狀態機的設計狀態機的設計 1說明部分說明部分 使用TYPE語句定義新的數據類型,此數據類型為枚舉型, 其元素通常都用狀態機的狀態名來定義; 狀態變量(如現態和次態)應定義為信號,便于信 息傳遞; 并將狀態變量的數據類型定義為含有既定狀態元素的新定 義的數據類型; 說明部分一般放在結構體的ARCHITECTURE和BEGIN之 間。 5.3 狀態機的設計狀態機的設計 5.3.2 一般有限狀態機的一般有限狀態機的VHDL設計設計 2主控時序進程主控時序進程 主控時序進程是指負責狀態機運轉和在時鐘驅動下負責狀態 轉換的進程; 狀態機是隨外部時鐘信號、以同步時序方式工作的; 狀態機向下一狀態(包括

36、再次進入本狀態)轉換的實現僅僅取 決于時鐘信號的到來。 5.3 狀態機的設計狀態機的設計 5.3.2 一般有限狀態機的一般有限狀態機的VHDL設計設計 3. 主控組合進程主控組合進程 主控組合進程的任務是根據外部輸入的控制信號 (包括來自狀態機外部的信號和來自狀態機內部其他非主控的組合或時序進程的信號),或/和當前狀態的狀態值確定下一狀態(next_state)的取向,即next_state的取值內容; 確定對外輸出或對內部其他組合或時序進程輸出控制信號的內容。5.3 狀態機的設計狀態機的設計 5.3.2 一般有限狀態機的一般有限狀態機的VHDL設計設計 5.3 狀態機的設計狀態機的設計4輔助

37、進程輔助進程 輔助進程用于配合狀態機工作的組合進程或時序進程。例如為了完成某種算法的進程,或用于配合狀態機工作的其他時序進程,或為了穩定輸出設置的數據鎖存器等。 5.3.2 一般有限狀態機的一般有限狀態機的VHDL設計設計 圖5.28 一個狀態機的結構框圖5.3 狀態機的設計狀態機的設計 5.3.2 一般有限狀態機的一般有限狀態機的VHDL設計設計 【例5.17】一般有限狀態機的VHDL設計,利用狀態機設計方法輸出一個方波信號。LIBRARY ieee;USE ieee.STD_LOGIC_1164.ALL;ENTITY A_EXAMPLE IS PORT (clk,reset:IN STD_

38、LOGIC; output:OUT STD_LOGIC);END;ARCHITECTURE ONE OF A_EXAMPLE IS TYPE STATE_TYPE IS(S0,S1,S2,S3); -狀態機說明部分SIGNAL state: STATE_TYPE;BEGIN -接下頁5.3 狀態機的設計狀態機的設計 5.3.2 一般有限狀態機的一般有限狀態機的VHDL設計設計 -接上頁REG:PROCESS(clk,reset) -狀態機主控時序進程 BEGIN IF reset=1 THEN state statestatestatestateoutputoutputoutputoutput

39、=0; END CASE;END PROCESS;END;5.3 狀態機的設計狀態機的設計 5.3.2 一般有限狀態機的一般有限狀態機的VHDL設計設計 clkresets0s10101outputoutput1output0resetstateclk圖5.29 狀態機設計輸出一個方波信號的RTL電路 圖5.30 利用一般狀態機設計方法實現的方波信號5.3 狀態機的設計狀態機的設計 5.3.2 一般有限狀態機的一般有限狀態機的VHDL設計設計 5.3.3摩爾摩爾(Moore)型狀態機設計型狀態機設計 如圖5.31所示是摩爾型狀態機的結構圖,圖中的輸出只與當前的狀態有關,而與當前的輸入信號無關。

40、 其狀態圖如圖5.32所示,摩爾狀態機的VHDL描述如例5.18所示。 圖5.31 摩爾型狀態機的結構圖5.3 狀態機的設計狀態機的設計 圖5.32 摩爾型狀態機的狀態圖5.3 狀態機的設計狀態機的設計 5.3.3摩爾摩爾(Moore)型狀態機設計型狀態機設計 【例5.18】摩爾狀態機的VHDL描述library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity moore_state isport(clk,x_in,rst:in std_lo

41、gic; key_en:out std_logic; y:out std_logic_vector(3 downto 0);end ;architecture str of moore_state istype state_type is (s1,s2,s3,s4);signal state:state_type;beginp1_state_p:process(clk,rst)Begin -接下頁5.3 狀態機的設計狀態機的設計 5.3.3摩爾摩爾(Moore)型狀態機設計型狀態機設計 if rst=1 then state if x_in=0 then state if x_in=1 the

42、n state if x_in=0 then state if x_in=1 then statestatey=0001;key_eny=0010;key_eny=0100;key_eny=1000;key_ennull; end case;end process;end; 5.3 狀態機的設計狀態機的設計 5.3.3摩爾摩爾(Moore)型狀態機設計型狀態機設計 x_inclkresets1s2s3s4key_en0clkx_inrstkey_eny3.0state圖5.33 摩爾型狀態機的RTL電路圖RTL電路圖如圖5.33所示,仿真波形如圖5.34所示。5.3 狀態機的設計狀態機的設計 5.3.3摩爾摩爾(Moore)型狀態機設計型狀態機設計 圖5.34 摩爾型狀態機的仿真波形5.3.4 米勒米勒(Mealy)型狀態機設計型狀態機設計 如圖5.35所示是米勒型狀態機的結構圖,圖中的輸出不僅與當前狀態有關,還與當前輸入信號有關。米勒型狀態機的狀態圖如圖5.36所示。 圖5.35 米勒型狀態機的結構圖5.3 狀態機的設計狀態機的設計 圖5.36

溫馨提示

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

最新文檔

評論

0/150

提交評論