FPGA讀書筆記4

xie347117464發表於2016-07-20

基於HDL的設計流程

硬體描述語言(HDL)就是用來描述積體電路的元件和連線的語言。電路可以在不同抽象層次上進行描述,不同的HDL語言支援的層次是不同的。如下圖所示。 enter image description here 最低的層次是開關級。開關級將電路描述為電晶體開關組成的網表。門級略高,是指將電路描述為基本邏輯閘和功能的網表。開關級和門級都屬於結構級。
功能級電路可以採用布林等式描述一個功能,例如與或非,同或異或等。功能級還存在(暫存器傳輸級)RTL表達。RTL使用組合邏輯連線起來的暫存器集合形成的。這些暫存器由公共訊號控制。典型示例如下圖所示。
enter image description here
行為級可以使用抽象結構例如迴圈來描述電路,也包括加法和乘法等演算法單元。
HDL需要經過邏輯綜合工具產生最後的佈局和佈線電路。目前,線路的延遲比門有關的延遲大得多。對時序延遲的估計是十分重要的。FPGA採用基於物理的綜合輸出來佈局,再進一步細化和優化。

HDL語言

Verilog 和VHDL是目前FPGA主流設計語言。Verilog是為模擬設計的,可以輸出標準延遲格式(SDF)檔案,供模擬器產生更精確的結果。如果需要綜合,我們必須使用Verilog的可綜合子集。VHDL與Verilog的區別如下圖所示。
enter image description here
目前EDA對於兩種語言均有良好的支援,可以進行混合開發。日本曾開發了自己的HDL UDL/I ,但是影響不大。由於Verilog在驗證方面的乏力,Accellera釋出了SystemVerilog。它具有很多更加高階的特性,並且是基於Verilog的。也有人在用SystemC進行FPGA程式設計,SystemC是物件導向的,很多工程師不太瞭解,所以推廣很難。它的現成工具很不完善。

一些通用的規則

  1. 當你使用if-then-else語句的時候,結果將是一個2:1多路複用器,這在巢狀情況下會造成訊號延遲。如果用case語句就不會有這個問題。如下圖所示。 enter image description here
  2. 避免使用鎖存器
  3. 謹慎使用常量。一些表達方式會使FPGA效能提高少許。例如,“A+2”可以表達為“A+1和進位”;A*3=“A SHL 1+A”
  4. 資源共用問題。資源共用會降低效能,但減少了門數。如下圖所示。 enter image description here

相關文章