觸發(fā)器的原理和應(yīng)用
作者:浮槎
審核:時(shí)光
? ? ? ?要提到計(jì)算機(jī)的工作原理,就不得不提到一種電子裝置:觸發(fā)器。觸發(fā)器主要由兩個(gè)電子管組成,當(dāng)電流通過(guò)觸發(fā)器時(shí)會(huì)通過(guò)其中一個(gè)電子管。觸發(fā)器一共有四個(gè)接觸點(diǎn),其中兩個(gè)用來(lái)接收外部脈沖,另外兩個(gè)用來(lái)輸出回答脈沖。外部脈沖輸入的瞬間,觸發(fā)器就會(huì)“翻轉(zhuǎn)”,使原本導(dǎo)通的電子管變成閉合狀態(tài),電流轉(zhuǎn)而進(jìn)入另一個(gè)電子管。當(dāng)一邊電子管閉合、另一邊電子管導(dǎo)通的瞬間,觸發(fā)器就會(huì)輸出回答脈沖。
? ? ? 現(xiàn)在我們給觸發(fā)器連續(xù)不斷地輸入脈沖,并根據(jù)圖1中兩根電子管其中的一根——右側(cè)的電子管的狀態(tài)來(lái)確定觸發(fā)器的狀態(tài):當(dāng)右側(cè)電子管閉合時(shí),設(shè)定觸發(fā)器是「0?狀態(tài)」;當(dāng)右側(cè)電子管導(dǎo)通時(shí),設(shè)定觸發(fā)器是「1?狀態(tài)」。
? ? ? 如果觸發(fā)器的初始狀態(tài)為「0?狀態(tài)」,即右側(cè)電子管為閉合狀態(tài)時(shí)(如圖?1所示),那么輸入第一個(gè)脈沖后,右側(cè)電子管導(dǎo)通,觸發(fā)器翻轉(zhuǎn)成「1?狀態(tài)」。此時(shí),觸發(fā)器不會(huì)輸出回答脈沖,因?yàn)樽髠?cè)電子管并未導(dǎo)通。接下來(lái),當(dāng)我們輸入第二個(gè)脈沖時(shí),左側(cè)電子管導(dǎo)通,右側(cè)電子管閉合,觸發(fā)器翻轉(zhuǎn)為「0?狀態(tài)」,輸出回答脈沖。
通過(guò)觀察可以發(fā)現(xiàn),經(jīng)過(guò)兩次輸入脈沖之后觸發(fā)器回到了原始狀態(tài)。接著繼續(xù)輸入第三個(gè)脈沖,觸發(fā)器變成了「1?狀態(tài)」,再輸入第四個(gè)脈沖,觸發(fā)器又變成「0?狀態(tài)」……也就是說(shuō),觸發(fā)器的狀態(tài)是以2個(gè)脈沖為周期進(jìn)行循環(huán)的。

? ? ? ?如果將多個(gè)觸發(fā)器相互連接會(huì)發(fā)生什么事呢?以三個(gè)觸發(fā)器:觸發(fā)器1、觸發(fā)器2、觸發(fā)器3相連為例(如圖?2?),給觸發(fā)器1輸入脈沖信號(hào),之后觸發(fā)器1的回答脈沖會(huì)作為觸發(fā)器2的輸入脈沖,觸發(fā)器2的回答脈沖之后又會(huì)作為觸發(fā)器3的輸入脈沖,最后觸發(fā)器3產(chǎn)生回答脈沖。?

假設(shè)一共有?5?個(gè)觸發(fā)器相互連接,最初的狀態(tài)都為「0?狀態(tài)」,我們可以把這個(gè)觸發(fā)器組的狀態(tài)標(biāo)記為「00000」。給最右邊的觸發(fā)器輸入第一個(gè)脈沖后,該觸發(fā)器的狀態(tài)變?yōu)椤??狀態(tài)」,但由于沒(méi)有回答脈沖,左側(cè)的?4?個(gè)觸發(fā)器依舊是「0?狀態(tài)」,整體可以標(biāo)記為「00001」。接著,我們輸入第二個(gè)脈沖,最右邊的觸發(fā)器翻轉(zhuǎn)為「0?狀態(tài)」,同時(shí)最右邊的觸發(fā)器輸出的回答脈沖輸入相鄰的觸發(fā)器中,相鄰的觸發(fā)器翻轉(zhuǎn),成為「1?狀態(tài)」,其他觸發(fā)器由于沒(méi)有接收到回答脈沖,仍舊處于「0?狀態(tài)」,整體可標(biāo)記為「00010」。緊接著輸入第三個(gè)脈沖,最右邊的觸發(fā)器又會(huì)翻轉(zhuǎn)為「1?狀態(tài)」同時(shí)不輸出回答脈沖,其他觸發(fā)器狀態(tài)不變,狀態(tài)為「00011」。如此循環(huán),我們最終得到如下數(shù)據(jù):
輸入第?1?個(gè)脈沖后的狀態(tài)為:00001
輸入第?2?個(gè)脈沖后的狀態(tài)為:00010
輸入第?3?個(gè)脈沖后的狀態(tài)為:00011
輸入第?4?個(gè)脈沖后的狀態(tài)為:00100
輸入第?5?個(gè)脈沖后的狀態(tài)為:00101
輸入第?6?個(gè)脈沖后的狀態(tài)為:00110
……
? ? ?如果把上述狀態(tài)視為二進(jìn)制的數(shù)字,轉(zhuǎn)換為十進(jìn)制之后我們就能依次得到1,2,3,4,5,6,…。由此可見(jiàn),相互連接的觸發(fā)器可以對(duì)外部脈沖信號(hào)進(jìn)行「計(jì)數(shù)」,而且是一種特殊的計(jì)數(shù)方式。
? ? 二進(jìn)制通過(guò)「0」和「1」來(lái)表示所有數(shù)字。與十進(jìn)制有所不同的是,二進(jìn)制的后一位是前一位的?2?倍,而不是?10?倍。二進(jìn)制數(shù)轉(zhuǎn)化成十進(jìn)制數(shù)時(shí),將每位數(shù)分別乘以2?的?n?次方(?n?代表位數(shù))并求和即可。例如,將二進(jìn)制數(shù)「10011」轉(zhuǎn)化為十進(jìn)制,就是?1?×?2^0?+?1?×?2^1?+?0?×?2^2?+?0?×?2^3?+?1?×?2^4?=?19。
? ? ? ?觸發(fā)器每翻轉(zhuǎn)一次(也就是每輸入一個(gè)脈沖信號(hào)),只需要一億分之幾秒的時(shí)間?,F(xiàn)代計(jì)數(shù)觸發(fā)器可以在?1?秒之內(nèi)「計(jì)算」1000?多萬(wàn)個(gè)脈沖,而人眼需要?0.1?左右秒才能識(shí)別變換的信號(hào)??梢哉f(shuō),跟人類(lèi)相比,它快了將近?100?萬(wàn)倍。
? ? ? 下面,我們來(lái)看看觸發(fā)器如何進(jìn)行加法運(yùn)算。把三排觸發(fā)器按照?qǐng)D?3?所示連接起來(lái),其中第一排觸發(fā)器用來(lái)表示被加數(shù),第二排觸發(fā)器用來(lái)表示加數(shù),第三排觸發(fā)器則用來(lái)表示二者之和。當(dāng)上面兩排觸發(fā)器的狀態(tài)為「1」時(shí),會(huì)分別向第三排觸發(fā)器輸出脈沖信號(hào)。

? ? ? 圖3的例子中,前兩排觸發(fā)器記下的兩個(gè)二進(jìn)制數(shù)是?101?和?111。第三排的第一觸發(fā)器從前兩排的第一觸發(fā)器處別得到一個(gè)脈沖信號(hào)(一共得到兩個(gè)脈沖信號(hào)),根據(jù)前面的分析,第三排的第一觸發(fā)器依舊處于「0?狀態(tài)」,同時(shí)會(huì)給第三排的第二觸發(fā)器輸出一個(gè)回答脈沖。除了這個(gè)回答脈沖之外,第三排的第二觸發(fā)器還會(huì)從第二排的第二觸發(fā)器得到一個(gè)回答脈沖,一共得到兩個(gè)脈沖信號(hào),處于「0?狀態(tài)」,并輸出一個(gè)回答脈沖給第三排的第三觸發(fā)器。除了這個(gè)回答脈沖之外,第三排的第三觸發(fā)器還從第一排和第二排各得到一個(gè)脈沖,共得到?3?個(gè)脈沖,狀態(tài)為「1」,同時(shí)輸出一個(gè)回答脈沖。第三排的第四觸發(fā)器只得到這一個(gè)回答脈沖,狀態(tài)為「1」。以上過(guò)程就是二進(jìn)制數(shù)的加法運(yùn)算,如果寫(xiě)成豎式運(yùn)算,就如圖4所示:

? ? ? ?將圖4中的二進(jìn)制數(shù)換算為十進(jìn)制數(shù),就會(huì)得到?5?+?7?=?12。第三排觸發(fā)器輸出的回答脈沖相當(dāng)于豎式加法運(yùn)算的進(jìn)位。如果每排的觸發(fā)器有?20?個(gè)(或者大于?20?個(gè)),就可以計(jì)算百萬(wàn)級(jí)甚至千萬(wàn)級(jí)數(shù)的加法。如果把上述方案改造一下,不但可以進(jìn)行加減法運(yùn)算,還可以進(jìn)行乘法運(yùn)算和除法運(yùn)算。
參考文獻(xiàn);趣味代數(shù)學(xué)