FPGA讀書筆記4
基於HDL的設計流程
硬體描述語言(HDL)就是用來描述積體電路的元件和連線的語言。電路可以在不同抽象層次上進行描述,不同的HDL語言支援的層次是不同的。如下圖所示。
最低的層次是開關級。開關級將電路描述為電晶體開關組成的網表。門級略高,是指將電路描述為基本邏輯閘和功能的網表。開關級和門級都屬於結構級。
功能級電路可以採用布林等式描述一個功能,例如與或非,同或異或等。功能級還存在(暫存器傳輸級)RTL表達。RTL使用組合邏輯連線起來的暫存器集合形成的。這些暫存器由公共訊號控制。典型示例如下圖所示。
行為級可以使用抽象結構例如迴圈來描述電路,也包括加法和乘法等演算法單元。
HDL需要經過邏輯綜合工具產生最後的佈局和佈線電路。目前,線路的延遲比門有關的延遲大得多。對時序延遲的估計是十分重要的。FPGA採用基於物理的綜合輸出來佈局,再進一步細化和優化。
HDL語言
Verilog 和VHDL是目前FPGA主流設計語言。Verilog是為模擬設計的,可以輸出標準延遲格式(SDF)檔案,供模擬器產生更精確的結果。如果需要綜合,我們必須使用Verilog的可綜合子集。VHDL與Verilog的區別如下圖所示。
目前EDA對於兩種語言均有良好的支援,可以進行混合開發。日本曾開發了自己的HDL UDL/I ,但是影響不大。由於Verilog在驗證方面的乏力,Accellera釋出了SystemVerilog。它具有很多更加高階的特性,並且是基於Verilog的。也有人在用SystemC進行FPGA程式設計,SystemC是物件導向的,很多工程師不太瞭解,所以推廣很難。它的現成工具很不完善。
一些通用的規則
- 當你使用if-then-else語句的時候,結果將是一個2:1多路複用器,這在巢狀情況下會造成訊號延遲。如果用case語句就不會有這個問題。如下圖所示。
- 避免使用鎖存器
- 謹慎使用常量。一些表達方式會使FPGA效能提高少許。例如,“A+2”可以表達為“A+1和進位”;A*3=“A SHL 1+A”
- 資源共用問題。資源共用會降低效能,但減少了門數。如下圖所示。
相關文章
- FPGA讀書筆記5FPGA筆記
- FPGA讀書筆記3FPGA筆記
- FPGA讀書筆記2FPGA筆記
- FPGA讀書筆記1FPGA筆記
- Spring4讀書筆記(1)-模組Spring筆記
- <轉>oracle效能調整讀書筆記(4)Oracle筆記
- 程式碼整潔之道--讀書筆記(4)筆記
- 讀書筆記...筆記
- 讀書筆記筆記
- 《讀書與做人》讀書筆記筆記
- Mac OS X Programming讀書筆記4 - WindowsMac筆記Windows
- 《程式碼大全》讀書筆記1(1-4)筆記
- Cucumber讀書筆記筆記
- 散文讀書筆記筆記
- HTTP 讀書筆記HTTP筆記
- CoreJava讀書筆記-------Java筆記
- flask讀書筆記Flask筆記
- Vue讀書筆記Vue筆記
- MONGODB 讀書筆記MongoDB筆記
- Qt讀書筆記QT筆記
- Node讀書筆記筆記
- SAP讀書筆記筆記
- YII讀書筆記筆記
- iptables 讀書筆記筆記
- Makefile 讀書筆記筆記
- mysql讀書筆記MySql筆記
- 鎖讀書筆記筆記
- dataguard讀書筆記筆記
- 讀書筆記3筆記
- 讀書筆記2筆記
- postgres 讀書筆記筆記
- Spring4讀書筆記(2)- 使用場景Spring筆記
- Application=Code+Markup 讀書筆記 1-4APP筆記
- 閱讀筆記4筆記
- 《重構》讀書筆記筆記
- webpackDemo讀書筆記Web筆記
- PMBook讀書筆記(一)筆記
- Effective Java 讀書筆記Java筆記