集成電路的工作原理是什麼?

本人非專業人士,只是數碼愛好者一隻。很好奇,但一直不了解CPU(或者GPU)如何通過簡單的1和0來處理數據的。晶體管在處理數據的過程中是怎樣工作的?


看到這個題目就陷入了迷茫之中....鬧海中閃過N多痛苦回憶...

建議題主隨便找個EE的本科課程表, 把每本書的目錄過一遍...


《Code》


看你的問題應該是有兩個問題:

1.晶體管是如何工作的?

2.諸如CPU是如何工作的?

=

先來回答第一個問題,晶體管的工作模式主要是由兩類模型來決定的。基於你的問題描述,主要想知道晶體管如何能體征1 0的。首先一點要說明1或是0隻是大家交流時的一種電平表述方式,具體多少表徵1多少電壓表徵0是依據集體的工藝和雜訊容限來表示的。拿什麼是雜訊容限哪?簡單來講就是外界多大的噪音加在你信號上仍舊不改變他的功能的電平值。知道這一點,在進入晶體管開關模型,也就是說晶體管在某一電壓下是開狀態,電路斷路,節電點位為高;在某一電位下電路處於關閉狀態,電位接地。這大體說明白了晶體管表徵10的工作情況了。


首先我們要知道在數字電路中一個晶體管的輸出有兩種狀態,高電平和低電平,高電平就好比電路插座的火線,低電平好比零線。電路中有很多晶體管因此就能夠通過狀態的組合行成編碼。同樣的原理,半導體存儲器也是這樣,利用晶體管或者其組合成的單元表示0和1也就是低調平和高電平。在存儲器中每個存儲位都有一個地址,地址就像車牌號一樣,一個號對應一個車,一個地址對應一個存儲單元,當指定某個地址時我們就得到了其對應單元的存儲內容。

再接著說計數器,也是一種電路,很簡單,每個時鐘作用下,其輸出會加1。此時倘若將計數器的輸出加到存儲器的地址端,那麼我們就能在每個時鐘過後,從存儲器輸出端讀到一個一個的數據。如果同時接8組存儲器,那麼就能一次性讀八個二進位數,倘若此時我們將這八位二進位數輸入到某個數字電路中,那麼就可以在這個數字電路的輸出端得到輸出信息。倘若我們將這八位中的前四位和後四位分別加到另外兩個存儲器的地址端,之後再把這兩個存儲器的輸出端接到加法器上,那麼剛才的八位二進位數就是cpu內的加法指令。cpu的基本工作原理就是這樣,在計數器的作用下從存儲器產生輸出,這個輸出就是指令,之後通過組合邏輯電路對不同位段的數字進行求值,從而會選中不同的電路邏輯路徑,或是簡單的運算或是繼續讀存儲器,或者是其他的操作。


從底層往上:

電路分析,模擬電路

數字邏輯與數字電路

處理器架構

...

我認為答主的主要疑惑是數字邏輯這部分。

給本數字電路的目錄吧

第一章數制和碼制

第二章邏輯代數基礎

第三章門電路

第四章組合邏輯電路

第五章觸發器

第六章時序邏輯電路

第七章半導體存儲器

第八章可編程邏輯器件

第九章硬體描述語言簡介

第十章脈衝波形的產生和整形

第十一章數-模和模-數轉換


為什麼計算機能讀懂 1 和 0 ?

這當然已經有人問過了啦


樓上蕭大神以前的答案計算機如何看懂0和1其實說的很詳細了~

簡單來說,集成電路裡面有各種模塊一級一級來實現各種不同的功能。

一般來說,我們輸入的信號都是連續的模擬信號,這時候一般都會經過集成電路里的抽樣電路和量化電路變成時間離散和取值離散的數字信號。

在理解工作原理的時候,比較重要的需要理解的一點就是,0在數字電路里代表低電平,1則相對而言代表高電平。

模擬信號採樣量化後的數字信號就代表不同高低的電平,這時候再經過各種能夠實現不同功能的邏輯電路,輸出相應的高低電平,去控制實現不同的功能,如果有需要的話,再通過數字信號處理的模塊,還原成連續的模擬信號也行。

———————————————————————

大體原理就醬,可能有的地方說的不太清楚,因為東西實在太多了,就講個數字邏輯電路的門電路,觸發器什麼的就好多好多,建議不要做伸手黨,得自己去看

沒有電子電路基礎的話,

推薦一本書叫做

《編碼的奧秘》Code:The hidden Language of Computer Hardware and Software[美]Charles Petzold著

數字電路的無門檻入門書籍,而且寫的非常有趣(就是第一個答案輪子哥推薦的《code》)

除了數字電路,數字信號處理,單片機之類的也可以去看看


mos-&>gate-&>組合,時序邏輯-&>加法器乘法器-&>實現各種功能的小電路-&>cpu


上來先隨便回答下,為大家開個口子。

首先在數字世界,任何事物都可以用0和1的集合來表示。

那麼要想讓CPU 完成一件任務,首先就得將這個任務用一種語言表達出來,比方說大家熟知的C 系列,因為是面嚮應用,姑且稱之為高級語言。CPU 無法理解這些高級語言,但是我們可以藉助編譯器翻譯,將其轉化為該CPU 能識別的機器語言。機器語言即彙編代碼,就是一條條的機器指令。當CPU 每收到一條指令,就會按指令完成相應操作。

再稍微扯遠點!雖然通過這樣的步驟,我們可以控制CPU ,但是其實只有CPU 還不夠,他完成的事情只是數據調度,數據的運算,就跟我們大腦需要五官手腳配合一樣,CPU 也需要完備的外部設備才能真正發揮它的功效!

下面正式回答題主的問題:

1. CPU 如何通過簡單的0 1來處理數據?

0 1的組合可以得到任意一個數字,那麼CPU 就通過用不同的數字來表達不同的指令,從而可以處理數據

2. 晶體管在處理數據過程中是怎麼工作的?

首先,在數字電路里,晶體管是最底層的元件,就好比蓋房用的沙子。

這裡就不往深處討論,以下直接討論數字電路里的NMOS, PMOS 晶體管。

數字電路里對數據的處理都是通過轉化為二進位(即0 1組合)數據後進行的。而所有對二進位的運算都可以歸結為二進位之間的與、或、非等操作(這裡不能再擴散了,不理解找本數字電路看看了)。回到前面,簡單的說,晶體管的一個功能是通過輸入電平可以控制輸出電平,而晶體管的串並可以完成多個輸入之間的與、或操作。

所以簡單的說,在數據處理時,我們通過控制晶體管的輸入來完成各種數據處理。

第一次非請自來答題,只是希望沒有誤導題主


配置寄存器 這事我天天干 用戶使用手冊什麼的 天天看


模擬電路 》 數字電路


其實一個晶體管本身沒有處理數據的能力,最最多能作為一個反相器,也就是not邏輯

但是多個晶體管組合起來就可以完成基本的與and 或or 非not了

你可以把很複雜的邏輯關係表達成與或非這種形式,大抵就明白為什麼可以「邏輯了」

在配合一些時序電路啦 解碼器啦。。。很多很多不能一一細說。。。但這些都是基本的數字電路的知識點,想粗略了解也要看很多書的


對於這個問題 @丁旭已經從內到外解釋的很清楚了 保證看了人人明白 http://zhi.hu/9skq(手機黨只能放網站了~_~)


鑒定,大學期間沒學好數字電路和模擬電路兩門課程。鑒定完畢。


數字電子技術基礎

計算機組成原理

微機原理與介面技術

單片機原理與應用


這個坑很大,三言兩語是講不清的。上面輪子哥說的那本書很不錯,有電子版本叫《編碼的奧秘》,中文版叫《編碼》,這本書可以幫助你從邏輯門層次上理解。如果非要糾結到晶體管的話再加一本數字電路差不多了。


這是一個知識系統,說清楚不得把大學整個專業課學一遍


推薦閱讀:

人類歷史上第一個集成電路使用什麼儀器製作的?
集成電路晶元電極如何引出來?
碳納米管能否拯救摩爾定律?
晶元、半導體、晶體管之間的關係?
海思跟進石墨烯技術,這靠譜嗎?

TAG:中央處理器CPU | 圖形處理器GPU | 晶元集成電路 | 晶體管 | 電路原理 |