本文為我開的Live“你可能學了假的數字積體電路”的先導文章之一。

以前沒有在知乎寫過文章,因為知乎相比於其它平臺還是一個相對專業的地方(雖然現在很多人在評價所謂的“貼吧化”)。在知乎上回答問題嘛,可以比較自由。沒事抖抖機靈、小懟兩句、故作深沉、語焉不詳就可以了。不但省時省力,還不容易露怯,很容易把自己偽裝成專家。寫文章就不一樣,不但篇幅比較長導致要寫好一陣。還要可能因為寫得不夠專業而被人怒懟。所以我對於在知乎上寫文章還是比較慎重的。

另外一些原因呢是因為我很早以前在“電子技術應用”這個網站有一個部落格,寫了很多年了:

上面記錄了我當年從QQ空間時代就自己寫的一些技術上的思考。後來學校(電子科技大學)搞了一個叫“網路名師”的計劃,我這個部落格也就被列入到“網路名師”這個計劃裡面去了。由於同時維護幾個網頁挺累人的,因此後面的很多文章主要也就是到這個部落格裡面來發表。QQ空間那邊也就停了。這個部落格寫習慣了呢,也就不想再到別的地方去“開荒種地”了。

但知乎畢竟是個好平臺,其影響力和傳播力自然還是作為行業性網站的“電子技術應用”無法比擬的。自己寫的東西嘛,還是希望更多的人能看到。況且我現在手下最能幹的幾個研究生當年還是靠知乎私信招到的,所以在分享自己見解的同時也是得到了很多有益的反饋的。

好了話不多說,準備開講:

昏割線…………………………………………………………………………………………………………………………

長期以來,很多朋友搞不太清楚FPGA設計(嚴格意義上講應該叫“基於FPGA的數字系統設計”)和ASIC設計(嚴格意義上講應該叫“用半定製設計方法去設計ASIC”)之間太多區別。總覺得都是用Verilog寫寫程式碼,然後放進工具裡面跑一跑。好像沒有什麼不同。

再稍微懂行一點的呢就會說:FPGA嘛,直接出來一堆二進位制檔案然後下載到開發板裡就可以用了;ASIC呢,還需要做一堆後端的工作才行。其實現在FPGA設計方和ASIC設計方法已經差別非常大了,但是很多人並沒有意識到。即便是很多做“數字積體電路”方面的研究者和業界的從業人員都沒有刻意思考過這個問題。這個話題要是放開了講,可以寫一系列的專欄文章。今天這文章的目的不是這個,所以改日再來談這個話題。

下面,首先還是來回顧一下FPGA的基本概念。先上一段影片。這是我MooC的一部分:

你可能學了假的數字積體電路(Live先導文章)之一:從FPGA和ASIC設計的差別開說

https://www。zhihu。com/video/968971809521168384

由於很多挨球的問題,目前MooC已下線。如果要看更為完整的MooC,可以關注《電子與封裝》微信公眾號。也可以直接檢視微課連結:

在這個影片中,有一個很核心的觀點,可以概括為下面這張圖:

你可能學了假的數字積體電路(Live先導文章)之一:從FPGA和ASIC設計的差別開說

邏輯電路圖、邏輯表示式和真值表三者在邏輯上是等價的。這種等價的意義何在呢?因為數位電路/數字系統的理論基礎就是布林邏輯。無論是ASIC形式的數字積體電路也好,還是基於FPGA的設計也好,在絕大部分時候就是在實現各種邏輯表示式。因此任何有能力實現邏輯表示式的方式僅從功能上來說都是等價的。

也就是會得到下面這個結果:

你可能學了假的數字積體電路(Live先導文章)之一:從FPGA和ASIC設計的差別開說

邏輯電路圖可以進一步細化為電晶體級的電路原理圖,而電晶體級的電路原理圖經過物理設計又會得到可以用於去加工製造的晶片版圖。如果把這個晶片加工出來,這最紅得到的版圖就是對應的邏輯電路圖的功能,也就是對應了想實現的邏輯表示式。把真值表對映到一個FPGA內部的可程式設計邏輯塊,透過確定輸入輸出關係通用也可以實現相同的邏輯表示式。

當然了,我們不會去手動去實現這個邏輯表示式,我們甚至都不會去親自去得到這個邏輯表示式。在電子設計自動化工具已經高度發達,數字積體電路設計方法學已經足夠完善的今天。我們基本都是靠輸入一段硬體描述語言程式碼之後,操作各種工具來得到最後的實現形式。現在我們甚至可以用高階語言或者圖形化介面去生成一段硬體描述語言或者直接透過圖形化的操作得到最後的邏輯表示式。

那現在就有很多問題了。

1。在電子設計自動化工具如此發達的今天,做數字積體電路設計到底是在幹什麼?

2。數字積體電路設計的核心是“寫程式碼”嗎?

3。學習數字積體電路設計的重點是在“操作工具”嗎?

4。如果是依靠寫程式碼+操作工作設計自動化工具,那麼學習半導體器件、量子力學、微電子技術的意義還大嗎?

5。現行微電子專業的培養模式下教育出來的學生從事數字積體電路設計,尤其是前端設計的優勢有嗎?

……

要回答這些問題,不得不回到一個根本性的命題上面來:“到底什麼叫數字積體電路設計,數字積體電路設計的核心到底在哪裡”?其實我開這個Live也是試圖回答這個問題。在過去的很多年中我總是被稱為“做數字”的老師。無論是學生還是我們學院的其他老師,甚至是同組的其他老師,他們普遍都有這樣一個問題:說起來,你應該是“做數字的”,但是你做的這種“數字積體電路”怎麼和我們通常理解的不一樣呢?被問煩了以後,我也就想到了這個辦法:乾脆我就來做一場“你可能學了假的數字積體電路”的Live算了。

今天先談到這裡,更多預告內容將持續更新。