黃政凱 劉冰洋 翟明明 羅二平 劉娟
(空軍軍醫大學軍事生物醫學工程學系 陜西省西安市 710032)
FPGA 技術作為ASIC 專用集成電路領域中的一種半定制電路而出現,一方面解決了定制電路的不足,另一方面克服了原有可編程器件門電路數有限的缺點,是在PAL、GAL、GPLD 等技術基礎上進一步發展的產物。我們知道,FPGA 技術可將DSP 的性能提升至最大化,且傳統處理器的性能增長趨勢放緩,因此該技術在DSP領域的應用越來越普及[1]。利用FPGA 領先的并行機制可實現DSP的架構功能,這種并行機制可以完成類似“濾波”這樣重復性的DSP 任務。因此,對于執行高度并行的DSP 任務來說,FPGA 技術的處理速度要遠高于DSP 處理器的處理速度,而且其性能也遠遠超過通用DSP 處理器的串行執行架構[2-3]。
加法器是數字計算系統中的基本邏輯器件,也是其他所有硬件運算的基礎,減法器和乘法器都可由加法器來實現,大大地節省了邏輯資源。我們知道,設計寬位的加法器耗費硬件資源相對多一些,因此,在系統的具體設計與實現過程中需要重點考慮“資源的利用率”和“速度”這兩方面的因素。基于此,首先選擇合適的目標器件,一般會考慮FPGA、CPLD 等較為合適的組合邏輯設計的器件;其次,結合加法器邏輯結構的設計、加法器的處理速度及芯片資源的利用率等方面,來探究最佳組合[4]。本文主要介紹了16 位最佳精度定點加法器的硬件實現方法,采用VHDL 語言,在一般的FPGA 上,實現了定點加法運算功能,并總結其優缺點,進行代碼優化。
為了提高芯片的利用率,節省硬件資源,并擴大輸入數據的范圍,根據“保持最佳精度的定點數運算法則”對算法進行代碼優化,設計出算法性能更好的最佳精度定點加法器。
首先,可以通過把小數點位置定標為數量級來解決輸入定點數的數值范圍小的問題,此時的q 值可正可負,這種標定小數點位置的方法極大地擴展了輸入定點數的數值范圍。
其次,具體提出“輸入和輸出位寬均定義為16 位”及“采用節拍(時鐘)來控制移位操作”這兩種解決方案,來提高芯片利用率,從而節省硬件資源。
方案具體設計如下:
令dq=aq-bq,根據dq 的值分為表1所示的三種情況。
另外,由于輸出的位寬定義為16 位,如果兩個16 位二進制數的最高位都為‘1’,則相加結果就為17 位,為防止計算溢出,可以嘗試在算法中定義17 位的中間變量,在輸入前補一個‘0’賦給中間變量,再進行加法操作。這樣進行加法運算所得的和為17 位,而輸出定義又為16 位,為了解決這個問題,具體可按表2所示方法處理。

圖1:仿真結果6.25+3.5=9.75

圖2:仿真結果1.5+1.75=3.25

圖3:仿真結果1226112+6389.25=1232480 (1232501.25)

圖4:仿真結果2394.75+6389.25=8784 (8784)

表1

表2
這種處理方法不僅可以保證硬件加法器16 位的位寬輸出,達到了節約硬件資源的目的,也可以確保輸出數據的最佳精度,因此我們把其稱為“16 位最佳精度加法器”。
為驗證所設計的加法器,選取幾組數據對其進行仿真。等號后的值為在保證數值最佳精度的情況下的計算結果,括號內的值為保持全精度的計算結果。圖1、圖2、圖3、圖4 是其中的部分仿真圖。
從運算開始到運算結束的時間最長在220ns 左右,此時間是由移動的位數來決定的,相對來說速度很高,雖然輸出位寬控制在16位,但是保證了輸出結果的最佳精度,避免了由于數據溢出導致的運算精度的嚴重惡化。該算法由于采用數量級來標定小數點的位置擴大了定點數的輸入范圍,采用時鐘控制移位并限制了輸入和輸出的位寬,大大節省了硬件資源,共使用182 個邏輯門,比上一種方法減少了419 個的使用量,提高了芯片的利用率。
該算法采用VHDL 語言中的狀態機實現了兩個定點數的相加運算,并給出最終輸出的小數點位置,代碼結構簡單、思路清晰,且該算法可以擴展到任意位數,可以說是在加法器邏輯結構的設計上,在加法器的處理速度、運算精度及芯片資源的利用率等方面權衡得失的一種最佳算法。