版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第8章基本邏輯電路設(shè)計8.1組合邏輯電路設(shè)計8.2時序電路設(shè)計習(xí)題與思考題第8章基本邏輯電路設(shè)計8.1組合邏輯電路設(shè)計
8.1組合邏輯電路設(shè)計
8.1.1簡單門電路簡單門電路包括2輸入“與非”門、集電極開路的2輸入“與非”門、2輸入“或非”門、反相器、集電極開路的反相器、3輸入“與”門、3輸入“與非”門、2輸入“或”門和2輸入“異或”門等,它們是構(gòu)成所有邏輯電路的基本電路。
8.1組合邏輯電路設(shè)計
8.1.1簡單門電路
1.2輸入“與非”門電路
2輸入“與非”門電路的邏輯表達(dá)式為
y?=???(a∧b)
其邏輯電路圖如圖8-1所示。
利用VHDL描述2輸入“與非”門有多種形式,現(xiàn)舉兩個例子加以說明。
1.2輸入“與非”門電路
2輸入“與非”門電路的邏圖8-1
2輸入“與非”門電路圖8-12輸入“與非”門電路
【例8-1】用VHDL描述2輸入“與非”門電路示例一。
【例8-1】用VHDL描述2輸入“與非”門電路示例一
【例8-2】用VHDL描述2輸入“與非”門電路示例二。
【例8-2】用VHDL描述2輸入“與非”門電路示例二VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
從上面兩個例子中可以看出,例8-1的描述更簡潔,更接近于2輸入“與非”門的行為描述,因此也更易于閱讀;例8-2的描述是以2輸入“與非”門的真值表為依據(jù)來編寫的,羅列了2輸入“與非”門的每種輸入狀態(tài)及其對應(yīng)的輸出結(jié)果。
從上面兩個例子中可以看出,例8-1的描述更簡潔,更接近
集電極開路的2輸入“與非”門和一般的2輸入“與非”門在VHDL的描述上沒有什么差異,所不同的只是從不同元件庫中提取相應(yīng)的電路而已。例如:
集電極開路的2輸入“與非”門和一般的2輸入“與非”門在
在第一個例子中要生成的是一般TTL的2輸入“與非”門,而在第二個例子中要生成的是TTL集電極開路的2輸入“與非”門。這里所敘述的情況對其他門電路同樣適用。因此,對不同類型門電路的集電極開路輸出門,本節(jié)將不再贅述。
在第一個例子中要生成的是一般TTL的2輸入“與非”門,
2.2輸入“或非”門電路
2輸入“或非”門電路的邏輯表達(dá)式為
y?=???(a∨b)
其邏輯電路圖如圖8-2所示。
現(xiàn)舉兩個用VHDL描述2輸入“或非”門電路的例子。
2.2輸入“或非”門電路
2輸入“或非”門電路的邏圖8-2
2輸入“或非”門電路圖8-22輸入“或非”門電路
【例8-3】用VHDL描述2輸入“或非”門電路示例一。
【例8-3】用VHDL描述2輸入“或非”門電路示例一
【例8-4】用VHDL描述2輸入“或非”門電路示例二。
【例8-4】用VHDL描述2輸入“或非”門電路示例二VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
3.反相器
反相器電路的邏輯表達(dá)式為
y
=???a
其邏輯電路圖如圖8-3所示。
VHDL對反相器的描述如例8-5和例8-6所示。
3.反相器
反相器電路的邏輯表達(dá)式為
圖8-3反相器電路圖8-3反相器電路
【例8-5】VHDL對反相器的描述一。
【例8-5】VHDL對反相器的描述一。
【例8-6】
VHDL對反相器的描述二。
【例8-6】VHDL對反相器的描述二。
VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
4.3輸入“與非”門電路
3輸入“與非”門電路的邏輯表達(dá)式為
y
=??
(a∧b∧c)
其邏輯電路如圖8-4所示。
3輸入“與非”門和2輸入“與非”門的差異僅在于多了一個輸入引腳,在用VHDL編程時,在端口說明中應(yīng)加一個輸入端口。例如,原來的輸入端口為a、b兩個,現(xiàn)在應(yīng)變?yōu)閍、b、c三個。當(dāng)然,根據(jù)邏輯表達(dá)式,該輸入端口的信號c應(yīng)與a、b一樣,一起參與邏輯運算,以得到最后的輸出y。用VHDL描述3輸入“與非”門電路示例如例8-7和例8-8所示。
4.3輸入“與非”門電路
3輸入“與非”門電路的圖8-43輸入“與非”門電路圖8-43輸入“與非”門電路
【例8-7】用VHDL描述3輸入“與非”門電路示例一。
【例8-7】用VHDL描述3輸入“與非”門電路示例一
【例8-8】用VHDL描述3輸入“與非”門電路示例二。
【例8-8】用VHDL描述3輸入“與非”門電路示例二VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
5.2輸入“異或”門電路
2輸入“異或”門電路的邏輯表達(dá)式為
其邏輯電路如圖8-5所示。
用VHDL描述2輸入“異或”門電路示例如例8-9和例8-10所示。
5.2輸入“異或”門電路
2輸入“異或”門電路的邏圖8-52輸入“異或”門電路圖8-52輸入“異或”門電路
【例8-9】用VHDL描述2輸入“異或”門電路示例一。
【例8-9】用VHDL描述2輸入“異或”門電路示例一
【例8-10】用VHDL描述2輸入“異或”門電路示例二。
【例8-10】用VHDL描述2輸入“異或”門電路示例VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
上述簡單的門電路大多用兩種不同形式的VHDL程序來描述,其行為和功能是完全一樣的。事實上還可以運用VHDL中所給出的語句來描述這些門電路,這就給編程人員提供了較大的編程靈活性。但是,一般來說,無論是編程人員還是閱讀這些程序的人員,都希望程序能一目了然,因此盡可能采用VHDL中所提供的語言和符號,用簡潔的語句描述其行為,這總是首選的描述方式。
上述簡單的門電路大多用兩種不同形式的VHDL程序來描述
8.1.2編、譯碼器與選擇器
編、譯碼器和選擇器是組合電路中較簡單的3種通用電路。它們可以由簡單的門電路組合連接構(gòu)成。例如,圖8-6所示是一個3-8譯碼器電路(74LS138)。由有關(guān)手冊可知,該譯碼器由8個3輸入“與非”門、4個反相器和一個3輸入“或非”門構(gòu)成。如果事先不作說明,只給出電路,讓讀者來判讀該電路的功能,那么毋庸置疑,要看懂該電路就要花較多的時間。如果采用VHDL,從行為、功能來對3-8譯碼器進(jìn)行描述,則不僅邏輯設(shè)計變得非常容易,而且閱讀也會很方便。
8.1.2編、譯碼器與選擇器
編、譯碼器和選擇器是圖8-63-8譯碼器電路圖8-63-8譯碼器電路
1.3-8譯碼器
3-8譯碼器是最常用的一種小規(guī)模集成電路,它有3個二進(jìn)制輸入端a、b、c和8個譯碼輸出端y0~y7。對輸入a、b、c的值進(jìn)行譯碼,就可以確定輸出端y0~y7的哪一個輸出端變?yōu)橛行?低電平),從而達(dá)到譯碼的目的。3-8譯碼器的真值表如表8-1所示。
1.3-8譯碼器
3-8譯碼器是最常用的一種小規(guī)模VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
3-8譯碼器還有3個選通輸入端g1、g2a和g2b。只有在g1?=?1,g2a?=?0,g2b?=?0時,3-8譯碼器才進(jìn)行正常譯碼,否則y0~y7輸出均為高電平。
3-8譯碼器還有3個選通輸入端g1、g2a和g2b。只
【例8-11】3-8譯碼器用VHDL描述如下:
【例8-11】3-8譯碼器用VHDL描述如下:
VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
2.優(yōu)先級編碼器
優(yōu)先級編碼器常用于中斷的優(yōu)先級控制。例如,74LS148是一個8輸入、3位二進(jìn)制碼輸出的優(yōu)先級編碼器。當(dāng)其某一個輸入有效時,就可以輸出一個對應(yīng)的3位二進(jìn)制編碼。另外,當(dāng)同時有幾個輸入有效時,將輸出優(yōu)先級最高的那個輸入所對應(yīng)的二進(jìn)制編碼。
圖8-7是優(yōu)先級編碼器的引腳圖,它有8個輸入input(0)~input(7)和3位二進(jìn)制碼輸出y0~y2。
2.優(yōu)先級編碼器
優(yōu)先級編碼器常用于中斷的優(yōu)先級控圖8-7優(yōu)先級編碼器圖8-7優(yōu)先級編碼器
該優(yōu)先級編碼器的真值表如表8-2所示。表中,“X”表示任意項,它可以是“0”,也可以是“1”。input(0)的優(yōu)先級最高,input(7)的優(yōu)先級最低。
該優(yōu)先級編碼器的真值表如表8-2所示。表中,“X”表示VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
【例8-12】用VHDL描述優(yōu)先級編碼器的程序如下:
【例8-12】用VHDL描述優(yōu)先級編碼器的程序如下:
因為VHDL中目前還不能描述任意項,所以不能用前面一貫采用的CASE語句來描述,而采用了IF語句。
因為VHDL中目前還不能描述任意項,所
3.四選一選擇器
選擇器常用于信號的切換。四選一選擇器可以用于4路信號的切換。四選一選擇器有4個信號輸入端input(0)~input(3)、2個信號選擇端a和b及一個信號輸出端y。當(dāng)a、b輸入不同的選擇信號時,就可以使input(0)~input(3)中某個相應(yīng)的輸入信號與輸出y端接通。例如,當(dāng)a?=?b?=“0”時,input(0)就與y接通。其邏輯電路如圖8-8所示。
3.四選一選擇器
選擇器常用于信號的切換。四選一選圖8-8四選一電路圖8-8四選一電路
四選一電路的真值表如表8-3所示。
四選一電路的真值表如表8-3所示。
【例8-13】用VHDL對四選一電路進(jìn)行描述的程序如下:
【例8-13】用VHDL對四選一電路進(jìn)行描述的程序VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
例8-13中的四選一選擇器是用IF語句描述的,程序中的ELSE項作為余下的條件,將選擇input(3)從y端輸出,這種描述比較安全。當(dāng)然,不用ELSE項也可以,這時必須列出sel所有可能出現(xiàn)的情況,加以一一確認(rèn)。
例8-13中的四選一選擇器是用IF語句描述的,程序中的
8.1.3加法器與求補(bǔ)器
1.加法器
加法器有全加器和半加器之分,全加器可以用兩個半加器構(gòu)成,因此下面先以半加器為例加以說明。
半加器有兩個二進(jìn)制一位的輸入端a和b、一位和的輸出端s、一位進(jìn)位位的輸出端co。半加器的真值表如表8-4所示,其電路符號如圖8-9所示。
8.1.3加法器與求補(bǔ)器
1.加法器
加法器有圖8-9半加器圖8-9半加器VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
【例8-14】用VHDL描述半加器的程序如下:
【例8-14】用VHDL描述半加器的程序如下:
用兩個半加器可以構(gòu)成一個全加器。全加器的電路如圖8-10所示。
圖8-10用兩個半加器構(gòu)成的全加器
用兩個半加器可以構(gòu)成一個全加器。全加器的電路如圖8-1
【例8-15】采用COMPONENT語句和PORTMAP語句描述全加器。
【例8-15】采用COMPONENT語句和PORTVHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
2.求補(bǔ)器
二進(jìn)制運算經(jīng)常要用到求補(bǔ)操作。8位二進(jìn)制數(shù)的求補(bǔ)電路符號如圖8-11所示。
求補(bǔ)電路的輸入為a(0)~a(7),補(bǔ)碼輸出為b(0)~b(7),其中a(7)和b(7)為符號位。該電路較復(fù)雜,如果像半加器那樣對每個門進(jìn)行描述和連接是可以做到的,但是那樣做太繁瑣。這里采用RTL描述更加簡潔、清楚。
2.求補(bǔ)器
二進(jìn)制運算經(jīng)常要用到求補(bǔ)操作。8位二進(jìn)圖8-11
8位二進(jìn)制數(shù)的求補(bǔ)電路符號圖8-118位二進(jìn)制數(shù)的求補(bǔ)電路符號
【例8-16】用RTL描述求補(bǔ)器。
【例8-16】用RTL描述求補(bǔ)器。
8.1.4三態(tài)門與總線緩沖器
三態(tài)門與雙向總線緩沖器是接口電路和總線驅(qū)動電路經(jīng)常用到的器件。它們雖然不屬于組合電路,為簡化章節(jié),也列于此處進(jìn)行介紹。
1.三態(tài)門電路
三態(tài)門電路如圖8-12所示。它具有一個數(shù)據(jù)輸入端din、一個數(shù)據(jù)輸出端dout和一個控制端en。當(dāng)en?=?'1'?時,dout?=?din;當(dāng)en?=?'0'?時,dout?=?′Z′(高阻)。三態(tài)門的真值表如表8-5所示。
8.1.4三態(tài)門與總線緩沖器
三態(tài)門與雙向總線緩沖圖8-12三態(tài)門電路圖8-12三態(tài)門電路VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
【例8-17】用VHDL描述三態(tài)門的程序如下:
【例8-17】用VHDL描述三態(tài)門的程序如下:
在第3章中讀者已經(jīng)知道,一個實體可以對應(yīng)多種構(gòu)造體。例8-18和例8-19就是用不同的VHDL描述的三態(tài)門的結(jié)構(gòu)。
在第3章中讀者已經(jīng)知道,一個實體可以對應(yīng)多種
【例8-18】用VHDL描述三態(tài)門的結(jié)構(gòu)示例一。
【例8-18】用VHDL描述三態(tài)門的結(jié)構(gòu)示例一。
該例中采用衛(wèi)式塊語句結(jié)構(gòu)來表示三態(tài)門。衛(wèi)式塊語句結(jié)構(gòu)的特點是:只有塊語句的條件滿足時,塊中所含的語句才會被執(zhí)行。在這里只有en?=?'1'?的條件滿足時,dout<=GUARDEDdin語句才會被執(zhí)行。
該例中采用衛(wèi)式塊語句結(jié)構(gòu)來表示三態(tài)門。衛(wèi)式塊語句結(jié)構(gòu)的VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
2.單向總線緩沖器
在微型計算機(jī)的總線驅(qū)動中經(jīng)常要用單向總線緩沖器,它通常由多個三態(tài)門組成,用來驅(qū)動地址總線和控制總線。
一個8位的單向總線緩沖器如圖8-13所示。8位的單向總線緩沖器由8個三態(tài)門組成,具有8個輸入和8個輸出端。所有三態(tài)門的控制端連在一起,由一個控制輸入端en控制。
用VHDL描述的8位單向總線緩沖器的程序?qū)嵗缋?-20、例8-21和例8-22所示。
2.單向總線緩沖器
在微型計算機(jī)的總線驅(qū)動中經(jīng)常要圖8-13單向總線緩沖器圖8-13單向總線緩沖器
【例8-20】用VHDL描述的8位單向總線緩沖器的程序?qū)嵗弧?/p>
【例8-20】用VHDL描述的8位單向總線緩沖器的程VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
【例8-21】用VHDL描述的8位單向總線緩沖器的程序?qū)嵗?/p>
【例8-21】用VHDL描述的8位單向總線緩沖器的程
【例8-22】用VHDL描述的8位單向總線緩沖器的程序?qū)嵗?/p>
【例8-22】用VHDL描述的8位單向總線緩沖器的程
在編寫上述程序時應(yīng)注意,不能將“Z”值賦予變量,否則就不能進(jìn)行邏輯綜合。另外,對信號賦值時“Z”和“0”或“1”不能混合使用,例如:
dout<=″Z001ZZZZ″;
這樣的語句是不允許出現(xiàn)的。但是變換賦值表達(dá)式時,分開賦值是可以的。例如:
dout(7)<="Z";
dout(6DOWNTO4)
<="001";
dout(3DOWNTO0)
<="ZZZZ";
在編寫上述程序時應(yīng)注意,不能將“Z”值賦予變量,否則就
3.雙向總線緩沖器
雙向總線緩沖器用于對數(shù)據(jù)總線進(jìn)行驅(qū)動和緩沖。典型的雙向總線緩沖器的電路圖如圖8-14所示。圖中,雙向緩沖器有兩個數(shù)據(jù)輸入輸出端a和b、一個方向控制端dr和一個選通端en。當(dāng)en?=?1時,雙向總線緩沖器未被選通,a和b都呈現(xiàn)高阻;當(dāng)en?=?0時,雙向總線緩沖器被選通,如果dr?=?0,那么a?=?b,如果dr?=?1,那么b?=?a。雙向總線緩沖器的真值表如表8-6所示。
3.雙向總線緩沖器
雙向總線緩沖器用于對數(shù)據(jù)總線進(jìn)圖8-14雙向總線緩沖器圖8-14雙向總線緩沖器VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
【例8-23】用VHDL描述雙向總線緩沖器實例。
【例8-23】用VHDL描述雙向總線緩沖器實例。
VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
從例8-23中可以看出,雙向總線緩沖器由兩組三態(tài)門組成,利用信號aout和bout將兩組三態(tài)門連接起來。由于在實際工作過程中a和b都不可能同時出現(xiàn)“0”和“1”,因此在這里沒有使用判決函數(shù)。
從例8-23中可以看出,雙向總線緩沖器由兩
8.2時序電路設(shè)計
8.2.1時鐘信號和復(fù)位信號
1.時鐘信號的描述眾所周知,任何時序電路都以時鐘信號為驅(qū)動信號,時序電路只是在時鐘信號的邊沿到來時,其狀態(tài)才發(fā)生改變。因此,時鐘信號通常描述時序電路程序的執(zhí)行條件。另外,時序電路也總是以時鐘進(jìn)程的形式來進(jìn)行描述的,其描述方式一般有兩種。
8.2時序電路設(shè)計
8.2.1時鐘信號和復(fù)位信號
(1)進(jìn)程的敏感信號是時鐘信號。在這種情況下,時鐘信號應(yīng)作為敏感信號,顯式地出現(xiàn)在PROCESS語句后跟的括號中,例如PROCESS(clock_signal)。時鐘信號邊沿的到來將作為時序電路語句執(zhí)行的條件。
(1)進(jìn)程的敏感信號是時鐘信號。在這種情況下,時鐘信
【例8-24】進(jìn)程的敏感信號是時鐘信號實例。
【例8-24】進(jìn)程的敏感信號是時鐘信號實例。
(2)用進(jìn)程中的WAITON語句等待時鐘。在這種情況下,描述時序電路的進(jìn)程將沒有敏感信號,而是用WAITON語句來控制進(jìn)程的執(zhí)行。也就是說,進(jìn)程通常停留在WAITON語句上,只有在時鐘信號到來且滿足邊沿條件時,其余的語句才能執(zhí)行。
(2)用進(jìn)程中的WAITON語句等待時鐘。在這種情
【例8-25】用進(jìn)程中的WAITON語句等待時鐘實例。
【例8-25】用進(jìn)程中的WAITON語句等待時鐘實
在編寫上述程序時應(yīng)注意:
·無論IF語句還是WAITON語句,在對時鐘邊沿進(jìn)行說明時,一定要注明是上升沿還是下降沿(前沿還是后沿),只說明是邊沿是不行的。
·當(dāng)時鐘信號作為進(jìn)程的敏感信號時,在敏感信號的表中不能出現(xiàn)一個以上的時鐘信號,除時鐘信號以外,復(fù)位信號等是可以和時鐘信號一起出現(xiàn)在敏感表中的。
·WAITON語句只能放在進(jìn)程的最前面或者最后面。
在編寫上述程序時應(yīng)注意:
·無論IF語句還是WA
(3)時鐘邊沿的描述。為了描述時鐘邊沿,一定要指定是上升沿還是下降沿,這一點可以使用時鐘信號的屬性描述來進(jìn)行。也就是說,要指定時鐘信號的值是從“0”到“1”變化,還是從“1”到“0”變化,由此可以得知是時鐘脈沖信號的上升沿還是下降沿。
(3)時鐘邊沿的描述。為了描述時鐘邊沿,一定要指定是
①時鐘脈沖上升沿的描述。時鐘脈沖上升沿波形與時鐘信號屬性的描述關(guān)系如圖8-15所示。從圖8-15中可以看到,時鐘信號的起始值為“0”,故其屬性值clk‘LAST_VALUE='0';上升沿的到來表示發(fā)生了一個事件,故用clk?'EVENT表示;上升沿以后,時鐘信號的值為“1”,故其當(dāng)前值為clk='1'。這樣,表示上升沿到來的條件可寫為
IFclk='1'ANDclk'LAST_VAULE='0'ANDclk'EVENT
①時鐘脈沖上升沿的描述。時鐘脈沖上升沿波形與時鐘信號
②時鐘脈沖下降沿的描述。時鐘脈沖下降沿波形與時鐘信號屬性的描述關(guān)系如圖8-16所示。其關(guān)系與圖8-15類同,此時clk'LAST_VALUE?=?'1';時鐘信號當(dāng)前值為clk='0';下降沿到來的事件為clk'EVENT。這樣表示下降沿到來的條件可寫為
IFclk='0'ANDclk'LAST_VALUE=?'1'ANDclk'EVENT
②時鐘脈沖下降沿的描述。時鐘脈沖下降沿波形與時鐘信號圖8-15時鐘脈沖上升沿波形和時鐘信號屬性的描述關(guān)系圖8-15時鐘脈沖上升沿波形和時鐘信號屬性的描述關(guān)系圖8-16時鐘脈沖下降沿波形和時鐘信號屬性的描述關(guān)系圖8-16時鐘脈沖下降沿波形和時鐘信號屬性的描述關(guān)系
根據(jù)上面關(guān)于上升沿和下降沿的描述,時鐘信號邊沿檢出條件可以統(tǒng)一描述如下:
IFclock_signal=current_valueAND
clock_signal‘LAST_VALUEANDclock_signal’EVENT
在某些書刊中邊沿檢出條件也可簡寫為
IFclock_signal=clock_signal'EVENTANDcurrent_value
根據(jù)上面關(guān)于上升沿和下降沿的描述,時鐘信號邊沿檢出條件
③由于在STD_LOGIC的數(shù)據(jù)類型中,其值除“0”和“1”以外,還可以取“2”、“X”等9種狀態(tài)值。這樣在綜合時有可能出現(xiàn)問題。為避免類似情況發(fā)生,建議盡可能用IEEE中的現(xiàn)成邊沿描述函數(shù)。例如:
上升沿可描述為
IFvising_edge(cp)THEN
下降沿可描述為
IFfalling_edge(cp)THEN
③由于在STD_LOGIC的數(shù)據(jù)類型中,其值除“0”
2.觸發(fā)器的同步和非同步復(fù)位
觸發(fā)器的初始狀態(tài)應(yīng)由復(fù)位信號來設(shè)置。復(fù)位信號對觸發(fā)器復(fù)位的操作不同,使其可以分為同步復(fù)位和非同步復(fù)位兩種。所謂同步復(fù)位,就是復(fù)位信號有效且在給定的時鐘邊沿到來時,觸發(fā)器才被復(fù)位;非同步復(fù)位則是指一旦復(fù)位信號有效,觸發(fā)器就被復(fù)位。
2.觸發(fā)器的同步和非同步復(fù)位
觸發(fā)器的初始狀態(tài)應(yīng)由
1)同步復(fù)位
在用VHDL描述時,同步復(fù)位一定要在以時鐘為敏感信號的進(jìn)程中定義,且用IF語句來描述必要的復(fù)位條件。下面兩個例子就是同步復(fù)位方式的描述實例。
1)同步復(fù)位
在用VHDL描述時,同步復(fù)位一定要
【例8-26】同步復(fù)位方式的描述實例一。
【例8-26】同步復(fù)位方式的描述實例一。
【例8-27】同步復(fù)位方式的描述實例二。
【例8-27】同步復(fù)位方式的描述實例二。
2)非同步復(fù)位
非同步復(fù)位又稱異步復(fù)位,在描述時與同步方式不同:首先在進(jìn)程的敏感信號中除時鐘信號以外,還應(yīng)加上復(fù)位信號;其次是用IF語句描述復(fù)位條件;最后在ELSIF段描述時鐘信號邊沿的條件,并加上EVENT屬性。非同步復(fù)位描述方式如例8-28所示。
2)非同步復(fù)位
非同步復(fù)位又稱異步復(fù)位,在描述時
【例8-28】非同步復(fù)位方式的描述實例。
【例8-28】非同步復(fù)位方式的描述實例。
從例8-28中可以看到,非同步復(fù)位的信號和變量的代入與賦值必須在時鐘信號邊沿有效的范圍內(nèi)進(jìn)行,如例8-28中ELSIF后進(jìn)行的那樣。
另外,添加clock_event是為了防止沒有時鐘事件發(fā)生時的誤操作。譬如,現(xiàn)在時鐘事件沒有發(fā)生而是發(fā)生了復(fù)位事件,這樣該進(jìn)程就得到了啟動。在此情況下,若復(fù)位條件沒有滿足,而時鐘邊沿條件卻是滿足的,那么與時鐘信號有關(guān)的那一段程序(ELSIF段)就會得到執(zhí)行,從而造成錯誤操作。
從例8-28中可以看到,非同步復(fù)位的信號和變量的代入與
8.2.2觸發(fā)器
觸發(fā)器的種類很多,這里僅舉常用的幾種加以說明。
1.鎖存器
根據(jù)觸發(fā)邊沿、復(fù)位和預(yù)置的方式以及輸出端不同可以將鎖存器分為多種不同形式。
8.2.2觸發(fā)器
觸發(fā)器的種類很多,這里僅舉常用的
1)
D鎖存器
正沿觸發(fā)的D鎖存器的電路符號如圖8-17所示。它是一個正沿(上升沿)觸發(fā)的D觸發(fā)器,有一個數(shù)據(jù)輸入端d、一個時鐘輸入端clk和一個數(shù)據(jù)輸出端q。D鎖存器的真值表如表8-7所示。從表中可以看到,D鎖存器的輸出端只有在正沿脈沖過后,輸入端d的數(shù)據(jù)才傳遞到輸出端q。用VHDL描述D鎖存器的程序?qū)嵗缋?-29和例8-30所示。
1)?D鎖存器
正沿觸發(fā)的D鎖存器的電路符號如圖圖8-17
D鎖存器圖8-17D鎖存器VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
【例8-29】用VHDL描述D鎖存器的程序?qū)嵗弧?/p>
【例8-29】用VHDL描述D鎖存器的程序?qū)嵗弧?/p>
【例8-30】用VHDL描述D鎖存器的程序?qū)嵗?/p>
【例8-30】用VHDL描述D鎖存器的程序?qū)嵗?/p>
2)非同步復(fù)位的D鎖存器
非同步復(fù)位的D鎖存器的電路符號如圖8-18所示。它和一般的D鎖存器的區(qū)別是多了一個復(fù)位輸入端clr。當(dāng)clr='0'?時,其q端輸出被強(qiáng)迫置為“0”。clr又稱清零輸入端。
2)非同步復(fù)位的D鎖存器
非同步復(fù)位的D鎖存器的圖8-18非同步復(fù)位的D鎖存器圖8-18非同步復(fù)位的D鎖存器
【例8-31】用VHDL描述的非同步復(fù)位的D鎖存器的程序?qū)嵗缦拢?/p>
【例8-31】用VHDL描述的非同步復(fù)位的D鎖存器的
3)非同步復(fù)位/置位D鎖存器
非同步復(fù)位/置位D鎖存器的電路符號如圖8-19所示。除了前述的d、clk和q端外,還有clr和pset的復(fù)位、置位端。當(dāng)clr='0'?時復(fù)位,使q='0';當(dāng)pset='0'?時置位,使q=
'1'。
圖8-19非同步復(fù)位/置位D鎖存器
3)非同步復(fù)位/置位D鎖存器
非同步復(fù)位/置位D
【例8-32】用VHDL描述的非同步復(fù)位/置位鎖存器的程序?qū)嵗缦拢?/p>
【例8-32】用VHDL描述的非同步復(fù)位/置位鎖存器VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
4)同步復(fù)位的D鎖存器
同步復(fù)位的D鎖存器的電路如圖8-20所示。與非同步方式不同的是,當(dāng)復(fù)位信號clr有效(clr?=?'1')以后,只是在有效時鐘邊沿到來時才能進(jìn)行復(fù)位操作。圖中clr='1'?以后,在clk的上升沿到來時,q輸出才變?yōu)椤?”。
另外,從圖中還可以看出,復(fù)位信號的優(yōu)先級比d端數(shù)據(jù)輸入的優(yōu)先級高。也就是說,當(dāng)clr='1'?時,無論d端輸入什么信號,在clk的上升沿到來時,q輸出總為“0”。
4)同步復(fù)位的D鎖存器
同步復(fù)位的D鎖存器的電路圖8-20同步復(fù)位的D鎖存器圖8-20同步復(fù)位的D鎖存器
【例8-33】用VHDL描述的同步復(fù)位D鎖存器的程序?qū)嵗缦拢?/p>
【例8-33】用VHDL描述的同步復(fù)位D鎖存器的程序VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
2.JK觸發(fā)器
帶有復(fù)位/置位功能的JK觸發(fā)器的電路符號如圖8-21所示。JK觸發(fā)器的輸入端有置位輸入pset、復(fù)位輸入clr、控制輸入j和k、時鐘信號輸入clk,輸出端有正向輸出端q和反向輸出端qb。JK觸發(fā)器的真值表如表8-8所示。表中,q0表示原狀態(tài)不變,翻轉(zhuǎn)表示改變原來的狀態(tài),如原來為“0”則變成“1”,原來為“1”則變成“0”。
2.JK觸發(fā)器
帶有復(fù)位/置位功能的JK觸發(fā)器的電圖8-21JK觸發(fā)器圖8-21JK觸發(fā)器VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
【例8-34】用VHDL描述JK觸發(fā)器的程序?qū)嵗缦拢?/p>
【例8-34】用VHDL描述JK觸發(fā)器的程序?qū)嵗缦耉HDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
例8-34中的復(fù)位和置位顯然也是非同步的,且pset的優(yōu)先級比clr高。也就是說,當(dāng)pset?=?'0'?且clr?=?'0'?時,q將輸出“1”,qb輸出“0”。這種結(jié)果和表8-8所示的真值表是不一致的。為了避免這種情況,程序可以改寫成例8-35所示。
例8-34中的復(fù)位和置位顯然也是非同步的,且
【例8-35】例8-34改寫以后的程序。
【例8-35】例8-34改寫以后的程序。
在例8-35中,pset='0',clr='0'?這種情況未加以考慮,那么在邏輯綜合時,其輸出是未知的。
在例8-35中,pset='0',
8.2.3寄存器
寄存器一般由多位觸發(fā)器連接而成,通常有鎖存寄存器和移位寄存器等。下面主要介紹移位寄存器。
1.串行輸入、串行輸出移位寄存器
串行輸入、串行輸出移位寄存器的電原理圖如圖8-22所示。它具有兩個輸入端(數(shù)據(jù)輸入端a和時鐘輸入端clk)與一個數(shù)據(jù)輸出端b。圖中所示為8位的串行移位寄存器,在時鐘信號的作用下,前級的數(shù)據(jù)向后級移動。該8位移位寄存器由8個D觸發(fā)器構(gòu)成。
8.2.3寄存器
寄存器一般由多位觸發(fā)器連接而成,圖8-22串行輸入、串行輸出的8位移位寄存器圖8-22串行輸入、串行輸出的8位移位寄存器
【例8-36】利用GENERATE語句和D觸發(fā)器的描述寫出的8位移位寄存器的VHDL程序如下:
【例8-36】利用GENERATE語句和D觸發(fā)器的描
例8-36中把dff看作已經(jīng)生成的元件,然后利用GENERATE來循環(huán)生成串行連接的8個D觸發(fā)器。
例8-36中把dff看作已經(jīng)生成的元件,然后
【例8-37】8位移位寄存器直接利用信號來連接的描述如下:
【例8-37】8位移位寄存器直接利用信號來連接的描述VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
2.循環(huán)移位寄存器
在計算機(jī)的運算操作中經(jīng)常用到循環(huán)移位,它可以用硬件電路來實現(xiàn)。一個8位循環(huán)左移的寄存器的電路符號如圖8-23所示。該電路有8個數(shù)據(jù)輸入端din(0)~din(7)、移位和數(shù)據(jù)輸出控制端enb、時鐘信號輸入端clk、移位位數(shù)控制輸入端s(0)~s(2)、8位數(shù)據(jù)輸出端dout(0)~dout(7)。循環(huán)左移操作的示意圖如圖8-24所示。
當(dāng)enb?=?1時,根據(jù)s(0)~s(2)輸入的數(shù),確定在時鐘脈沖作用下,循環(huán)左移幾位。圖8-24所示是循環(huán)左移了3位。當(dāng)enb?=?0時,din直接輸出至dout。
2.循環(huán)移位寄存器
在計算機(jī)的運算操作中經(jīng)常用到循圖8-23
8位循環(huán)移位寄存器圖8-238位循環(huán)移位寄存器圖8-24循環(huán)左移操作的示意圖圖8-24循環(huán)左移操作的示意圖
【例8-38】在CPAC中循環(huán)左移函數(shù)的描述如下:
【例8-38】在CPAC中循環(huán)左移函數(shù)的描述如下:
VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
【例8-39】利用CPAC中循環(huán)左移函數(shù)描述8位循環(huán)左移寄存器的程序如下:
【例8-39】利用CPAC中循環(huán)左移函數(shù)描述8位循環(huán)VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
3.帶清零端的8位并行裝載移位寄存器
該移位寄存器就是TTL手冊中的74166,其引腳圖如圖8-25所示。
圖中各引腳的名稱及功能如下:
a~h——8位并行數(shù)據(jù)輸入端;
se——串行數(shù)據(jù)輸入端;
q——串行數(shù)據(jù)輸出端;
clk——時鐘信號輸入端;
fe——時鐘信號禁止端;
s/l——移位/裝載控制端;
clr——清零端。
3.帶清零端的8位并行裝載移位寄存器
該移位寄存器圖8-25帶清零端的8位并行裝載移位寄存器圖8-25帶清零端的8位并行裝載移位寄存器
其真值表如表8-9所示。
其真值表如表8-9所示。
從表8-9中可以看到,當(dāng)清零輸入端clr為“0”時,8位寄存器的輸出均為“0”,從而使q輸出也為“0”。fe是時鐘禁止端,當(dāng)它為“1”時將禁止時鐘,即不管時鐘信號如何變化,移位寄存器的狀態(tài)不發(fā)生改變。另外,時鐘信號只在上升沿時才有效,此時fe?=?0。如果時鐘信號的上升沿未到來,則移位寄存器的狀態(tài)仍不會發(fā)生變化。s/l是移位/裝載控制信號。當(dāng)s/l?=?1時是移位狀態(tài),在時鐘信號上升沿的控制下,向右移一位,串行輸入端se的信號將移入qa位,而q的輸出將是移位前的內(nèi)部qg輸出;當(dāng)s/l?=?0時是裝載狀態(tài),在時鐘脈沖上升沿的作用下,數(shù)據(jù)輸入端a~h的信號就裝載到移位寄存器的qa~qh。
從表8-9中可以看到,當(dāng)清零輸入端clr為“0”時,8VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
8.2.4計數(shù)器
計數(shù)器分為同步計數(shù)器和異步計數(shù)器兩種。計數(shù)器是一個典型的時序電路,分析計數(shù)器就能更好地了解時序電路的特性。
1.同步計數(shù)器
所謂同步計數(shù)器,就是在時鐘脈沖(計數(shù)脈沖)的控制下,構(gòu)成計數(shù)器的各觸發(fā)器狀態(tài)同時發(fā)生變化。
8.2.4計數(shù)器
計數(shù)器分為同步計數(shù)器和異步計
1)帶允許端的十二進(jìn)制計數(shù)器
該計數(shù)器由4個觸發(fā)器構(gòu)成,clr輸入端用于清零,en端用于控制計數(shù)器工作,clk為時鐘脈沖(計數(shù)脈沖)輸入端,qa、qb、qc、qd為計數(shù)器的4位二進(jìn)制計數(shù)值輸出端。該計數(shù)器的真值表如表8-10所示。
1)帶允許端的十二進(jìn)制計數(shù)器
該計數(shù)器由4個觸發(fā)器構(gòu)VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
該程序?qū)?yīng)電路的引腳圖如圖8-26所示。
圖8-26帶允許端的十二進(jìn)制計數(shù)器電路
該程序?qū)?yīng)電路的引腳圖如圖8-26所示。
圖8-26
2)可逆計數(shù)器
所謂可逆計數(shù)器,就是根據(jù)計數(shù)控制信號的不同,在時鐘脈沖作用下,計數(shù)器可以進(jìn)行加1操作或者減1操作。
可逆計數(shù)器有一個特殊的控制端,即updn端。當(dāng)updn?=?'1'?時,計數(shù)器進(jìn)行加1操作;當(dāng)updn?=?'0'?時,計數(shù)器進(jìn)行減1操作。一種6位二進(jìn)制可逆計數(shù)器的真值表如表8-11所示。
2)可逆計數(shù)器
所謂可逆計數(shù)器,就是根據(jù)計數(shù)控制VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
該程序?qū)?yīng)電路的引腳圖如圖8-27所示。
圖8-27
6位二進(jìn)制可逆計數(shù)器電路
該程序?qū)?yīng)電路的引腳圖如圖8-27所示。
圖8-27
3)六十進(jìn)制計數(shù)器
眾所周知,用一個4位二進(jìn)制計數(shù)器可以構(gòu)成1位十進(jìn)制計數(shù)器,即可以構(gòu)成1位BCD計數(shù)器,而2位十進(jìn)制計數(shù)器連接起來可以構(gòu)成一個六十進(jìn)制計數(shù)器。六十進(jìn)制計數(shù)器常用于時鐘計數(shù)。
一個六十進(jìn)制計數(shù)器的電路引腳圖如圖8-28所示。
3)六十進(jìn)制計數(shù)器
眾所周知,用一個4位二進(jìn)制計圖8-28六十進(jìn)制計數(shù)器電路圖8-28六十進(jìn)制計數(shù)器電路
六十進(jìn)制計數(shù)器的輸入和輸出端的名稱及功能說明如下:
clk——時鐘輸入端;
bcd1wr——個位寫控制端;
bcd10wr——十位寫控制端;
cin——進(jìn)位輸入端;
co——進(jìn)位輸出端;
datain——數(shù)據(jù)輸入端,共有4條輸入線datain(0)~datain(3);
bcd1——計數(shù)值個位輸出,共有4條輸出線bcd1(0)~bcd1(3);
bcd10——計數(shù)值十位輸出,共有3條輸出線bcd10(0)~bcd10(2)。
六十進(jìn)制計數(shù)器的輸入和輸出端的名稱及功能說明如下:
在該六十進(jìn)制計數(shù)器的電路中,bcd1wr和bcd10wr與datain配合,以實現(xiàn)對六十進(jìn)制計數(shù)器的個位和十位的裝載操作,即可以實現(xiàn)對個位和十位值的預(yù)置操作。應(yīng)注意,在對個位和十位進(jìn)行預(yù)置操作時,datain輸入端是公用的,因而個位和十位的預(yù)置操作必定要串行進(jìn)行。
在該六十進(jìn)制計數(shù)器的電路中,bcd1wr和bcd10wVHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
在例8-43中,第一個進(jìn)程處理個位計數(shù),第二個進(jìn)程處理十位計數(shù),第三個進(jìn)程處理進(jìn)位輸出co的輸出值。應(yīng)注意,個位和十位的計數(shù)條件是不一樣的。
在例8-43中,第一個進(jìn)程處理個位計數(shù),第
2.異步計數(shù)器
異步計數(shù)器又稱行波計數(shù)器,它的下一位計數(shù)器的輸出作為上一位計數(shù)器的時鐘信號,這樣一級一級串行連接起來就構(gòu)成了一個異步計數(shù)器。
異步計數(shù)器與同步計數(shù)器的不同之處就在于時鐘脈沖的提供方式,異步計數(shù)器同樣可以構(gòu)成各種各樣的計數(shù)器。但是,由于異步計數(shù)器采用行波計數(shù),因而使計數(shù)延遲增加,在要求延遲小的領(lǐng)域受到了很大限制。盡管如此,由于它的電路簡單,故仍有廣泛的應(yīng)用。
2.異步計數(shù)器
異步計數(shù)器又稱行波計數(shù)器,它的下一
用VHDL描述異步計數(shù)器與上述同步計數(shù)器的不同之處主要表現(xiàn)在對各級時鐘脈沖的描述上,這一點請讀者在閱讀例程時多加注意。
用VHDL描述異步計數(shù)器與上述同步計數(shù)器的不同之處主要VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
8位行波計數(shù)器的電原理圖如圖8-29所示。
圖8-29
8位行波計數(shù)器的電原理圖
8位行波計數(shù)器的電原理圖如圖8-29所示。
圖8-2
習(xí)題與思考題
8.1試設(shè)計一個2位二進(jìn)制的加法器。
8.2試設(shè)計一個2位的BCD計數(shù)器。
8.3同步計數(shù)器和異步計數(shù)器在設(shè)計時有哪些區(qū)別?試用一個六進(jìn)制計數(shù)器和一個十進(jìn)制計數(shù)器構(gòu)成一個六十進(jìn)制同步計數(shù)器。
習(xí)題與思考題
8.1試設(shè)計一個2位二進(jìn)制的加法器
8.4某一輸入/輸出接口電路的引腳如圖8-30所示。
圖8-30某一輸入/輸出接口電路的引腳圖
8.4某一輸入/輸出接口電路的引腳如圖8-30所示感謝感謝173謝謝,精品課件資料搜集謝謝,精品課件資料搜集174第8章基本邏輯電路設(shè)計8.1組合邏輯電路設(shè)計8.2時序電路設(shè)計習(xí)題與思考題第8章基本邏輯電路設(shè)計8.1組合邏輯電路設(shè)計
8.1組合邏輯電路設(shè)計
8.1.1簡單門電路簡單門電路包括2輸入“與非”門、集電極開路的2輸入“與非”門、2輸入“或非”門、反相器、集電極開路的反相器、3輸入“與”門、3輸入“與非”門、2輸入“或”門和2輸入“異或”門等,它們是構(gòu)成所有邏輯電路的基本電路。
8.1組合邏輯電路設(shè)計
8.1.1簡單門電路
1.2輸入“與非”門電路
2輸入“與非”門電路的邏輯表達(dá)式為
y?=???(a∧b)
其邏輯電路圖如圖8-1所示。
利用VHDL描述2輸入“與非”門有多種形式,現(xiàn)舉兩個例子加以說明。
1.2輸入“與非”門電路
2輸入“與非”門電路的邏圖8-1
2輸入“與非”門電路圖8-12輸入“與非”門電路
【例8-1】用VHDL描述2輸入“與非”門電路示例一。
【例8-1】用VHDL描述2輸入“與非”門電路示例一
【例8-2】用VHDL描述2輸入“與非”門電路示例二。
【例8-2】用VHDL描述2輸入“與非”門電路示例二VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
從上面兩個例子中可以看出,例8-1的描述更簡潔,更接近于2輸入“與非”門的行為描述,因此也更易于閱讀;例8-2的描述是以2輸入“與非”門的真值表為依據(jù)來編寫的,羅列了2輸入“與非”門的每種輸入狀態(tài)及其對應(yīng)的輸出結(jié)果。
從上面兩個例子中可以看出,例8-1的描述更簡潔,更接近
集電極開路的2輸入“與非”門和一般的2輸入“與非”門在VHDL的描述上沒有什么差異,所不同的只是從不同元件庫中提取相應(yīng)的電路而已。例如:
集電極開路的2輸入“與非”門和一般的2輸入“與非”門在
在第一個例子中要生成的是一般TTL的2輸入“與非”門,而在第二個例子中要生成的是TTL集電極開路的2輸入“與非”門。這里所敘述的情況對其他門電路同樣適用。因此,對不同類型門電路的集電極開路輸出門,本節(jié)將不再贅述。
在第一個例子中要生成的是一般TTL的2輸入“與非”門,
2.2輸入“或非”門電路
2輸入“或非”門電路的邏輯表達(dá)式為
y?=???(a∨b)
其邏輯電路圖如圖8-2所示。
現(xiàn)舉兩個用VHDL描述2輸入“或非”門電路的例子。
2.2輸入“或非”門電路
2輸入“或非”門電路的邏圖8-2
2輸入“或非”門電路圖8-22輸入“或非”門電路
【例8-3】用VHDL描述2輸入“或非”門電路示例一。
【例8-3】用VHDL描述2輸入“或非”門電路示例一
【例8-4】用VHDL描述2輸入“或非”門電路示例二。
【例8-4】用VHDL描述2輸入“或非”門電路示例二VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
3.反相器
反相器電路的邏輯表達(dá)式為
y
=???a
其邏輯電路圖如圖8-3所示。
VHDL對反相器的描述如例8-5和例8-6所示。
3.反相器
反相器電路的邏輯表達(dá)式為
圖8-3反相器電路圖8-3反相器電路
【例8-5】VHDL對反相器的描述一。
【例8-5】VHDL對反相器的描述一。
【例8-6】
VHDL對反相器的描述二。
【例8-6】VHDL對反相器的描述二。
VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
4.3輸入“與非”門電路
3輸入“與非”門電路的邏輯表達(dá)式為
y
=??
(a∧b∧c)
其邏輯電路如圖8-4所示。
3輸入“與非”門和2輸入“與非”門的差異僅在于多了一個輸入引腳,在用VHDL編程時,在端口說明中應(yīng)加一個輸入端口。例如,原來的輸入端口為a、b兩個,現(xiàn)在應(yīng)變?yōu)閍、b、c三個。當(dāng)然,根據(jù)邏輯表達(dá)式,該輸入端口的信號c應(yīng)與a、b一樣,一起參與邏輯運算,以得到最后的輸出y。用VHDL描述3輸入“與非”門電路示例如例8-7和例8-8所示。
4.3輸入“與非”門電路
3輸入“與非”門電路的圖8-43輸入“與非”門電路圖8-43輸入“與非”門電路
【例8-7】用VHDL描述3輸入“與非”門電路示例一。
【例8-7】用VHDL描述3輸入“與非”門電路示例一
【例8-8】用VHDL描述3輸入“與非”門電路示例二。
【例8-8】用VHDL描述3輸入“與非”門電路示例二VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
5.2輸入“異或”門電路
2輸入“異或”門電路的邏輯表達(dá)式為
其邏輯電路如圖8-5所示。
用VHDL描述2輸入“異或”門電路示例如例8-9和例8-10所示。
5.2輸入“異或”門電路
2輸入“異或”門電路的邏圖8-52輸入“異或”門電路圖8-52輸入“異或”門電路
【例8-9】用VHDL描述2輸入“異或”門電路示例一。
【例8-9】用VHDL描述2輸入“異或”門電路示例一
【例8-10】用VHDL描述2輸入“異或”門電路示例二。
【例8-10】用VHDL描述2輸入“異或”門電路示例VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
上述簡單的門電路大多用兩種不同形式的VHDL程序來描述,其行為和功能是完全一樣的。事實上還可以運用VHDL中所給出的語句來描述這些門電路,這就給編程人員提供了較大的編程靈活性。但是,一般來說,無論是編程人員還是閱讀這些程序的人員,都希望程序能一目了然,因此盡可能采用VHDL中所提供的語言和符號,用簡潔的語句描述其行為,這總是首選的描述方式。
上述簡單的門電路大多用兩種不同形式的VHDL程序來描述
8.1.2編、譯碼器與選擇器
編、譯碼器和選擇器是組合電路中較簡單的3種通用電路。它們可以由簡單的門電路組合連接構(gòu)成。例如,圖8-6所示是一個3-8譯碼器電路(74LS138)。由有關(guān)手冊可知,該譯碼器由8個3輸入“與非”門、4個反相器和一個3輸入“或非”門構(gòu)成。如果事先不作說明,只給出電路,讓讀者來判讀該電路的功能,那么毋庸置疑,要看懂該電路就要花較多的時間。如果采用VHDL,從行為、功能來對3-8譯碼器進(jìn)行描述,則不僅邏輯設(shè)計變得非常容易,而且閱讀也會很方便。
8.1.2編、譯碼器與選擇器
編、譯碼器和選擇器是圖8-63-8譯碼器電路圖8-63-8譯碼器電路
1.3-8譯碼器
3-8譯碼器是最常用的一種小規(guī)模集成電路,它有3個二進(jìn)制輸入端a、b、c和8個譯碼輸出端y0~y7。對輸入a、b、c的值進(jìn)行譯碼,就可以確定輸出端y0~y7的哪一個輸出端變?yōu)橛行?低電平),從而達(dá)到譯碼的目的。3-8譯碼器的真值表如表8-1所示。
1.3-8譯碼器
3-8譯碼器是最常用的一種小規(guī)模VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
3-8譯碼器還有3個選通輸入端g1、g2a和g2b。只有在g1?=?1,g2a?=?0,g2b?=?0時,3-8譯碼器才進(jìn)行正常譯碼,否則y0~y7輸出均為高電平。
3-8譯碼器還有3個選通輸入端g1、g2a和g2b。只
【例8-11】3-8譯碼器用VHDL描述如下:
【例8-11】3-8譯碼器用VHDL描述如下:
VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
2.優(yōu)先級編碼器
優(yōu)先級編碼器常用于中斷的優(yōu)先級控制。例如,74LS148是一個8輸入、3位二進(jìn)制碼輸出的優(yōu)先級編碼器。當(dāng)其某一個輸入有效時,就可以輸出一個對應(yīng)的3位二進(jìn)制編碼。另外,當(dāng)同時有幾個輸入有效時,將輸出優(yōu)先級最高的那個輸入所對應(yīng)的二進(jìn)制編碼。
圖8-7是優(yōu)先級編碼器的引腳圖,它有8個輸入input(0)~input(7)和3位二進(jìn)制碼輸出y0~y2。
2.優(yōu)先級編碼器
優(yōu)先級編碼器常用于中斷的優(yōu)先級控圖8-7優(yōu)先級編碼器圖8-7優(yōu)先級編碼器
該優(yōu)先級編碼器的真值表如表8-2所示。表中,“X”表示任意項,它可以是“0”,也可以是“1”。input(0)的優(yōu)先級最高,input(7)的優(yōu)先級最低。
該優(yōu)先級編碼器的真值表如表8-2所示。表中,“X”表示VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
【例8-12】用VHDL描述優(yōu)先級編碼器的程序如下:
【例8-12】用VHDL描述優(yōu)先級編碼器的程序如下:
因為VHDL中目前還不能描述任意項,所以不能用前面一貫采用的CASE語句來描述,而采用了IF語句。
因為VHDL中目前還不能描述任意項,所
3.四選一選擇器
選擇器常用于信號的切換。四選一選擇器可以用于4路信號的切換。四選一選擇器有4個信號輸入端input(0)~input(3)、2個信號選擇端a和b及一個信號輸出端y。當(dāng)a、b輸入不同的選擇信號時,就可以使input(0)~input(3)中某個相應(yīng)的輸入信號與輸出y端接通。例如,當(dāng)a?=?b?=“0”時,input(0)就與y接通。其邏輯電路如圖8-8所示。
3.四選一選擇器
選擇器常用于信號的切換。四選一選圖8-8四選一電路圖8-8四選一電路
四選一電路的真值表如表8-3所示。
四選一電路的真值表如表8-3所示。
【例8-13】用VHDL對四選一電路進(jìn)行描述的程序如下:
【例8-13】用VHDL對四選一電路進(jìn)行描述的程序VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
例8-13中的四選一選擇器是用IF語句描述的,程序中的ELSE項作為余下的條件,將選擇input(3)從y端輸出,這種描述比較安全。當(dāng)然,不用ELSE項也可以,這時必須列出sel所有可能出現(xiàn)的情況,加以一一確認(rèn)。
例8-13中的四選一選擇器是用IF語句描述的,程序中的
8.1.3加法器與求補(bǔ)器
1.加法器
加法器有全加器和半加器之分,全加器可以用兩個半加器構(gòu)成,因此下面先以半加器為例加以說明。
半加器有兩個二進(jìn)制一位的輸入端a和b、一位和的輸出端s、一位進(jìn)位位的輸出端co。半加器的真值表如表8-4所示,其電路符號如圖8-9所示。
8.1.3加法器與求補(bǔ)器
1.加法器
加法器有圖8-9半加器圖8-9半加器VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
【例8-14】用VHDL描述半加器的程序如下:
【例8-14】用VHDL描述半加器的程序如下:
用兩個半加器可以構(gòu)成一個全加器。全加器的電路如圖8-10所示。
圖8-10用兩個半加器構(gòu)成的全加器
用兩個半加器可以構(gòu)成一個全加器。全加器的電路如圖8-1
【例8-15】采用COMPONENT語句和PORTMAP語句描述全加器。
【例8-15】采用COMPONENT語句和PORTVHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
2.求補(bǔ)器
二進(jìn)制運算經(jīng)常要用到求補(bǔ)操作。8位二進(jìn)制數(shù)的求補(bǔ)電路符號如圖8-11所示。
求補(bǔ)電路的輸入為a(0)~a(7),補(bǔ)碼輸出為b(0)~b(7),其中a(7)和b(7)為符號位。該電路較復(fù)雜,如果像半加器那樣對每個門進(jìn)行描述和連接是可以做到的,但是那樣做太繁瑣。這里采用RTL描述更加簡潔、清楚。
2.求補(bǔ)器
二進(jìn)制運算經(jīng)常要用到求補(bǔ)操作。8位二進(jìn)圖8-11
8位二進(jìn)制數(shù)的求補(bǔ)電路符號圖8-118位二進(jìn)制數(shù)的求補(bǔ)電路符號
【例8-16】用RTL描述求補(bǔ)器。
【例8-16】用RTL描述求補(bǔ)器。
8.1.4三態(tài)門與總線緩沖器
三態(tài)門與雙向總線緩沖器是接口電路和總線驅(qū)動電路經(jīng)常用到的器件。它們雖然不屬于組合電路,為簡化章節(jié),也列于此處進(jìn)行介紹。
1.三態(tài)門電路
三態(tài)門電路如圖8-12所示。它具有一個數(shù)據(jù)輸入端din、一個數(shù)據(jù)輸出端dout和一個控制端en。當(dāng)en?=?'1'?時,dout?=?din;當(dāng)en?=?'0'?時,dout?=?′Z′(高阻)。三態(tài)門的真值表如表8-5所示。
8.1.4三態(tài)門與總線緩沖器
三態(tài)門與雙向總線緩沖圖8-12三態(tài)門電路圖8-12三態(tài)門電路VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
【例8-17】用VHDL描述三態(tài)門的程序如下:
【例8-17】用VHDL描述三態(tài)門的程序如下:
在第3章中讀者已經(jīng)知道,一個實體可以對應(yīng)多種構(gòu)造體。例8-18和例8-19就是用不同的VHDL描述的三態(tài)門的結(jié)構(gòu)。
在第3章中讀者已經(jīng)知道,一個實體可以對應(yīng)多種
【例8-18】用VHDL描述三態(tài)門的結(jié)構(gòu)示例一。
【例8-18】用VHDL描述三態(tài)門的結(jié)構(gòu)示例一。
該例中采用衛(wèi)式塊語句結(jié)構(gòu)來表示三態(tài)門。衛(wèi)式塊語句結(jié)構(gòu)的特點是:只有塊語句的條件滿足時,塊中所含的語句才會被執(zhí)行。在這里只有en?=?'1'?的條件滿足時,dout<=GUARDEDdin語句才會被執(zhí)行。
該例中采用衛(wèi)式塊語句結(jié)構(gòu)來表示三態(tài)門。衛(wèi)式塊語句結(jié)構(gòu)的VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
2.單向總線緩沖器
在微型計算機(jī)的總線驅(qū)動中經(jīng)常要用單向總線緩沖器,它通常由多個三態(tài)門組成,用來驅(qū)動地址總線和控制總線。
一個8位的單向總線緩沖器如圖8-13所示。8位的單向總線緩沖器由8個三態(tài)門組成,具有8個輸入和8個輸出端。所有三態(tài)門的控制端連在一起,由一個控制輸入端en控制。
用VHDL描述的8位單向總線緩沖器的程序?qū)嵗缋?-20、例8-21和例8-22所示。
2.單向總線緩沖器
在微型計算機(jī)的總線驅(qū)動中經(jīng)常要圖8-13單向總線緩沖器圖8-13單向總線緩沖器
【例8-20】用VHDL描述的8位單向總線緩沖器的程序?qū)嵗弧?/p>
【例8-20】用VHDL描述的8位單向總線緩沖器的程VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
【例8-21】用VHDL描述的8位單向總線緩沖器的程序?qū)嵗?/p>
【例8-21】用VHDL描述的8位單向總線緩沖器的程
【例8-22】用VHDL描述的8位單向總線緩沖器的程序?qū)嵗?/p>
【例8-22】用VHDL描述的8位單向總線緩沖器的程
在編寫上述程序時應(yīng)注意,不能將“Z”值賦予變量,否則就不能進(jìn)行邏輯綜合。另外,對信號賦值時“Z”和“0”或“1”不能混合使用,例如:
dout<=″Z001ZZZZ″;
這樣的語句是不允許出現(xiàn)的。但是變換賦值表達(dá)式時,分開賦值是可以的。例如:
dout(7)<="Z";
dout(6DOWNTO4)
<="001";
dout(3DOWNTO0)
<="ZZZZ";
在編寫上述程序時應(yīng)注意,不能將“Z”值賦予變量,否則就
3.雙向總線緩沖器
雙向總線緩沖器用于對數(shù)據(jù)總線進(jìn)行驅(qū)動和緩沖。典型的雙向總線緩沖器的電路圖如圖8-14所示。圖中,雙向緩沖器有兩個數(shù)據(jù)輸入輸出端a和b、一個方向控制端dr和一個選通端en。當(dāng)en?=?1時,雙向總線緩沖器未被選通,a和b都呈現(xiàn)高阻;當(dāng)en?=?0時,雙向總線緩沖器被選通,如果dr?=?0,那么a?=?b,如果dr?=?1,那么b?=?a。雙向總線緩沖器的真值表如表8-6所示。
3.雙向總線緩沖器
雙向總線緩沖器用于對數(shù)據(jù)總線進(jìn)圖8-14雙向總線緩沖器圖8-14雙向總線緩沖器VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
【例8-23】用VHDL描述雙向總線緩沖器實例。
【例8-23】用VHDL描述雙向總線緩沖器實例。
VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第五版)侯伯亨章課件8
從例8-23中可以看出,雙向總線緩沖器由兩組三態(tài)門組成,利用信號aout和bout將兩組三態(tài)門連接起來。由于在實際工作過程中a和b都不可能同時出現(xiàn)“0”和“1”,因此在這里沒有使用判決函數(shù)。
從例8-23中可以看出,雙向總線緩沖器由兩
8.2時序電路設(shè)計
8.2.1時鐘信號和復(fù)位信號
1.時鐘信號的描述眾所周知,任何時序電路都以時鐘信號為驅(qū)動信號,時序電路只是在時鐘信號的邊沿到來時,其狀態(tài)才發(fā)生改變。因此,時鐘信號通常描述時序電路程序的執(zhí)行條件。另外,時序電路也總是以時鐘進(jìn)程的形式來進(jìn)行描述的,其描述方式一般有兩種。
8.2時序電路設(shè)計
8.2.1時鐘信號和復(fù)位信號
(1)進(jìn)程的敏感信號是時鐘信號。在這種情況下,時鐘信號應(yīng)作為敏感信號,顯式地出現(xiàn)在PROCESS語句后跟的括號中,例如PROCESS(clock_signal)。時鐘信號邊沿的到來將作為時序電路語句執(zhí)行的條件。
(1)進(jìn)程的敏感信號是時鐘信號。在這種情況下,時鐘信
【例8-24】進(jìn)程的敏感信號是時鐘信號實例。
【例8-24】進(jìn)程的敏感信號是時鐘信號實例。
(2)用進(jìn)程中的WAITON語句等待時鐘。在這種情況下,描述時序電路的進(jìn)程將沒有敏感信號,而是用WAITON語句來控制進(jìn)程的執(zhí)行。也就是說,進(jìn)程通常停留在WAITON語句上,只有在時鐘信號到來且滿足邊沿條件時,其余的語句才能執(zhí)行。
(2)用進(jìn)程中的WAITON語句等待時鐘。在這種情
【例8-25】用進(jìn)程中的WAITON語句等待時鐘實例。
【例8-25】用進(jìn)程中的WAITON語句等待時鐘實
在編寫上述程序時應(yīng)注意:
·無論IF語句還是WAITON語句,在對時鐘邊沿進(jìn)行說明時,一定要注明是上升沿還是下降沿(前沿還是后沿),只說明是邊沿是不行的。
·當(dāng)時鐘信號作為進(jìn)程的敏感信號時,在敏感信號的表中不能出現(xiàn)一個以上的時鐘信號,除時鐘信號以外,復(fù)位信號等是可以和時鐘信號一起出現(xiàn)在敏感表中的。
·WAITON語句只能放在進(jìn)程的最前面或者最后面。
在編寫上述程序時應(yīng)注意:
·無論IF語句還是WA
(3)時鐘邊沿的描述。為了描述時鐘邊沿,一定要指定是上升沿還是下降沿,這一點可以使用時鐘信號的屬性描述來進(jìn)行。也就是說,要指定時鐘信號的值是從“0”到“1”變化,還是從“1”到“0”變化,由此可以得知是時鐘脈沖信號的上升沿還是下降沿。
(3)時鐘邊沿的描述。為了描述時鐘邊沿,一定要指定是
①時鐘脈沖上升沿的描述。時鐘脈沖上升沿波形與時鐘信號屬性的描述關(guān)系如圖8-15所示。從圖8-15中可以看到,時鐘信號的起始值為“0”,故其屬性值clk‘LAST_VALUE='0';上升沿的到來表示發(fā)生了一個事件,故用clk?'EVENT表示;上升沿以后,時鐘信號的值為“1”,故其當(dāng)前值為clk='1'。這樣,表示上升沿到來的條件可寫為
IFclk='1'ANDclk'LAST_VAULE='0'AND
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 拍攝合同范例3篇
- 各種物品寄售合同范例
- 國際招標(biāo)貨物合同范例
- 亮化出租維修合同范例
- 日文勞務(wù)合同范例
- 漁網(wǎng)加工銷售合同范例
- 墻體內(nèi)粉刷合同范例
- 三基護(hù)理考試題與參考答案
- 急救理論知識考試模擬題(附答案)
- 債權(quán)擔(dān)保協(xié)議合同范例
- 北京開放大學(xué)《自動控制技術(shù)及應(yīng)用》終結(jié)性考試復(fù)習(xí)題庫(附答案)
- 高中高一級部拔河比賽活動實施方案
- 每日食品安全檢查記錄
- 航空機(jī)務(wù)專業(yè)職業(yè)生涯規(guī)劃書
- 八年級英語上學(xué)期期末考試(深圳卷)-2023-2024學(xué)年八年級英語上冊單元重難點易錯題精練(牛津深圳版)
- 項目成本節(jié)約措施總結(jié)報告
- 迎元旦趣味活動及知識競賽試題及答案
- SH/T 3543-2007 石油化工建設(shè)工程項目施工過程技術(shù)文件規(guī)定
- 減鹽控油控制體重規(guī)章制度
- 建筑之歌課件PPT
- (完整版)員工流失文獻(xiàn)綜述
評論
0/150
提交評論