官术网_书友最值得收藏!

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內部結構相匹配。

主站蜘蛛池模板: 灵武市| 凌云县| 绥宁县| 裕民县| 白玉县| 沐川县| 井研县| 神农架林区| 南充市| 铁力市| 大名县| 华阴市| 兴义市| 阳城县| 珠海市| 苏州市| 楚雄市| 启东市| 普宁市| 开鲁县| 鄢陵县| 博野县| 桐乡市| 成都市| 法库县| 双牌县| 毕节市| 新乡县| 伽师县| 磴口县| 池州市| 江津市| 陇南市| 西青区| 呼伦贝尔市| 固安县| 曲周县| 浦江县| 博野县| 榆中县| 盐池县|