計(jì)數(shù)器應(yīng)用實(shí)例
除了計(jì)數(shù)功能外,計(jì)數(shù)器產(chǎn)品還有一些附加功能,如異步復(fù)位、預(yù)置數(shù)(注意,有同步預(yù)置數(shù)和異步預(yù)置數(shù)兩種。前者受時(shí)鐘脈沖控制,后者不受時(shí)鐘脈沖控制)、保持(注意,有保持進(jìn)位和不保持進(jìn)位兩種)。雖然計(jì)數(shù)器產(chǎn)品一般只有二進(jìn)制和十進(jìn)制兩種,有了這些附加功能,我們就可以方便地用我們可以得到的計(jì)數(shù)器來(lái)構(gòu)成任意進(jìn)制的計(jì)數(shù)器。下面我們舉兩個(gè)例子。在這兩個(gè)例子中,我們分別用同步十進(jìn)制加法計(jì)數(shù)器74LS160構(gòu)成一個(gè)六進(jìn)制計(jì)數(shù)器和一個(gè)一百進(jìn)制計(jì)數(shù)器。
因?yàn)榱M(jìn)制計(jì)數(shù)器的有效狀態(tài)有六個(gè),而十進(jìn)制計(jì)數(shù)器的有效狀態(tài)有十個(gè),所以用十進(jìn)制計(jì)數(shù)器構(gòu)成六進(jìn)制計(jì)數(shù)器時(shí),我們只需保留十進(jìn)制計(jì)數(shù)器的六個(gè)狀態(tài)即可。74LS160的十個(gè)有效狀態(tài)是BCD編碼的,即0000、0001、0010、0011、0100、0101、0110、0111、1000、1001[圖5-1]。
圖5-1
我們保留哪六個(gè)狀態(tài)呢?理論上,我們保留哪六個(gè)狀態(tài)都行。然而,為了使電路最簡(jiǎn)單,保留哪六個(gè)狀態(tài)還是有一點(diǎn)講究的。一般情況下,我們總是保留0000和1001兩個(gè)狀態(tài)。因?yàn)?4LS160從1001變化到0000時(shí),將在進(jìn)位輸出端產(chǎn)生一個(gè)進(jìn)位脈沖,所以我們保留了0000和1001這兩個(gè)狀態(tài)后,我們就可以利用74LS160的進(jìn)位輸出端作為六進(jìn)制計(jì)數(shù)器的進(jìn)位輸出端了。于是,六進(jìn)制計(jì)數(shù)器的狀態(tài)循環(huán)可以是0000、0001、0010、0011、0100和1001,也可以是0000、0101、0110、0111、1000和1001。我們不妨采用0000、0001、0010、0011、0100和1001這六個(gè)狀態(tài)。
如何讓74LS160從0100狀態(tài)跳到1001狀態(tài)呢?我們用一個(gè)混合邏輯與非門(mén)構(gòu)成一個(gè)譯碼器[圖5.3.37b],當(dāng)74LS160的狀態(tài)為0100時(shí),與非門(mén)輸出低電平,這個(gè)低電平使74LS160工作在預(yù)置數(shù)狀態(tài),當(dāng)下一個(gè)時(shí)鐘脈沖到來(lái)時(shí),由于等于1001,74LS160就會(huì)預(yù)置成1001,從而我們實(shí)現(xiàn)了狀態(tài)跳躍。
圖5.3.37b 用置數(shù)法將74160接成六進(jìn)制計(jì)數(shù)器(置入1001)
比這個(gè)方案稍微繁瑣一點(diǎn)的是利用74LS160的異步復(fù)位端。下面這個(gè)電路中[圖5.3.34],也有一個(gè)由混合邏輯與非門(mén)構(gòu)成的譯碼器。
圖5.3.34 用置零法將74LS160接成六進(jìn)制計(jì)數(shù)器
不過(guò),這個(gè)譯碼器當(dāng)輸入為0110時(shí)才輸出低電平,使74LS160異步復(fù)位,進(jìn)入0000這個(gè)狀態(tài)。從0000狀態(tài)開(kāi)始,隨著時(shí)鐘脈沖的不斷到來(lái),74LS160依次變?yōu)?001、0010、0011、0100、0101、和0110狀態(tài)[圖5-2]??赡苡腥苏f(shuō):“不對(duì)!這個(gè)電路總共有七個(gè)狀態(tài),應(yīng)該是七進(jìn)制計(jì)數(shù)器呀!”我們說(shuō),這個(gè)電路雖然要經(jīng)歷七個(gè)狀態(tài),但是只需六個(gè)脈沖就完成一個(gè)計(jì)數(shù)循環(huán),因此它仍是六進(jìn)制計(jì)數(shù)器。
圖5-2
我們仔細(xì)分析一下。假設(shè)74LS160的初始狀態(tài)為0000,第一個(gè)時(shí)鐘脈沖到達(dá)后,它的狀態(tài)變?yōu)?001,第二個(gè)時(shí)鐘脈沖到達(dá)后,它的狀態(tài)變?yōu)?010,……,第五個(gè)時(shí)鐘脈沖到達(dá)后,它的狀態(tài)變?yōu)?101,第六個(gè)時(shí)鐘脈沖到達(dá)后,它的狀態(tài)變?yōu)?110。當(dāng)74LS160處于0110這個(gè)狀態(tài)時(shí),譯碼器輸出低電平,使74LS160異步復(fù)位,進(jìn)入0000這個(gè)狀態(tài)。這段話里,“異步復(fù)位”是一個(gè)關(guān)鍵詞。與同步復(fù)位不同,異步復(fù)位不受時(shí)鐘脈沖的控制。于是,譯碼器的輸出剛變成低電平,74LS160的狀態(tài)就變成了0000。理想情況下,74LS160在第六個(gè)時(shí)鐘周期內(nèi)首先在0110狀態(tài)停留片刻,然后就穩(wěn)定地停留在0000狀態(tài)。我們知道,計(jì)數(shù)器的工作對(duì)象是時(shí)鐘脈沖。計(jì)數(shù),就是計(jì)時(shí)鐘脈沖的個(gè)數(shù)。在我們這個(gè)例子中,74LS160從0000狀態(tài)出發(fā),經(jīng)過(guò)六個(gè)(而不是七個(gè))時(shí)鐘周期又回到了0000狀態(tài),也就是說(shuō),每六個(gè)(而不是七個(gè))時(shí)鐘脈沖就使74LS160的狀態(tài)循環(huán)一次。因此,這個(gè)電路是一個(gè)六進(jìn)制計(jì)數(shù)器。計(jì)數(shù)循環(huán)中包括0000、0001、0010、0011、0100和0101這六個(gè)穩(wěn)定狀態(tài)??赡苡腥苏f(shuō):“唔,聽(tīng)你這么一解釋?zhuān)乙灿X(jué)得它是六進(jìn)制計(jì)數(shù)器。不過(guò),把七個(gè)狀態(tài)算成六個(gè)總是有點(diǎn)兒別扭。唉,只要它能工作,我就不計(jì)較它是經(jīng)歷六個(gè)狀態(tài)還是七個(gè)狀態(tài)了。”我說(shuō):“對(duì),我也這樣想。然而,事與愿違呀!不改進(jìn)的話,這個(gè)電路還真不能工作?!睘槭裁茨兀课覀冎?,計(jì)數(shù)器的狀態(tài)是觸發(fā)器記憶的。74LS160有四個(gè)觸發(fā)器,分別記憶。這四個(gè)觸發(fā)器的工作速度是有差異的。在74LS160從0110變成0000的過(guò)程中,和的狀態(tài)不變,和的狀態(tài)要從1變成0。我們假設(shè)比快,那么剛剛從1變0時(shí),仍然處于1狀態(tài)。這時(shí),譯碼器的輸出就不是低電平了,74LS160的異步復(fù)位信號(hào)就消失了。在異步復(fù)位信號(hào)持續(xù)時(shí)間過(guò)短的情況下,將保持1狀態(tài)不變。于是74LS160將停留在0010狀態(tài),而不是我們期望的0000狀態(tài)。顯然,這是一種競(jìng)爭(zhēng)冒險(xiǎn)現(xiàn)象,因?yàn)?4LS160是否能夠從0110變成0000取決于和的競(jìng)爭(zhēng)結(jié)果。怎樣使異步復(fù)位信號(hào)持續(xù)足夠長(zhǎng)的時(shí)間呢?我們來(lái)看看這個(gè)電路[圖5.3.36]。
圖5.3.36? 圖5.3.34電路的改進(jìn)
兩個(gè)與非門(mén)構(gòu)成了RS鎖存器,以它的端輸出的低電平作為74LS160的異步復(fù)位信號(hào)。若74LS160從0000狀態(tài)開(kāi)始計(jì)數(shù),則第六個(gè)時(shí)鐘脈沖上升沿到達(dá)時(shí)進(jìn)入0110狀態(tài),使RS鎖存器置位,端輸出低電平。74LS160在0110狀態(tài)作短暫停留后,迅速轉(zhuǎn)入其它狀態(tài),如0010或0100,譯碼器輸出的負(fù)脈沖消失。如果我們把這個(gè)窄脈沖直接作為74LS160的異步復(fù)位信號(hào),計(jì)數(shù)器不一定能夠可靠地工作。如果我們把這個(gè)窄脈沖作為RS鎖存器的置位信號(hào),把時(shí)鐘脈沖作為RS鎖存器的復(fù)位信號(hào),再將RS鎖存器的作為74LS160的異步復(fù)位信號(hào),計(jì)數(shù)器一定能夠可靠地工作,因?yàn)?img height=25 src="/article/UploadPic/2010-5/201052793556260.gif" width=16>輸出的負(fù)脈沖的寬度與時(shí)鐘脈沖高電平的持續(xù)時(shí)間相等。
第二個(gè)例子要求我們構(gòu)成一百進(jìn)制計(jì)數(shù)器,也就是說(shuō),計(jì)數(shù)器的狀態(tài)為0010到9910。因?yàn)?00等于10乘以10,所以我們可以用兩個(gè)74LS160構(gòu)成一個(gè)一百進(jìn)制計(jì)數(shù)器,其中一個(gè)計(jì)數(shù)器的狀態(tài)表示個(gè)位數(shù),另一個(gè)計(jì)數(shù)器的狀態(tài)表示十位數(shù),后者在前者的進(jìn)位信號(hào)控制下計(jì)數(shù)。我們有兩種方案。第一種方案稱(chēng)為并行進(jìn)位方式[圖5.3.39]。
圖5.3.39 例5.3.3電路的并行進(jìn)位方式
這種方案的特點(diǎn)是兩個(gè)74LS160的CP端都接到時(shí)鐘脈沖上。不過(guò),第一個(gè)74LS160始終工作在計(jì)數(shù)方式,每一個(gè)時(shí)鐘脈沖都使其狀態(tài)發(fā)生變化;第一個(gè)74LS160只有在第一個(gè)74LS160進(jìn)位輸出為高電平是才工作在計(jì)數(shù)方式,每十個(gè)時(shí)鐘脈沖才使其狀態(tài)發(fā)生變化。若計(jì)數(shù)器從0010狀態(tài)開(kāi)始計(jì)數(shù),則第九個(gè)時(shí)鐘脈沖到達(dá)后,第一個(gè)74LS160的狀態(tài)變?yōu)?10且進(jìn)位輸出變?yōu)楦唠娖?,使第二個(gè)74LS160進(jìn)入計(jì)數(shù)方式。因?yàn)榈诙€(gè)74LS160進(jìn)入計(jì)數(shù)方式的時(shí)間比第九個(gè)時(shí)鐘脈沖到達(dá)的時(shí)間晚,就是說(shuō),第九個(gè)時(shí)鐘脈沖到達(dá)時(shí)第二個(gè)74LS160尚未進(jìn)入計(jì)數(shù)方式,所以,第九個(gè)時(shí)鐘脈沖并不能使第二個(gè)74LS160的狀態(tài)發(fā)生變化,其狀態(tài)仍為010。于是,計(jì)數(shù)器的狀態(tài)為0910。第十個(gè)時(shí)鐘脈沖到達(dá)后,第一個(gè)74LS160的狀態(tài)變?yōu)?10且進(jìn)位輸出變?yōu)榈碗娖?,使第二個(gè)74LS160退出計(jì)數(shù)方式。因?yàn)榈诙€(gè)74LS160退出計(jì)數(shù)方式的時(shí)間比第十個(gè)時(shí)鐘脈沖到達(dá)的時(shí)間晚,就是說(shuō),第十個(gè)時(shí)鐘脈沖到達(dá)時(shí)第二個(gè)74LS160尚未退出計(jì)數(shù)方式,所以,第十個(gè)時(shí)鐘脈沖使第二個(gè)74LS160的狀態(tài)發(fā)生變化,其狀態(tài)變?yōu)?10。于是,計(jì)數(shù)器的狀態(tài)為1010。第二種方案稱(chēng)為串行進(jìn)位方式,這種方案的特點(diǎn)是,兩個(gè)74LS160都始終工作在計(jì)數(shù)方式。不過(guò),第一個(gè)74LS160的CP端接到時(shí)鐘脈沖上,每一個(gè)時(shí)鐘脈沖都使其狀態(tài)發(fā)生變化;第一個(gè)74LS160的CP端接到第一個(gè)74LS160進(jìn)位輸出上,每十個(gè)時(shí)鐘脈沖才使其狀態(tài)發(fā)生變化。經(jīng)常有學(xué)生問(wèn):“為什么在第一個(gè)74LS160的進(jìn)位輸出端和第二個(gè)74LS160的時(shí)鐘脈沖輸入端之間要加上一個(gè)非門(mén)呢?”這里面有點(diǎn)兒奧妙。若計(jì)數(shù)器從0010狀態(tài)開(kāi)始計(jì)數(shù),則第九個(gè)時(shí)鐘脈沖到達(dá)后,第一個(gè)74LS160的狀態(tài)變?yōu)?10且進(jìn)位輸出變?yōu)楦唠娖?。如果沒(méi)有這個(gè)非門(mén),第一個(gè)74LS160的進(jìn)位輸出端的電平變化將使第二個(gè)74LS160的狀態(tài)發(fā)生變化,其狀態(tài)變?yōu)?10。于是計(jì)數(shù)器的狀態(tài)就從0810變成1910,而不是我們所希望的0910。有了這個(gè)非門(mén),情況就不一樣了,因?yàn)榈谝粋€(gè)74LS160的進(jìn)位輸出端的脈沖上升沿被非門(mén)轉(zhuǎn)換成下降沿,所以第一個(gè)74LS160的進(jìn)位輸出端的電平變化并不能使第二個(gè)74LS160的狀態(tài)發(fā)生變化,其狀態(tài)仍為010。于是計(jì)數(shù)器的狀態(tài)就從0810變成我們所希望的0910。第十個(gè)時(shí)鐘脈沖到達(dá)后,第一個(gè)74LS160的狀態(tài)變?yōu)?10且進(jìn)位輸出變?yōu)榈碗娖健R驗(yàn)榈谝粋€(gè)74LS160的進(jìn)位輸出端的脈沖下降沿被非門(mén)轉(zhuǎn)換成上升沿,所以第一個(gè)74LS160的進(jìn)位輸出端的電平變化使第二個(gè)74LS160的狀態(tài)發(fā)生變化,其狀態(tài)變?yōu)?10。于是計(jì)數(shù)器的狀態(tài)又從0910變成1010。
我們?cè)倥e一個(gè)用74LS160構(gòu)成二十九進(jìn)制計(jì)數(shù)器的例子。因?yàn)?9是一個(gè)素?cái)?shù),除了1和它本身外,不能表達(dá)為兩個(gè)整數(shù)的乘積,所以我們要把工作分解成兩個(gè)步驟。第一步,我們用兩個(gè)十進(jìn)制計(jì)數(shù)器構(gòu)成一個(gè)一百進(jìn)制計(jì)數(shù)器;第二步,我們用這個(gè)一百進(jìn)制計(jì)數(shù)器構(gòu)成二十九進(jìn)制計(jì)數(shù)器。第一步可以采用并行進(jìn)位方式或串行進(jìn)位方式實(shí)現(xiàn);第二步可以用置位法或復(fù)位法實(shí)現(xiàn)。因?yàn)檫@里要對(duì)兩個(gè)74LS160同時(shí)置位或復(fù)位,所以也稱(chēng)為整體置位法或整體復(fù)位法。
評(píng)論
查看更多