• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      VHDL 除法運(yùn)算可綜合性分析與除法器設(shè)計(jì)

      2012-07-02 00:51:30于德海邢永強(qiáng)
      兵器裝備工程學(xué)報(bào) 2012年6期
      關(guān)鍵詞:被除數(shù)除數(shù)整數(shù)

      曾 鑫,熊 波,于德海,邢永強(qiáng)

      (1.海軍某工程建設(shè)指揮部,北京 100036;2.海軍航空工程學(xué)院,山東 煙臺(tái) 264001;3.92514 部隊(duì),山東 煙臺(tái) 264001)

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

      1 VHDL 除法運(yùn)算的可綜合性

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

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

      2 除法器設(shè)計(jì)

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

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

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

      3.2 除法器設(shè)計(jì)

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

      圖1 除法器軟件設(shè)計(jì)流程

      3.3 仿真結(jié)果分析

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

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

      3 結(jié)束語

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

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

      [2]姜立東.VHDL 語言程序設(shè)計(jì)及應(yīng)用[M].北京:北京郵電大學(xué)出版社,2007.

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

      [4]劉志剛,汪旭東,鄭關(guān)東.基于SPT 算法的單精度浮點(diǎn)除法器[J].電子設(shè)計(jì)應(yīng)用,2008,33(7):59-62.

      [5]岳偉甲,劉昌錦.一種基于FPGA 的32 位快速加法器設(shè)計(jì)[J].四川兵工學(xué)報(bào),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è)定計(jì)算精度的整數(shù)除法器的VHDL 設(shè)計(jì)[J]. 國(guó)外電子測(cè)量技術(shù),2008,27(2):16-18.

      [9]許秋華,劉偉.基于FPGA 的浮點(diǎn)運(yùn)算單元的設(shè)計(jì)方法[J].大眾科技,2009,10:17-19.

      猜你喜歡
      被除數(shù)除數(shù)整數(shù)
      商一定小于被除數(shù)嗎
      除法中的簡(jiǎn)便計(jì)算
      你會(huì)算嗎——以“除數(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
      武义县| 桃源县| 科技| 罗平县| 陇南市| 台南县| 全州县| 邓州市| 共和县| 呼伦贝尔市| 白河县| 阿城市| 东乌| 公主岭市| 富源县| 余干县| 湖北省| 驻马店市| 景宁| 乐陵市| 宜州市| 合肥市| 夏津县| 罗江县| 兴山县| 康乐县| 兴和县| 泽库县| 屯留县| 新和县| 珠海市| 马鞍山市| 梓潼县| 阜城县| 成武县| 聂拉木县| 新竹县| 墨脱县| 始兴县| 池州市| 乌拉特后旗|