晶片設計真的很難?科普晶片基礎知識,帶你親手設計一個晶片

關注「黑洞科技觀察」

傳遞科技背後的思考

大家好,本文是“晶片的世界”系列文章的第三篇。

第一篇:

晶片的世界丨這根棒子也要卡脖子?它是迄今人類提取的最純物質

第二篇:

晶片的世界丨比亞迪晶片自給自足不怕斷供?幫你科普半導體的江湖

關注國產晶片事業的你,一定有很多困惑,能讓大國科技舉步維艱的技術,到底是有多難?

其實,晶片這個東西,說難是真難,就拿5nm光刻機來說,10多萬個零部件組成,一個一個數一遍,可能大部分我們現在都不能生產。

可是,晶片說簡單也簡單,從原理上來說,只要你有一定的知識基礎,都能搞清楚。在這一點上還確實是“科技無國界”。至少到現在,相關的書籍、論文等知識都是能夠公開獲取到的,差的主要就是產業經驗和技術實力。

今天,我就和大家一起看看晶片到底有多簡單,本文的目標是科普一些基本數學知識,然後設計一個最簡單的晶片!

晶片的基礎

晶片,作為最重要的半導體產品,實現了特定功能。比如電腦CPU實現了計算、顯示、讀寫記憶體硬碟資料、接受滑鼠鍵盤輸入等等豐富的功能。

那大家有沒有想過,晶片的基礎是什麼?

可能有人馬上會想到矽,矽作為半導體材料是晶片的基礎。可是喝水的玻璃杯也有矽呀,它就不值錢,所以矽不是根本基礎。晶片為什麼要用矽?是因為要在矽上面製造積體電路!矽的特點是能在很小的面積上整合大量的電路器件。

這麼說晶片的基礎是電路?電路有很多種,家裡的燈泡和開關也組成一個電路,這和晶片沒啥關係。晶片用到的是邏輯電路。

再試一次,晶片的基礎是邏輯電路?呃,已經很接近了,但是還不是,邏輯電路是做邏輯運算的,邏輯運算也叫布林代數運算。

所以,晶片的根本基礎是數學!更具體的說是布林代數!

這個結論一點兒也不奇怪,大家都知道物理學的基礎是數學,就連偉大的物理學家牛頓都和阿基米德、高斯一起並稱世界三大數學家。

布林代數

瞭解最基本的布林代數,你就會知道機器是怎麼運算,也就明白了晶片要怎樣設計。

接下來我就介紹一下二進位制和布林代數,下面的內容爭取讓小朋友都能明白。

為什麼能讓小朋友都明白呢?因為數學家布林本人,就沒上過大學,靠自學成才,並在19歲開辦了一所小學,經營了10多年。他認為自己最主要的職業是教師,他的願望是幫孩子們找到理解和掌握複雜規律的方法。

布林代數的起源,是希望用數學表達人的邏輯思維。

其中和計算機相關的是幾個重要的布林運算:

1、與 運算

舉個例子:我喜歡吃烤羊肉串

我們讓A代表燒烤,B代表羊肉串。

則上面的表達變為了:

晶片設計真的很難?科普晶片基礎知識,帶你親手設計一個晶片

A和B都是真,做運算的結果才是真。比如,烤牛肉串,就是A=1,B=0,AandB=0。所以我不喜歡烤牛肉串。

2、或 運算

舉個例子:我喜歡吃燒烤或是火鍋。

我們讓A代表燒烤,B代表火鍋。

則上面的表達變成了:

晶片設計真的很難?科普晶片基礎知識,帶你親手設計一個晶片

不管是燒烤還是火鍋,只要有一個我就吃,當然兩樣都來更好!

3、非 運算

舉個例子:我不喜歡吃辣。

我們讓A代表辣。

則上面的表達變成了:

晶片設計真的很難?科普晶片基礎知識,帶你親手設計一個晶片

4、異或 運算

舉個例子:我最喜歡吃燒烤和冰激凌,但是一起吃會拉肚子。

我們讓A代表燒烤,B代表冰激凌。

則上面的表達變成了:

晶片設計真的很難?科普晶片基礎知識,帶你親手設計一個晶片

理解這個運算可能有點兒難,啥意思呢?就是A和B不能一樣,沒有燒烤沒有冰激凌肯定不行,可是一起來也承受不了!

除了上面4種布林運算,還有與非、或非、異或非運算。從異或運算可以看出,全部的運算都可以由與、或、非運算結合產生。

二進位制運算

咱們接著講二進位制運算。

二進位制就是用0、1表示一切數字,每一位上只能是0和1,到了2就要進位。

比如,十進位制的2,用二進位制表示就得進位了,變成兩位數10,而十進位制3就是11。

晶片設計真的很難?科普晶片基礎知識,帶你親手設計一個晶片

二進位制是德國數學家萊布尼茨在300多年前發明的,那個時候連計算機的影子還沒有,到底萊布尼茨為啥要發明一個當時根本沒用的二進位制,說實話沒人能搞清楚。

說起二進位制,不得不說一下我國的八卦,不是到處亂講的那種娛樂圈八卦,而是真正的八卦。

八卦講究的是兩儀生四象,四象生八卦:

晶片設計真的很難?科普晶片基礎知識,帶你親手設計一個晶片

看到沒有,很多人認為八卦就是二進位制的先驅。兩儀是陰陽,也就是0和1,四象是二進位制兩位數,八卦是二進位制三位數,而伏羲64卦就是二進位制的六位數:

晶片設計真的很難?科普晶片基礎知識,帶你親手設計一個晶片

貌似道理還真是一樣,咱們的老祖先當時基於什麼發明的八卦,說實話這也搞不清楚。

可有人卻翻出了當時萊布尼茨和一位在北京生活的傳教士的信,來試圖證明萊布尼茨發明二進位制是受了中國八卦的啟發,而且很多人都信了這個說法。

實際的過程是這樣的:當時萊布尼茨給這位傳教士寫信,希望他向康熙皇帝介紹二進位制,這個傳教士一看,這不就是中國的八卦麼,給萊布尼茨回信說了八卦的情況。然後萊布尼茨寫了一篇文章論述二進位制在中國的實際應用。

萊布尼茨到底受沒受八卦啟發,都是猜測,就算萊布尼茨受了八卦的啟發,那又怎樣?在萊布尼茨發明二進位制的時候,我們的康熙大帝正在打吳三桂呢,我們的現代文明還沒有開化。

所以,關於八卦和二進位制的事,我們就當它是八卦好了,咱們接著說二進位制計算。

假設有兩個一位的二進位制數要相加,那麼會有四種可能:

晶片設計真的很難?科普晶片基礎知識,帶你親手設計一個晶片

前三種情況不需要進位,後一種情況和S是一個兩位二進位制數,所以需要進位,我們單獨設定一個進位標識C。

大家發現沒有,二進位制的加法和上面介紹的布林運算是一樣的:

加法的和就是兩個加數的異或運算

加法的進位標識就是兩個加數的與運算

我們用布林運算子做個邏輯圖,就是這樣的:

晶片設計真的很難?科普晶片基礎知識,帶你親手設計一個晶片

上面就是一個用布林運算子表示的半加器,可以進一步表示如下:

晶片設計真的很難?科普晶片基礎知識,帶你親手設計一個晶片

為什麼叫半加器呢?這是因為計算A+B的時候,沒有考慮上一位有沒有進位的情況,所以這個半加器只能計算二進位制數最末一位上的加法。

如果A和B不是末位上的數,那就要考慮前一位的計算結果有沒有進位(Cin是上一位的進位標識,Cout是當前位計算完向上一位的進位情況),會有8種情況:

晶片設計真的很難?科普晶片基礎知識,帶你親手設計一個晶片

這個過程可以透過2個半加器和一個或運算來實現:

晶片設計真的很難?科普晶片基礎知識,帶你親手設計一個晶片

這就是全加器:

晶片設計真的很難?科普晶片基礎知識,帶你親手設計一個晶片

看,我們只用布林代數的四個運算子,就實現了一位二進位制數的加法。

其實,我們只用了三個運算子,因為異或運算可以畫成與、或、非運算的組合,當然這樣太麻煩。

全加器也是一樣,如果我們不怕麻煩,可以細緻的畫成異或、與、或運算的組合。

八位二進位制加法器

大家看吧,關於計算機的數學也不難。

接下來最神奇的要來了,我們要用剛剛學到的布林代數知識,設計一個最簡單的晶片。

這是一個能夠進行八位二進位制數加法的加法器。

這還是有一些挑戰的,這個加法器,如果做出來也算是一個最簡單的晶片,真的是晶片哦!

晶片設計真的很難?科普晶片基礎知識,帶你親手設計一個晶片

這個加法器的輸入是2個八位二進位制數:

一個用A表示,八位分別是A[0],……,A[7];

另一個用B表示,八位分別是B[0],……,B[7];

還有一個輸入是進位標識Cin,如果這個加法器單獨使用時,這個輸入始終置0。

輸出是S,八位分別是S[0],……,S[7];

輸出進位標識是Cout。

下面請大家看看,這個加法器到底是什麼樣子:

晶片設計真的很難?科普晶片基礎知識,帶你親手設計一個晶片

這就是一個用8個全加器構成的八位二進位制加法器,神奇不神奇?

我們沒有新增任何其他的東西,就是剛剛學過的全加器,如果大家有興趣,可以把每個全加器用2個半加器和一個或運算子展開。

進一步可以再把每個半加器用異或運算子和與運算子展開,不知道哪位讀者有興趣,反正用手畫,我是會崩潰的。

而這一切,在晶片設計的時候,都是由EDA軟體來完成。

後續工作

到此,我們已經在邏輯上設計了一個功能最簡單的八位二進位制加法晶片。

為什麼要說是邏輯上呢?因為到目前為止,我們還沒有用到任何電路知識。所涉及的全部是布林代數知識,所以這個晶片是邏輯上可行,但是還無法制造。

那怎麼做出實際能用的晶片呢?

首先我們需要有和上面布林運算子對應的電子元件,實現同樣的功能。然後按照設計把這些元件連線起來。這樣就有了實際的電路,這種電路就叫閘電路。實現了上面布林運算的元件就叫門元件。

最終,我們要在矽片上面製作出這種門元件,這樣就在矽片上面實現了閘電路,也就是積體電路。

最後,再把這個積體電路切割下來,把輸入輸出引腳做好,然後封裝,一個完整的晶片就產生了!

所有這些後續的工作,我都會在接下來的文章一點兒一點兒和大家一起學習!

如果您對我的文章感興趣,歡迎關注我!

謝謝!

晶片設計真的很難?科普晶片基礎知識,帶你親手設計一個晶片