• 
    

    
    

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

      基于FPGA的除法器設(shè)計

      2010-11-23 00:45:31姚茂群葉漢能張立彬
      關(guān)鍵詞:左移被除數(shù)除數(shù)

      姚茂群,葉漢能,張立彬

      (杭州師范大學(xué) 信息科學(xué)與工程學(xué)院,浙江 杭州 310036)

      在FPGA得到廣泛應(yīng)用的情況下,應(yīng)用過程中有時需要確定數(shù)據(jù)之間的具體倍數(shù)關(guān)系,因此很多公司針對自己的芯片開發(fā)了相應(yīng)的除法器IP核.但是這些算法存在一些限制,比如要求除數(shù)是2的指數(shù)冪、運算數(shù)據(jù)為整數(shù)以及精度受到限制[1-2]等.在加、減、乘運算的設(shè)計已實現(xiàn)的情況下,要實現(xiàn)除法運算,可以有2種方案:將除法轉(zhuǎn)換為乘法或采用減法與移位的組合[3].結(jié)合實際電路的情況,該文以二進制數(shù)為例,采用減法與移位的組合,設(shè)計一種通用且任意精度的二進制數(shù)除法器.整個設(shè)計、分析過程均在Altera FPGA EP1C6Q240C8環(huán)境下進行驗證.

      1 實現(xiàn)過程

      以8位無符號數(shù)的除法為例,商根據(jù)所需精度設(shè)計相應(yīng)位數(shù).具體設(shè)計過程如下:

      1) 設(shè)計9位數(shù)中間變量C,其高8位的初始值為“00000000”,最低位置入A的最高位數(shù),然后將被除數(shù)A進行一位左移,最低位置入“0”;設(shè)計9位數(shù)中間變量D,將其最高位設(shè)置為“0”,低8位為被除數(shù)B.

      2) 在時鐘的上升沿,將C與D進行比較.如果C大于或等于D,則由高到低將商中相應(yīng)的位置“1”,并用C減去D,將其差值重新賦予C;如果C小于D,則由高到低將商中相應(yīng)的位置“0”.

      3) 在時鐘下降沿,C左移一位,最低位置入A的最高位;A左移一位,最低位置入“0”.在時鐘上升沿回到2)過程.

      以上2)和3)間的循環(huán)次數(shù)取決于需要得到的商的精度.

      2 實現(xiàn)方式

      圖1 除法器模塊圖

      該設(shè)計采用EDA的基本思想,分模塊進行,主要包括移位模塊、比較模塊、減法模塊,并將各模塊進行整合,實現(xiàn)完整的除法器電路.各模塊如圖1所示.

      2.1 移位模塊

      根據(jù)時鐘信號對移位寄存器中的數(shù)據(jù)C進行由低位向高位的移位操作,并將被除數(shù)A的最高位置入寄存器最低位.對被除數(shù)A進行左移時,將其最低位置入“0”.

      2.2 比較模塊

      根據(jù)時鐘信號對輸入數(shù)據(jù)進行由高位到低位的逐次比較,并將結(jié)果中大于和等于歸為一類,輸出相應(yīng)的比較結(jié)果“1”,將小于歸為一類,輸出相應(yīng)信號“0”.

      2.3 減法模塊

      根據(jù)比較模塊輸出的信號控制減法模塊的工作情況,從而實現(xiàn)只有在被減數(shù)大于或等于減數(shù)的時候進行運算.設(shè)計中運用將減法轉(zhuǎn)化為加法的思路來設(shè)計適合該除法器的減法器.

      該模塊用VHDL描述如下:

      LIBRARY IEEE ;

      USE IEEE.STD_LOGIC_1164.ALL ;

      USE IEEE.STD_LOGIC_UNSIGNED.ALL ;

      ENTITY MINUS IS

      PORT (

      CLK : IN STD_LOGIC ;

      INPUTA, INPUTB : IN STD_LOGIC_VECTOR(8 DOWNTO 0);

      S : OUT STD_LOGIC_VECTOR(8 DOWNTO 0)

      END;

      ARCHITECTURE ONE OF MINUS IS

      BEGIN

      PROCESS(CLK)

      VARIABLE DB : STD_LOGIC_VECTOR(8 DOWNTO 0);

      BEGIN

      DB := (NOT INPUTB)+1;

      設(shè)計意圖: 在前面的構(gòu)建模型環(huán)節(jié)只是簡要地提出種群數(shù)量J型增長的條件,該環(huán)節(jié)以澳大利亞野兔泛濫的實例具體分析原因,歸納出種群數(shù)量J型增長的條件。

      IF CLK’EVENT AND CLK=‘1’ THEN

      S <= INPUTA + DB ;

      END IF;

      END PROCESS;

      END;

      該減法器RTL圖如圖2所示.

      圖2 減法器RTL圖

      將以上模塊整合,并要求商精確到二進制數(shù)小數(shù)點后面8位,用QuartusⅡ?qū)Τㄆ鬟M行仿真,得到仿真波形如圖3.

      圖3 除法器仿真結(jié)果

      圖3中A和B對應(yīng)被除數(shù)和除數(shù),S為商,且S高8位為整數(shù)部分,低8位為小數(shù)部分,圖中除數(shù)為“00110011”,被除數(shù)或者除數(shù)的變化將觸發(fā)除法器進行計算.當被除數(shù)是“11110000”時結(jié)果為“100.10110100”;當被除數(shù)是“00001000”時結(jié)果為“0.00101000”.可根據(jù)需要的精確程度來設(shè)置相應(yīng)參數(shù),控制循環(huán)變量和商位數(shù),從而得到相應(yīng)的商.

      3 結(jié) 論

      在已有的一些除法器設(shè)計中,較多采用的是結(jié)果帶余數(shù)的辦法,該設(shè)計是計算結(jié)果精確到小數(shù)的一種方法.由于減法操作中被減數(shù)和減數(shù)可能在最高位同時不為“0”,而且不夠減,針對這種情況在設(shè)計移位寄存器時將其位數(shù)設(shè)計成比被除數(shù)和除數(shù)多一位,保證被除數(shù)在再一次移位時高位非“0”數(shù)據(jù)不會丟失.

      設(shè)計過程中,僅涉及移位、比較和減法操作,原理簡單,便于實現(xiàn).采用VHDL語言編寫,通過參數(shù)打包的辦法[4],使得運用時能方便地實現(xiàn)可控精度的除法運算,增加了適用范圍,具有較大的靈活性,便于移植.同時克服了部分除法器僅適用于除數(shù)是2的指數(shù)冪以及運算數(shù)據(jù)為整數(shù)等缺點,擴大了運算范圍,提高了計算精度.

      通過EDA的設(shè)計思想,采用VHDL語言對各模塊進行描述,最后調(diào)用這些模塊完成整個除法器的設(shè)計.對其結(jié)構(gòu)和功能進行驗證,結(jié)果表明其電路簡潔、高效.通過控制循環(huán)變量和商的位數(shù),可實現(xiàn)任意精度的除法計算,計算結(jié)果準確.

      [1] 胡修林,楊志專,張?zhí)N玉.基于FPGA的快速除法算法設(shè)計與實現(xiàn)[J].自動化技術(shù)與應(yīng)用,2006,25(11):27-29.

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

      [3] 郭松,徐世亮,萬里勇.巧用數(shù)組實現(xiàn)除法的高精度計算[J].計算機與信息技術(shù),2007,36:442.

      [4] 雷伏容.VHDL電路設(shè)計[M].北京:清華大學(xué)出版社,2008:145-185.

      猜你喜歡
      左移被除數(shù)除數(shù)
      商一定小于被除數(shù)嗎
      華容道玩法大解密
      除法中的簡便計算
      你會算嗎——以“除數(shù)是一位數(shù)的除法”為例
      被除數(shù)可能是幾
      余數(shù)一定要比除數(shù)小
      被除數(shù)可能是多少
      余數(shù)比除數(shù)小
      讀寫算(上)(2016年4期)2016-12-01 03:19:52
      巧求被除數(shù)
      讀寫算(中)(2015年11期)2015-11-07 07:24:49
      C語言位運算中鮮為人知的事
      軟件工程(2014年5期)2014-09-24 11:53:38
      昌吉市| 灵宝市| 沿河| 太仆寺旗| 平定县| 勃利县| 宁国市| 枣庄市| 广水市| 乐都县| 遵化市| 平谷区| 茌平县| 建水县| 云阳县| 晴隆县| 陇南市| 共和县| 留坝县| 普定县| 平江县| 武隆县| 尚义县| 曲靖市| 东明县| 平舆县| 民县| 神木县| 文昌市| 潜江市| 左贡县| 蓝山县| 沾化县| 平果县| 寻乌县| 吉木乃县| 淅川县| 凤城市| 青川县| 乌鲁木齐县| 郑州市|