- AMD FPGA設計優化寶典:面向Vivado/VHDL
- 高亞軍編著
- 885字
- 2023-12-12 20:02:30
1.4.1 硬件原則
FPGA設計采用的主要編程語言包括VHDL、Verilog和SystemVerilog,三者均屬于硬件描述語言(Hardware Description Language,HDL),其中,SystemVerilog因其在驗證方面顯示的強大功能又被稱為硬件描述與驗證語言(Hardware Description and Verification Language,HDVL)。硬件描述語言,顧名思義,其描述的對象是硬件電路,是實實在在存在的硬件電路,這要求我們必須采用HDL可綜合的部分進行電路設計,遵循可綜合的代碼規范。設計者需要了解所用的HDL哪些是可綜合的,哪些是不可綜合的。例如,延遲語句,無論是VHDL中的wait for語句,還是Verilog或SystemVerilog中的“#延遲時間”(延遲時間為具體數字),均是不可綜合的。同樣,除法運算“/”也是不可綜合的(只有當除數為2的整數次冪時才可綜合,此時等效于右移操作)。從數據類型的角度而言,實數(Real)是不可綜合的。
相比軟件編程語言(如C/C++),HDL具有兩大特征:并發性和時序性。并發性體現在同一模塊中的不同進程(VHDL中的process,Verilog中的always,SystemVerilog中的always_ff、always_comb和always_latch)是同時執行的,這反映了硬件電路的特征:一旦上電,同時工作。時序性則體現了不同數據路徑在時鐘作用下的相互關系及時序路徑與控制路徑的關系。時序是設計出來的,不是湊出來的,更不是測出來的。就這點而言,在開始編程之前,要有待設計電路的基本雛形。例如,要設計一個復數乘法器,就要先畫出如圖1-36所示的硬件電路,圖中,D表示D觸發器,第一個復數的實部和虛部分別為ar和ai,第二個復數的實部和虛部分別為br和bi。從圖1-36中也可以看出各數據路徑之間的時序關系。“先有電路,再寫代碼”,RTL代碼的每一條語句都有與之對應的電路單元。

圖1-36
硬件原則還要求我們對所選用的FPGA的內部結構有所認識和了解,以確保RTL代碼風格與FPGA內部結構相匹配,這樣才能保證綜合電路的質量。例如,7系列FPGA中的觸發器復位信號只支持高電平有效,如果代碼中的復位是低電平有效,就會消耗額外的查找表(用于邏輯取反),而UltraScale/UltraScale+FPGA中的觸發器既支持高電平有效,又支持低電平有效。7系列FPGA中的DSP48不支持異步復位,因此,如果代碼中描述的乘法器使用了異步復位,那么相應的觸發器是無法被吸收到DSP48內部的。
綜上所述,硬件原則如下。
(1)使用可綜合的HDL代碼描述電路。
(2)先有電路,再寫代碼。
(3)RTL代碼風格與FPGA內部結構相匹配。
- Software Defined Networking with OpenFlow
- Effective C#:改善C#代碼的50個有效方法(原書第3版)
- Vue.js 2 and Bootstrap 4 Web Development
- Visual FoxPro 程序設計
- 實戰Java程序設計
- C#程序設計教程
- Learning AndEngine
- 數據結構(C語言)
- 碼上行動:用ChatGPT學會Python編程
- Mathematica Data Analysis
- 微信小程序項目開發實戰
- 學習正則表達式
- 移動互聯網軟件開發實驗指導
- Java Web從入門到精通(第3版)
- HTML+CSS+JavaScript網頁制作:從入門到精通(第4版)