上節(jié)我們介紹了CPU的基本單元是晶體管開關(guān),接下來我們就看看這一堆開關(guān)組合在一起能做什么?首先我們需要用晶體管開關(guān)制作幾種最基本的建筑材料——門電路。
這有一個晶體管開關(guān),我們在輸入端添加一個通道(細線),這條線比其他線更細,留意這點。
然后我們?nèi)藶橐?guī)定控制端為輸入端,新加的細線為輸出端。
請注意,雖然晶體管本身有固定的輸出、輸出、控制端,但作為使用者我們完全可以根據(jù)需要調(diào)整輸入端、輸出端的定義,只要輸入端的變化能引發(fā)輸出端變化即可。
接下來我們分析輸入和輸出端之間的關(guān)系,當(dāng)輸入端是0(0代表沒電,1代表有電),主通道關(guān)閉,從左邊過來的電流無法到達右邊,但可以經(jīng)這條細線流出,所以輸出是1。即輸入是0,輸出是1。
接下來輸入是1的話,主通道打開,電流從左邊流到右邊,因為主通道通了,輸出端(細線)就沒有電流了。
我們可以做個類比,某天早晨打開水龍頭,發(fā)現(xiàn)沒水,一看新聞,原來市政主管道被挖斷了,路面上都能游泳了,所以家里就沒水了,這是同樣的道理,因為水都從主管道流走了,家里的小管道自然就沒水了。所以輸入是1,輸出是0。
我們用一個表格記錄輸入、輸出之間的關(guān)系,會發(fā)現(xiàn)它們之間存在相反的關(guān)系,所以這個簡單的電路稱為非門電路,非就是相反的意思,門是一個形象的解釋,就好像一個開關(guān),門打開,人能進出,門關(guān)上,誰也不能進出。這個非門電路以后我們經(jīng)常用到,為了簡單起見,我用一個符號代表這個電路。其中的NOT就是非的意思。
然后我們看第二個門電路,這有二個晶體管開關(guān),把他們首尾相連,然后將兩個晶體管的控制端當(dāng)做輸入,分別叫輸入A、輸入B,最后一個晶體管的輸出端當(dāng)做輸出。
然后分析下輸入和輸出的關(guān)系,當(dāng)輸入A=0,輸入B=1時,第一個開關(guān)主管道關(guān)閉,第二個開關(guān)主管道打開,電流無法從左邊流到右邊,輸出=0;當(dāng)輸入A=1,輸入B=0時,也是類似,輸出=0;當(dāng)輸入A=0,輸入B=0時,輸出當(dāng)然=0;而當(dāng)輸入A=1,輸入B=1時,二個開關(guān)都打開,輸出=1。
用表格整理一下,會發(fā)現(xiàn)一個規(guī)律,只有當(dāng)A、B都是1的時候輸出才是1,可以用一句話描述“當(dāng)輸入A=1并且輸入B=1時,輸出才=1”,其他的情況輸出都是0。這個電路稱為與門電路,與就是并且的意思。這個門電路以后會經(jīng)常用到,也用一個符號代表,其中AND就是與的意思。
接下來再用二個晶體管彼此相連,但不是串聯(lián),而是并聯(lián),也就是兩個輸入端連在一起,兩個輸出端連在一起。
注意,圖中那個圓弧代表二條線不是相連,因為在平面上無法畫出立體圖,大家可以想象一下,二條線一個在上一個在下,沒有任何接觸?,F(xiàn)在我們將兩個晶體管的控制端分別當(dāng)做輸入A、輸入B,輸出端不變,接下來分析輸入輸出之間的關(guān)系。
當(dāng)輸入A=0,輸入B=1時,下面這個晶體管打開,電流可以走下面通道從輸出端流出,輸出=1;當(dāng)輸入A=1,輸入B=0時,上面這個晶體管打開,電流可以走上面通道從輸出端流出,輸出=1;當(dāng)輸入A=0,輸入B=0時,二個晶體管都關(guān)閉,輸出=0;當(dāng)輸入A=1,輸入B=1時,兩個通道都打開,輸出=1。
使用表格總結(jié)一下,會發(fā)現(xiàn)這樣一個規(guī)律:“只要輸入A或者輸入B有一個為1,輸出就=1”,這個門電路稱為或門電路,為了方便描述,使用這個符號代替或門電路,其中or就是或者的意思。
有了上面三種最基本的門電路,我們就可以組合出更復(fù)雜的門電路(姑且稱為二階門電路,與基本門電路區(qū)分),種類很多,比如與非門、或非門、異或門等等,我們舉其中一個例子——異或門。電路是這樣的,由二個與門、一個非門、一個或門組成。
電路分析用下面四張圖來表示,大家可以自己推理一下,看結(jié)果是否正確。
最后用表格統(tǒng)計出來:
它的規(guī)律是:當(dāng)輸入A和輸入B不同時,輸出=1。我們用這個符號來描述異或門。
其他二階門電路我們不一一介紹了,有興趣的讀者可以自己查閱資料,下節(jié)我們來看看由這些門電路如何制作加法器,實現(xiàn)加法運算。