為什麼IC電路圖中有一堆三角形和橢圓形符號?─IC設計中的抽象化設計

本文是《一看就懂的 IC》系列第七集。接續一看就懂的 一看就懂的 IC 產業結構與競爭關係,《一看就懂的IC》系列將持續為大家介紹 IC 與硬體的核心基礎概念。


我們在上一集介紹完邏輯閘與二進位運算後,留下了一個待解答的問題:

電路圖為什麼不是一堆電線,而是一些邏輯符號呢?總不會我打開這顆 IC 的封裝後,真的會看到這些 AND、OR、NOT 三角形橢圓形的邏輯閘吧?

7432

當然不會看到這些符號。邏輯電路圖只是用來描述電路行為的抽象電路圖

… 什麼是電路行為、抽象???

另外,還記得從我們開啟晶圓代工爭霸戰這個系列開始,就一天到晚提到電晶體:「摩爾定律下、晶片上的電晶體數量每兩年就增加一倍,現在的晶片中有數億個電晶體…」

但我們卻從沒提過,這個電晶體到底是做什麼用的呢?(不知道有沒有不清楚的讀者先前就已經好奇過這點了呢XD)

今天就讓我們來為大家釐清,為什麼什麼叫「抽象化」,和電晶體的意義吧!

///

如果你忘記電晶體長什麼樣子的話,請回去重溫小編之前寫過的 晶圓代工爭霸戰-半導體知識 該篇文章吧!

下圖講的電晶體「開」、「關」,其實就是作為數位訊號的 0 與 1 噢!

圖片 1

根據布林邏輯建構出來的電路,就叫邏輯電路、又稱為邏輯閘。像下圖這張德州儀器的 7432 IC 電路圖,就是由許多邏輯閘所構成的。

7432

其實電晶體的功用,就是用來當邏輯閘

… 但上面的電路圖看起來一點都不像電晶體啊?難道電晶體長的是像橢圓形或三角形?

電晶體的運作原理可是有牽涉到物理和化學原理的,但我們在介紹邏輯電路圖上的邏輯閘時,你有聽到我講任何物理化學反應嗎?其實沒有噢。

回答上篇文章中提到的一個問題——若強制把晶片打開,真的會看到這些 AND、OR、NOT 符號嗎?為什麼電路圖的畫法不是一堆電路線?

事實上這些 AND、OR、NOT 只是抽象的電路符號,由 1960 年代美軍標準規格(Military Standard, MIL-STD)衍生而來。

mil.jpg

作為邏輯閘的電晶體,當然不可能會長的像是三角形或橢圓形這樣啦!到這邊為止,請讓我來解釋一下,所謂邏輯電路圖,只是「描述電路行為的抽象設計」。

覺得很難懂?我想想,這邊我得舉個簡單的例子… 啊,來組樂高吧!

lego.jpg

如果今天在組裝樂高積木、想要組出一台星際戰艦,我們直接使用一塊塊的樂高積木當作「基本單元」即可,需要管樂高積木是怎麼來的嗎?

樂高積木是用丙烯腈、丁二烯、苯乙烯共聚物的塑料顆粒製成…. 喂,但這都不關我們的事情,重點是要能想出戰艦的設計圖、再用樂高積木當作基本零件組出戰艦!樂高就直接是一個可以用的黑盒子了,管它是怎麼來的。

另外,這些樂高積木再上一層、是由樂高工廠負責生產。但樂高工廠在生產的時候,需要管丙烯腈等化學物質是怎麼合成的嗎?也是不用嘛,他們也只要拿這些已經被合成好的化學物質,直接當作黑盒子來使用。

而化學實驗室需要負責生產樂高積木嗎?不用。樂高工廠需要負責想出戰艦的設計圖嗎?也不用。他們的職責就是把自己要負責給下一層的東西建好就好。

這種分層合作、下一層只要拿上一層做好的基本單元來建立出想要的東西,而不用管這些基本單元是怎麼被建構出來的,就叫做「抽象化設計」。

如此一來是不是更有效率呢?(難道我們組樂高還要花心思先研究化合物再來組嗎?太浪費時間了吧,我們只是要一艘戰艦!)

同樣的道理,想想看、如果我們要寫一支樂透程式,得先做出電晶體,再拿上千億個電晶體建立出邏輯閘、再建構出一個個的加減乘除的零件;最後把這些零件兜起來,做出整個邏輯電路;設計完電路後…

才開始想我們的樂透程式要怎麼寫嗎?!…這時間要花超級無敵久!而且超沒有意義!

hardware software.png

所以 IC 設計公司在設計電路圖時,不是直接下去畫電晶體。而是先拿數位邏輯工具先建構出來的基本零件(加法器、減法器),當作已經被包好的黑盒子,不用管它是怎麼製作、直接拿來用。

所以你會看到,我們在上一篇文章中設計出一個加法電路時,就把兩個半加法器(AND+EXOR) 直接包起來,直接叫 FULL Adder 了。

2000px-4-bit_ripple_carry_adder.svg

哦,所以 IC 設計工程師就是利用這些符號,把一個邏輯電路圖用手畫出來嗎?

事實上,早期(1960 年代左右)設計晶片時得用徒手畫電路圖沒錯(幫當年的工程師QQ)。但現在幾乎已經沒人這麼做了。

ic design draw.png

現在的 IC Design 工程師建立電路時,IC Designer 是拿 EDA Tool 這樣的數位邏輯工具先建構出來的基本零件(加法器、減法器)等當作已經被包好的黑盒子,不用管它是怎麼製作、直接拿來用── IC 工程師會使用硬體描述語言(Hardware Description Language)如 Verilog 、 VHDL 內建的工具,用程式描述抽象化的邏輯電路行為。

那這些基本零件又是誰要負責做出來?做出 EDA Tool 的數位邏輯工程師會拿已經做好的邏輯閘,來建構出加法器等零件。

但是邏輯閘是怎麼來的?EDA Tool 廠商也不用管,總之也是把邏輯閘當作已經包好了黑盒子直接拿來用,用電晶體做出邏輯閘是電子電路工程師要負責的事情。

設計處理器的每一層,都是拿上一層已經建好的基本零件當作黑盒子。你就拿人家做好的基本單元直接使用,如果做不好是上一層的事、不需要自己花心思處理,如此從上而下、分層合作來提升效率。

所謂的抽象化設計,就是將底層的細節部分暫時隱藏,以簡化設計複雜程度的過程。

雖然每個邏輯閘都只能做非常單純的事情,但集結數千萬個邏輯閘 (電晶體) 塞在面積只有 5mm 的半導體晶片上時,數位電路就能獲得壓倒性的效能。

講白點就是靠人多力量大來取勝;隨著摩爾定律的發展,能塞的邏輯閘越多、晶片的效能就越強悍。

最後再留個伏筆:或許會有讀者好奇:第六集第七集只介紹了 AND、OR、NOT 等邏輯閘,和要怎麼用邏輯閘建立出邏輯電路來實現運算;卻還沒介紹「邏輯閘是怎麼建構出來的」和「電晶體的功用是什麼」這兩個重要的問題。

就讓我們在下一篇文來瞭解一下,如何利用電晶體來建立出邏輯閘吧!