自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

具有計(jì)算和控制能力:繼電器如何成為CPU

開發(fā) 后端
究竟是如何設(shè)計(jì)的電路,具有計(jì)算和控制的智力?這一點(diǎn)也不高深。本系列文章從初中學(xué)的最簡(jiǎn)單的電路圖說(shuō)起,看看能不能從最初的有一個(gè)繼電器的電路,畫到一個(gè)簡(jiǎn)單的CPU。電路圖用multisim12.0繪制,這樣就可以看到效果了。

究竟是如何設(shè)計(jì)的電路,具有計(jì)算和控制的智力?

這一點(diǎn)也不高深。本系列文章從初中學(xué)的最簡(jiǎn)單的電路圖說(shuō)起,看看能不能從最初的有一個(gè)繼電器的電路,畫到一個(gè)簡(jiǎn)單的CPU。電路圖用multisim12.0繪制,這樣就可以看到效果了。

(注:雖然現(xiàn)代計(jì)算機(jī)是用半導(dǎo)體材料制作芯片的,但是電路原理和繼電器材料沒有不同。本人愚鈍,只理解了繼電器,還沒有研究電子管、晶體管這些器件的工作原理。而繼電器原理簡(jiǎn)單,用作講解數(shù)字電路原理再好不過(guò)。)

從電池、開關(guān)和繼電器開始

001電源開關(guān)和燈泡

上圖左上角是一個(gè)很普通的電路,由電池、開關(guān)電流表和燈泡組成。這個(gè)是初中物理學(xué)過(guò)的。

上圖右上角是對(duì)左上角電路的簡(jiǎn)單變形,用VCC代替了電池,用接地符號(hào)實(shí)現(xiàn)了回路。相當(dāng)于把電池拆開來(lái)畫了。電路功能是一樣的。本文此后的電路圖一般都采用VCC和接地表示電源。因?yàn)槟銜?huì)發(fā)現(xiàn)只有這樣的畫法能夠讓我們方便理解之后的電路圖。

然后往下看,第三個(gè)電路圖,那個(gè)圈圈里圈著個(gè)K的藍(lán)色的東西,表示的是繼電器。當(dāng)繼電器左側(cè)有電流通過(guò)時(shí),右側(cè)的電路就斷開;反之則聯(lián)通。(對(duì)應(yīng)地,也有那種左側(cè)有電流通過(guò)時(shí),右側(cè)的電路就聯(lián)通;反之則斷開的繼電器,稍后會(huì)用到)這個(gè)電路想讓你知道的是,可以用繼電器實(shí)現(xiàn)這樣的功能:控制左側(cè)的電路的通斷,即可改變右側(cè)電路的通斷。換個(gè)方式說(shuō),就是左側(cè)的電路通斷情況決定了右側(cè)的電路的通斷情況。再往抽象了說(shuō),就是左側(cè)電路代表了"輸入"(Input)這個(gè)概念,右側(cè)電路代表了"輸出"(Output)這個(gè)概念。繼電器則代表了"計(jì)算"(或者"算法"、"處理"等)(CPU)這個(gè)概念。硬件就是用這種電器設(shè)備的固有物理性質(zhì)提供了最初的計(jì)算能力。

再往下看第四個(gè)電路圖,它和第三個(gè)的區(qū)別就在于用VCC和接地符號(hào)代替了電池。初次看電路,我們有必要經(jīng)歷一次從電池到VCC和接地符號(hào)的過(guò)渡。以后的電路圖,我們將直接使用VCC和接地符號(hào),請(qǐng)務(wù)必在此處適應(yīng)這樣的畫法。

然后是最下邊這個(gè)電路。和第四個(gè)電路相比,它用一個(gè)"非門"的符號(hào)代替了"繼電器、右側(cè)電路電源和繼電器的接地"這三個(gè)符號(hào)。也就是說(shuō)一個(gè)"非門"實(shí)際上就是"繼電器、右側(cè)電路電源和繼電器的接地"這三個(gè)東西的組合,而且畫的時(shí)候省略了電源和接地符號(hào)。

之前在學(xué)校里學(xué)數(shù)字電路,我就是想不明白邏輯門的電源在哪兒,整個(gè)電路的通路在哪兒,所以一直學(xué)不好。現(xiàn)在有個(gè)這個(gè)電路圖,感覺一切豁然開朗。

用繼電器做個(gè)與門

剛剛我們用繼電器做出了"非門"??梢钥吹街灰靡粋€(gè)繼電器就可以了。與門的電路如下圖所示。

002用繼電器做與門電路

與門由兩個(gè)繼電器(這兩個(gè)繼電器用的都是跟做非門的繼電器通斷情形相反的那種)構(gòu)成,只有當(dāng)兩個(gè)繼電器左側(cè)都通電時(shí),右側(cè)電路才能聯(lián)通。這樣就實(shí)現(xiàn)了"與"的功能。"與門"的符號(hào)是一個(gè)躺著封口的U形。

注:本文里我做的電路圖片都是GIF格式的,你可以在瀏覽器里看到隨著開關(guān)的開閉,輸入和輸出電路上的燈泡是如何變化的。每個(gè)圖上都有(http://bitzhuwei.cnblogs.com)標(biāo)識(shí)我的博客地址,不過(guò)每個(gè)GIF圖的最后一幀都去掉了這個(gè)標(biāo)識(shí)。這樣,看到一幀沒有標(biāo)識(shí)的時(shí)候,就知道下一幀將是GIF圖的第一幀了。

用繼電器做個(gè)或門

"非門"、"與門"做出來(lái)了,"或門"也就不難理解了,直接上圖大家體會(huì)吧。(導(dǎo)線交叉的地方,如果有個(gè)紅點(diǎn),表示是聯(lián)通的,否則就是互不相干的)"或門"的符號(hào)像一個(gè)子彈。

003用繼電器做或門電路

用繼電器做個(gè)異或門

"異或門"的功能是:左側(cè)的兩個(gè)輸入電路一個(gè)聯(lián)通另一個(gè)不聯(lián)通時(shí),右側(cè)電路聯(lián)通;否則右側(cè)電路不聯(lián)通。這次先畫符號(hào),大家可以先自己嘗試用繼電器畫"異或門",鍛煉一下思維,然后再向下看答案。

005用繼電器做異或門電路2

答案揭曉!"異或門"的實(shí)現(xiàn)如下圖所示。乍看很復(fù)雜,其實(shí)是有邏輯的。最右邊的連個(gè)繼電器其實(shí)是一個(gè)"或門",最左邊兩個(gè)繼電器是兩個(gè)"非門",中間兩上兩下共四個(gè)繼電器,是兩個(gè)"與門"。這樣就好理解了。AB兩個(gè)輸入電路為A通、B不通的時(shí)候,整個(gè)"異或門"會(huì)通過(guò)下方的路線使燈泡亮;若A不通、B通,則會(huì)通過(guò)上方的線路使燈泡亮。其他情況燈泡都不會(huì)亮。

004用繼電器做異或門電路1

 

做一些看起來(lái)可用的東西

與或非異或邏輯門電路雖然重要,卻離構(gòu)造CPU相距較遠(yuǎn),做出來(lái)似乎也沒什么成就感。那么我們用這些過(guò)于基礎(chǔ)的器件,做一些有用的東西吧!

小小約定

為了表達(dá)方便,我們約定一下,邏輯門電路的輸入(輸出)線上有電流的時(shí)候,我們說(shuō)輸入為1(輸出為1),否則就說(shuō)輸入為0(輸出為0)。

#p#

振蕩器

振蕩器能夠不斷地輸出0、1、0、1、0、1、0、1……這樣的信號(hào)。這種東西雖然一時(shí)說(shuō)不上有什么用,不過(guò)一定是有用到的時(shí)候的。振蕩器做起來(lái)也簡(jiǎn)單得離譜??聪聢D所示電路。

006振蕩器2

把非門的輸出端連到輸入端上。當(dāng)輸出為1時(shí),輸入也就成了1,那么輸出就得變成0;然后輸入也跟著變成0,這樣輸出又變回了1。循環(huán)翻轉(zhuǎn)無(wú)休無(wú)止。振蕩器能翻轉(zhuǎn)多快,就看繼電器的反應(yīng)有多快了。(現(xiàn)代計(jì)算機(jī)用晶體管代替了繼電器,晶體管比繼電器翻轉(zhuǎn)速度快得多,所以能夠得到的頻率更高,計(jì)算機(jī)的速度更快。而且晶體管比繼電器省電)話說(shuō)multisim12仿真的翻轉(zhuǎn)速度也夠可以的,本人截圖也費(fèi)了不少勁。

順便給一個(gè)用繼電器做振蕩器的實(shí)際應(yīng)用的例子:上學(xué)的時(shí)候上下課的鈴聲就是用繼電器做的振蕩器完成的。0101信號(hào)用錘子敲打鐵盔表達(dá)了出來(lái)。

加法器

剛剛約定了,用1和0表示電路的通斷。電路只有通斷這兩種狀態(tài),所以計(jì)算機(jī)只用0和1來(lái)表示數(shù),這就是二進(jìn)制啊。關(guān)于二進(jìn)制和十進(jìn)制的內(nèi)容別人寫得太多了,我就不提啦。要計(jì)算兩個(gè)多位二進(jìn)制數(shù)的和,可以分別計(jì)算各個(gè)數(shù)位上的結(jié)果,而各個(gè)數(shù)位的計(jì)算方法又是相同的,即"被加數(shù)+加數(shù)=>和的值+進(jìn)位的值"。這用邏輯門表示如下圖。

007加法器1

A和B表示加數(shù)和被加數(shù),C表示前一位計(jì)算的進(jìn)位的值,C1燈泡表示本次計(jì)算的進(jìn)位的值,S1燈泡表示本次計(jì)算的和的值。我找了半天,也沒在multisim12里找到一位二進(jìn)制數(shù)的加法器件的符號(hào),大家看這個(gè)圖就可以了。

[[110533]]

要計(jì)算多位數(shù),把單位數(shù)加法器首尾相連就可以了,如下圖所示。這兩張圖是從《穿越計(jì)算機(jī)的迷霧》中拿來(lái)的。如果侵權(quán),請(qǐng)告訴我,不然我就偷個(gè)懶不自己畫啦。

寄存器

學(xué)匯編的時(shí)候聽過(guò)這個(gè)東西,"寄存"這個(gè)詞讓我感覺寄人籬下可憐巴巴的。寄存器的功能是把數(shù)據(jù)(約定里說(shuō)的0和1,實(shí)際就是電路的通斷狀態(tài))保存下來(lái),以后還可以取出來(lái)用。寄存器這東西比之前的器件都復(fù)雜,需要一步一步來(lái)做。

R-S觸發(fā)器

先看下面這個(gè)電路,這是各種有存儲(chǔ)功能的器件的基礎(chǔ)。

009R-S觸發(fā)器1

上圖展示的是在R和S開關(guān)都斷開的情況下啟動(dòng)電路得到的結(jié)果?!洞┰接?jì)算機(jī)的迷霧》里說(shuō)這種情況下,哪個(gè)燈泡亮是不一定的,就看哪個(gè)邏輯門轉(zhuǎn)的快了。不過(guò)我用multisim12仿真的時(shí)候,兩個(gè)燈泡是在忽亮忽滅不停地閃。這可以說(shuō)是非正常人類使用R-S觸發(fā)器的情況。下面再看看正常人類使用R-S觸發(fā)器的情況。

009R-S觸發(fā)器2

R-S觸發(fā)器的R是Reset,意思是把Q燈泡重置為0,S是Set,意思是把Q燈泡置為1??梢钥吹?,只閉合S,則Q亮NQ不亮;只閉合R,則Q不亮NQ亮;同時(shí)閉合RS,則Q和NQ都不亮;同時(shí)斷開RS,則Q和NQ保持剛才的狀態(tài)不變。

D觸發(fā)器

既然要保存數(shù)據(jù),我們就要求只在希望保存某個(gè)數(shù)據(jù)的時(shí)候存進(jìn)去,否則就不理他。所以我們給R-S觸發(fā)器加一個(gè)新的輸入作為控制端,只有控制端為1的時(shí)候才能保存新來(lái)的數(shù)據(jù)。這里也把RS端合并為一個(gè)D端,用一個(gè)非門實(shí)現(xiàn)了只能使R和S有且只有一個(gè)開關(guān)是閉合的(即要么Q燈泡變?yōu)?要么Q燈泡變?yōu)?)。

010D觸發(fā)器

D觸發(fā)器的符號(hào)我也沒在multisim里找到,大家看這個(gè)吧。

上升沿D觸發(fā)器

我們只希望在某一瞬間把數(shù)據(jù)存起來(lái),而不是像D觸發(fā)器那樣,控制端為1的整個(gè)時(shí)間端都會(huì)保存新數(shù)據(jù)。(這樣最安全)于是我們?cè)贒觸發(fā)器基礎(chǔ)上設(shè)計(jì)了上升沿D觸發(fā)器。這個(gè)觸發(fā)器只在控制端從0變?yōu)?的瞬間存儲(chǔ)新數(shù)據(jù)。是不是很奇妙的設(shè)計(jì)?

011上升沿D觸發(fā)器

上升沿D觸發(fā)器使用了兩個(gè)D觸發(fā)器,再加一個(gè)非門,就OK了。平時(shí),我們把要存儲(chǔ)的數(shù)據(jù)(D開關(guān))放好。然后,當(dāng)控制端CP為斷開時(shí),圖中上面那個(gè)D觸發(fā)器是能夠存數(shù)據(jù)的,但是下面那個(gè)存不了。就是說(shuō)新數(shù)據(jù)已經(jīng)到了兩個(gè)D觸發(fā)器之間的導(dǎo)線上。在控制端CP閉合的瞬間,上面的D觸發(fā)器無(wú)法再存新數(shù)據(jù)了,而下面的D觸發(fā)器可以存新數(shù)據(jù)了,那么它存的是哪個(gè)新數(shù)據(jù)?只能是剛剛在兩個(gè)D觸發(fā)器之間的導(dǎo)線上的數(shù)據(jù)了。這個(gè)瞬間之后,新數(shù)據(jù)無(wú)法通過(guò)上面的D觸發(fā)器,自然也就無(wú)法保存了。

這次我終于在multisim12里找到了上升沿D觸發(fā)器的符號(hào)。

乒乓觸發(fā)器

這是個(gè)有點(diǎn)類似振蕩器的器件。兩者的區(qū)別在于,振蕩器是自動(dòng)地改變輸出,乒乓觸發(fā)器是在輸入一個(gè)上升沿的時(shí)候改變輸出。電路圖如下所示。

013乒乓觸發(fā)器

可以看出,乒乓觸發(fā)器其實(shí)就是把上升沿D觸發(fā)器的非Q輸出端接到了輸入端。很顯然每次存的新數(shù)據(jù)總是和輸出信號(hào)相反。

乒乓觸發(fā)器可以用來(lái)做計(jì)數(shù)器。計(jì)數(shù)器有這樣的功能:每收到一個(gè)上升沿的信號(hào),就增加1。例如下圖所示的能統(tǒng)計(jì)二進(jìn)制的00000到11111(即0到31)這32個(gè)數(shù)。計(jì)數(shù)器的每一位計(jì)數(shù)器件都是一個(gè)乒乓觸發(fā)器。燈泡亮表示1,燈泡滅表示0。

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

#p#

走馬燈

利用上升沿D觸發(fā)器還可以做"走馬燈"。走馬燈是每次都讓前面一個(gè)燈泡亮的設(shè)備,最后一個(gè)燈泡亮過(guò)之后,又從第一個(gè)燈泡開始亮,循環(huán)往復(fù)。下圖所示電路就是一個(gè)有5個(gè)燈泡循環(huán)走馬的走馬燈。為了在電路剛接通的時(shí)候讓第一個(gè)燈亮起來(lái),我加了兩個(gè)開關(guān)S1和S2,大家可以分析一下怎么用S1和S2。這有助于加深體會(huì)上升沿D觸發(fā)器的功能,并加速對(duì)更復(fù)雜器件的理解。

012走馬燈

寄存器

終于到這個(gè)小玩意了!

能保存5位二進(jìn)制數(shù)的寄存器如下圖所示。其實(shí)就是5個(gè)上升沿D觸發(fā)器并列起來(lái)而已。

015寄存器

想保存數(shù)據(jù)的時(shí)候,調(diào)整好D0、D1、D2、D3、D4五個(gè)開關(guān)(實(shí)際應(yīng)用的時(shí)候就可能是其他電路的輸出導(dǎo)線了),然后斷開再閉合一下控制端的開關(guān)S5即可,數(shù)據(jù)就保存到了5個(gè)上升沿D觸發(fā)器的Q端。

我這里只畫了保存5位數(shù)的寄存器,是因?yàn)樵佼嬀吞罅?,在word里圖就看不清楚了。我們知道現(xiàn)在計(jì)算機(jī)的寄存器已經(jīng)到32位或者64位了。那就是有32或64個(gè)并列的上升沿D觸發(fā)器組成一個(gè)寄存器。我們也看到了一個(gè)上升沿D觸發(fā)器需要幾十個(gè)繼電器(晶體管),那么一個(gè)寄存器就需要上千個(gè)繼電器(晶體管)了。而CPU里包含的寄存器、加法器等運(yùn)算器還有各種控制器,其包含的繼電器(晶體管)數(shù)目上百萬(wàn)也就很好理解了。內(nèi)存條里的內(nèi)存也是用上升沿D觸發(fā)器和一個(gè)門電路組成存儲(chǔ)一位(一個(gè)bit,8個(gè)bit是一個(gè)字節(jié))的存儲(chǔ)結(jié)構(gòu)的,其包含的繼電器(晶體管)數(shù)目可想而知有多少。

中場(chǎng)噓噓

到這里,做CPU需要的基礎(chǔ)器件就差不多全了。不過(guò)再寫下去就太長(zhǎng)了,不利于理解和記憶。因此暫且中場(chǎng)休息,大家各自噓噓去,下一篇再繼續(xù)介紹如何構(gòu)造一個(gè)簡(jiǎn)單的CPU。

前面介紹的各自器件,可以用下表描述其繼承關(guān)系。(索性把下一篇文章要介紹的器件也列出來(lái)了)

繼電器

             
 

非門電路

           
 

與門電路

           
 

或門電路

           
 

異或門電路

           

振蕩器

             

加法器

             

寄存器

             
 

R-S

D

D↑

乒乓

計(jì)數(shù)器

   
       

走馬燈

     
       

寄存器

多個(gè)數(shù)的加法器

   
       

存儲(chǔ)器

bit存儲(chǔ)器

多字存儲(chǔ)器

有地址譯碼器的存儲(chǔ)器

控制器

             
 

手動(dòng)

           
 

半自動(dòng)

           
 

全自動(dòng)

           

自言自語(yǔ)

自大學(xué)始,學(xué)軟件工程至今已有7年。一共找到這么幾本好書:《穿越計(jì)算機(jī)的迷霧》、《Orange'S OS:一個(gè)操作系統(tǒng)的實(shí)現(xiàn)》、《CLR via C#》。

讀《穿》就是為了弄明白一個(gè)問題:為什么計(jì)算機(jī)能夠計(jì)算?《穿》在下面這張圖中讓我明白了我一直想不明白的問題。

讀《Orange》也是為了弄明白一個(gè)問題:進(jìn)程到底是什么?

讀《CLR via C#》還是為了弄明白一個(gè)問題:.NET虛擬機(jī)里都有什么?

想知道的東西還有很多,抓緊一切機(jī)會(huì)去求索~

感謝我親愛的媳婦貼心照顧和理解支持,我會(huì)好好努力賺錢買好吃的好玩的送你~

原文鏈接:http://www.cnblogs.com/bitzhuwei/p/from_relay_to_tiny_CPU.html

責(zé)任編輯:林師授 來(lái)源: 博客園
相關(guān)推薦

2019-02-28 22:17:15

邊緣計(jì)算霧計(jì)算云計(jì)算

2010-12-07 15:52:00

System Cent

2025-02-26 15:08:20

2018-07-27 12:56:16

2012-02-27 10:59:51

云計(jì)算阿里巴巴騰訊

2020-09-11 19:20:18

云計(jì)算企業(yè)管理

2022-11-25 09:42:53

AI技術(shù)

2021-05-13 09:28:57

量子計(jì)算芯片超算

2018-07-06 14:21:56

云計(jì)算云安全云端

2022-09-05 16:25:47

加密貨幣工具比特幣

2021-01-13 09:42:04

虛擬專用網(wǎng)絡(luò)

2017-08-02 15:24:36

云計(jì)算混亂轉(zhuǎn)型

2021-02-22 10:20:06

云計(jì)算分析數(shù)字化轉(zhuǎn)型

2014-06-25 13:57:50

云計(jì)算大數(shù)據(jù)Spark

2019-01-07 15:23:10

量子計(jì)算機(jī)芯片AI

2019-01-10 13:50:04

開發(fā)工具 AI

2018-05-14 05:44:41

工業(yè)物聯(lián)網(wǎng)工業(yè)4.0自動(dòng)化

2022-10-24 15:56:55

PythonPyTorchGPU 計(jì)算

2015-11-20 11:42:52

物聯(lián)網(wǎng)應(yīng)用部署學(xué)習(xí)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)