版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
5.1組合邏輯電路設(shè)計5.1.1門電路設(shè)計門電路種類較多,我們設(shè)計一個二輸入與非門、一個二輸入或非門和一個二輸入異或門,其電路的符號如圖5.1所示。注意:為方便起見,將它們安排在一個結(jié)構(gòu)體中,同時實現(xiàn)相應(yīng)的輸出。5.1.2三態(tài)門及總線緩沖器設(shè)計三態(tài)門是驅(qū)動電路常用到的器件,其輸出除有高、低電平兩種狀態(tài)外,還有第三種狀態(tài)——高阻態(tài)。VHDL語言指定大寫字母“Z”表示高阻態(tài),三態(tài)門電路都有一個使能控制端EN,用來控制門電路的通/斷。其具體的描述代碼如下:下一頁返回5.1組合邏輯電路設(shè)計
上一頁下一頁返回如下5.1組合邏輯電路設(shè)計
上一頁下一頁返回續(xù)5.1組合邏輯電路設(shè)計
在ENTITY中,定義了兩個輸入信號:數(shù)據(jù)信號din和控制信號en;定義了一個三態(tài)的輸出信號。在ARCHITECTURE中,定義了電路的功能。當(dāng)en=‘1’(en端接高電平)時,該三態(tài)門導(dǎo)通,輸入信號傳遞到輸出端;當(dāng)en=‘0’(en端接低電平)時,該三態(tài)門斷開,輸入信號不能傳遞到輸出端,輸出端呈現(xiàn)高阻態(tài)。注意:將一組三態(tài)門并行地組成總線,就可以形成總線緩沖器,總線緩沖器分為單向總線緩沖器和雙向總線緩沖器。用VerilogHDL的關(guān)鍵字bufifl來描述一個三態(tài)門,該三態(tài)門有一個輸入端in、一個輸出端out和一個控制端oe。當(dāng)oe端為高時,out=in;當(dāng)oe端為低時,輸出out為高阻態(tài)。上一頁下一頁返回5.1組合邏輯電路設(shè)計
該三態(tài)門的源代碼如下:上一頁下一頁返回5.1組合邏輯電路設(shè)計
1.8位單向總線緩沖器在微機的總線驅(qū)動中經(jīng)常用到單向總線緩沖器,用于驅(qū)動地址總線和控制總線。其電路符號如圖5.4所示。一個8位的單向總線緩沖器的VHDL代碼如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYTR1_BUFFER8ISPORT(Din:INSTD_LOGIC_VECTOR(7DOWNTO0);EN:INSTD_LOGIC;上一頁下一頁返回5.1組合邏輯電路設(shè)計
Dout:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDTR1_BUFFER8;ARCHITECTUREfourOFTR1_BUFFER8ISBEGINPROCESS(EN,Din)//定義了一個進程BEGINIF(EN='1')THENDout<=Din;上一頁下一頁返回5.1組合邏輯電路設(shè)計
ELSEDout<="ZZZZZZZZ";//Z表示高阻態(tài)ENDIF;ENDPROCESS;ENDfour;在這段代碼中,數(shù)據(jù)輸入和數(shù)據(jù)輸出端都用8位矢量信號來代替1位信號,形成了8位的單向總線緩沖器。上一頁下一頁返回5.1組合邏輯電路設(shè)計
2.雙向總線緩沖器雙向總線緩沖器用于數(shù)據(jù)總線的驅(qū)動和緩沖,兩個數(shù)據(jù)端口均為雙向端口(INPUT),除了具有一個選通使能端EN外還有一個方向控制端DIR。其電路符號如圖5.5所示。VHDL語言對于復(fù)雜的情況一般采用多進程描述,由于雙向總線緩沖器的數(shù)據(jù)傳輸是兩個方向,且是分時運行的,因此用兩個進程描述兩種情況下的數(shù)據(jù)傳輸。上一頁下一頁返回5.1組合邏輯電路設(shè)計
8位雙向總線緩沖器的具體VHDL代碼如下:上一頁下一頁返回5.1組合邏輯電路設(shè)計
繼續(xù)上一頁下一頁返回5.1組合邏輯電路設(shè)計5.1.3編碼器、譯碼器設(shè)計在數(shù)字電路中,需要建立起特定的信息與二進制碼間的聯(lián)系。輸入為特定信息,輸出為相應(yīng)的二進制碼,這就是編碼器。輸入為二進制碼,輸出為對應(yīng)的特定信息,這就是譯碼器。1.8線?3線優(yōu)先編碼器8線?3線優(yōu)先編碼器是最常見的一種編碼器,它將輸入的某一個有效信號轉(zhuǎn)化為3位二進制碼,為了應(yīng)對同時出現(xiàn)多個輸入信號都有效的情況,確定每個輸入信號的等級,進行優(yōu)先編碼。其中,有8個輸入信號,3個輸出信號。輸入信號中i(0)的優(yōu)先級別最低,i(1)次之,以此類推,i(7)的優(yōu)先級別最高。上一頁下一頁返回5.1組合邏輯電路設(shè)計具體的VHDL代碼如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;//調(diào)用庫ENTITYENCODERIS//實體部分,描述電路功能PORT(i:INSTD_LOGIC_VECTOR(7DOWNTO0);y:OUTSTD_LOGIC_VECTOR(2DOWNTO0));ENDENCODER;ARCHITECTUREsixOFENCODERIS上一頁下一頁返回5.1組合邏輯電路設(shè)計BEGINPROCESS(i)//進程開始BEGINIFi(7)='1'THENy<="111";//如果輸入為1,則輸出值ELSIFi(6)='1'THENy<="110";ELSIFi(5)='1'THENy<="101";ELSIFi(4)='1'THENy<="100";ELSIFi(3)='1'THENy<="011";ELSIFi(2)='1'THENy<="010";上一頁下一頁返回5.1組合邏輯電路設(shè)計ELSIFi(1)='1'THENy<="001";ELSIFi(0)='1'THENy<="000";ELSEy<="XXX";ENDIF;ENDPROCESS;//結(jié)束進程ENDsix;注意:IF語句具有優(yōu)先特性,誰在外層誰優(yōu)先。在本例中當(dāng)敏感信號i發(fā)生變化時,進程執(zhí)行,首先對外層的i(7)判別,若i(7)有效,即優(yōu)先編碼。使用VerilogHDL設(shè)計的8線?3線優(yōu)先編碼器,代碼如下:上一頁下一頁返回5.1組合邏輯電路設(shè)計Moduleencoder8_3(none_on,outcode,a,b,c,d,e,f,g,h);outputnone_on;output[2:0]outcode;inputa,b,c,d,e,f,g,h;reg[3:0]temp;assign{none_on,outcode}=temp;always@(aorborcordoreorforgorh)上一頁下一頁返回5.1組合邏輯電路設(shè)計beginif(h)temp=4'b0111;else(g)temp=4'b0110;elseif(f)temp=4'b0101;elseif(e)temp=4'b0100;elseif(d)temp=4'b0011;elseif(c)temp=4'b0010;elseif(b)temp=4'b0001;上一頁下一頁返回5.1組合邏輯電路設(shè)計elseif(a)temp=4'b0000;elsetemp=4'b1000;endendmodule上一頁下一頁返回5.1組合邏輯電路設(shè)計
2.3線?8線譯碼器譯碼是編碼的逆過程,輸入為N位二進制碼,輸出的2N個信號中有且只有一個有效,每個輸入的二進制碼與輸出信號是一一對應(yīng)的關(guān)系。3線?8線譯碼器輸入3位二進制碼,確定8個輸出信號中的一個有效,其電路符號如圖5.7所示。其中,g1、g2、g3是使能信號。上一頁下一頁返回5.1組合邏輯電路設(shè)計
5.1.4多路數(shù)據(jù)選擇器和多路數(shù)據(jù)分配器設(shè)計多路數(shù)據(jù)選擇器和多路數(shù)據(jù)分配器都屬于通道選擇電路,多路數(shù)據(jù)選擇器是把從多個輸入支路中的一路作為輸出;多路數(shù)據(jù)分配器則是把一路輸入分配到多路輸出中的一路中。路徑的選擇都由數(shù)據(jù)選擇控制端決定。1.4選1數(shù)據(jù)選擇器4選1數(shù)據(jù)選擇器是多路數(shù)據(jù)選擇器中最常見的一種。有四路輸入、一路輸出,輸出信號從四路輸入中選取一路。其電路符號如圖5.8所示。其中,g是使能控制輸入端,當(dāng)g=0時,電路不工作,輸出為0,a[1..0]是數(shù)據(jù)選擇控制端,決定4輸入哪個被選中。上一頁下一頁返回5.1組合邏輯電路設(shè)計
2.1對4數(shù)據(jù)分配器1對4數(shù)據(jù)分配器是4選1數(shù)據(jù)選擇器的逆過程。有一路輸入、四路輸出,輸入信號從四路輸出中選取一路通過。其電路符號如圖5.9所示。其中,a[1..0]是數(shù)據(jù)選擇控制端,決定輸入信號din將分配到y(tǒng)0、y1、y2和y3哪個中去。上一頁返回5.2時序邏輯電路設(shè)計5.2.1觸發(fā)器設(shè)計觸發(fā)器是構(gòu)成時序邏輯電路的基本元件。按照有無復(fù)位、置位功能以及復(fù)位、置位與時鐘信號是否同步,可以分為多種常見的D觸發(fā)器。這里以最常用的同步復(fù)位D觸發(fā)器為例,講述觸發(fā)器電路的設(shè)計方法。其電路符號如圖5.10所示。下面使用VHDL語言對同步復(fù)位D觸發(fā)器進行描述,下一頁返回5.2時序邏輯電路設(shè)計
具體的代碼如下:上一頁下一頁返回5.2時序邏輯電路設(shè)計
繼續(xù)上一頁下一頁返回5.2時序邏輯電路設(shè)計
注意:CLK'EVENTANDCLK=‘1’就是用于檢測時鐘上升沿的函數(shù),CLK'EVENTANDCLK=‘0’則用于檢測時鐘下降沿。IF語句具有優(yōu)先特性。上例在使用IF嵌套結(jié)構(gòu)時,時鐘信號在外層,優(yōu)先級高于復(fù)位信號,因此是同步復(fù)位。如果將代碼段“IF(PRESET=‘0’)THENQ<=‘0’;”放在時鐘檢測語句外面,就是異步復(fù)位。使用VHDL描述,其代碼如下:上一頁下一頁返回5.2時序邏輯電路設(shè)計
下面是使用VerilogHDL語言編寫的觸發(fā)器代碼:上一頁下一頁返回5.2時序邏輯電路設(shè)計
5.2.2寄存器設(shè)計寄存器由一組觸發(fā)器連接而成,用于存儲一組二進制信息,廣泛用于各類數(shù)字系統(tǒng)。寄存器分為普通寄存器和特殊功能寄存器,特殊功能寄存器又包括鎖存器、移位寄存器、串入串出寄存器、串入并出寄存器、并入串出寄存器。5.2.3計數(shù)器設(shè)計計數(shù)器的邏輯功能就是用來記憶時鐘脈沖的個數(shù),是數(shù)字系統(tǒng)中使用廣泛的時序電路。它不僅用于對時鐘脈沖計數(shù),實現(xiàn)分頻、計時,還可以用于產(chǎn)生節(jié)拍脈沖和脈沖序列以及進行數(shù)字運算等。計數(shù)器的最大計數(shù)值稱為計數(shù)器的模。上一頁下一頁返回5.2時序邏輯電路設(shè)計
計數(shù)器由一組觸發(fā)器構(gòu)成,計數(shù)器中的觸發(fā)器是否同時翻轉(zhuǎn)分類,可以把計數(shù)器分為同步計數(shù)器和異步計數(shù)器。在同步計數(shù)器中,時鐘脈沖變化與觸發(fā)器的翻轉(zhuǎn)是同時發(fā)生的,在異步計數(shù)器中,每個觸發(fā)器的時鐘不同,因而翻轉(zhuǎn)有前有后,不是同時發(fā)生的。上一頁返回5.3有限狀態(tài)機電路設(shè)計5.3.1有限狀態(tài)機概述有限狀態(tài)機是指輸出取決于輸入信號和當(dāng)前所處狀態(tài)的時序邏輯電路。有限狀態(tài)機含有一組具有記憶功能的寄存器,稱為狀態(tài)寄存器,這些寄存器的功能是記憶有限狀態(tài)機的內(nèi)部狀態(tài),狀態(tài)寄存器的下一個狀態(tài)不僅與輸入信號有關(guān),而且還與該寄存器的當(dāng)前狀態(tài)有關(guān)。因此,有限狀態(tài)機又可以認(rèn)為是組合邏輯和寄存器邏輯的一種組合。其中,寄存器邏輯的功能是存儲有限狀態(tài)機的內(nèi)部狀態(tài);而組合邏輯又可以分為次態(tài)邏輯和輸出邏輯兩部分,次態(tài)邏輯的功能是確定有限狀態(tài)機的下一個狀態(tài),輸出邏輯的功能是確定有限狀態(tài)機的輸出。在實際應(yīng)用中,按照有限狀態(tài)機是否使用輸入信號,將其分為Moore型有限狀態(tài)機和Mealy型有限狀態(tài)機兩種類型。下一頁返回5.3有限狀態(tài)機電路設(shè)計
5.3.2有限狀態(tài)機的算法描述當(dāng)接到設(shè)計任務(wù)后,仔細(xì)研究所設(shè)計的數(shù)字控制系統(tǒng)的功能,如果該系統(tǒng)具有按一定順序產(chǎn)生不同輸出的特征,那么就可以用有限狀態(tài)機來實現(xiàn)該控制系統(tǒng)。描述有限狀態(tài)機的算法有兩種:狀態(tài)轉(zhuǎn)換真值表和狀態(tài)轉(zhuǎn)換圖。兩種方法的描述結(jié)果是一樣的,本章使用狀態(tài)轉(zhuǎn)換真值表。對于同一個數(shù)字系統(tǒng)的功能描述,不同的設(shè)計者可能構(gòu)建出不同的狀態(tài)轉(zhuǎn)換真值表,而且都能很好完成系統(tǒng)要求。目前還不能找到一個通用的構(gòu)建狀態(tài)轉(zhuǎn)換真值表的算法,還依賴于設(shè)計者的設(shè)計經(jīng)驗。上一頁下一頁返回5.3有限狀態(tài)機電路設(shè)計
但設(shè)計者若能認(rèn)真閱讀前人設(shè)計的源代碼,學(xué)習(xí)前人的設(shè)計思路,就能構(gòu)建出較好的狀態(tài)轉(zhuǎn)換真值表。在這里,將列舉一個洗衣機控制器的例子,詳細(xì)介紹有限狀態(tài)機的設(shè)計方法。洗衣機控制器的設(shè)計要求:(1)啟動電源開機,確定水位后,啟動進水閥加水。(2)達到水位后進入洗滌狀態(tài),關(guān)閉進水閥,啟動洗滌電動機。(3)達到洗滌時間,洗滌電動機停轉(zhuǎn),啟動出水閥。(4)水排干凈后,啟動甩干電動機把水甩干。(5)甩干后,關(guān)閉進水閥,啟動進水閥加水。上一頁下一頁返回5.3有限狀態(tài)機電路設(shè)計
(6)達到水位后進入漂洗狀態(tài),關(guān)閉進水閥,啟動旋轉(zhuǎn)電動機。(7)達到漂洗時間,旋轉(zhuǎn)電動機停轉(zhuǎn),啟動出水閥。(8)水排干凈后,啟動甩干電動機把水甩干。(9)甩干后,關(guān)閉進水閥、斷電。通過以上要求,發(fā)現(xiàn)系統(tǒng)具有按一定順序產(chǎn)生不同輸出的特征,應(yīng)該采用有限狀態(tài)機來實現(xiàn)。系統(tǒng)的輸入信號是:開機輸入START、加水用的水位傳感器送來的WL1、排水用的水位傳感器送來的WL2、洗滌定時器輸入T1、甩干定時器輸入T2。系統(tǒng)的輸出信號是:進水閥控制端J、排水閥控制端P、洗滌電動機控制端M1、漂洗電動機控制端M2、電源控制端Y。上一頁下一頁返回5.3有限狀態(tài)機電路設(shè)計
洗衣機控制器的狀態(tài)根據(jù)洗衣機的工作時序可分成9個狀態(tài),分別是S0、S1、S2、S3、S4、S5、S6、S7、S8,與上述洗衣機的工作時序相對應(yīng)。開機輸入START作為使能信號。本例是簡化了的洗衣機控制器,只是為了說明設(shè)計有限狀態(tài)機的思路,有興趣的讀者可以補充完整。5.3.3有限狀態(tài)機的VHDL描述模式使用VHDL語言描述的有限狀態(tài)機,基本上有固定描述方式,我們將狀態(tài)轉(zhuǎn)換真值表的內(nèi)容填入模板,就可以設(shè)計出程序。上一頁下一頁返回5.3有限狀態(tài)機電路設(shè)計
模板代碼如下:上一頁下一頁返回5.3有限狀態(tài)機電路設(shè)計繼續(xù)上一頁下一頁返回5.3有限狀態(tài)機電路設(shè)計
繼續(xù)上一頁下一頁返回5.3有限狀態(tài)機電路設(shè)計
繼續(xù)上一頁下一頁返回5.3有限狀態(tài)機電路設(shè)計
5.3.4有限狀態(tài)機的VerilogHDL描述模式在VerilogHDL設(shè)計中,描述狀態(tài)機代碼有一定的開發(fā)模板。根據(jù)該模板寫出來的狀態(tài)機有著較高的性能和完全的可綜合性,可以提高設(shè)計效率。本節(jié)主要介紹兩類狀態(tài)機的經(jīng)典實現(xiàn)模板。狀態(tài)機的描述通常有三種方法,稱為一段式狀態(tài)機、二段式狀態(tài)機和三段式狀態(tài)機。不同的描述所對應(yīng)的電路是不同的,因此最終的性能也是不同的。狀態(tài)機的描述通常包含以下四部分:(1)利用參數(shù)定義語句parameter描述狀態(tài)機各個狀態(tài)名稱,即狀態(tài)編碼。狀態(tài)編碼通常有很多方法,包含自然二進制編碼、One?hot編碼和格雷編碼等。上一頁下一頁返回5.3有限狀態(tài)機電路設(shè)計
(2)用時序的always塊描述狀態(tài)觸發(fā)器實現(xiàn)狀態(tài)存儲。(3)使用敏感表和case語句(也采用if?else等價語句)描述狀態(tài)轉(zhuǎn)換邏輯。(4)描述狀態(tài)機的輸出邏輯。下面介紹狀態(tài)機的三種方法,以比較各種方法的優(yōu)劣。1.一段式狀態(tài)機這種方式是將當(dāng)前狀態(tài)向量和輸出向量用同一個時序always塊來進行描述,由于是寄存器輸出,輸出向量不會產(chǎn)生毛刺,也有利于綜合。但是這種方式有缺點,比如代碼冗長,不易修改和調(diào)試,可維護性差且占用資源多;上一頁下一頁返回5.3有限狀態(tài)機電路設(shè)計
通過case語句對輸出向量的賦值應(yīng)是下一個狀態(tài)的輸出,這易出錯。狀態(tài)向量和輸出向量都由寄存器邏輯實現(xiàn),占用面積較大;不能實現(xiàn)異步Mealy型有限狀態(tài)機。2.二段式狀態(tài)機二段式狀態(tài)機中,一個時序always塊給當(dāng)前狀態(tài)向量賦值,一個組合always塊給下一狀態(tài)和輸出向量賦值,常用于描述組合輸出的Moore型狀態(tài)機或異步Mealy型狀態(tài)機,這種方式具有最優(yōu)的面積和時序性能,其缺點是其輸出為當(dāng)前狀態(tài)的組合函數(shù),因此存在以下問題:上一頁下一頁返回5.3有限狀態(tài)機電路設(shè)計
(1)組合邏輯輸出會使輸出向量產(chǎn)生毛刺。一般情況下,輸出向量的毛刺對電路的影響可以忽略不計。但當(dāng)輸出向量作為三態(tài)使能控制或者時鐘信號使用的時候,就必須消除毛刺,否則會對后面的電路產(chǎn)生致命的隱患。(2)從速度角度來看,由于這種狀態(tài)機的輸出向量必須由狀態(tài)向量經(jīng)譯碼得到,加大了從狀態(tài)向量到輸出向量的延時。(3)從綜合角度來看,組合輸出消耗了一部分時鐘周期,即增加了由它驅(qū)動的下一個模塊的輸入延時,不利于綜合腳本的編寫和綜合優(yōu)化算法的實現(xiàn)。上一頁下一頁返回
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新穎游樂活動策劃方案(3篇)
- 2026內(nèi)蒙古昌都市丁青縣消防救援大隊補招政府專職消防員4人備考考試試題及答案解析
- 2026山東事業(yè)單位統(tǒng)考淄博高新區(qū)事業(yè)單位面向退役大學(xué)生士兵招聘綜合類(專項)崗位備考考試題庫及答案解析
- 2026中電科金倉(北京)科技股份有限公司校園招聘備考考試試題及答案解析
- 2026年上半年黑龍江省林業(yè)科學(xué)院事業(yè)單位公開招聘工作人員55人筆試備考試題及答案解析
- 2026甘肅蘭州市安寧區(qū)人民醫(yī)院招聘編外醫(yī)務(wù)工作人員1名備考考試題庫及答案解析
- 2026四川宜賓市屏山縣融媒體中心第一次招聘編外工作人員1人參考考試題庫及答案解析
- 2026浙江寧波東方蔚藍人力資源有限公司第一期招聘2人備考考試試題及答案解析
- 2026中國科學(xué)院理化技術(shù)研究所熱聲熱機團隊招聘特別研究助理博士后1人備考考試題庫及答案解析
- 2026廣東茂名出入境邊防檢查站編制外人員招聘1人筆試模擬試題及答案解析
- 太倉市高一化學(xué)期末考試卷及答案
- 生活物資保障指南解讀
- 2025年浙江省委黨校在職研究生招生考試(社會主義市場經(jīng)濟)歷年參考題庫含答案詳解(5卷)
- DB3704∕T0052-2024 公園城市建設(shè)評價規(guī)范
- 采購領(lǐng)域廉潔培訓(xùn)課件
- 公司股東入股合作協(xié)議書
- 2025年中國化妝品注塑件市場調(diào)查研究報告
- 小兒藥浴治療
- 保險實務(wù)課程設(shè)計
- 物業(yè)管理公司管理目標(biāo)標(biāo)準(zhǔn)
- 2023年重慶巴南區(qū)重點中學(xué)指標(biāo)到校數(shù)學(xué)試卷真題(答案詳解)
評論
0/150
提交評論