上節我們介紹了CPU的基本單元是晶體管開關,接下來我們就看看這一堆開關組合在一起能做什么?首先我們需要用晶體管開關制作幾種最基本的建筑材料——門電路。

這有一個晶體管開關,我們在輸入端添加一個通道(細線),這條線比其他線更細,留意這點。

然后我們人為規定控制端為輸入端,新加的細線為輸出端。

請注意,雖然晶體管本身有固定的輸出、輸出、控制端,但作為使用者我們完全可以根據需要調整輸入端、輸出端的定義,只要輸入端的變化能引發輸出端變化即可。

接下來我們分析輸入和輸出端之間的關系,當輸入端是0(0代表沒電,1代表有電),主通道關閉,從左邊過來的電流無法到達右邊,但可以經這條細線流出,所以輸出是1。即輸入是0,輸出是1。

接下來輸入是1的話,主通道打開,電流從左邊流到右邊,因為主通道通了,輸出端(細線)就沒有電流了。

我們可以做個類比,某天早晨打開水龍頭,發現沒水,一看新聞,原來市政主管道被挖斷了,路面上都能游泳了,所以家里就沒水了,這是同樣的道理,因為水都從主管道流走了,家里的小管道自然就沒水了。所以輸入是1,輸出是0。

我們用一個表格記錄輸入、輸出之間的關系,會發現它們之間存在相反的關系,所以這個簡單的電路稱為非門電路,非就是相反的意思,門是一個形象的解釋,就好像一個開關,門打開,人能進出,門關上,誰也不能進出。這個非門電路以后我們經常用到,為了簡單起見,我用一個符號代表這個電路。其中的NOT就是非的意思。

然后我們看第二個門電路,這有二個晶體管開關,把他們首尾相連,然后將兩個晶體管的控制端當做輸入,分別叫輸入A、輸入B,最后一個晶體管的輸出端當做輸出。

然后分析下輸入和輸出的關系,當輸入A=0,輸入B=1時,第一個開關主管道關閉,第二個開關主管道打開,電流無法從左邊流到右邊,輸出=0;當輸入A=1,輸入B=0時,也是類似,輸出=0;當輸入A=0,輸入B=0時,輸出當然=0;而當輸入A=1,輸入B=1時,二個開關都打開,輸出=1。

用表格整理一下,會發現一個規律,只有當A、B都是1的時候輸出才是1,可以用一句話描述“當輸入A=1并且輸入B=1時,輸出才=1”,其他的情況輸出都是0。這個電路稱為與門電路,與就是并且的意思。這個門電路以后會經常用到,也用一個符號代表,其中AND就是與的意思。

接下來再用二個晶體管彼此相連,但不是串聯,而是并聯,也就是兩個輸入端連在一起,兩個輸出端連在一起。

注意,圖中那個圓弧代表二條線不是相連,因為在平面上無法畫出立體圖,大家可以想象一下,二條線一個在上一個在下,沒有任何接觸。現在我們將兩個晶體管的控制端分別當做輸入A、輸入B,輸出端不變,接下來分析輸入輸出之間的關系。

當輸入A=0,輸入B=1時,下面這個晶體管打開,電流可以走下面通道從輸出端流出,輸出=1;當輸入A=1,輸入B=0時,上面這個晶體管打開,電流可以走上面通道從輸出端流出,輸出=1;當輸入A=0,輸入B=0時,二個晶體管都關閉,輸出=0;當輸入A=1,輸入B=1時,兩個通道都打開,輸出=1。

使用表格總結一下,會發現這樣一個規律:“只要輸入A或者輸入B有一個為1,輸出就=1”,這個門電路稱為或門電路,為了方便描述,使用這個符號代替或門電路,其中or就是或者的意思。

有了上面三種最基本的門電路,我們就可以組合出更復雜的門電路(姑且稱為二階門電路,與基本門電路區分),種類很多,比如與非門、或非門、異或門等等,我們舉其中一個例子——異或門。電路是這樣的,由二個與門、一個非門、一個或門組成。

電路分析用下面四張圖來表示,大家可以自己推理一下,看結果是否正確。

最后用表格統計出來:

它的規律是:當輸入A和輸入B不同時,輸出=1。我們用這個符號來描述異或門。

其他二階門電路我們不一一介紹了,有興趣的讀者可以自己查閱資料,下節我們來看看由這些門電路如何制作加法器,實現加法運算。

來源: 孫老師聊人工智能