1. 程式人生 > 其它 >FPGA晶片內部工作原理,以及其中有哪些專有設計?

FPGA晶片內部工作原理,以及其中有哪些專有設計?

https://www.zhihu.com/question/263728785/answer/289175276

最近要做一個關於FPGA的智慧財產權專案,想了解在FPGA晶片或產品中,哪些部門、結構、模組或設計中是與其他晶片不同,只有FPGA專有的? 作者:王狗蛋
連結:https://www.zhihu.com/question/263728785/answer/289175276
來源:知乎
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。

第二次補圖

圖1圖2

評論回覆裡的圖被吃了,加到這裡

一種佈線結構佈線結果

################### 原答案 ##################

  1. FPGA晶片內部工作原理

FPGA(Field-Programmable Gate Array),即現場可程式設計門陣列。從某種角度上講我不是很贊同“可程式設計”這種說法,而更傾向於“可描述”。 它可以通過硬體描述語言(Verilog或VHDL)描述一個電路設計,通過配套的EDA工具綜合與佈局,並燒錄至 FPGA來實現設計需要。

目前所有的FPGA或eFPGA都包含大量的可程式設計邏輯單元和可程式設計佈線單元。邏輯單元可以實現一小部分數字邏輯,而佈線則連線這些邏輯單元來組成更大的數位電路。

可程式設計邏輯單元和可程式設計佈線單元

可程式設計邏輯單元:

我們知道數位電路可以細分為組合邏輯和時序邏輯。 FPGA中實現組合邏輯的部分就是查詢表(LUT),時許邏輯則依靠暫存器。若干個LUT和暫存器相互連線則構成了一個邏輯簇。不同的FPGA公司所定義的邏輯簇的結構也是不同的。 邏輯簇結構有2大好處,第一邏輯簇中的互聯速度要快,可以提高FPGA速度; 第二, 邏輯簇的應用可以簡化排版佈線的複雜度,縮短綜合時間。

一個邏輯簇

可程式設計佈線單元:

與定製電路不同, FPGA的佈線資源都是預製好的, 因此預製的佈線資源能夠連線絕大多數的邏輯單元(簇)。 對於使用者設計好的專案,通過控制一系列的開關來滿足特定單元間的互聯。 這也就使得佈線資源佔據了FPGA的絕大部分面積, 而且複雜的佈線網路中控制開關過多的話會大大降低FPGA的執行頻率。如果減少佈線資源, 則會加大EDA軟體演算法的難度,而且會導致電路佈局佈線失敗。

因此如何設計邏輯簇和與之配合的佈線資源,使其達到速度和麵積的均衡,而且還要考慮到EDA軟體演算法的難度,執行時間以及記憶體佔用, 這是每個FPGA廠商的核心中的核心。

2. 有哪些專有設計

上面簡述的邏輯資源和佈線資源屬於FPGA硬體部分的範疇,也就是硬體的專有設計。

與之配套的還有其EDA軟體的專有設計。以前和一個搞FPGA的博士聊天, 他表示有2種通用晶片是需要有大量技術積累的; 一個是CPU,另一個是FPGA。 CPU的難點是其硬體結構,軟體指令集則不是廠家的主要難點。 而FPGA的硬體結構原理並不是主要技術壁壘, 但是其EDA軟體的核心演算法則是每個公司的長期積累的成果。

他的觀點我還是比較贊同的。 試想, 如果一個小規模FPGA硬體結構和其配套EDA實現了的話,為什麼不能把其等比例擴大使其成為一個超大規模的FPGA呢? 而現實是目前國產FPGA規模基本上都在50K LUTs左右。 (有個別宣傳有200K LUTs。目前好像還沒有量產)。

事實上, FPGA軟體綜合的每一個流程都是一個NP問題。 從對映, 裝箱, 排版 到佈線。 而且還要加入物理結構的約束條件,以及時序驅動優化的約束。所有這些會大大增加演算法的難度和程式的執行時間, 而且對於超過大規模的電路來說還要考慮軟體的記憶體佔用。

因此在軟體工具鏈上的開發經驗的積累對於FPGA廠商來說是極為重要和專有的。就我瞭解的一些公司,可以對硬體結構申請專利,卻對核心演算法嚴格保密甚至不去申請專利以防競爭對手通過專利簡報推測其內容。

以上是我的回答, 有錯誤的地方歡迎批評指出, 有不嚴謹的地方歡迎探討。如果你還有問題的話也歡迎繼續討論