VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8_第1頁(yè)
VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8_第2頁(yè)
VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8_第3頁(yè)
VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8_第4頁(yè)
VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8_第5頁(yè)
已閱讀5頁(yè),還剩343頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第8章基本邏輯電路設(shè)計(jì)8.1組合邏輯電路設(shè)計(jì)8.2時(shí)序電路設(shè)計(jì)習(xí)題與思考題第8章基本邏輯電路設(shè)計(jì)8.1組合邏輯電路設(shè)計(jì)

8.1組合邏輯電路設(shè)計(jì)

8.1.1簡(jiǎn)單門電路簡(jiǎn)單門電路包括2輸入“與非”門、集電極開(kāi)路的2輸入“與非”門、2輸入“或非”門、反相器、集電極開(kāi)路的反相器、3輸入“與”門、3輸入“與非”門、2輸入“或”門和2輸入“異或”門等,它們是構(gòu)成所有邏輯電路的基本電路。

8.1組合邏輯電路設(shè)計(jì)

8.1.1簡(jiǎn)單門電路

1.2輸入“與非”門電路

2輸入“與非”門電路的邏輯表達(dá)式為

y?=???(a∧b)

其邏輯電路圖如圖8-1所示。

利用VHDL描述2輸入“與非”門有多種形式,現(xiàn)舉兩個(gè)例子加以說(shuō)明。

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硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

從上面兩個(gè)例子中可以看出,例8-1的描述更簡(jiǎn)潔,更接近于2輸入“與非”門的行為描述,因此也更易于閱讀;例8-2的描述是以2輸入“與非”門的真值表為依據(jù)來(lái)編寫(xiě)的,羅列了2輸入“與非”門的每種輸入狀態(tài)及其對(duì)應(yīng)的輸出結(jié)果。

從上面兩個(gè)例子中可以看出,例8-1的描述更簡(jiǎn)潔,更接近

集電極開(kāi)路的2輸入“與非”門和一般的2輸入“與非”門在VHDL的描述上沒(méi)有什么差異,所不同的只是從不同元件庫(kù)中提取相應(yīng)的電路而已。例如:

集電極開(kāi)路的2輸入“與非”門和一般的2輸入“與非”門在

在第一個(gè)例子中要生成的是一般TTL的2輸入“與非”門,而在第二個(gè)例子中要生成的是TTL集電極開(kāi)路的2輸入“與非”門。這里所敘述的情況對(duì)其他門電路同樣適用。因此,對(duì)不同類型門電路的集電極開(kāi)路輸出門,本節(jié)將不再贅述。

在第一個(gè)例子中要生成的是一般TTL的2輸入“與非”門,

2.2輸入“或非”門電路

2輸入“或非”門電路的邏輯表達(dá)式為

y?=???(a∨b)

其邏輯電路圖如圖8-2所示。

現(xiàn)舉兩個(gè)用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硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

3.反相器

反相器電路的邏輯表達(dá)式為

y

=???a

其邏輯電路圖如圖8-3所示。

VHDL對(duì)反相器的描述如例8-5和例8-6所示。

3.反相器

反相器電路的邏輯表達(dá)式為

圖8-3反相器電路圖8-3反相器電路

【例8-5】VHDL對(duì)反相器的描述一。

【例8-5】VHDL對(duì)反相器的描述一。

【例8-6】

VHDL對(duì)反相器的描述二。

【例8-6】VHDL對(duì)反相器的描述二。

VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

4.3輸入“與非”門電路

3輸入“與非”門電路的邏輯表達(dá)式為

y

=??

(a∧b∧c)

其邏輯電路如圖8-4所示。

3輸入“與非”門和2輸入“與非”門的差異僅在于多了一個(gè)輸入引腳,在用VHDL編程時(shí),在端口說(shuō)明中應(yīng)加一個(gè)輸入端口。例如,原來(lái)的輸入端口為a、b兩個(gè),現(xiàn)在應(yīng)變?yōu)閍、b、c三個(gè)。當(dāng)然,根據(jù)邏輯表達(dá)式,該輸入端口的信號(hào)c應(yīng)與a、b一樣,一起參與邏輯運(yùn)算,以得到最后的輸出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硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件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硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

上述簡(jiǎn)單的門電路大多用兩種不同形式的VHDL程序來(lái)描述,其行為和功能是完全一樣的。事實(shí)上還可以運(yùn)用VHDL中所給出的語(yǔ)句來(lái)描述這些門電路,這就給編程人員提供了較大的編程靈活性。但是,一般來(lái)說(shuō),無(wú)論是編程人員還是閱讀這些程序的人員,都希望程序能一目了然,因此盡可能采用VHDL中所提供的語(yǔ)言和符號(hào),用簡(jiǎn)潔的語(yǔ)句描述其行為,這總是首選的描述方式。

上述簡(jiǎn)單的門電路大多用兩種不同形式的VHDL程序來(lái)描述

8.1.2編、譯碼器與選擇器

編、譯碼器和選擇器是組合電路中較簡(jiǎn)單的3種通用電路。它們可以由簡(jiǎn)單的門電路組合連接構(gòu)成。例如,圖8-6所示是一個(gè)3-8譯碼器電路(74LS138)。由有關(guān)手冊(cè)可知,該譯碼器由8個(gè)3輸入“與非”門、4個(gè)反相器和一個(gè)3輸入“或非”門構(gòu)成。如果事先不作說(shuō)明,只給出電路,讓讀者來(lái)判讀該電路的功能,那么毋庸置疑,要看懂該電路就要花較多的時(shí)間。如果采用VHDL,從行為、功能來(lái)對(duì)3-8譯碼器進(jìn)行描述,則不僅邏輯設(shè)計(jì)變得非常容易,而且閱讀也會(huì)很方便。

8.1.2編、譯碼器與選擇器

編、譯碼器和選擇器是圖8-63-8譯碼器電路圖8-63-8譯碼器電路

1.3-8譯碼器

3-8譯碼器是最常用的一種小規(guī)模集成電路,它有3個(gè)二進(jìn)制輸入端a、b、c和8個(gè)譯碼輸出端y0~y7。對(duì)輸入a、b、c的值進(jìn)行譯碼,就可以確定輸出端y0~y7的哪一個(gè)輸出端變?yōu)橛行?低電平),從而達(dá)到譯碼的目的。3-8譯碼器的真值表如表8-1所示。

1.3-8譯碼器

3-8譯碼器是最常用的一種小規(guī)模VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

3-8譯碼器還有3個(gè)選通輸入端g1、g2a和g2b。只有在g1?=?1,g2a?=?0,g2b?=?0時(shí),3-8譯碼器才進(jìn)行正常譯碼,否則y0~y7輸出均為高電平。

3-8譯碼器還有3個(gè)選通輸入端g1、g2a和g2b。只

【例8-11】3-8譯碼器用VHDL描述如下:

【例8-11】3-8譯碼器用VHDL描述如下:

VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

2.優(yōu)先級(jí)編碼器

優(yōu)先級(jí)編碼器常用于中斷的優(yōu)先級(jí)控制。例如,74LS148是一個(gè)8輸入、3位二進(jìn)制碼輸出的優(yōu)先級(jí)編碼器。當(dāng)其某一個(gè)輸入有效時(shí),就可以輸出一個(gè)對(duì)應(yīng)的3位二進(jìn)制編碼。另外,當(dāng)同時(shí)有幾個(gè)輸入有效時(shí),將輸出優(yōu)先級(jí)最高的那個(gè)輸入所對(duì)應(yīng)的二進(jìn)制編碼。

圖8-7是優(yōu)先級(jí)編碼器的引腳圖,它有8個(gè)輸入input(0)~input(7)和3位二進(jìn)制碼輸出y0~y2。

2.優(yōu)先級(jí)編碼器

優(yōu)先級(jí)編碼器常用于中斷的優(yōu)先級(jí)控圖8-7優(yōu)先級(jí)編碼器圖8-7優(yōu)先級(jí)編碼器

該優(yōu)先級(jí)編碼器的真值表如表8-2所示。表中,“X”表示任意項(xiàng),它可以是“0”,也可以是“1”。input(0)的優(yōu)先級(jí)最高,input(7)的優(yōu)先級(jí)最低。

該優(yōu)先級(jí)編碼器的真值表如表8-2所示。表中,“X”表示VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

【例8-12】用VHDL描述優(yōu)先級(jí)編碼器的程序如下:

【例8-12】用VHDL描述優(yōu)先級(jí)編碼器的程序如下:

因?yàn)閂HDL中目前還不能描述任意項(xiàng),所以不能用前面一貫采用的CASE語(yǔ)句來(lái)描述,而采用了IF語(yǔ)句。

因?yàn)閂HDL中目前還不能描述任意項(xiàng),所

3.四選一選擇器

選擇器常用于信號(hào)的切換。四選一選擇器可以用于4路信號(hào)的切換。四選一選擇器有4個(gè)信號(hào)輸入端input(0)~input(3)、2個(gè)信號(hào)選擇端a和b及一個(gè)信號(hào)輸出端y。當(dāng)a、b輸入不同的選擇信號(hào)時(shí),就可以使input(0)~input(3)中某個(gè)相應(yīng)的輸入信號(hào)與輸出y端接通。例如,當(dāng)a?=?b?=“0”時(shí),input(0)就與y接通。其邏輯電路如圖8-8所示。

3.四選一選擇器

選擇器常用于信號(hào)的切換。四選一選圖8-8四選一電路圖8-8四選一電路

四選一電路的真值表如表8-3所示。

四選一電路的真值表如表8-3所示。

【例8-13】用VHDL對(duì)四選一電路進(jìn)行描述的程序如下:

【例8-13】用VHDL對(duì)四選一電路進(jìn)行描述的程序VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

例8-13中的四選一選擇器是用IF語(yǔ)句描述的,程序中的ELSE項(xiàng)作為余下的條件,將選擇input(3)從y端輸出,這種描述比較安全。當(dāng)然,不用ELSE項(xiàng)也可以,這時(shí)必須列出sel所有可能出現(xiàn)的情況,加以一一確認(rèn)。

例8-13中的四選一選擇器是用IF語(yǔ)句描述的,程序中的

8.1.3加法器與求補(bǔ)器

1.加法器

加法器有全加器和半加器之分,全加器可以用兩個(gè)半加器構(gòu)成,因此下面先以半加器為例加以說(shuō)明。

半加器有兩個(gè)二進(jìn)制一位的輸入端a和b、一位和的輸出端s、一位進(jìn)位位的輸出端co。半加器的真值表如表8-4所示,其電路符號(hào)如圖8-9所示。

8.1.3加法器與求補(bǔ)器

1.加法器

加法器有圖8-9半加器圖8-9半加器VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

【例8-14】用VHDL描述半加器的程序如下:

【例8-14】用VHDL描述半加器的程序如下:

用兩個(gè)半加器可以構(gòu)成一個(gè)全加器。全加器的電路如圖8-10所示。

圖8-10用兩個(gè)半加器構(gòu)成的全加器

用兩個(gè)半加器可以構(gòu)成一個(gè)全加器。全加器的電路如圖8-1

【例8-15】采用COMPONENT語(yǔ)句和PORTMAP語(yǔ)句描述全加器。

【例8-15】采用COMPONENT語(yǔ)句和PORTVHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

2.求補(bǔ)器

二進(jìn)制運(yùn)算經(jīng)常要用到求補(bǔ)操作。8位二進(jìn)制數(shù)的求補(bǔ)電路符號(hào)如圖8-11所示。

求補(bǔ)電路的輸入為a(0)~a(7),補(bǔ)碼輸出為b(0)~b(7),其中a(7)和b(7)為符號(hào)位。該電路較復(fù)雜,如果像半加器那樣對(duì)每個(gè)門進(jìn)行描述和連接是可以做到的,但是那樣做太繁瑣。這里采用RTL描述更加簡(jiǎn)潔、清楚。

2.求補(bǔ)器

二進(jìn)制運(yùn)算經(jīng)常要用到求補(bǔ)操作。8位二進(jìn)圖8-11

8位二進(jìn)制數(shù)的求補(bǔ)電路符號(hào)圖8-118位二進(jìn)制數(shù)的求補(bǔ)電路符號(hào)

【例8-16】用RTL描述求補(bǔ)器。

【例8-16】用RTL描述求補(bǔ)器。

8.1.4三態(tài)門與總線緩沖器

三態(tài)門與雙向總線緩沖器是接口電路和總線驅(qū)動(dòng)電路經(jīng)常用到的器件。它們雖然不屬于組合電路,為簡(jiǎn)化章節(jié),也列于此處進(jìn)行介紹。

1.三態(tài)門電路

三態(tài)門電路如圖8-12所示。它具有一個(gè)數(shù)據(jù)輸入端din、一個(gè)數(shù)據(jù)輸出端dout和一個(gè)控制端en。當(dāng)en?=?'1'?時(shí),dout?=?din;當(dāng)en?=?'0'?時(shí),dout?=?′Z′(高阻)。三態(tài)門的真值表如表8-5所示。

8.1.4三態(tài)門與總線緩沖器

三態(tài)門與雙向總線緩沖圖8-12三態(tài)門電路圖8-12三態(tài)門電路VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

【例8-17】用VHDL描述三態(tài)門的程序如下:

【例8-17】用VHDL描述三態(tài)門的程序如下:

在第3章中讀者已經(jīng)知道,一個(gè)實(shí)體可以對(duì)應(yīng)多種構(gòu)造體。例8-18和例8-19就是用不同的VHDL描述的三態(tài)門的結(jié)構(gòu)。

在第3章中讀者已經(jīng)知道,一個(gè)實(shí)體可以對(duì)應(yīng)多種

【例8-18】用VHDL描述三態(tài)門的結(jié)構(gòu)示例一。

【例8-18】用VHDL描述三態(tài)門的結(jié)構(gòu)示例一。

該例中采用衛(wèi)式塊語(yǔ)句結(jié)構(gòu)來(lái)表示三態(tài)門。衛(wèi)式塊語(yǔ)句結(jié)構(gòu)的特點(diǎn)是:只有塊語(yǔ)句的條件滿足時(shí),塊中所含的語(yǔ)句才會(huì)被執(zhí)行。在這里只有en?=?'1'?的條件滿足時(shí),dout<=GUARDEDdin語(yǔ)句才會(huì)被執(zhí)行。

該例中采用衛(wèi)式塊語(yǔ)句結(jié)構(gòu)來(lái)表示三態(tài)門。衛(wèi)式塊語(yǔ)句結(jié)構(gòu)的VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

2.單向總線緩沖器

在微型計(jì)算機(jī)的總線驅(qū)動(dòng)中經(jīng)常要用單向總線緩沖器,它通常由多個(gè)三態(tài)門組成,用來(lái)驅(qū)動(dòng)地址總線和控制總線。

一個(gè)8位的單向總線緩沖器如圖8-13所示。8位的單向總線緩沖器由8個(gè)三態(tài)門組成,具有8個(gè)輸入和8個(gè)輸出端。所有三態(tài)門的控制端連在一起,由一個(gè)控制輸入端en控制。

用VHDL描述的8位單向總線緩沖器的程序?qū)嵗缋?-20、例8-21和例8-22所示。

2.單向總線緩沖器

在微型計(jì)算機(jī)的總線驅(qū)動(dòng)中經(jīng)常要圖8-13單向總線緩沖器圖8-13單向總線緩沖器

【例8-20】用VHDL描述的8位單向總線緩沖器的程序?qū)嵗弧?/p>

【例8-20】用VHDL描述的8位單向總線緩沖器的程VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

【例8-21】用VHDL描述的8位單向總線緩沖器的程序?qū)嵗?/p>

【例8-21】用VHDL描述的8位單向總線緩沖器的程

【例8-22】用VHDL描述的8位單向總線緩沖器的程序?qū)嵗?/p>

【例8-22】用VHDL描述的8位單向總線緩沖器的程

在編寫(xiě)上述程序時(shí)應(yīng)注意,不能將“Z”值賦予變量,否則就不能進(jìn)行邏輯綜合。另外,對(duì)信號(hào)賦值時(shí)“Z”和“0”或“1”不能混合使用,例如:

dout<=″Z001ZZZZ″;

這樣的語(yǔ)句是不允許出現(xiàn)的。但是變換賦值表達(dá)式時(shí),分開(kāi)賦值是可以的。例如:

dout(7)<="Z";

dout(6DOWNTO4)

<="001";

dout(3DOWNTO0)

<="ZZZZ";

在編寫(xiě)上述程序時(shí)應(yīng)注意,不能將“Z”值賦予變量,否則就

3.雙向總線緩沖器

雙向總線緩沖器用于對(duì)數(shù)據(jù)總線進(jìn)行驅(qū)動(dòng)和緩沖。典型的雙向總線緩沖器的電路圖如圖8-14所示。圖中,雙向緩沖器有兩個(gè)數(shù)據(jù)輸入輸出端a和b、一個(gè)方向控制端dr和一個(gè)選通端en。當(dāng)en?=?1時(shí),雙向總線緩沖器未被選通,a和b都呈現(xiàn)高阻;當(dāng)en?=?0時(shí),雙向總線緩沖器被選通,如果dr?=?0,那么a?=?b,如果dr?=?1,那么b?=?a。雙向總線緩沖器的真值表如表8-6所示。

3.雙向總線緩沖器

雙向總線緩沖器用于對(duì)數(shù)據(jù)總線進(jìn)圖8-14雙向總線緩沖器圖8-14雙向總線緩沖器VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

【例8-23】用VHDL描述雙向總線緩沖器實(shí)例。

【例8-23】用VHDL描述雙向總線緩沖器實(shí)例。

VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

從例8-23中可以看出,雙向總線緩沖器由兩組三態(tài)門組成,利用信號(hào)aout和bout將兩組三態(tài)門連接起來(lái)。由于在實(shí)際工作過(guò)程中a和b都不可能同時(shí)出現(xiàn)“0”和“1”,因此在這里沒(méi)有使用判決函數(shù)。

從例8-23中可以看出,雙向總線緩沖器由兩

8.2時(shí)序電路設(shè)計(jì)

8.2.1時(shí)鐘信號(hào)和復(fù)位信號(hào)

1.時(shí)鐘信號(hào)的描述眾所周知,任何時(shí)序電路都以時(shí)鐘信號(hào)為驅(qū)動(dòng)信號(hào),時(shí)序電路只是在時(shí)鐘信號(hào)的邊沿到來(lái)時(shí),其狀態(tài)才發(fā)生改變。因此,時(shí)鐘信號(hào)通常描述時(shí)序電路程序的執(zhí)行條件。另外,時(shí)序電路也總是以時(shí)鐘進(jìn)程的形式來(lái)進(jìn)行描述的,其描述方式一般有兩種。

8.2時(shí)序電路設(shè)計(jì)

8.2.1時(shí)鐘信號(hào)和復(fù)位信號(hào)

(1)進(jìn)程的敏感信號(hào)是時(shí)鐘信號(hào)。在這種情況下,時(shí)鐘信號(hào)應(yīng)作為敏感信號(hào),顯式地出現(xiàn)在PROCESS語(yǔ)句后跟的括號(hào)中,例如PROCESS(clock_signal)。時(shí)鐘信號(hào)邊沿的到來(lái)將作為時(shí)序電路語(yǔ)句執(zhí)行的條件。

(1)進(jìn)程的敏感信號(hào)是時(shí)鐘信號(hào)。在這種情況下,時(shí)鐘信

【例8-24】進(jìn)程的敏感信號(hào)是時(shí)鐘信號(hào)實(shí)例。

【例8-24】進(jìn)程的敏感信號(hào)是時(shí)鐘信號(hào)實(shí)例。

(2)用進(jìn)程中的WAITON語(yǔ)句等待時(shí)鐘。在這種情況下,描述時(shí)序電路的進(jìn)程將沒(méi)有敏感信號(hào),而是用WAITON語(yǔ)句來(lái)控制進(jìn)程的執(zhí)行。也就是說(shuō),進(jìn)程通常停留在WAITON語(yǔ)句上,只有在時(shí)鐘信號(hào)到來(lái)且滿足邊沿條件時(shí),其余的語(yǔ)句才能執(zhí)行。

(2)用進(jìn)程中的WAITON語(yǔ)句等待時(shí)鐘。在這種情

【例8-25】用進(jìn)程中的WAITON語(yǔ)句等待時(shí)鐘實(shí)例。

【例8-25】用進(jìn)程中的WAITON語(yǔ)句等待時(shí)鐘實(shí)

在編寫(xiě)上述程序時(shí)應(yīng)注意:

·無(wú)論IF語(yǔ)句還是WAITON語(yǔ)句,在對(duì)時(shí)鐘邊沿進(jìn)行說(shuō)明時(shí),一定要注明是上升沿還是下降沿(前沿還是后沿),只說(shuō)明是邊沿是不行的。

·當(dāng)時(shí)鐘信號(hào)作為進(jìn)程的敏感信號(hào)時(shí),在敏感信號(hào)的表中不能出現(xiàn)一個(gè)以上的時(shí)鐘信號(hào),除時(shí)鐘信號(hào)以外,復(fù)位信號(hào)等是可以和時(shí)鐘信號(hào)一起出現(xiàn)在敏感表中的。

·WAITON語(yǔ)句只能放在進(jìn)程的最前面或者最后面。

在編寫(xiě)上述程序時(shí)應(yīng)注意:

·無(wú)論IF語(yǔ)句還是WA

(3)時(shí)鐘邊沿的描述。為了描述時(shí)鐘邊沿,一定要指定是上升沿還是下降沿,這一點(diǎn)可以使用時(shí)鐘信號(hào)的屬性描述來(lái)進(jìn)行。也就是說(shuō),要指定時(shí)鐘信號(hào)的值是從“0”到“1”變化,還是從“1”到“0”變化,由此可以得知是時(shí)鐘脈沖信號(hào)的上升沿還是下降沿。

(3)時(shí)鐘邊沿的描述。為了描述時(shí)鐘邊沿,一定要指定是

①時(shí)鐘脈沖上升沿的描述。時(shí)鐘脈沖上升沿波形與時(shí)鐘信號(hào)屬性的描述關(guān)系如圖8-15所示。從圖8-15中可以看到,時(shí)鐘信號(hào)的起始值為“0”,故其屬性值clk‘LAST_VALUE='0';上升沿的到來(lái)表示發(fā)生了一個(gè)事件,故用clk?'EVENT表示;上升沿以后,時(shí)鐘信號(hào)的值為“1”,故其當(dāng)前值為clk='1'。這樣,表示上升沿到來(lái)的條件可寫(xiě)為

IFclk='1'ANDclk'LAST_VAULE='0'ANDclk'EVENT

①時(shí)鐘脈沖上升沿的描述。時(shí)鐘脈沖上升沿波形與時(shí)鐘信號(hào)

②時(shí)鐘脈沖下降沿的描述。時(shí)鐘脈沖下降沿波形與時(shí)鐘信號(hào)屬性的描述關(guān)系如圖8-16所示。其關(guān)系與圖8-15類同,此時(shí)clk'LAST_VALUE?=?'1';時(shí)鐘信號(hào)當(dāng)前值為clk='0';下降沿到來(lái)的事件為clk'EVENT。這樣表示下降沿到來(lái)的條件可寫(xiě)為

IFclk='0'ANDclk'LAST_VALUE=?'1'ANDclk'EVENT

②時(shí)鐘脈沖下降沿的描述。時(shí)鐘脈沖下降沿波形與時(shí)鐘信號(hào)圖8-15時(shí)鐘脈沖上升沿波形和時(shí)鐘信號(hào)屬性的描述關(guān)系圖8-15時(shí)鐘脈沖上升沿波形和時(shí)鐘信號(hào)屬性的描述關(guān)系圖8-16時(shí)鐘脈沖下降沿波形和時(shí)鐘信號(hào)屬性的描述關(guān)系圖8-16時(shí)鐘脈沖下降沿波形和時(shí)鐘信號(hào)屬性的描述關(guān)系

根據(jù)上面關(guān)于上升沿和下降沿的描述,時(shí)鐘信號(hào)邊沿檢出條件可以統(tǒng)一描述如下:

IFclock_signal=current_valueAND

clock_signal‘LAST_VALUEANDclock_signal’EVENT

在某些書(shū)刊中邊沿檢出條件也可簡(jiǎn)寫(xiě)為

IFclock_signal=clock_signal'EVENTANDcurrent_value

根據(jù)上面關(guān)于上升沿和下降沿的描述,時(shí)鐘信號(hào)邊沿檢出條件

③由于在STD_LOGIC的數(shù)據(jù)類型中,其值除“0”和“1”以外,還可以取“2”、“X”等9種狀態(tài)值。這樣在綜合時(shí)有可能出現(xiàn)問(wè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ù)位信號(hào)來(lái)設(shè)置。復(fù)位信號(hào)對(duì)觸發(fā)器復(fù)位的操作不同,使其可以分為同步復(fù)位和非同步復(fù)位兩種。所謂同步復(fù)位,就是復(fù)位信號(hào)有效且在給定的時(shí)鐘邊沿到來(lái)時(shí),觸發(fā)器才被復(fù)位;非同步復(fù)位則是指一旦復(fù)位信號(hào)有效,觸發(fā)器就被復(fù)位。

2.觸發(fā)器的同步和非同步復(fù)位

觸發(fā)器的初始狀態(tài)應(yīng)由

1)同步復(fù)位

在用VHDL描述時(shí),同步復(fù)位一定要在以時(shí)鐘為敏感信號(hào)的進(jìn)程中定義,且用IF語(yǔ)句來(lái)描述必要的復(fù)位條件。下面兩個(gè)例子就是同步復(fù)位方式的描述實(shí)例。

1)同步復(fù)位

在用VHDL描述時(shí),同步復(fù)位一定要

【例8-26】同步復(fù)位方式的描述實(shí)例一。

【例8-26】同步復(fù)位方式的描述實(shí)例一。

【例8-27】同步復(fù)位方式的描述實(shí)例二。

【例8-27】同步復(fù)位方式的描述實(shí)例二。

2)非同步復(fù)位

非同步復(fù)位又稱異步復(fù)位,在描述時(shí)與同步方式不同:首先在進(jìn)程的敏感信號(hào)中除時(shí)鐘信號(hào)以外,還應(yīng)加上復(fù)位信號(hào);其次是用IF語(yǔ)句描述復(fù)位條件;最后在ELSIF段描述時(shí)鐘信號(hào)邊沿的條件,并加上EVENT屬性。非同步復(fù)位描述方式如例8-28所示。

2)非同步復(fù)位

非同步復(fù)位又稱異步復(fù)位,在描述時(shí)

【例8-28】非同步復(fù)位方式的描述實(shí)例。

【例8-28】非同步復(fù)位方式的描述實(shí)例。

從例8-28中可以看到,非同步復(fù)位的信號(hào)和變量的代入與賦值必須在時(shí)鐘信號(hào)邊沿有效的范圍內(nèi)進(jìn)行,如例8-28中ELSIF后進(jìn)行的那樣。

另外,添加clock_event是為了防止沒(méi)有時(shí)鐘事件發(fā)生時(shí)的誤操作。譬如,現(xiàn)在時(shí)鐘事件沒(méi)有發(fā)生而是發(fā)生了復(fù)位事件,這樣該進(jìn)程就得到了啟動(dòng)。在此情況下,若復(fù)位條件沒(méi)有滿足,而時(shí)鐘邊沿條件卻是滿足的,那么與時(shí)鐘信號(hào)有關(guān)的那一段程序(ELSIF段)就會(huì)得到執(zhí)行,從而造成錯(cuò)誤操作。

從例8-28中可以看到,非同步復(fù)位的信號(hào)和變量的代入與

8.2.2觸發(fā)器

觸發(fā)器的種類很多,這里僅舉常用的幾種加以說(shuō)明。

1.鎖存器

根據(jù)觸發(fā)邊沿、復(fù)位和預(yù)置的方式以及輸出端不同可以將鎖存器分為多種不同形式。

8.2.2觸發(fā)器

觸發(fā)器的種類很多,這里僅舉常用的

1)

D鎖存器

正沿觸發(fā)的D鎖存器的電路符號(hào)如圖8-17所示。它是一個(gè)正沿(上升沿)觸發(fā)的D觸發(fā)器,有一個(gè)數(shù)據(jù)輸入端d、一個(gè)時(shí)鐘輸入端clk和一個(gè)數(shù)據(jù)輸出端q。D鎖存器的真值表如表8-7所示。從表中可以看到,D鎖存器的輸出端只有在正沿脈沖過(guò)后,輸入端d的數(shù)據(jù)才傳遞到輸出端q。用VHDL描述D鎖存器的程序?qū)嵗缋?-29和例8-30所示。

1)?D鎖存器

正沿觸發(fā)的D鎖存器的電路符號(hào)如圖圖8-17

D鎖存器圖8-17D鎖存器VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件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鎖存器的電路符號(hào)如圖8-18所示。它和一般的D鎖存器的區(qū)別是多了一個(gè)復(fù)位輸入端clr。當(dāng)clr='0'?時(shí),其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鎖存器的電路符號(hào)如圖8-19所示。除了前述的d、clk和q端外,還有clr和pset的復(fù)位、置位端。當(dāng)clr='0'?時(shí)復(fù)位,使q='0';當(dāng)pset='0'?時(shí)置位,使q=

'1'。

圖8-19非同步復(fù)位/置位D鎖存器

3)非同步復(fù)位/置位D鎖存器

非同步復(fù)位/置位D

【例8-32】用VHDL描述的非同步復(fù)位/置位鎖存器的程序?qū)嵗缦拢?/p>

【例8-32】用VHDL描述的非同步復(fù)位/置位鎖存器VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

4)同步復(fù)位的D鎖存器

同步復(fù)位的D鎖存器的電路如圖8-20所示。與非同步方式不同的是,當(dāng)復(fù)位信號(hào)clr有效(clr?=?'1')以后,只是在有效時(shí)鐘邊沿到來(lái)時(shí)才能進(jìn)行復(fù)位操作。圖中clr='1'?以后,在clk的上升沿到來(lái)時(shí),q輸出才變?yōu)椤?”。

另外,從圖中還可以看出,復(fù)位信號(hào)的優(yōu)先級(jí)比d端數(shù)據(jù)輸入的優(yōu)先級(jí)高。也就是說(shuō),當(dāng)clr='1'?時(shí),無(wú)論d端輸入什么信號(hào),在clk的上升沿到來(lái)時(shí),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硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

2.JK觸發(fā)器

帶有復(fù)位/置位功能的JK觸發(fā)器的電路符號(hào)如圖8-21所示。JK觸發(fā)器的輸入端有置位輸入pset、復(fù)位輸入clr、控制輸入j和k、時(shí)鐘信號(hào)輸入clk,輸出端有正向輸出端q和反向輸出端qb。JK觸發(fā)器的真值表如表8-8所示。表中,q0表示原狀態(tài)不變,翻轉(zhuǎn)表示改變?cè)瓉?lái)的狀態(tài),如原來(lái)為“0”則變成“1”,原來(lái)為“1”則變成“0”。

2.JK觸發(fā)器

帶有復(fù)位/置位功能的JK觸發(fā)器的電圖8-21JK觸發(fā)器圖8-21JK觸發(fā)器VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

【例8-34】用VHDL描述JK觸發(fā)器的程序?qū)嵗缦拢?/p>

【例8-34】用VHDL描述JK觸發(fā)器的程序?qū)嵗缦耉HDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

例8-34中的復(fù)位和置位顯然也是非同步的,且pset的優(yōu)先級(jí)比clr高。也就是說(shuō),當(dāng)pset?=?'0'?且clr?=?'0'?時(shí),q將輸出“1”,qb輸出“0”。這種結(jié)果和表8-8所示的真值表是不一致的。為了避免這種情況,程序可以改寫(xiě)成例8-35所示。

例8-34中的復(fù)位和置位顯然也是非同步的,且

【例8-35】例8-34改寫(xiě)以后的程序。

【例8-35】例8-34改寫(xiě)以后的程序。

在例8-35中,pset='0',clr='0'?這種情況未加以考慮,那么在邏輯綜合時(shí),其輸出是未知的。

在例8-35中,pset='0',

8.2.3寄存器

寄存器一般由多位觸發(fā)器連接而成,通常有鎖存寄存器和移位寄存器等。下面主要介紹移位寄存器。

1.串行輸入、串行輸出移位寄存器

串行輸入、串行輸出移位寄存器的電原理圖如圖8-22所示。它具有兩個(gè)輸入端(數(shù)據(jù)輸入端a和時(shí)鐘輸入端clk)與一個(gè)數(shù)據(jù)輸出端b。圖中所示為8位的串行移位寄存器,在時(shí)鐘信號(hào)的作用下,前級(jí)的數(shù)據(jù)向后級(jí)移動(dòng)。該8位移位寄存器由8個(gè)D觸發(fā)器構(gòu)成。

8.2.3寄存器

寄存器一般由多位觸發(fā)器連接而成,圖8-22串行輸入、串行輸出的8位移位寄存器圖8-22串行輸入、串行輸出的8位移位寄存器

【例8-36】利用GENERATE語(yǔ)句和D觸發(fā)器的描述寫(xiě)出的8位移位寄存器的VHDL程序如下:

【例8-36】利用GENERATE語(yǔ)句和D觸發(fā)器的描

例8-36中把dff看作已經(jīng)生成的元件,然后利用GENERATE來(lái)循環(huán)生成串行連接的8個(gè)D觸發(fā)器。

例8-36中把dff看作已經(jīng)生成的元件,然后

【例8-37】8位移位寄存器直接利用信號(hào)來(lái)連接的描述如下:

【例8-37】8位移位寄存器直接利用信號(hào)來(lái)連接的描述VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

2.循環(huán)移位寄存器

在計(jì)算機(jī)的運(yùn)算操作中經(jīng)常用到循環(huán)移位,它可以用硬件電路來(lái)實(shí)現(xiàn)。一個(gè)8位循環(huán)左移的寄存器的電路符號(hào)如圖8-23所示。該電路有8個(gè)數(shù)據(jù)輸入端din(0)~din(7)、移位和數(shù)據(jù)輸出控制端enb、時(shí)鐘信號(hào)輸入端clk、移位位數(shù)控制輸入端s(0)~s(2)、8位數(shù)據(jù)輸出端dout(0)~dout(7)。循環(huán)左移操作的示意圖如圖8-24所示。

當(dāng)enb?=?1時(shí),根據(jù)s(0)~s(2)輸入的數(shù),確定在時(shí)鐘脈沖作用下,循環(huán)左移幾位。圖8-24所示是循環(huán)左移了3位。當(dāng)enb?=?0時(shí),din直接輸出至dout。

2.循環(huán)移位寄存器

在計(jì)算機(jī)的運(yùn)算操作中經(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硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

【例8-39】利用CPAC中循環(huán)左移函數(shù)描述8位循環(huán)左移寄存器的程序如下:

【例8-39】利用CPAC中循環(huán)左移函數(shù)描述8位循環(huán)VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

3.帶清零端的8位并行裝載移位寄存器

該移位寄存器就是TTL手冊(cè)中的74166,其引腳圖如圖8-25所示。

圖中各引腳的名稱及功能如下:

a~h——8位并行數(shù)據(jù)輸入端;

se——串行數(shù)據(jù)輸入端;

q——串行數(shù)據(jù)輸出端;

clk——時(shí)鐘信號(hào)輸入端;

fe——時(shí)鐘信號(hào)禁止端;

s/l——移位/裝載控制端;

clr——清零端。

3.帶清零端的8位并行裝載移位寄存器

該移位寄存器圖8-25帶清零端的8位并行裝載移位寄存器圖8-25帶清零端的8位并行裝載移位寄存器

其真值表如表8-9所示。

其真值表如表8-9所示。

從表8-9中可以看到,當(dāng)清零輸入端clr為“0”時(shí),8位寄存器的輸出均為“0”,從而使q輸出也為“0”。fe是時(shí)鐘禁止端,當(dāng)它為“1”時(shí)將禁止時(shí)鐘,即不管時(shí)鐘信號(hào)如何變化,移位寄存器的狀態(tài)不發(fā)生改變。另外,時(shí)鐘信號(hào)只在上升沿時(shí)才有效,此時(shí)fe?=?0。如果時(shí)鐘信號(hào)的上升沿未到來(lái),則移位寄存器的狀態(tài)仍不會(huì)發(fā)生變化。s/l是移位/裝載控制信號(hào)。當(dāng)s/l?=?1時(shí)是移位狀態(tài),在時(shí)鐘信號(hào)上升沿的控制下,向右移一位,串行輸入端se的信號(hào)將移入qa位,而q的輸出將是移位前的內(nèi)部qg輸出;當(dāng)s/l?=?0時(shí)是裝載狀態(tài),在時(shí)鐘脈沖上升沿的作用下,數(shù)據(jù)輸入端a~h的信號(hào)就裝載到移位寄存器的qa~qh。

從表8-9中可以看到,當(dāng)清零輸入端clr為“0”時(shí),8VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

8.2.4計(jì)數(shù)器

計(jì)數(shù)器分為同步計(jì)數(shù)器和異步計(jì)數(shù)器兩種。計(jì)數(shù)器是一個(gè)典型的時(shí)序電路,分析計(jì)數(shù)器就能更好地了解時(shí)序電路的特性。

1.同步計(jì)數(shù)器

所謂同步計(jì)數(shù)器,就是在時(shí)鐘脈沖(計(jì)數(shù)脈沖)的控制下,構(gòu)成計(jì)數(shù)器的各觸發(fā)器狀態(tài)同時(shí)發(fā)生變化。

8.2.4計(jì)數(shù)器

計(jì)數(shù)器分為同步計(jì)數(shù)器和異步計(jì)

1)帶允許端的十二進(jìn)制計(jì)數(shù)器

該計(jì)數(shù)器由4個(gè)觸發(fā)器構(gòu)成,clr輸入端用于清零,en端用于控制計(jì)數(shù)器工作,clk為時(shí)鐘脈沖(計(jì)數(shù)脈沖)輸入端,qa、qb、qc、qd為計(jì)數(shù)器的4位二進(jìn)制計(jì)數(shù)值輸出端。該計(jì)數(shù)器的真值表如表8-10所示。

1)帶允許端的十二進(jìn)制計(jì)數(shù)器

該計(jì)數(shù)器由4個(gè)觸發(fā)器構(gòu)VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

該程序?qū)?yīng)電路的引腳圖如圖8-26所示。

圖8-26帶允許端的十二進(jìn)制計(jì)數(shù)器電路

該程序?qū)?yīng)電路的引腳圖如圖8-26所示。

圖8-26

2)可逆計(jì)數(shù)器

所謂可逆計(jì)數(shù)器,就是根據(jù)計(jì)數(shù)控制信號(hào)的不同,在時(shí)鐘脈沖作用下,計(jì)數(shù)器可以進(jìn)行加1操作或者減1操作。

可逆計(jì)數(shù)器有一個(gè)特殊的控制端,即updn端。當(dāng)updn?=?'1'?時(shí),計(jì)數(shù)器進(jìn)行加1操作;當(dāng)updn?=?'0'?時(shí),計(jì)數(shù)器進(jìn)行減1操作。一種6位二進(jìn)制可逆計(jì)數(shù)器的真值表如表8-11所示。

2)可逆計(jì)數(shù)器

所謂可逆計(jì)數(shù)器,就是根據(jù)計(jì)數(shù)控制VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

該程序?qū)?yīng)電路的引腳圖如圖8-27所示。

圖8-27

6位二進(jìn)制可逆計(jì)數(shù)器電路

該程序?qū)?yīng)電路的引腳圖如圖8-27所示。

圖8-27

3)六十進(jìn)制計(jì)數(shù)器

眾所周知,用一個(gè)4位二進(jìn)制計(jì)數(shù)器可以構(gòu)成1位十進(jìn)制計(jì)數(shù)器,即可以構(gòu)成1位BCD計(jì)數(shù)器,而2位十進(jìn)制計(jì)數(shù)器連接起來(lái)可以構(gòu)成一個(gè)六十進(jìn)制計(jì)數(shù)器。六十進(jìn)制計(jì)數(shù)器常用于時(shí)鐘計(jì)數(shù)。

一個(gè)六十進(jìn)制計(jì)數(shù)器的電路引腳圖如圖8-28所示。

3)六十進(jìn)制計(jì)數(shù)器

眾所周知,用一個(gè)4位二進(jìn)制計(jì)圖8-28六十進(jìn)制計(jì)數(shù)器電路圖8-28六十進(jìn)制計(jì)數(shù)器電路

六十進(jìn)制計(jì)數(shù)器的輸入和輸出端的名稱及功能說(shuō)明如下:

clk——時(shí)鐘輸入端;

bcd1wr——個(gè)位寫(xiě)控制端;

bcd10wr——十位寫(xiě)控制端;

cin——進(jìn)位輸入端;

co——進(jìn)位輸出端;

datain——數(shù)據(jù)輸入端,共有4條輸入線datain(0)~datain(3);

bcd1——計(jì)數(shù)值個(gè)位輸出,共有4條輸出線bcd1(0)~bcd1(3);

bcd10——計(jì)數(shù)值十位輸出,共有3條輸出線bcd10(0)~bcd10(2)。

六十進(jìn)制計(jì)數(shù)器的輸入和輸出端的名稱及功能說(shuō)明如下:

在該六十進(jìn)制計(jì)數(shù)器的電路中,bcd1wr和bcd10wr與datain配合,以實(shí)現(xiàn)對(duì)六十進(jìn)制計(jì)數(shù)器的個(gè)位和十位的裝載操作,即可以實(shí)現(xiàn)對(duì)個(gè)位和十位值的預(yù)置操作。應(yīng)注意,在對(duì)個(gè)位和十位進(jìn)行預(yù)置操作時(shí),datain輸入端是公用的,因而個(gè)位和十位的預(yù)置操作必定要串行進(jìn)行。

在該六十進(jìn)制計(jì)數(shù)器的電路中,bcd1wr和bcd10wVHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

在例8-43中,第一個(gè)進(jìn)程處理個(gè)位計(jì)數(shù),第二個(gè)進(jìn)程處理十位計(jì)數(shù),第三個(gè)進(jìn)程處理進(jìn)位輸出co的輸出值。應(yīng)注意,個(gè)位和十位的計(jì)數(shù)條件是不一樣的。

在例8-43中,第一個(gè)進(jìn)程處理個(gè)位計(jì)數(shù),第

2.異步計(jì)數(shù)器

異步計(jì)數(shù)器又稱行波計(jì)數(shù)器,它的下一位計(jì)數(shù)器的輸出作為上一位計(jì)數(shù)器的時(shí)鐘信號(hào),這樣一級(jí)一級(jí)串行連接起來(lái)就構(gòu)成了一個(gè)異步計(jì)數(shù)器。

異步計(jì)數(shù)器與同步計(jì)數(shù)器的不同之處就在于時(shí)鐘脈沖的提供方式,異步計(jì)數(shù)器同樣可以構(gòu)成各種各樣的計(jì)數(shù)器。但是,由于異步計(jì)數(shù)器采用行波計(jì)數(shù),因而使計(jì)數(shù)延遲增加,在要求延遲小的領(lǐng)域受到了很大限制。盡管如此,由于它的電路簡(jiǎn)單,故仍有廣泛的應(yīng)用。

2.異步計(jì)數(shù)器

異步計(jì)數(shù)器又稱行波計(jì)數(shù)器,它的下一

用VHDL描述異步計(jì)數(shù)器與上述同步計(jì)數(shù)器的不同之處主要表現(xiàn)在對(duì)各級(jí)時(shí)鐘脈沖的描述上,這一點(diǎn)請(qǐng)讀者在閱讀例程時(shí)多加注意。

用VHDL描述異步計(jì)數(shù)器與上述同步計(jì)數(shù)器的不同之處主要VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

8位行波計(jì)數(shù)器的電原理圖如圖8-29所示。

圖8-29

8位行波計(jì)數(shù)器的電原理圖

8位行波計(jì)數(shù)器的電原理圖如圖8-29所示。

圖8-2

習(xí)題與思考題

8.1試設(shè)計(jì)一個(gè)2位二進(jìn)制的加法器。

8.2試設(shè)計(jì)一個(gè)2位的BCD計(jì)數(shù)器。

8.3同步計(jì)數(shù)器和異步計(jì)數(shù)器在設(shè)計(jì)時(shí)有哪些區(qū)別?試用一個(gè)六進(jìn)制計(jì)數(shù)器和一個(gè)十進(jìn)制計(jì)數(shù)器構(gòu)成一個(gè)六十進(jìn)制同步計(jì)數(shù)器。

習(xí)題與思考題

8.1試設(shè)計(jì)一個(gè)2位二進(jìn)制的加法器

8.4某一輸入/輸出接口電路的引腳如圖8-30所示。

圖8-30某一輸入/輸出接口電路的引腳圖

8.4某一輸入/輸出接口電路的引腳如圖8-30所示感謝感謝173謝謝,精品課件資料搜集謝謝,精品課件資料搜集174第8章基本邏輯電路設(shè)計(jì)8.1組合邏輯電路設(shè)計(jì)8.2時(shí)序電路設(shè)計(jì)習(xí)題與思考題第8章基本邏輯電路設(shè)計(jì)8.1組合邏輯電路設(shè)計(jì)

8.1組合邏輯電路設(shè)計(jì)

8.1.1簡(jiǎn)單門電路簡(jiǎn)單門電路包括2輸入“與非”門、集電極開(kāi)路的2輸入“與非”門、2輸入“或非”門、反相器、集電極開(kāi)路的反相器、3輸入“與”門、3輸入“與非”門、2輸入“或”門和2輸入“異或”門等,它們是構(gòu)成所有邏輯電路的基本電路。

8.1組合邏輯電路設(shè)計(jì)

8.1.1簡(jiǎn)單門電路

1.2輸入“與非”門電路

2輸入“與非”門電路的邏輯表達(dá)式為

y?=???(a∧b)

其邏輯電路圖如圖8-1所示。

利用VHDL描述2輸入“與非”門有多種形式,現(xiàn)舉兩個(gè)例子加以說(shuō)明。

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硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

從上面兩個(gè)例子中可以看出,例8-1的描述更簡(jiǎn)潔,更接近于2輸入“與非”門的行為描述,因此也更易于閱讀;例8-2的描述是以2輸入“與非”門的真值表為依據(jù)來(lái)編寫(xiě)的,羅列了2輸入“與非”門的每種輸入狀態(tài)及其對(duì)應(yīng)的輸出結(jié)果。

從上面兩個(gè)例子中可以看出,例8-1的描述更簡(jiǎn)潔,更接近

集電極開(kāi)路的2輸入“與非”門和一般的2輸入“與非”門在VHDL的描述上沒(méi)有什么差異,所不同的只是從不同元件庫(kù)中提取相應(yīng)的電路而已。例如:

集電極開(kāi)路的2輸入“與非”門和一般的2輸入“與非”門在

在第一個(gè)例子中要生成的是一般TTL的2輸入“與非”門,而在第二個(gè)例子中要生成的是TTL集電極開(kāi)路的2輸入“與非”門。這里所敘述的情況對(duì)其他門電路同樣適用。因此,對(duì)不同類型門電路的集電極開(kāi)路輸出門,本節(jié)將不再贅述。

在第一個(gè)例子中要生成的是一般TTL的2輸入“與非”門,

2.2輸入“或非”門電路

2輸入“或非”門電路的邏輯表達(dá)式為

y?=???(a∨b)

其邏輯電路圖如圖8-2所示。

現(xiàn)舉兩個(gè)用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硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

3.反相器

反相器電路的邏輯表達(dá)式為

y

=???a

其邏輯電路圖如圖8-3所示。

VHDL對(duì)反相器的描述如例8-5和例8-6所示。

3.反相器

反相器電路的邏輯表達(dá)式為

圖8-3反相器電路圖8-3反相器電路

【例8-5】VHDL對(duì)反相器的描述一。

【例8-5】VHDL對(duì)反相器的描述一。

【例8-6】

VHDL對(duì)反相器的描述二。

【例8-6】VHDL對(duì)反相器的描述二。

VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

4.3輸入“與非”門電路

3輸入“與非”門電路的邏輯表達(dá)式為

y

=??

(a∧b∧c)

其邏輯電路如圖8-4所示。

3輸入“與非”門和2輸入“與非”門的差異僅在于多了一個(gè)輸入引腳,在用VHDL編程時(shí),在端口說(shuō)明中應(yīng)加一個(gè)輸入端口。例如,原來(lái)的輸入端口為a、b兩個(gè),現(xiàn)在應(yīng)變?yōu)閍、b、c三個(gè)。當(dāng)然,根據(jù)邏輯表達(dá)式,該輸入端口的信號(hào)c應(yīng)與a、b一樣,一起參與邏輯運(yùn)算,以得到最后的輸出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硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件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硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

上述簡(jiǎn)單的門電路大多用兩種不同形式的VHDL程序來(lái)描述,其行為和功能是完全一樣的。事實(shí)上還可以運(yùn)用VHDL中所給出的語(yǔ)句來(lái)描述這些門電路,這就給編程人員提供了較大的編程靈活性。但是,一般來(lái)說(shuō),無(wú)論是編程人員還是閱讀這些程序的人員,都希望程序能一目了然,因此盡可能采用VHDL中所提供的語(yǔ)言和符號(hào),用簡(jiǎn)潔的語(yǔ)句描述其行為,這總是首選的描述方式。

上述簡(jiǎn)單的門電路大多用兩種不同形式的VHDL程序來(lái)描述

8.1.2編、譯碼器與選擇器

編、譯碼器和選擇器是組合電路中較簡(jiǎn)單的3種通用電路。它們可以由簡(jiǎn)單的門電路組合連接構(gòu)成。例如,圖8-6所示是一個(gè)3-8譯碼器電路(74LS138)。由有關(guān)手冊(cè)可知,該譯碼器由8個(gè)3輸入“與非”門、4個(gè)反相器和一個(gè)3輸入“或非”門構(gòu)成。如果事先不作說(shuō)明,只給出電路,讓讀者來(lái)判讀該電路的功能,那么毋庸置疑,要看懂該電路就要花較多的時(shí)間。如果采用VHDL,從行為、功能來(lái)對(duì)3-8譯碼器進(jìn)行描述,則不僅邏輯設(shè)計(jì)變得非常容易,而且閱讀也會(huì)很方便。

8.1.2編、譯碼器與選擇器

編、譯碼器和選擇器是圖8-63-8譯碼器電路圖8-63-8譯碼器電路

1.3-8譯碼器

3-8譯碼器是最常用的一種小規(guī)模集成電路,它有3個(gè)二進(jìn)制輸入端a、b、c和8個(gè)譯碼輸出端y0~y7。對(duì)輸入a、b、c的值進(jìn)行譯碼,就可以確定輸出端y0~y7的哪一個(gè)輸出端變?yōu)橛行?低電平),從而達(dá)到譯碼的目的。3-8譯碼器的真值表如表8-1所示。

1.3-8譯碼器

3-8譯碼器是最常用的一種小規(guī)模VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

3-8譯碼器還有3個(gè)選通輸入端g1、g2a和g2b。只有在g1?=?1,g2a?=?0,g2b?=?0時(shí),3-8譯碼器才進(jìn)行正常譯碼,否則y0~y7輸出均為高電平。

3-8譯碼器還有3個(gè)選通輸入端g1、g2a和g2b。只

【例8-11】3-8譯碼器用VHDL描述如下:

【例8-11】3-8譯碼器用VHDL描述如下:

VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

2.優(yōu)先級(jí)編碼器

優(yōu)先級(jí)編碼器常用于中斷的優(yōu)先級(jí)控制。例如,74LS148是一個(gè)8輸入、3位二進(jìn)制碼輸出的優(yōu)先級(jí)編碼器。當(dāng)其某一個(gè)輸入有效時(shí),就可以輸出一個(gè)對(duì)應(yīng)的3位二進(jìn)制編碼。另外,當(dāng)同時(shí)有幾個(gè)輸入有效時(shí),將輸出優(yōu)先級(jí)最高的那個(gè)輸入所對(duì)應(yīng)的二進(jìn)制編碼。

圖8-7是優(yōu)先級(jí)編碼器的引腳圖,它有8個(gè)輸入input(0)~input(7)和3位二進(jìn)制碼輸出y0~y2。

2.優(yōu)先級(jí)編碼器

優(yōu)先級(jí)編碼器常用于中斷的優(yōu)先級(jí)控圖8-7優(yōu)先級(jí)編碼器圖8-7優(yōu)先級(jí)編碼器

該優(yōu)先級(jí)編碼器的真值表如表8-2所示。表中,“X”表示任意項(xiàng),它可以是“0”,也可以是“1”。input(0)的優(yōu)先級(jí)最高,input(7)的優(yōu)先級(jí)最低。

該優(yōu)先級(jí)編碼器的真值表如表8-2所示。表中,“X”表示VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

【例8-12】用VHDL描述優(yōu)先級(jí)編碼器的程序如下:

【例8-12】用VHDL描述優(yōu)先級(jí)編碼器的程序如下:

因?yàn)閂HDL中目前還不能描述任意項(xiàng),所以不能用前面一貫采用的CASE語(yǔ)句來(lái)描述,而采用了IF語(yǔ)句。

因?yàn)閂HDL中目前還不能描述任意項(xiàng),所

3.四選一選擇器

選擇器常用于信號(hào)的切換。四選一選擇器可以用于4路信號(hào)的切換。四選一選擇器有4個(gè)信號(hào)輸入端input(0)~input(3)、2個(gè)信號(hào)選擇端a和b及一個(gè)信號(hào)輸出端y。當(dāng)a、b輸入不同的選擇信號(hào)時(shí),就可以使input(0)~input(3)中某個(gè)相應(yīng)的輸入信號(hào)與輸出y端接通。例如,當(dāng)a?=?b?=“0”時(shí),input(0)就與y接通。其邏輯電路如圖8-8所示。

3.四選一選擇器

選擇器常用于信號(hào)的切換。四選一選圖8-8四選一電路圖8-8四選一電路

四選一電路的真值表如表8-3所示。

四選一電路的真值表如表8-3所示。

【例8-13】用VHDL對(duì)四選一電路進(jìn)行描述的程序如下:

【例8-13】用VHDL對(duì)四選一電路進(jìn)行描述的程序VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

例8-13中的四選一選擇器是用IF語(yǔ)句描述的,程序中的ELSE項(xiàng)作為余下的條件,將選擇input(3)從y端輸出,這種描述比較安全。當(dāng)然,不用ELSE項(xiàng)也可以,這時(shí)必須列出sel所有可能出現(xiàn)的情況,加以一一確認(rèn)。

例8-13中的四選一選擇器是用IF語(yǔ)句描述的,程序中的

8.1.3加法器與求補(bǔ)器

1.加法器

加法器有全加器和半加器之分,全加器可以用兩個(gè)半加器構(gòu)成,因此下面先以半加器為例加以說(shuō)明。

半加器有兩個(gè)二進(jìn)制一位的輸入端a和b、一位和的輸出端s、一位進(jìn)位位的輸出端co。半加器的真值表如表8-4所示,其電路符號(hào)如圖8-9所示。

8.1.3加法器與求補(bǔ)器

1.加法器

加法器有圖8-9半加器圖8-9半加器VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

【例8-14】用VHDL描述半加器的程序如下:

【例8-14】用VHDL描述半加器的程序如下:

用兩個(gè)半加器可以構(gòu)成一個(gè)全加器。全加器的電路如圖8-10所示。

圖8-10用兩個(gè)半加器構(gòu)成的全加器

用兩個(gè)半加器可以構(gòu)成一個(gè)全加器。全加器的電路如圖8-1

【例8-15】采用COMPONENT語(yǔ)句和PORTMAP語(yǔ)句描述全加器。

【例8-15】采用COMPONENT語(yǔ)句和PORTVHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

2.求補(bǔ)器

二進(jìn)制運(yùn)算經(jīng)常要用到求補(bǔ)操作。8位二進(jìn)制數(shù)的求補(bǔ)電路符號(hào)如圖8-11所示。

求補(bǔ)電路的輸入為a(0)~a(7),補(bǔ)碼輸出為b(0)~b(7),其中a(7)和b(7)為符號(hào)位。該電路較復(fù)雜,如果像半加器那樣對(duì)每個(gè)門進(jìn)行描述和連接是可以做到的,但是那樣做太繁瑣。這里采用RTL描述更加簡(jiǎn)潔、清楚。

2.求補(bǔ)器

二進(jìn)制運(yùn)算經(jīng)常要用到求補(bǔ)操作。8位二進(jìn)圖8-11

8位二進(jìn)制數(shù)的求補(bǔ)電路符號(hào)圖8-118位二進(jìn)制數(shù)的求補(bǔ)電路符號(hào)

【例8-16】用RTL描述求補(bǔ)器。

【例8-16】用RTL描述求補(bǔ)器。

8.1.4三態(tài)門與總線緩沖器

三態(tài)門與雙向總線緩沖器是接口電路和總線驅(qū)動(dòng)電路經(jīng)常用到的器件。它們雖然不屬于組合電路,為簡(jiǎn)化章節(jié),也列于此處進(jìn)行介紹。

1.三態(tài)門電路

三態(tài)門電路如圖8-12所示。它具有一個(gè)數(shù)據(jù)輸入端din、一個(gè)數(shù)據(jù)輸出端dout和一個(gè)控制端en。當(dāng)en?=?'1'?時(shí),dout?=?din;當(dāng)en?=?'0'?時(shí),dout?=?′Z′(高阻)。三態(tài)門的真值表如表8-5所示。

8.1.4三態(tài)門與總線緩沖器

三態(tài)門與雙向總線緩沖圖8-12三態(tài)門電路圖8-12三態(tài)門電路VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

【例8-17】用VHDL描述三態(tài)門的程序如下:

【例8-17】用VHDL描述三態(tài)門的程序如下:

在第3章中讀者已經(jīng)知道,一個(gè)實(shí)體可以對(duì)應(yīng)多種構(gòu)造體。例8-18和例8-19就是用不同的VHDL描述的三態(tài)門的結(jié)構(gòu)。

在第3章中讀者已經(jīng)知道,一個(gè)實(shí)體可以對(duì)應(yīng)多種

【例8-18】用VHDL描述三態(tài)門的結(jié)構(gòu)示例一。

【例8-18】用VHDL描述三態(tài)門的結(jié)構(gòu)示例一。

該例中采用衛(wèi)式塊語(yǔ)句結(jié)構(gòu)來(lái)表示三態(tài)門。衛(wèi)式塊語(yǔ)句結(jié)構(gòu)的特點(diǎn)是:只有塊語(yǔ)句的條件滿足時(shí),塊中所含的語(yǔ)句才會(huì)被執(zhí)行。在這里只有en?=?'1'?的條件滿足時(shí),dout<=GUARDEDdin語(yǔ)句才會(huì)被執(zhí)行。

該例中采用衛(wèi)式塊語(yǔ)句結(jié)構(gòu)來(lái)表示三態(tài)門。衛(wèi)式塊語(yǔ)句結(jié)構(gòu)的VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

2.單向總線緩沖器

在微型計(jì)算機(jī)的總線驅(qū)動(dòng)中經(jīng)常要用單向總線緩沖器,它通常由多個(gè)三態(tài)門組成,用來(lái)驅(qū)動(dòng)地址總線和控制總線。

一個(gè)8位的單向總線緩沖器如圖8-13所示。8位的單向總線緩沖器由8個(gè)三態(tài)門組成,具有8個(gè)輸入和8個(gè)輸出端。所有三態(tài)門的控制端連在一起,由一個(gè)控制輸入端en控制。

用VHDL描述的8位單向總線緩沖器的程序?qū)嵗缋?-20、例8-21和例8-22所示。

2.單向總線緩沖器

在微型計(jì)算機(jī)的總線驅(qū)動(dòng)中經(jīng)常要圖8-13單向總線緩沖器圖8-13單向總線緩沖器

【例8-20】用VHDL描述的8位單向總線緩沖器的程序?qū)嵗弧?/p>

【例8-20】用VHDL描述的8位單向總線緩沖器的程VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

【例8-21】用VHDL描述的8位單向總線緩沖器的程序?qū)嵗?/p>

【例8-21】用VHDL描述的8位單向總線緩沖器的程

【例8-22】用VHDL描述的8位單向總線緩沖器的程序?qū)嵗?/p>

【例8-22】用VHDL描述的8位單向總線緩沖器的程

在編寫(xiě)上述程序時(shí)應(yīng)注意,不能將“Z”值賦予變量,否則就不能進(jìn)行邏輯綜合。另外,對(duì)信號(hào)賦值時(shí)“Z”和“0”或“1”不能混合使用,例如:

dout<=″Z001ZZZZ″;

這樣的語(yǔ)句是不允許出現(xiàn)的。但是變換賦值表達(dá)式時(shí),分開(kāi)賦值是可以的。例如:

dout(7)<="Z";

dout(6DOWNTO4)

<="001";

dout(3DOWNTO0)

<="ZZZZ";

在編寫(xiě)上述程序時(shí)應(yīng)注意,不能將“Z”值賦予變量,否則就

3.雙向總線緩沖器

雙向總線緩沖器用于對(duì)數(shù)據(jù)總線進(jìn)行驅(qū)動(dòng)和緩沖。典型的雙向總線緩沖器的電路圖如圖8-14所示。圖中,雙向緩沖器有兩個(gè)數(shù)據(jù)輸入輸出端a和b、一個(gè)方向控制端dr和一個(gè)選通端en。當(dāng)en?=?1時(shí),雙向總線緩沖器未被選通,a和b都呈現(xiàn)高阻;當(dāng)en?=?0時(shí),雙向總線緩沖器被選通,如果dr?=?0,那么a?=?b,如果dr?=?1,那么b?=?a。雙向總線緩沖器的真值表如表8-6所示。

3.雙向總線緩沖器

雙向總線緩沖器用于對(duì)數(shù)據(jù)總線進(jìn)圖8-14雙向總線緩沖器圖8-14雙向總線緩沖器VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

【例8-23】用VHDL描述雙向總線緩沖器實(shí)例。

【例8-23】用VHDL描述雙向總線緩沖器實(shí)例。

VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第五版)侯伯亨章課件8

從例8-23中可以看出,雙向總線緩沖器由兩組三態(tài)門組成,利用信號(hào)aout和bout將兩組三態(tài)門連接起來(lái)。由于在實(shí)際工作過(guò)程中a和b都不可能同時(shí)出現(xiàn)“0”和“1”,因此在這里沒(méi)有使用判決函數(shù)。

從例8-23中可以看出,雙向總線緩沖器由兩

8.2時(shí)序電路設(shè)計(jì)

8.2.1時(shí)鐘信號(hào)和復(fù)位信號(hào)

1.時(shí)鐘信號(hào)的描述眾所周知,任何時(shí)序電路都以時(shí)鐘信號(hào)為驅(qū)動(dòng)信號(hào),時(shí)序電路只是在時(shí)鐘信號(hào)的邊沿到來(lái)時(shí),其狀態(tài)才發(fā)生改變。因此,時(shí)鐘信號(hào)通常描述時(shí)序電路程序的執(zhí)行條件。另外,時(shí)序電路也總是以時(shí)鐘進(jìn)程的形式來(lái)進(jìn)行描述的,其描述方式一般有兩種。

8.2時(shí)序電路設(shè)計(jì)

8.2.1時(shí)鐘信號(hào)和復(fù)位信號(hào)

(1)進(jìn)程的敏感信號(hào)是時(shí)鐘信號(hào)。在這種情況下,時(shí)鐘信號(hào)應(yīng)作為敏感信號(hào),顯式地出現(xiàn)在PROCESS語(yǔ)句后跟的括號(hào)中,例如PROCESS(clock_signal)。時(shí)鐘信號(hào)邊沿的到來(lái)將作為時(shí)序電路語(yǔ)句執(zhí)行的條件。

(1)進(jìn)程的敏感信號(hào)是時(shí)鐘信號(hào)。在這種情況下,時(shí)鐘信

【例8-24】進(jìn)程的敏感信號(hào)是時(shí)鐘信號(hào)實(shí)例。

【例8-24】進(jìn)程的敏感信號(hào)是時(shí)鐘信號(hào)實(shí)例。

(2)用進(jìn)程中的WAITON語(yǔ)句等待時(shí)鐘。在這種情況下,描述時(shí)序電路的進(jìn)程將沒(méi)有敏感信號(hào),而是用WAITON語(yǔ)句來(lái)控制進(jìn)程的執(zhí)行。也就是說(shuō),進(jìn)程通常停留在WAITON語(yǔ)句上,只有在時(shí)鐘信號(hào)到來(lái)且滿足邊沿條件時(shí),其余的語(yǔ)句才能執(zhí)行。

(2)用進(jìn)程中的WAITON語(yǔ)句等待時(shí)鐘。在這種情

【例8-25】用進(jìn)程中的WAITON語(yǔ)句等待時(shí)鐘實(shí)例。

【例8-25】用進(jìn)程中的WAITON語(yǔ)句等待時(shí)鐘實(shí)

在編寫(xiě)上述程序時(shí)應(yīng)注意:

·無(wú)論IF語(yǔ)句還是WAITON語(yǔ)句,在對(duì)時(shí)鐘邊沿進(jìn)行說(shuō)明時(shí),一定要注明是上升沿還是下降沿(前沿還是后沿),只說(shuō)明是邊沿是不行的。

·當(dāng)時(shí)鐘信號(hào)作為進(jìn)程的敏感信號(hào)時(shí),在敏感信號(hào)的表中不能出現(xiàn)一個(gè)以上的時(shí)鐘信號(hào),除時(shí)鐘信號(hào)以外,復(fù)位信號(hào)等是可以和時(shí)鐘信號(hào)一起出現(xiàn)在敏感表中的。

·WAITON語(yǔ)句只能放在進(jìn)程的最前面或者最后面。

在編寫(xiě)上述程序時(shí)應(yīng)注意:

·無(wú)論IF語(yǔ)句還是WA

(3)時(shí)鐘邊沿的描述。為了描述時(shí)鐘邊沿,一定要指定是上升沿還是下降沿,這一點(diǎn)可以使用時(shí)鐘信號(hào)的屬性描述來(lái)進(jìn)行。也就是說(shuō),要指定時(shí)鐘信號(hào)的值是從“0”到“1”變化,還是從“1”到“0”變化,由此可以得知是時(shí)鐘脈沖信號(hào)的上升沿還是下降沿。

(3)時(shí)鐘邊沿的描述。為了描述時(shí)鐘邊沿,一定要指定是

①時(shí)鐘脈沖上升沿的描述。時(shí)鐘脈沖上升沿波形與時(shí)鐘信號(hào)屬性的描述關(guān)系如圖8-15所示。從圖8-15中可以看到,時(shí)鐘信號(hào)的起始值為“0”,故其屬性值clk‘LAST_VALUE='0';上升沿的到來(lái)表示發(fā)生了一個(gè)事件,故用clk?'EVENT表示;上升沿以后,時(shí)鐘信號(hào)的值為“1”,故其當(dāng)前值為clk='1'。這樣,表示上升沿到來(lái)的條件可寫(xiě)為

IFclk='1'ANDclk'LAST_VAULE='0'AND

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論