深入浅出计算机组成原理12-理解电路:从电报机到门电路,我们如何做到“千里传信”?
從信使到電報(bào),我們?cè)趺醋龅健扒Ю飩鲿?shū)”?
馬拉松的故事相信你聽(tīng)說(shuō)過(guò)。公元前 490 年,在雅典附近的馬拉松海邊,發(fā)生了波斯和希臘之間的希波戰(zhàn)爭(zhēng)。雅典和斯巴達(dá)領(lǐng)導(dǎo)的希臘聯(lián)軍勝利之后,雅典飛毛腿菲迪皮德斯跑了歷史上第一個(gè)馬拉松,回雅典報(bào)喜。這個(gè)時(shí)候,人們?cè)谶h(yuǎn)距離報(bào)信的時(shí)候,采用的是派人跑腿,傳口信或者送信的方式。
但是,這樣靠人傳口信或者送信的方式,實(shí)在是太慢了。在軍事用途中,信息能否更早更準(zhǔn)確地傳遞出去經(jīng)常是事關(guān)成敗的大事。所以我們看到中國(guó)古代的軍隊(duì)有“擊鼓進(jìn)軍”和“鳴金收兵”,通過(guò)打鼓和敲鉦發(fā)出不同的聲音,來(lái)傳遞軍隊(duì)的號(hào)令。
如果我們把軍隊(duì)當(dāng)成一臺(tái)計(jì)算機(jī),那“金”和“鼓”就是這臺(tái)計(jì)算機(jī)的“1”和“0”。我們可以通過(guò)不同的編碼方式,來(lái)指揮這支軍隊(duì)前進(jìn)、后退、轉(zhuǎn)向、追擊等等。
“金”和“鼓”比起跑腿傳口信,固然效率更高了,但是能夠傳遞的范圍還是非常有限,超出個(gè)幾公里恐怕就聽(tīng)不見(jiàn)了。于是,人們發(fā)明了更多能夠往更遠(yuǎn)距離傳信的方式,比如海上的燈塔、長(zhǎng)城上的烽火臺(tái)。因?yàn)楣馑俦嚷曀俑?#xff0c;傳的距離也可以更遠(yuǎn)。
但是,這些傳遞信息的方式都面臨一個(gè)問(wèn)題,就是受限于只有“1”和“0”這兩種信號(hào),不能傳遞太復(fù)雜的信息,那電報(bào)的發(fā)明就解決了這個(gè)問(wèn)題。
從信息編碼的角度來(lái)說(shuō),金、鼓、燈塔、烽火臺(tái)類似電報(bào)的二進(jìn)制編碼。電報(bào)傳輸?shù)男盘?hào)有兩種,一種是短促的點(diǎn)信號(hào)(dot 信號(hào)),一種是長(zhǎng)一點(diǎn)的劃信號(hào)(dash 信號(hào))。我們把“點(diǎn)”當(dāng)成“1”,把“劃”當(dāng)成“0”。這樣一來(lái),我們的電報(bào)信號(hào)就是另一種特殊的二進(jìn)制編碼了。電影里最常見(jiàn)的電報(bào)信號(hào)是“SOS”,這個(gè)信號(hào)表示出來(lái)就是 “點(diǎn)點(diǎn)點(diǎn)劃劃劃點(diǎn)點(diǎn)點(diǎn)”。
比起燈塔和烽火臺(tái)這樣的設(shè)備,電報(bào)信號(hào)有兩個(gè)明顯的優(yōu)勢(shì)。第一,信號(hào)的傳輸距離迅速增加。因?yàn)殡妶?bào)本質(zhì)上是通過(guò)電信號(hào)來(lái)進(jìn)行傳播的,所以從輸入信號(hào)到輸出信號(hào)基本上沒(méi)有延時(shí)。第二,輸入信號(hào)的速度加快了很多。電報(bào)機(jī)只有一個(gè)按鈕,按下就是輸入信號(hào),按的時(shí)間短一點(diǎn),就是發(fā)出了一個(gè)“點(diǎn)”信號(hào);按的時(shí)間長(zhǎng)一些,就是一個(gè)“劃”信號(hào)。只要一個(gè)手指,就能快速發(fā)送電報(bào)。
而且,制造一臺(tái)電報(bào)機(jī)也非常容易。電報(bào)機(jī)本質(zhì)上就是一個(gè)“蜂鳴器 + 長(zhǎng)長(zhǎng)的電線 + 按鈕開(kāi)關(guān)”。蜂鳴器裝在接收方手里,開(kāi)關(guān)留在發(fā)送方手里。雙方用長(zhǎng)長(zhǎng)的電線連在一起。當(dāng)按鈕開(kāi)關(guān)按下的時(shí)候,電線的電路接通了,蜂鳴器就會(huì)響。短促地按下,就是一個(gè)短促的點(diǎn)信號(hào);按的時(shí)間稍微長(zhǎng)一些,就是一個(gè)稍長(zhǎng)的劃信號(hào)。
有了電池開(kāi)關(guān)和鈴鐺,你就有了最簡(jiǎn)單的摩爾斯電碼發(fā)報(bào)機(jī)
理解繼電器,給跑不動(dòng)的信號(hào)續(xù)一秒
有了電報(bào)機(jī),只要鋪設(shè)好電報(bào)線路,就可以傳輸我們需要的訊息了。但是這里面又出現(xiàn)了一個(gè)新的挑戰(zhàn),就是隨著電線的線路越長(zhǎng),電線的電阻就越大。當(dāng)電阻很大,而電壓不夠的時(shí)候,即使你按下開(kāi)關(guān),蜂鳴器也不會(huì)響。
你可能要說(shuō)了,我們可以提高電壓或者用更粗的電線,使得電阻更小,這樣就可以讓整個(gè)線路鋪得更長(zhǎng)一些。但是這個(gè)再長(zhǎng),也沒(méi)辦法從北京鋪設(shè)到上海吧。要想從北京把電報(bào)發(fā)到上海,我們還得想些別的辦法。
對(duì)于電報(bào)來(lái)說(shuō),電線太長(zhǎng)了,使得線路接通也沒(méi)有辦法讓蜂鳴器響起來(lái)。那么,我們就不要一次鋪太長(zhǎng)的線路,而把一小段距離當(dāng)成一個(gè)線路。我們也可以跟驛站建立一個(gè)小電報(bào)站,在小電報(bào)站里面安排一個(gè)電報(bào)員。他聽(tīng)到上一個(gè)小電報(bào)站發(fā)來(lái)的信息,然后原樣輸入,發(fā)到下一個(gè)電報(bào)站去。這樣,我們的信號(hào)就可以一段段傳輸下去,而不會(huì)因?yàn)榫嚯x太長(zhǎng),導(dǎo)致電阻太大,沒(méi)有辦法成功傳輸信號(hào)。為了能夠?qū)崿F(xiàn)這樣接力傳輸信號(hào),在電路里面,工程師們?cè)炝艘粋€(gè)叫作繼電器(Relay)的設(shè)備。
中繼,其實(shí)就是不斷地通過(guò)新的電源重新放大已經(jīng)開(kāi)始衰減的原有信號(hào)
事實(shí)上,這個(gè)過(guò)程中,我們需要在每一階段原樣傳輸信號(hào),所以你可以想想,我們是不是可以設(shè)計(jì)一個(gè)設(shè)備來(lái)代替這個(gè)電報(bào)員?相比使用人工聽(tīng)蜂鳴器的聲音,來(lái)重復(fù)輸入信號(hào),利用電磁效應(yīng)和磁鐵,來(lái)實(shí)現(xiàn)這個(gè)事情會(huì)更容易。
我們把原先用來(lái)輸出聲音的蜂鳴器,換成一段環(huán)形的螺旋線圈,讓電路封閉通上電。因?yàn)殡姶判?yīng),這段螺旋線圈會(huì)產(chǎn)生一個(gè)帶有磁性的電磁場(chǎng)。我們?cè)拘枰斎氲陌粹o開(kāi)關(guān),就可以用一塊磁力稍弱的磁鐵把它設(shè)在“關(guān)”的狀態(tài)。這樣,按下上一個(gè)電報(bào)站的開(kāi)關(guān),螺旋線圈通電產(chǎn)生了磁場(chǎng)之后,磁力就會(huì)把開(kāi)關(guān)“吸”下來(lái),接通到下一個(gè)電報(bào)站的電路。
如果我們?cè)谥虚g所有小電報(bào)站都用這個(gè)“螺旋線圈 + 磁性開(kāi)關(guān)”的方式,來(lái)替代蜂鳴器和普通開(kāi)關(guān),而只在電報(bào)的始發(fā)和終點(diǎn)用普通的開(kāi)關(guān)和蜂鳴器,我們就有了一個(gè)拆成一段一段的電報(bào)線路,接力傳輸電報(bào)信號(hào)。這樣,我們就不需要中間安排人力來(lái)聽(tīng)打電報(bào)內(nèi)容,也不需要解決因?yàn)榫€纜太長(zhǎng)導(dǎo)致的電阻太大或者電壓不足的問(wèn)題了。我們只要在終點(diǎn)站安排電報(bào)員,聽(tīng)寫(xiě)最終的電報(bào)內(nèi)容就可以了。這樣是不是比之前更省事了?
事實(shí)上,繼電器還有一個(gè)名字就叫作電驛,這個(gè)“驛”就是驛站的驛,可以說(shuō)非常形象了。這個(gè)接力的策略不僅可以用在電報(bào)中,在通信類的科技產(chǎn)品中其實(shí)都可以用到。
比如說(shuō),你在家里用 WiFi,如果你的屋子比較大,可能某些房間的信號(hào)就不好。你可以選用支持“中繼”的 WiFi 路由器,在信號(hào)衰減的地方,增加一個(gè) WiFi 設(shè)備,接收原來(lái)的 WiFi 信號(hào),再重新從當(dāng)前節(jié)點(diǎn)傳輸出去。這種中繼對(duì)應(yīng)的英文名詞和繼電器是一樣的,也叫 Relay。
再比如說(shuō),我們現(xiàn)在互聯(lián)網(wǎng)使用的光纜,是用光信號(hào)來(lái)傳輸數(shù)據(jù)。隨著距離的增長(zhǎng)、反射次數(shù)的增加,信號(hào)也會(huì)有所衰減,我們同樣要每隔一段距離,來(lái)增加一個(gè)用來(lái)重新放大信號(hào)的中繼。
有了繼電器之后,我們不僅有了一個(gè)能夠接力傳輸信號(hào)的方式,更重要的是,和輸入端通過(guò)開(kāi)關(guān)的“開(kāi)”和“關(guān)”來(lái)表示“1”和“0”一樣,我們?cè)谳敵龆艘材鼙硎尽?”和“0”了。
輸出端的作用,不僅僅是通過(guò)一個(gè)蜂鳴器或者燈泡,提供一個(gè)供人觀察的輸出信號(hào),通過(guò)“螺旋線圈 + 磁性開(kāi)關(guān)”,使得我們有“開(kāi)”和“關(guān)”這兩種狀態(tài),這個(gè)“開(kāi)”和“關(guān)”表示的“1”和“0”,還可以作為后續(xù)線路的輸入信號(hào),讓我們開(kāi)始可以通過(guò)最簡(jiǎn)單的電路,來(lái)組合形成我們需要的邏輯。
通過(guò)這些線圈和開(kāi)關(guān),我們也可以很容易地創(chuàng)建出 “與(AND)”“或(OR)”“非(NOT)”這樣的邏輯。我們?cè)谳斎攵说碾娐飞?#xff0c;提供串聯(lián)的兩個(gè)開(kāi)關(guān),只有兩個(gè)開(kāi)關(guān)都打開(kāi),電路才接通,輸出的開(kāi)關(guān)也才能接通,這其實(shí)就是模擬了計(jì)算機(jī)里面的“與”操作。
我們?cè)谳斎攵说碾娐?#xff0c;提供兩條獨(dú)立的線路到輸出端,兩條線路上各有一個(gè)開(kāi)關(guān),那么任何一個(gè)開(kāi)關(guān)打開(kāi)了,到輸出端的電路都是接通的,這其實(shí)就是模擬了計(jì)算機(jī)中的“或”操作。
當(dāng)我們把輸出端的“螺旋線圈 + 磁性開(kāi)關(guān)”的組合,從默認(rèn)關(guān)掉,只有通電有了磁場(chǎng)之后打開(kāi),換成默認(rèn)是打開(kāi)通電的,只有通電之后才關(guān)閉,我們就得到了一個(gè)計(jì)算機(jī)中的“非”操作。輸出端開(kāi)和關(guān)正好和輸入端相反。這個(gè)在數(shù)字電路中,也叫作反向器(Inverter)。
反向器的電路,其實(shí)就是開(kāi)關(guān)從默認(rèn)關(guān)閉變成默認(rèn)開(kāi)啟而已
與、或、非的電路都非常簡(jiǎn)單,要想做稍微復(fù)雜一點(diǎn)的工作,我們需要很多電路的組合。不過(guò),這也彰顯了現(xiàn)代計(jì)算機(jī)體系中一個(gè)重要的思想,就是通過(guò)分層和組合,逐步搭建起更加強(qiáng)大的功能。
回到我們前面看的電報(bào)機(jī)原型,雖然一個(gè)按鈕開(kāi)關(guān)的電報(bào)機(jī)很“容易”操作,但是卻不“方便”操作。因?yàn)殡妶?bào)員要熟記每一個(gè)字母對(duì)應(yīng)的摩爾斯電碼,并且需要快速按鍵來(lái)進(jìn)行輸入,一旦輸錯(cuò)很難糾正。但是,因?yàn)殡娐分g可以通過(guò)與、或、非組合完成更復(fù)雜的功能,我們完全可以設(shè)計(jì)一個(gè)和打字機(jī)一樣的電報(bào)機(jī),每按下一個(gè)字母按鈕,就會(huì)接通一部分電路,然后把這個(gè)字母的摩爾斯電碼輸出出去。
雖然在電報(bào)機(jī)時(shí)代,我們沒(méi)有這么做,但是在計(jì)算機(jī)時(shí)代,我們其實(shí)就是這樣做的。我們不再是給計(jì)算機(jī)“0”和“1”,而是通過(guò)千萬(wàn)個(gè)晶體管組合在一起,最終使得我們可以用“高級(jí)語(yǔ)言”,指揮計(jì)算機(jī)去干什么。
總結(jié)延伸
可以說(shuō),電報(bào)是現(xiàn)代計(jì)算機(jī)的一個(gè)最簡(jiǎn)單的原型。它和我們現(xiàn)在使用的現(xiàn)代計(jì)算機(jī)有很多相似之處。我們通過(guò)電路的“開(kāi)”和“關(guān)”,來(lái)表示“1”和“0”。就像晶體管在不同的情況下,表現(xiàn)為導(dǎo)電的“1”和絕緣的“0”的狀態(tài)。
我們通過(guò)電報(bào)機(jī)這個(gè)設(shè)備,看到了如何通過(guò)“螺旋線圈 + 開(kāi)關(guān)”,來(lái)構(gòu)造基本的邏輯電路,我們也叫門(mén)電路。一方面,我們可以通過(guò)繼電器或者中繼,進(jìn)行長(zhǎng)距離的信號(hào)傳輸。另一方面,我們也可以通過(guò)設(shè)置不同的線路和開(kāi)關(guān)狀態(tài),實(shí)現(xiàn)更多不同的信號(hào)表示和處理方式,這些線路的連接方式其實(shí)就是我們?cè)跀?shù)字電路中所說(shuō)的門(mén)電路。而這些門(mén)電路,也是我們創(chuàng)建 CPU 和內(nèi)存的基本邏輯單元。我們的各種對(duì)于計(jì)算機(jī)二進(jìn)制的“0”和“1”的操作,其實(shí)就是來(lái)自于門(mén)電路,叫作組合邏輯電路。
總結(jié)
以上是生活随笔為你收集整理的深入浅出计算机组成原理12-理解电路:从电报机到门电路,我们如何做到“千里传信”?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 迈向“超人认知”:脑机接口的未来
- 下一篇: 第一次有人把 5G 讲的这么简单明了