FPGA與硬件描述語言VHDL硬件描述語言-文檔資料_第1頁
FPGA與硬件描述語言VHDL硬件描述語言-文檔資料_第2頁
FPGA與硬件描述語言VHDL硬件描述語言-文檔資料_第3頁
FPGA與硬件描述語言VHDL硬件描述語言-文檔資料_第4頁
FPGA與硬件描述語言VHDL硬件描述語言-文檔資料_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、FPGA與硬件描述語言2016.41VHDL硬件描述語言硬件描述語言 基本電路的基本電路的VHDL模型模型3.5 基本電路的VHDL模型3.5.1 組合邏輯電路的設(shè)計3.5.2 時序邏輯電路的設(shè)計2VHDL硬件描述語言硬件描述語言 組合組合邏輯電路邏輯電路的設(shè)計的設(shè)計 簡單門電路1. 根據(jù)模塊框圖設(shè)計電路3VHDL硬件描述語言硬件描述語言 組合組合邏輯電路邏輯電路的設(shè)計的設(shè)計 簡單門電路2. 根據(jù)真值表設(shè)計電路4aby001011101110VHDL硬件描述語言硬件描述語言 組合組合邏輯電路邏輯電路的設(shè)計的設(shè)計 編碼器根據(jù)真值表設(shè)計優(yōu)先編碼器5eid0d1d2d3d4d5d6d7q0q1q2g

2、seo1XXXXXXXX11111011111111111100111111100000101111110X001010111110XX01001011110XXX0110101110XXXX100010110XXXXX10101010XXXXXX1100100XXXXXXX11101VHDL硬件描述語言硬件描述語言 組合組合邏輯電路邏輯電路的設(shè)計的設(shè)計 選擇器根據(jù)模塊框圖設(shè)計一個四選一選擇器6VHDL硬件描述語言硬件描述語言 組合組合邏輯電路邏輯電路的設(shè)計的設(shè)計 三態(tài)門1. 三態(tài)門共有三個端口,即數(shù)據(jù)輸入、數(shù)據(jù)輸出和輸出使能2. 當(dāng)輸出使能有效時,數(shù)據(jù)輸出端接收來自輸入端的數(shù)據(jù);反之,數(shù)據(jù)輸

3、出端保持高阻態(tài)7VHDL硬件描述語言硬件描述語言 組合組合邏輯電路邏輯電路的設(shè)計的設(shè)計 三態(tài)門設(shè)計一個三態(tài)門8LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY tri_gate ISPORT(datain,en:IN STD_LOGIC; dataout:OUT STD_LOGIC);END tri_gate;ARCHITECTURE behavior OF tri_gate ISBEGINPROCESS(datain,en)BEGINIF en = 1 THENdataout = datain;ELSEdataout = Z;END IF;END

4、 PROCESS;END behavior;VHDL硬件描述語言硬件描述語言 時序時序邏輯電路邏輯電路的設(shè)計的設(shè)計 時序電路都是以時鐘信號為驅(qū)動信號,電路僅在時鐘信號的邊沿才發(fā)生改變 時鐘信號是時序電路的執(zhí)行條件,時序電路總是以時鐘進(jìn)程的方式進(jìn)行描述9VHDL硬件描述語言硬件描述語言 時序時序邏輯電路邏輯電路的設(shè)計的設(shè)計 時鐘進(jìn)程一般有兩種描述方式:1. 將時鐘信號放入進(jìn)程敏感表中2. 使用WAIT語句等待時鐘信號,使用WAIT語句時進(jìn)程將不存在敏感表10VHDL硬件描述語言硬件描述語言 時序時序邏輯電路邏輯電路的設(shè)計的設(shè)計 對時鐘邊沿進(jìn)行描述1. 上升沿到來條件描述2. 下降沿到來條件描述1

5、1clkEVENT AND clk = 1 AND clkLAST_VALUE = 0clkEVENT AND clk = 1 -通常描述clkEVENT AND clk = 0 AND clkLAST_VALUE = 1clkEVENT AND clk = 0 -通常描述VHDL硬件描述語言硬件描述語言 時序時序邏輯電路邏輯電路的設(shè)計的設(shè)計 對時鐘信號描述的注意事項:1. 對時鐘觸發(fā)邊沿一定要說明時鐘是上升沿觸發(fā)還是下降沿觸發(fā)2. 時鐘作為進(jìn)程中的敏感量時,進(jìn)程中的敏感量不能出現(xiàn)一個以上的時鐘信號3. 如果使用WAIT語句,它只能放在進(jìn)程的最前面或者最后面12VHDL硬件描述語言硬件描述語言

6、 時序時序邏輯電路邏輯電路的設(shè)計的設(shè)計 D觸發(fā)器分別用兩種描述方式設(shè)計一個D觸發(fā)器13VHDL硬件描述語言硬件描述語言 時序時序邏輯電路邏輯電路的設(shè)計的設(shè)計 觸發(fā)器的同步復(fù)位和非同步復(fù)位1. 同步復(fù)位:當(dāng)復(fù)位信號有效且在給定時鐘邊沿到來時,觸發(fā)器才被復(fù)位2. 非同步復(fù)位:又稱為異步復(fù)位,一旦有復(fù)位信號,觸發(fā)器就被復(fù)位14VHDL硬件描述語言硬件描述語言 時序時序邏輯電路邏輯電路的設(shè)計的設(shè)計 觸發(fā)器的同步復(fù)位15PROCESS(clock)BEGINIF clock_condition THENIF reset_condition THENsignal_out = reset_value;ELS

7、Esignal_out = signal_in;END IF;END IF;END PROCESS;VHDL硬件描述語言硬件描述語言 時序時序邏輯電路邏輯電路的設(shè)計的設(shè)計 觸發(fā)器的異步復(fù)位16PROCESS(reset,clock)BEGINIF reset_condition THENsignal_out = reset_value;ELSIF clock_condition THENsignal_out = signal_in;END IF;END PROCESS;VHDL硬件描述語言硬件描述語言 時序時序邏輯電路邏輯電路的設(shè)計的設(shè)計 計數(shù)器設(shè)計一個帶異步置數(shù)、異步清零功能的8bit同步增

8、減計數(shù)器17VHDL硬件描述語言硬件描述語言 時序時序邏輯電路邏輯電路的設(shè)計的設(shè)計 用狀態(tài)機(jī)方法設(shè)計一個四進(jìn)制計數(shù)器,狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移圖如圖1所示,計數(shù)器管腳圖如圖2所示,管腳說明:CLK為時鐘信號(上升沿計數(shù)),Q為狀態(tài)輸出(2bit輸出),CB為進(jìn)位輸出位(高電平有效)18圖1 狀態(tài)轉(zhuǎn)移圖圖2 管腳圖VHDL硬件描述語言硬件描述語言有限狀態(tài)機(jī)有限狀態(tài)機(jī)3.6 有限狀態(tài)機(jī)3.6.1 有限狀態(tài)機(jī)的基本模型3.6.2 狀態(tài)機(jī)的狀態(tài)編碼3.6.3 狀態(tài)機(jī)剩余狀態(tài)處理19VHDL硬件描述語言硬件描述語言有限狀態(tài)機(jī)有限狀態(tài)機(jī) 數(shù)字系統(tǒng)的控制單元通常用傳統(tǒng)的有限狀態(tài)機(jī)(FSM)或者時鐘模式時序電路來建模

9、 每個控制步驟可以看作一種狀態(tài),與每一控制步驟相關(guān)的轉(zhuǎn)移條件指定了狀態(tài)和輸出 大部分?jǐn)?shù)字電子系統(tǒng)由控制單元和數(shù)據(jù)單元組成,而控制單元的主體是有限狀態(tài)機(jī),它根據(jù)外部信號和數(shù)據(jù)單元產(chǎn)生的狀態(tài)信息,產(chǎn)生各種控制信號來進(jìn)行數(shù)據(jù)處理20VHDL硬件描述語言硬件描述語言有限狀態(tài)機(jī)有限狀態(tài)機(jī) 無論是與可完成相似功能的CPU/MCU相比,還是與其他設(shè)計方案相比,狀態(tài)機(jī)都有其無可比擬的優(yōu)越性,狀態(tài)機(jī)的優(yōu)勢主要表現(xiàn)在以下方面:1. 狀態(tài)機(jī)的結(jié)構(gòu)模式相對簡單,設(shè)計方案相對固定,使用VHDL設(shè)計時可以定義符號化枚舉類型的狀態(tài)2. 使用狀態(tài)機(jī)可以很容易設(shè)計出性能良好的同步時序邏輯模塊,因此很容易避免大規(guī)模邏輯電路設(shè)計中

10、經(jīng)常出現(xiàn)的競爭冒險現(xiàn)象21VHDL硬件描述語言硬件描述語言有限狀態(tài)機(jī)有限狀態(tài)機(jī)3. 狀態(tài)機(jī)的VHDL設(shè)計程序?qū)哟畏置?、結(jié)構(gòu)清晰、易讀易懂,初學(xué)者非常容易掌握,在排錯、修改和模塊移植方面優(yōu)勢明顯4. 在高速運(yùn)算和控制方面,狀態(tài)機(jī)也有著巨大的優(yōu)勢22 VHDL硬件描述語言硬件描述語言 有限狀態(tài)機(jī)的基本模型有限狀態(tài)機(jī)的基本模型狀態(tài)機(jī)設(shè)計與分類的傳統(tǒng)理論是根據(jù)狀態(tài)機(jī)的輸入輸出的關(guān)系,分為兩類狀態(tài)機(jī): Mealy型 Moore型23 VHDL硬件描述語言硬件描述語言 有限狀態(tài)機(jī)的基本模型有限狀態(tài)機(jī)的基本模型 Mealy型狀態(tài)機(jī)Mealy型狀態(tài)機(jī)的特點是輸出信號是當(dāng)前狀態(tài)和輸入信號的函數(shù)24 VHDL硬件

11、描述語言硬件描述語言 有限狀態(tài)機(jī)的基本模型有限狀態(tài)機(jī)的基本模型 Moore型狀態(tài)機(jī)Moore型狀態(tài)機(jī)的特點是輸出信號僅與當(dāng)前狀態(tài)有關(guān)25 VHDL硬件描述語言硬件描述語言 有限狀態(tài)機(jī)的基本模型有限狀態(tài)機(jī)的基本模型 用VHDL設(shè)計狀態(tài)機(jī)的一般結(jié)構(gòu)由以下部分組成:1. 說明部分2. 主控時序進(jìn)程3. 主控組合進(jìn)程4. 普通組合進(jìn)程5. 普通時序進(jìn)程26 VHDL硬件描述語言硬件描述語言 有限狀態(tài)機(jī)的基本模型有限狀態(tài)機(jī)的基本模型 用VHDL設(shè)計狀態(tài)機(jī)的說明部分說明部分1. 說明部分中有新數(shù)據(jù)類型TYPE的定義及其狀態(tài)類型(狀態(tài)名)以及在此新數(shù)據(jù)類型下定義的狀態(tài)變量2. 狀態(tài)類型一般用枚舉類型,其中每

12、一個狀態(tài)名可任意選取3. 狀態(tài)變量應(yīng)定義為信號,便于信息傳遞,說明部分一般放在ARCHITECTURE和BEGIN之間27 VHDL硬件描述語言硬件描述語言 有限狀態(tài)機(jī)的基本模型有限狀態(tài)機(jī)的基本模型 用VHDL設(shè)計狀態(tài)機(jī)的說明部分說明部分28ARCHITECTURE behavior OF example ISTYPE states IS (st0, st1, st2, st3);-定義新的數(shù)據(jù)類型和狀態(tài)名SIGNAL current_state, next_state: states; -定義狀態(tài)名變量BEGINEND behavior; VHDL硬件描述語言硬件描述語言 有限狀態(tài)機(jī)的基本模

13、型有限狀態(tài)機(jī)的基本模型 用VHDL設(shè)計狀態(tài)機(jī)的主控時序進(jìn)程主控時序進(jìn)程1. 狀態(tài)機(jī)是由外部時鐘信號控制,以同步時序方式工作的,狀態(tài)機(jī)中必須包含一個對工作時鐘信號敏感的進(jìn)程,作為狀態(tài)機(jī)的“驅(qū)動泵”2. 主控時序進(jìn)程不負(fù)責(zé)進(jìn)入下一狀態(tài)的具體狀態(tài)取值3. 主控時序進(jìn)程的設(shè)計比較固定和單一29 VHDL硬件描述語言硬件描述語言 有限狀態(tài)機(jī)的基本模型有限狀態(tài)機(jī)的基本模型 用VHDL設(shè)計狀態(tài)機(jī)的主控組合進(jìn)程主控組合進(jìn)程1. 主控組合進(jìn)程的任務(wù)是根據(jù)外部輸入的控制信號,或當(dāng)前狀態(tài)的狀態(tài)值確定下一狀態(tài)的取值,即next_state的內(nèi)容,以及確定對外輸出或?qū)?nèi)部其他組合或時序進(jìn)程輸出控制信號的內(nèi)容30 VHD

14、L硬件描述語言硬件描述語言 有限狀態(tài)機(jī)的基本模型有限狀態(tài)機(jī)的基本模型 用VHDL設(shè)計狀態(tài)機(jī)的普通普通組合進(jìn)程組合進(jìn)程1. 用于配合狀態(tài)機(jī)工作的其他組合進(jìn)程,如為了完成某種算法的進(jìn)程31 VHDL硬件描述語言硬件描述語言 有限狀態(tài)機(jī)的基本模型有限狀態(tài)機(jī)的基本模型 用VHDL設(shè)計狀態(tài)機(jī)的普通時序進(jìn)程普通時序進(jìn)程1. 用于配合狀態(tài)機(jī)工作的其他時序進(jìn)程,如為了穩(wěn)定輸出設(shè)置的數(shù)據(jù)鎖存器等32 VHDL硬件描述語言硬件描述語言 有限狀態(tài)機(jī)的基本模型有限狀態(tài)機(jī)的基本模型 一個最簡結(jié)構(gòu)的狀態(tài)機(jī)至少由兩個進(jìn)程構(gòu)成,即一個主控時序進(jìn)程和一個主控組合進(jìn)程 主控時序進(jìn)程作為“驅(qū)動泵”,描述時序邏輯,包括狀態(tài)寄存器的工

15、作和寄存器狀態(tài)的輸出 主控組合進(jìn)程描述組合邏輯,包括進(jìn)程間狀態(tài)值的傳遞邏輯以及狀態(tài)轉(zhuǎn)換值的輸出33 VHDL硬件描述語言硬件描述語言 有限狀態(tài)機(jī)的基本模型有限狀態(tài)機(jī)的基本模型34LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY state_machine ISPORT(clk,reset:IN STD_LOGIC; state_inputs:IN STD_LOGIC_VECTOR(0 TO 1); comb_outputs:OUT STD_LOGIC_VECTOR(0 TO 1);END state_machine;ARCHITECTURE beh

16、avior OF state_machine ISTYPE states IS (st0, st1, st2, st3);-定義states為枚舉型數(shù)據(jù)類型SIGNAL current_state, next_state: states; -定義狀態(tài)名變量 VHDL硬件描述語言硬件描述語言 有限狀態(tài)機(jī)的基本模型有限狀態(tài)機(jī)的基本模型35BEGINREG:PROCESS(reset,clk)BEGINIF reset = 1 THENcurrent_state = st0;ELSIF clkEVENT AND clk = 1 THENcurrent_state comb_outputs = “00

17、”;IF state_inputs = “00” THENnext_state = st0;ELSEnext_state comb_outputs = “01”;IF state_inputs = “00” THENnext_state = st1;ELSEnext_state comb_outputs = “10”;IF state_inputs = “00” THENnext_state = st2;ELSEnext_state comb_outputs = “11”;IF state_inputs = “11” THENnext_state = st3;ELSEnext_state =

18、st0;END IF;END CASE;END PROCESS;END behavior; VHDL硬件描述語言硬件描述語言 有限狀態(tài)機(jī)的基本模型有限狀態(tài)機(jī)的基本模型37VHDL硬件描述語言硬件描述語言狀態(tài)機(jī)的狀態(tài)狀態(tài)機(jī)的狀態(tài)編碼編碼 狀態(tài)機(jī)的狀態(tài)編碼方式是多種多樣的,這要根據(jù)實際情況來決定,影響編碼方式選擇的因素主要有:1. 狀態(tài)機(jī)的速度要求2. 邏輯資源利用率系統(tǒng)運(yùn)行的可靠性3. 程序的可讀性38VHDL硬件描述語言硬件描述語言狀態(tài)機(jī)的狀態(tài)狀態(tài)機(jī)的狀態(tài)編碼編碼 狀態(tài)機(jī)的狀態(tài)編碼方式主要有:1. 狀態(tài)位直接輸出型編碼2. 順序編碼3. 格雷碼編碼4. 一位熱碼編碼39VHDL硬件描述語言硬件

19、描述語言狀態(tài)機(jī)的狀態(tài)狀態(tài)機(jī)的狀態(tài)編碼編碼狀態(tài)狀態(tài)位直接輸出型位直接輸出型編碼編碼 這類編碼方式最典型的應(yīng)用實例就是計數(shù)器 計數(shù)器的輸出就是各狀態(tài)的狀態(tài)碼 將狀態(tài)編碼直接輸出作為控制信號,要求對狀態(tài)機(jī)各狀態(tài)的編碼作特殊的選擇40VHDL硬件描述語言硬件描述語言狀態(tài)機(jī)的狀態(tài)編碼狀態(tài)機(jī)的狀態(tài)編碼狀態(tài)位直接輸出型編碼狀態(tài)位直接輸出型編碼這種狀態(tài)位直接輸出型編碼方式狀態(tài)機(jī)的優(yōu)點是輸出速度快、占用邏輯資源少;缺點是程序可讀性差41ARCHITECTURE behavior OF state_machine ISSIGNAL current_state, next_state:STD_LOGIC_VECTO

20、R(6 DOWNTO 0);CONSTANT state0:STD_LOGIC_VECTOR(6 DOWNTO 0):=“1100100”;CONSTANT state1:STD_LOGIC_VECTOR(6 DOWNTO 0):=“0001110”;CONSTANT state2:STD_LOGIC_VECTOR(6 DOWNTO 0):=“0110010”;CONSTANT state3:STD_LOGIC_VECTOR(6 DOWNTO 0):=“0011010”;CONSTANT state4:STD_LOGIC_VECTOR(6 DOWNTO 0):=“0101010”;CONSTA

21、NT state5:STD_LOGIC_VECTOR(6 DOWNTO 0):=“1010000”;BEGINEND behavior;VHDL硬件描述語言硬件描述語言狀態(tài)機(jī)的狀態(tài)狀態(tài)機(jī)的狀態(tài)編碼編碼順序順序編碼編碼 這種編碼方式最為簡單,且使用的觸發(fā)器數(shù)量最少,剩余的非法狀態(tài)最少,容錯技術(shù)最為簡單42VHDL硬件描述語言硬件描述語言狀態(tài)機(jī)的狀態(tài)狀態(tài)機(jī)的狀態(tài)編碼編碼順序編碼順序編碼順序編碼的缺點是,盡管節(jié)省了觸發(fā)器,卻增加了從一種狀態(tài)向另一種狀態(tài)轉(zhuǎn)換的譯碼組合邏輯,這對于FPGA器件來說不利實現(xiàn)43ARCHITECTURE behavior OF state_machine ISSIGNAL

22、current_state, next_state:STD_LOGIC_VECTOR(2 DOWNTO 0);CONSTANT state0:STD_LOGIC_VECTOR(2 DOWNTO 0):=“000”;CONSTANT state1:STD_LOGIC_VECTOR(2 DOWNTO 0):=“001”;CONSTANT state2:STD_LOGIC_VECTOR(2 DOWNTO 0):=“010”;CONSTANT state3:STD_LOGIC_VECTOR(2 DOWNTO 0):=“011”;CONSTANT state4:STD_LOGIC_VECTOR(2 DO

23、WNTO 0):=“100”;CONSTANT state5:STD_LOGIC_VECTOR(2 DOWNTO 0):=“101”;BEGINEND behavior;VHDL硬件描述語言硬件描述語言狀態(tài)機(jī)的狀態(tài)狀態(tài)機(jī)的狀態(tài)編碼編碼格雷碼格雷碼編碼編碼 格雷碼編碼方式是對順序編碼方式的一種改進(jìn) 格雷碼編碼的特點是任一的相鄰狀態(tài)的編碼中只有一個二進(jìn)制位發(fā)生變化 格雷碼編碼提高了目標(biāo)器件的資源利用率和運(yùn)行速度,同時避免了誤碼現(xiàn)象44VHDL硬件描述語言硬件描述語言狀態(tài)機(jī)的狀態(tài)狀態(tài)機(jī)的狀態(tài)編碼編碼格雷碼格雷碼編碼編碼45ARCHITECTURE behavior OF state_machine

24、ISSIGNAL current_state, next_state:STD_LOGIC_VECTOR(1 DOWNTO 0);CONSTANT state0:STD_LOGIC_VECTOR(1 DOWNTO 0):=“00”;CONSTANT state1:STD_LOGIC_VECTOR(1 DOWNTO 0):=“01”;CONSTANT state2:STD_LOGIC_VECTOR(1 DOWNTO 0):=“11”;CONSTANT state3:STD_LOGIC_VECTOR(1 DOWNTO 0):=“10”;BEGINEND behavior;VHDL硬件描述語言硬件描述語言狀態(tài)機(jī)的狀態(tài)狀態(tài)機(jī)的狀態(tài)編碼編碼一一位熱碼位熱碼編碼編碼 一位熱碼編碼方式就是用n個觸發(fā)器來實現(xiàn)具有n個狀態(tài)的狀態(tài)機(jī) 狀態(tài)機(jī)中的每一個狀態(tài)都

溫馨提示

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

評論

0/150

提交評論