国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

VHDL 除法運算可綜合性分析與除法器設計

2012-07-02 00:51:30于德海邢永強
兵器裝備工程學報 2012年6期
關鍵詞:被除數(shù)除數(shù)整數(shù)

曾 鑫,熊 波,于德海,邢永強

(1.海軍某工程建設指揮部,北京 100036;2.海軍航空工程學院,山東 煙臺 264001;3.92514 部隊,山東 煙臺 264001)

除法是數(shù)值計算和數(shù)據(jù)分析中最常用的運算之一,許多高級運算如平方根、指數(shù)、三角函數(shù)等都與其有關[1]。當前的EDA 工具能對“+”、“-”及部分“* ”運算符進行綜合,但是并不能綜合“/”運算,而且,在FPGA 中,提供的乘除法設計向導或提供LPM 宏函數(shù)對除法運算而言,能處理的除數(shù)必須是2 的冪,因此無法實現(xiàn)除數(shù)為任意數(shù)的除法。所以,本文旨在設計一種能被綜合而且除數(shù)能是任意整數(shù)的除法器。

1 VHDL 除法運算的可綜合性

VHDL 并非是針對硬件設計而開發(fā)的語言,只是被用來設計硬件。VHDL 是在美國國防部的指導下,出于采購電子設備的需要,為了不涉及商業(yè)機密和知識產(chǎn)權問題,同時以保證采購廠商即使破產(chǎn),也能由其他廠商迅速生產(chǎn)出代用品而開發(fā)的。它僅僅用來描述供應商的集成電路芯片的行為,以便讓其他廠商按照VHDL 文檔的描述,設計出行為與其相同的芯片,因此,制訂語言標準時,并沒有考慮這些代碼如何用硬件來實現(xiàn)[2]。所以,VHDL 語法標準的代碼是對硬件行為的一種描述,但不能直接對應成電路的設計信息。行為描述可以基于不同的層次,如系統(tǒng)級,算法級,寄存器傳輸級(RTL)、門級等等。目前大部分EDA 軟件只能綜合RTL 或更低層次的行為描述。

對除法而言,要想實現(xiàn)兩個變量相除的運算,如寫下代碼“ans=x/y”,幾乎任何EDA 軟件都不能將其綜合成硬件。經(jīng)典的除法計算方式是,每次比較余數(shù)和除數(shù)的大小,確定商,每做一次減法,保持余數(shù)不動,低位由被除數(shù)低位補進,再減去右移后的除數(shù);對于補碼除法運算,先將除數(shù)和被除數(shù)取模,然后按照原碼的計算方法求出商和余數(shù),再根據(jù)符號對計算結果進行修正[3]。比較被除數(shù)數(shù)(余數(shù))與除數(shù)的大小需要比較器,求余需要減法器,商數(shù)和余數(shù)的中間結果必須有寄存器存儲,下一次比較之前對余數(shù)移位需移位器,時序控制需要狀態(tài)機等等,因而上述代碼的運算不可能在一個時鐘周期里完成。部分FPGA 的配套EDA 軟件提供除法的運算模塊,也只能支持直接調用,而且對除數(shù)要求必須是2的冪,不支持把形如“ans =x/y”的語句綜合成除法模塊,因此編寫由VHDL 設計的、對任意數(shù)值均能適用的、可綜合的除法器對FPGA 數(shù)據(jù)處理十分必要。

2 除法器設計

除法器算法主要有兩種:迭代法與循環(huán)法[4-5]。迭代法所提供的商的最低位不準確。循環(huán)算法是以減法運算為基礎的算法,需要多個循環(huán)周期。該算法的實現(xiàn)比較簡單,所需的硬件資源較少,非常利于芯片的設計。通常情況下,高精度的除法運算在FPGA 實現(xiàn)中往往要消耗大量邏輯資源。Oberman 和Flynn 的研究[6-7]表明循環(huán)算法可以取得較好的時延和資源消耗,而且在計算時延要求較低的應用中,以加長處理時間來降低FPGA 內(nèi)部資源消耗的運算方法具有一定的應用價值。

2.1 循環(huán)算法原理

減法運算是除法運算的基礎,除法運算可以由減法運算來實現(xiàn)[7]。在筆算除法時,習慣是從高位以除數(shù)的位數(shù)為單元進行比較,直到當前比較位的被除數(shù)減去除數(shù)的整數(shù)倍后得到的余數(shù)小于除數(shù)時,確定當前位的商,再移入右邊一位,再做重復比較運算[8]。在FPGA 中,可用VHDL 通過減法運算來實現(xiàn)兩個任意整數(shù)的除法運算。設計的除法器計算方法并不像筆算那樣,從高位以除數(shù)位數(shù)為單元逐一進行比較,其原理是先將被除數(shù)與除數(shù)作減法運算,將被減后的被除數(shù)再次與除數(shù)作減法運算,每進行一次減法運算,計數(shù)器計數(shù)加一,直至被除數(shù)被減后的余數(shù)小于除數(shù)(被除數(shù)和除數(shù)在作減法運算時作為被減數(shù)和減數(shù))。這時計數(shù)器的值就是商的整數(shù)部分,對商的整數(shù)部分的每一位數(shù)值的確定通過判斷計數(shù)器計數(shù)值的大小,比如計數(shù)值大于10 000時,對計數(shù)值作減10 000處理,直到計數(shù)值大小小于10 000,這個減法操作的次數(shù),就是萬位上的數(shù)值,同理得到千位、百位、十位、個位上的數(shù)值。之后計算商的小數(shù)部分,首先將余數(shù)乘10再與除數(shù)作減法運算,操作過程和整數(shù)部分的減法相同,直至余數(shù)小于除數(shù),計數(shù)值得到小數(shù)的十分位,再對余數(shù)乘10作同樣的運算,得到百分位數(shù)值,一直這樣按相同的運算步驟做下去。如果需要保留小數(shù)點后n 位,則需作n +1 次相同的小數(shù)部分運算步驟,判斷第n+1 位小數(shù)的值,用以進行四舍五入運算,再對之前的n 位小數(shù)位和商的整數(shù)位進行修正。

3.2 除法器設計

除法器設計采用VHDL 有限狀態(tài)機來實現(xiàn),設計的除法器的兩個操作數(shù)在(0,40002]之間(根據(jù)應用需要而定的),運算精度要求保留小數(shù)點后兩位。設計流程如圖1 所示。

圖1 除法器軟件設計流程

3.3 仿真結果分析

對設計的除法器,在Quartus II 平臺上進行了時序和功能仿真,并與采用浮點運算算法編寫的除法器[9]進行了比較,在處理兩操作數(shù)大小相當?shù)倪\算時,本文設計的除法器運算速度與浮點運算算法相當,但占用系統(tǒng)資源遠遠小于浮點運算算法,這對某些占用資源多,模塊劃分細的大型系統(tǒng)設計而言,在FPGA 內(nèi)部資源優(yōu)化設計上,尤為重要。除法器的仿真結果如圖2 與圖3 所示。

圖2 與圖3 的區(qū)別主要在算法的時延不同,由圖中時間條可以看出,當兩操作數(shù)相差較大時(圖2),計算結果時延較大,約為132.5 μs,而當兩操作數(shù)相差較小時(圖3),計算結果時延小,約為153 ns,圖中clk 信號的周期和占空比相同。所以設計的除法器對操作數(shù)相當?shù)那闆r下,運算速度快。運算結果經(jīng)四舍五入處理后,精確到小數(shù)點后兩位。

3 結束語

本文以VHDL 編寫了能在FPGA 中可綜合成硬件的除法器代碼,由于設計的除法器應用場合是求出前后兩次采集數(shù)據(jù)的比值,而且兩數(shù)據(jù)大小相當,由仿真結果可知,設計在時延上能很好的滿足要求,同時,綜合后消耗FPGA 的資源相對較低。筆者在進行高精度測試儀設計過程中使用了該模塊,測試結果準確,運算速度較快。

[1]陳玉丹,齊京禮,陳建泗.基于VHDL 的8 位除法器的實現(xiàn)[J].微計算機信息,2006,22(12):277-278.

[2]姜立東.VHDL 語言程序設計及應用[M].北京:北京郵電大學出版社,2007.

[3]陳國軍,萬明康,王大鳴等.乘除法和開方運算的FPGA串行實現(xiàn)[J].微計算機信息,2008,24(5):167-168.

[4]劉志剛,汪旭東,鄭關東.基于SPT 算法的單精度浮點除法器[J].電子設計應用,2008,33(7):59-62.

[5]岳偉甲,劉昌錦.一種基于FPGA 的32 位快速加法器設計[J].四川兵工學報,2011,32(7):78-81.

[6]Oberman S F,F(xiàn)lynn M J.Division algorithm and implementations.IEEE transactions on computers,1997,46(8):833-854.

[7]Oberman S F.Design issuses in high performance floating point arithmetic units.PHD thesis,stanford university,Electrical & electronic department,1997,1.

[8]朱衛(wèi)華,鄭留平.可任意設定計算精度的整數(shù)除法器的VHDL 設計[J]. 國外電子測量技術,2008,27(2):16-18.

[9]許秋華,劉偉.基于FPGA 的浮點運算單元的設計方法[J].大眾科技,2009,10:17-19.

猜你喜歡
被除數(shù)除數(shù)整數(shù)
商一定小于被除數(shù)嗎
除法中的簡便計算
你會算嗎——以“除數(shù)是一位數(shù)的除法”為例
被除數(shù)可能是幾
余數(shù)一定要比除數(shù)小
一類整數(shù)遞推數(shù)列的周期性
被除數(shù)可能是多少
余數(shù)比除數(shù)小
讀寫算(上)(2016年4期)2016-12-01 03:19:52
聚焦不等式(組)的“整數(shù)解”
巧求被除數(shù)
讀寫算(中)(2015年11期)2015-11-07 07:24:49
江油市| 布拖县| 淮南市| 夏津县| 宿松县| 阿合奇县| 晋城| 岗巴县| 高要市| 朔州市| 庆云县| 大荔县| 新乐市| 大方县| 平谷区| 牙克石市| 东平县| 洛南县| 青铜峡市| 乌审旗| 青川县| 革吉县| 仁怀市| 怀集县| 新巴尔虎左旗| 延津县| 双城市| 凌海市| 柞水县| 邻水| 宜阳县| 尼勒克县| 柳州市| 温泉县| 应城市| 江孜县| 阿荣旗| 沛县| 闸北区| 汝南县| 诸暨市|