專利名稱:一種定點(diǎn)除法器及其實(shí)現(xiàn)運(yùn)算的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字電路技術(shù),尤指一種定點(diǎn)除法器及其實(shí)現(xiàn)運(yùn)算的方法。
背景技術(shù):
在數(shù)字信號(hào)處理中,經(jīng)常會(huì)涉及到除法運(yùn)算電路。但是在高級(jí)硬件描述語(yǔ)言中沒(méi)有可綜合的除法語(yǔ)句,如VHDL和Verilog HDL都沒(méi)有提供除法相關(guān)的語(yǔ)句。目前,其中一種定點(diǎn)除法電路裝置中,包括有乘法運(yùn)算單元,電路結(jié)構(gòu)非常復(fù)雜,消耗的邏輯門電路較多,延遲較大;另外一種除法電路則采用了二級(jí)運(yùn)算構(gòu)成的冗余碼與二進(jìn)制混合使用的冗余碼加法單元組成除法陣列,并采用二選一的選擇器構(gòu)成將冗余碼的商直接轉(zhuǎn)換成二進(jìn)制形式的陣列轉(zhuǎn)換電路,其電路結(jié)構(gòu)同樣比較復(fù)雜,占用資源較多;還有一種是以微處理器為運(yùn)算平臺(tái),由指令實(shí)現(xiàn)的除法運(yùn)算,采用二進(jìn)制的位移及加法的技巧以減化除法的運(yùn)算過(guò)程,但沒(méi)有提供相關(guān)運(yùn)算電路裝置。
除此之外,在Celoxica公司的Handel C語(yǔ)言的邏輯電路開發(fā)工具中提供了實(shí)現(xiàn)除法的相關(guān)模塊,但其資源消耗較大,以一個(gè)32位除以32位的除法器為例,需要等效電路門數(shù)約44000門,最大組合邏輯路徑延遲時(shí)間需333ns。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種定點(diǎn)除法器,該定點(diǎn)除法器電路結(jié)構(gòu)簡(jiǎn)單。
本發(fā)明的另一目的在于提供一種定點(diǎn)除法器實(shí)現(xiàn)運(yùn)算的方法,能夠降低運(yùn)算延遲,節(jié)約資源。
為達(dá)到上述目的,本發(fā)明的技術(shù)方案具體是這樣實(shí)現(xiàn)的
一種定點(diǎn)除法器,該定點(diǎn)除法器包括符號(hào)發(fā)生器100,接收除數(shù)和被除數(shù),根據(jù)除數(shù)和被除數(shù)的符號(hào)位獲得商的符號(hào)位并輸出;絕對(duì)值發(fā)生器101,接收除數(shù)和被除數(shù),獲取除數(shù)和被除數(shù)的絕對(duì)值,并輸出;判別器102,分別接收除數(shù)絕對(duì)值和被除數(shù)絕對(duì)值,判斷被除數(shù)絕對(duì)值是否大于或等于除數(shù)絕對(duì)值,若是,則觸發(fā)位差發(fā)生器103;否則,觸發(fā)商發(fā)生器104;位差發(fā)生器103,分別接收除數(shù)和被除數(shù)絕對(duì)值,計(jì)算被除數(shù)的最高有效位與除數(shù)的最高有效位之差,獲得被除數(shù)絕對(duì)值與除數(shù)絕對(duì)值的位差并輸出;商發(fā)生器104,接收商的符號(hào)位、除數(shù)的絕對(duì)值,被除數(shù)的絕對(duì)值,以及位差,輸出有符號(hào)的商結(jié)果;或者接收來(lái)自判別器(102)的觸發(fā),輸出零。
所述定點(diǎn)除法器還包括除數(shù)絕對(duì)值寄存器和被除數(shù)絕對(duì)值寄存器;所述絕對(duì)值發(fā)生器101包括除數(shù)絕對(duì)值發(fā)生器和被除數(shù)絕對(duì)值發(fā)生器;所述除數(shù)絕對(duì)值發(fā)生器,用于接收除數(shù),獲取除數(shù)絕對(duì)值,并將所述除數(shù)絕對(duì)值輸出到除數(shù)絕對(duì)值寄存器;所述被除數(shù)絕對(duì)值發(fā)生器,用于接收被除數(shù),獲取被除數(shù)絕對(duì)值,并將所述被除數(shù)絕對(duì)值輸出到被除數(shù)絕對(duì)值寄存器中。
所述位差發(fā)生器103包括最高有效位數(shù)發(fā)生電路和位差發(fā)生電路;所述最高有效位數(shù)發(fā)生電路,用于接收除數(shù)絕對(duì)值或被除數(shù)絕對(duì)值,分別獲取除數(shù)或被除數(shù)的最高有效位數(shù)并輸出;所述位差發(fā)生電路,用于接收除數(shù)的最高有效位數(shù)和被除數(shù)的最高有效位數(shù),計(jì)算被除數(shù)的最高有效位與除數(shù)的最高有效位的數(shù)位之差,獲得被除數(shù)絕對(duì)值與除數(shù)絕對(duì)值的位差,并將所述位差輸出到位差寄存器中。
所述定點(diǎn)除法器還包括第一寄存器和第二寄存器;所述最高有效位發(fā)生電路包括除數(shù)最高有效位數(shù)發(fā)生電路和被除數(shù)最高有效位數(shù)發(fā)生電路;所述除數(shù)最高有效位數(shù)發(fā)生電路,用于接收除數(shù)絕對(duì)值,獲取除數(shù)的最高有效位數(shù),并將所述除數(shù)的最高有效位數(shù)輸出到第一寄存器中;所述被除數(shù)最高有效位數(shù)發(fā)生電路,用于接收被除數(shù)絕對(duì)值,獲取被除數(shù)的最高有效位數(shù),并將所述被除數(shù)的最高有效位數(shù)輸出到第二寄存器中。
所述商發(fā)生器104包括差發(fā)生電路和商發(fā)生電路;所述差發(fā)生電路至少包括加法器、判斷器、左移器和計(jì)數(shù)器;其中,所述左移器,用于接收除數(shù)絕對(duì)值、被除數(shù)絕對(duì)值、以及位差,將被除數(shù)絕對(duì)值左移位差位,并輸出給加法器;或者接收來(lái)自判斷器的第一通知,自身輸出的被減數(shù)絕對(duì)值左移1位,并將結(jié)果輸出給加法器;或者接收來(lái)自加法器的差值,將差值左移1位并加1,并將結(jié)果輸出給加法器,同時(shí)向計(jì)數(shù)器發(fā)送計(jì)數(shù)通知;所述加法器,用于接收除數(shù)絕對(duì)值,和來(lái)自左移器輸出的值,計(jì)算二者之差的值,并將結(jié)果輸出給判斷器;或者接收來(lái)自判斷器的第二通知,將差值輸出給左移器;所述判斷器,用于接收來(lái)自加法器的差值,判斷該差值是否小于0,如果是,向左移器輸出第一通知,否則,向加法器輸出第二通知;所述計(jì)數(shù)器,用于接收來(lái)自左移器的計(jì)數(shù)通知,開始計(jì)數(shù),并且在計(jì)算值大于位差值時(shí),輸出被減數(shù)絕對(duì)值的低位的位差值加1位到商發(fā)生電路;所述商發(fā)生電路,接收商的符號(hào)位、以及差發(fā)生電路輸出的被減數(shù)的低位的位差值加1位,將該被減數(shù)的低位的位差值加1位作為商,并根據(jù)符號(hào)位發(fā)生器輸出的符號(hào)位,輸出有符號(hào)的商結(jié)果;或接收來(lái)自所述判別器的觸發(fā),輸出零。
所述定點(diǎn)除法器還包括存儲(chǔ)除數(shù)的除數(shù)寄存器,和存儲(chǔ)被除數(shù)的被除數(shù)寄存器。
一種定點(diǎn)除法器實(shí)現(xiàn)運(yùn)算的方法,包括以下步驟A.獲取除數(shù)和被除數(shù)的絕對(duì)值;根據(jù)除數(shù)和被除數(shù)的符號(hào)位,獲取商的符號(hào)位并存儲(chǔ);B.判斷被除數(shù)絕對(duì)值是否大于或等于除數(shù)絕對(duì)值,若是,則計(jì)算被除數(shù)的最高有效位與除數(shù)的最高有效位之差,獲得位差,進(jìn)入步驟C;否則,輸出零并結(jié)束;C.根據(jù)商的符號(hào)位、除數(shù)或被除數(shù)絕對(duì)值,以及位差,獲取被除數(shù)與除數(shù)的商值。
步驟A中所述獲取除數(shù)和被除數(shù)絕對(duì)值的方法為判斷所述除數(shù)或被除數(shù)的最高位的取值,如果所述除數(shù)或被除數(shù)的最高位為0,則除數(shù)或被除數(shù)的絕對(duì)值等于自身,否則,除數(shù)或被除數(shù)的絕對(duì)值等于除數(shù)或被除數(shù)的補(bǔ)碼。
步驟A中所述獲取商的符號(hào)位的方法為判斷所述除數(shù)和被除數(shù)的最高位是否相等,如果相等,則商的符號(hào)位為正,否則,商的符號(hào)為負(fù)。
所述步驟C具體包括C1.將所述被除數(shù)絕對(duì)值左移位差位,并計(jì)算除數(shù)絕對(duì)值作為減數(shù)與左移后的被除數(shù)絕對(duì)值作為被減數(shù)之差,判斷該差值是否小于0,如果是,則將被減數(shù)左移1位,作為下一次減法運(yùn)算的被減數(shù),否則,將該差值左移1位并加1,作為下一次減法運(yùn)算的被減數(shù);C2.開始以遞增1的方式計(jì)數(shù),反復(fù)進(jìn)行步驟C1的減法運(yùn)算,直到計(jì)數(shù)器的計(jì)數(shù)值大于位差值為止,輸出被減數(shù)絕對(duì)值的低位的位差值加1位;C3.將該被減數(shù)絕對(duì)值的低位的位差值加1位作為商,并根據(jù)所述符號(hào)位,輸出有符號(hào)的商結(jié)果。
所述步驟C3具體包括判斷被除數(shù)的絕對(duì)值是否小于除數(shù)的絕對(duì)值,如果是,則商為零;否則,進(jìn)一步判斷所述符號(hào)位是否為1,如果是,則商為將數(shù)值1左移位差位后減1,所得值與被減數(shù)進(jìn)行邏輯與運(yùn)算的負(fù)值,否則,商為將數(shù)值1左移位差位后減1,所得值與被減數(shù)進(jìn)行邏輯與運(yùn)算的值。
由上述技術(shù)方案可見(jiàn),本發(fā)明定點(diǎn)除法器把除法運(yùn)算轉(zhuǎn)化化成移位運(yùn)算和減法運(yùn)算,與現(xiàn)有技術(shù)相比,便于硬件電路的實(shí)現(xiàn),較少了所用器件門數(shù),縮短了運(yùn)算時(shí)間,提高了運(yùn)算效率,取得了較好的效果。
圖1是本發(fā)明定點(diǎn)除法器組成示意圖;圖2是本發(fā)明符號(hào)發(fā)生器組成示意圖;圖3是本發(fā)明被除數(shù)絕對(duì)值發(fā)生電路組成示意圖;圖4a是本發(fā)明位差發(fā)生器中的被除數(shù)的最高有效位數(shù)發(fā)生電路組成示意圖;圖4b是本發(fā)明位差發(fā)生器中的位差發(fā)生電路組成示意圖;圖5a是本發(fā)明商發(fā)生器中的除數(shù)與被除數(shù)之差發(fā)生電路組成示意圖;圖5b是本發(fā)明商發(fā)生器中的商發(fā)生電路組成示意圖。
具體實(shí)施例方式
本發(fā)明的核心思想是獲取除數(shù)和被除數(shù)的絕對(duì)值,根據(jù)除數(shù)和被除數(shù)的符號(hào)位,獲取商的符號(hào)位并存儲(chǔ);判斷被除數(shù)絕對(duì)值是否大于或等于除數(shù)絕對(duì)值,若是,則計(jì)算被除數(shù)的最高有效位與除數(shù)的最高有效位的數(shù)位之差,獲得位差,并根據(jù)商的符號(hào)位、除數(shù)或被除數(shù)絕對(duì)值,以及位差,獲取被除數(shù)與除數(shù)的商值;否則輸出零。
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉較佳實(shí)施例,對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。
圖1是本發(fā)明定點(diǎn)除法器組成示意圖,本發(fā)明定點(diǎn)除法器包括符號(hào)位發(fā)生器100、絕對(duì)值發(fā)生器101、判別器102、位差發(fā)生器103、商發(fā)生器104及存儲(chǔ)數(shù)據(jù)的寄存器,圖1中未示出用于存儲(chǔ)運(yùn)算數(shù)據(jù)結(jié)果的寄存器。
其中,符號(hào)發(fā)生器100,接收除數(shù)和被除數(shù),分別通過(guò)判定除數(shù)和被除數(shù)的符號(hào)位,獲得商的符號(hào)位,并輸出保存。
所述判定的方法可以是判斷除數(shù)和被除數(shù)的最高位是否相等,如果相等,則商的最高位為0即商的符號(hào)為正,否則,商的最高位為1即商的符號(hào)為負(fù)。
絕對(duì)值發(fā)生器101,包括除數(shù)絕對(duì)值發(fā)生器和被除數(shù)絕對(duì)值發(fā)生器,接收除數(shù)/被除數(shù),通過(guò)運(yùn)算獲取除數(shù)/被除數(shù)的絕對(duì)值,并輸出保存。
運(yùn)算的方法可以是如果除數(shù)/被除數(shù)的最高位為0,則除數(shù)/被除數(shù)的絕對(duì)值等于自身,否則,除數(shù)/被除數(shù)的絕對(duì)值等于除數(shù)/被除數(shù)的補(bǔ)碼。
判別器102,分別接收除數(shù)絕對(duì)值和被除數(shù)絕對(duì)值,判斷被除數(shù)絕對(duì)值是否大于或等于除數(shù)絕對(duì)值,若是,則觸發(fā)位差發(fā)生器103;否則,觸發(fā)商發(fā)生器104,商發(fā)生器輸出為0即低電平。
比如判別器輸出為1即高電平,則觸發(fā)位差發(fā)生器103;否則,觸發(fā)商發(fā)生器104。
位差發(fā)生器103,分別接收除數(shù)和被除數(shù)絕對(duì)值,計(jì)算被除數(shù)的最高有效位與除數(shù)的最高有效位的數(shù)位之差,獲得被除數(shù)絕對(duì)值與除數(shù)絕對(duì)值的位差,并存儲(chǔ);位差發(fā)生器103包括最高有效位發(fā)生電路和位差發(fā)生電路,其中,最高有效位數(shù)發(fā)生電路包括除數(shù)最高有效位數(shù)發(fā)生電路和被除數(shù)最高有效位數(shù)發(fā)生電路。除數(shù)最高有效位數(shù)發(fā)生電路和被除數(shù)最高有效位數(shù)發(fā)生電路分別接收來(lái)自除數(shù)絕對(duì)值寄存器和被除數(shù)絕對(duì)值寄存器中的除數(shù)絕對(duì)值和被除數(shù)絕對(duì)值,分別獲取除數(shù)和被除數(shù)的最高有效位數(shù),并存儲(chǔ)在寄存器n和寄存器m中;位差發(fā)生電路分別從寄存器n和寄存器m中獲取除數(shù)和被除數(shù)的最高有效位數(shù),計(jì)算被除數(shù)的最高有效位與除數(shù)的最高有效位的數(shù)位之差,獲得被除數(shù)絕對(duì)值與除數(shù)絕對(duì)值的位差,并存儲(chǔ)。
商發(fā)生器104,接收商的符號(hào)位、除數(shù)/被除數(shù)絕對(duì)值、以及位差,將被除數(shù)左移位差位,并將除數(shù)作為減數(shù)、將左移后的被除數(shù)作為被減數(shù),計(jì)算二者之差,判斷差值是否小于0,如果是,則將被減數(shù)左移1位,作為下一次減法運(yùn)算的被減數(shù),否則,將差值左移1位并加1,作為下一次減法運(yùn)算的被減數(shù),同時(shí)開始計(jì)數(shù),反復(fù)執(zhí)行上述減法運(yùn)算,直到計(jì)數(shù)器大于位差值為止,取被減數(shù)的低(位差值+1)位作為商,并根據(jù)符號(hào)位發(fā)生器輸出的符號(hào)位,輸出有符號(hào)的商結(jié)果;或接收來(lái)自判別器102的觸發(fā),輸出0。
商發(fā)生器104包括差發(fā)生電路和商發(fā)生電路,其中,差發(fā)生電路接收除數(shù)/被除數(shù)絕對(duì)值、以及位差,將被除數(shù)絕對(duì)值左移位差位,并計(jì)算除數(shù)絕對(duì)值作為減數(shù)與左移后的被除數(shù)絕對(duì)值作為被減數(shù)之差,判斷差值是否小于0,如果是,則將被減數(shù)左移1位,作為下一次減法運(yùn)算的被減數(shù),否則,將差值左移1位并加1,作為下一次減法運(yùn)算的被減數(shù),同時(shí)開始計(jì)數(shù),反復(fù)進(jìn)行以上減法運(yùn)算,直到計(jì)數(shù)器大于位差值為止,輸出被減數(shù)絕對(duì)值的低(位差值+1)位。具體來(lái)說(shuō),差發(fā)生電路至少包括加法器、判斷器、左移器和計(jì)數(shù)器,其中,左移器用于接收除數(shù)絕對(duì)值、被除數(shù)絕對(duì)值、以及位差,將被除數(shù)絕對(duì)值左移位差位,并輸出給加法器;或者接收來(lái)自判斷器的第一通知,自身輸出的被減數(shù)絕對(duì)值左移1位,并將結(jié)果輸出給加法器;或者接收來(lái)自加法器的差值,將差值左移1位并加1,并將結(jié)果輸出給加法器,同時(shí)向計(jì)數(shù)器發(fā)送計(jì)數(shù)通知;所述加法器,用于接收除數(shù)絕對(duì)值,和來(lái)自左移器輸出的值,計(jì)算二者之差的值,并將結(jié)果輸出給判斷器;或者接收來(lái)自判斷器的第二通知,將差值輸出給左移器;判斷器用于接收來(lái)自加法器的差值,判斷該差值是否小于0,如果是,向左移器輸出第一通知,否則,向加法器輸出第二通知;計(jì)數(shù)器用于接收來(lái)自左移器的計(jì)數(shù)通知,開始計(jì)數(shù),并且在計(jì)算值大于位差值時(shí),輸出被減數(shù)絕對(duì)值的低位的位差值加1位到商發(fā)生電路。
商發(fā)生電路接收來(lái)自符號(hào)位發(fā)生器輸出的符號(hào)位、以及差發(fā)生電路輸出的被減數(shù)絕對(duì)值的低(位差值+1)位,將該被減數(shù)的低(位差值+1)位作為商,并根據(jù)符號(hào)位發(fā)生器輸出的符號(hào)位,輸出有符號(hào)的商結(jié)果;或接收來(lái)自判別器的觸發(fā),輸出0。
結(jié)合圖1,本發(fā)明定點(diǎn)除法器實(shí)現(xiàn)運(yùn)算的方法包括獲取除數(shù)和被除數(shù)的絕對(duì)值;根據(jù)除數(shù)和被除數(shù)的符號(hào)位,獲取商的符號(hào)位并存儲(chǔ);判斷被除數(shù)絕對(duì)值是否大于或等于除數(shù)絕對(duì)值,若是,則計(jì)算被除數(shù)的最高有效位與除數(shù)的最高有效位之差,獲得位差,根據(jù)商的符號(hào)位、除數(shù)或被除數(shù)絕對(duì)值,以及位差,獲取被除數(shù)與除數(shù)的商值;否則,輸出零。
其中,獲取除數(shù)和被除數(shù)絕對(duì)值的方法為判斷所述除數(shù)/被除數(shù)的最高位的取值,如果所述除數(shù)/被除數(shù)的最高位為0,則除數(shù)/被除數(shù)的絕對(duì)值等于自身,否則,除數(shù)/被除數(shù)的絕對(duì)值等于除數(shù)/被除數(shù)的補(bǔ)碼。
其中,獲取商的符號(hào)位的方法為判斷所述除數(shù)和被除數(shù)的最高位是否相等,如果相等,則商的符號(hào)位為正,否則,商的符號(hào)為負(fù)。
其中,根據(jù)商的符號(hào)位、除數(shù)絕對(duì)值或被除數(shù)絕對(duì)值,以及位差,獲取被除數(shù)與除數(shù)的商值的方法位首先,將所述被除數(shù)絕對(duì)值左移位差位,并計(jì)算除數(shù)絕對(duì)值作為減數(shù)與左移后的被除數(shù)絕對(duì)值作為被減數(shù)之差,判斷該差值是否小于0,如果是,則將被減數(shù)絕對(duì)值左移1位,作為下一次減法運(yùn)算的被減數(shù),否則,將該差值左移1位并加1,作為下一次減法運(yùn)算的被減數(shù);之后,開始以遞增1的方式計(jì)數(shù),反復(fù)進(jìn)行步驟C1的減法運(yùn)算,直到計(jì)數(shù)器的計(jì)數(shù)值大于位差值為止,輸出被減數(shù)絕對(duì)值的低位的位差值加1位;最后,將該被減數(shù)絕對(duì)值的低位的位差值加1位作為商,并根據(jù)所述符號(hào)位,輸出有符號(hào)的商結(jié)果,具體實(shí)現(xiàn)包括判斷被除數(shù)的絕對(duì)值是否小于除數(shù)的絕對(duì)值,如果是,則商為零;否則,進(jìn)一步判斷所述符號(hào)位是否為1,如果是,則商為將數(shù)值1左移位差位后減1,所得值與被減數(shù)進(jìn)行邏輯與運(yùn)算的負(fù)值,否則,商為將數(shù)值1左移位差位后減1,所得值與被減數(shù)進(jìn)行邏輯與運(yùn)算的值。
下面舉實(shí)施例分別詳細(xì)介紹本發(fā)明除法器各組成部分的實(shí)現(xiàn)。
圖2是本發(fā)明符號(hào)發(fā)生器組成示意圖,如圖2所示,符號(hào)位發(fā)生器100主要包括復(fù)合器(MUX)21、MUX22及異或門XOR,其中,對(duì)于MUX21,當(dāng)使能信號(hào)Call0_RE為0時(shí),輸出為除數(shù)寄存器Divisor_2[31:1]的符號(hào)位,否則,輸出為除數(shù)Call0 divisor[31:0]的符號(hào)位;對(duì)于MUX22,當(dāng)使能信號(hào)Call0 RE為0時(shí),輸出為被除數(shù)Dividend_2[31:1]的符號(hào)位,否則,輸出為被除數(shù)寄存器Call0_dividend[31:0]的符號(hào)位,即在使能信號(hào)Call0_RE的控制下,分別輸出除數(shù)和被除數(shù)的最高位即符號(hào)位,而異或門XOR分別接收來(lái)自MUX21和MUX22的除數(shù)和被除數(shù)的符號(hào)位,并進(jìn)行異或運(yùn)算后,獲得商的符號(hào)位,并輸出保存在符號(hào)位寄存器中。
需要說(shuō)明的是,使能信號(hào)Call0_RE屬于系統(tǒng)控制信息,由除法器所屬系統(tǒng)邏輯時(shí)序控制,這里假設(shè)系統(tǒng)信號(hào)是預(yù)先設(shè)置好的。
圖3是本發(fā)明被除數(shù)絕對(duì)值發(fā)生電路組成示意圖,如圖3所示,被除數(shù)絕對(duì)值發(fā)生器主要包括MUX31、MUX32、非門NOR及加法器ADD,其中,對(duì)于MUX31,當(dāng)使能信號(hào)Call0_RE為0時(shí),輸出為除數(shù)寄存器Dividend_2[31:1],否則,輸出為被除數(shù)Call0_dividend[31:1],即在使能信號(hào)Call0_RE的控制下,輸出來(lái)自被除數(shù)寄存器的被除數(shù)的第1~31位至MUX32的一個(gè)輸入端,同時(shí)將該第1~31位經(jīng)輸入端子驅(qū)動(dòng)同步后輸入加法器ADD的第一輸入端;非門NOR接收被除數(shù)的最低位即第0位,取反輸出加法器ADD的第一輸入端,并與被除數(shù)的第1~31位合并后作為加法器第一輸入端的輸入信號(hào),該輸入信號(hào)與加法器ADD的第二輸入端的輸入信號(hào)1相加,并輸出至MUX32的另一輸入端;MUX32的控制端信號(hào)為被除數(shù)的第31位信號(hào),若第31位為0,則MUX32輸出來(lái)自被除數(shù)寄存器的被除數(shù)的第1至31位,并與經(jīng)過(guò)非門NOR取反的第0位合并后保存在被除數(shù)絕對(duì)值寄存器中;若第31位為1,則MUX32輸出來(lái)自加法器ADD輸出的被除數(shù)的第1至31位,并與經(jīng)過(guò)非門NOR取反的第0位合并后保存在被除數(shù)絕對(duì)值寄存器中。
圖3僅僅是其中一種實(shí)現(xiàn)方案,絕對(duì)值發(fā)生器101的目的就是計(jì)算被除數(shù)的補(bǔ)碼。除數(shù)絕對(duì)值發(fā)生器的實(shí)現(xiàn)與圖3完全一致,只是對(duì)除數(shù)計(jì)算補(bǔ)碼。
圖4a是本發(fā)明位差發(fā)生器中的被除數(shù)的最高有效位數(shù)發(fā)生電路組成示意圖,如圖4a所示,被除數(shù)的最高有效位數(shù)發(fā)生電路主要包括若干與門AND、MUX41、MUX42及或門OR,處理過(guò)程如下被除數(shù)暫存寄存器temp Dividend用于保存中間結(jié)果,與門AND41的輸入是被除數(shù)暫存寄存器temp Dividend輸出的32位信號(hào)的取反即非運(yùn)算,即當(dāng)被除數(shù)暫存寄存器temp Dividend輸出各位都為0時(shí),AND41的輸出為1,否則其輸出為0。AND42第一輸入信號(hào)來(lái)自系統(tǒng)邏輯時(shí)序(圖4a中未示出),第二輸入信號(hào)為AND41的輸出信號(hào)的非運(yùn)算,AND42輸出的信號(hào)分別送給AND43和或門OR,AND43的輸出作為MUX41的選通信號(hào),當(dāng)該選通信號(hào)為0時(shí),MUX41輸出為0,否則,MUX41的輸出為ADD41的輸出信號(hào),每次MUX41的輸出都保存到寄存器m中。加法器ADD41的輸入分別來(lái)自寄存器m的輸出和AND42的輸出,ADD41的輸出發(fā)送給MUX41的其中一個(gè)輸入端,當(dāng)MUX41的選通信號(hào)為1時(shí),將該輸入端的信號(hào)發(fā)送給寄存器m。通過(guò)該電路實(shí)現(xiàn)被除數(shù)的最高有效位數(shù)的統(tǒng)計(jì),并將結(jié)果保存在寄存器m中。
圖4b是本發(fā)明位差發(fā)生器中的位差發(fā)生電路組成示意圖,如圖4b所示,位差發(fā)生電路主要包括若干加法器ADD、MUX43和MUX44,處理過(guò)程如下ADD42的第一輸入來(lái)自寄存器n的輸出,第二輸入來(lái)自寄存器m的輸出,即實(shí)現(xiàn)n與m之差的操作,并將結(jié)果輸出存儲(chǔ)在位差寄存器M_N中。圖4b中的ADD43的作用與ADD41類似,同樣,MUX43的作用也與MUX44類似,用于獲取除數(shù)的最高有效位數(shù),這里不再贅述。
圖5a是本發(fā)明商發(fā)生器中的除數(shù)與被除數(shù)之差發(fā)生電路組成示意圖,如圖5a所示,處理過(guò)程如下復(fù)合器MUX[31:0]的第一輸入端的數(shù)據(jù)來(lái)自除數(shù)絕對(duì)值寄存器,關(guān)于除數(shù)絕對(duì)值發(fā)生電路,與圖3描述的被除數(shù)絕對(duì)值發(fā)生電路類似,這里不再贅述。復(fù)合器MUX[31:0]的第二輸入端的數(shù)據(jù)來(lái)自左移器LSH,當(dāng)復(fù)合器MUX[31:0]的選通信號(hào)為0時(shí),復(fù)合器MUX[31:0]輸出除數(shù)絕對(duì)值到減數(shù)寄存器subtrahend[31:0]中,否則,將左移器LSH的輸出數(shù)據(jù)輸出存儲(chǔ)在減數(shù)寄存器中,而左移器LSH的第一輸入來(lái)自減數(shù)寄存器,第二輸入來(lái)自M_N寄存器,因此,這部分電路的目的是首先將除數(shù)的絕對(duì)值存入減數(shù)寄存器,然后,通過(guò)LSH對(duì)減數(shù)寄存器中的數(shù)據(jù)左移M_N位,并將結(jié)果再次存入減數(shù)寄存器;加法器ADD[31:0]用于進(jìn)行被減數(shù)minuend[31:0]與減數(shù)subtrahend[31:0]之差的運(yùn)算,輸出結(jié)果保存在差寄存器差寄存器alu[31:0]中。比較器LT用于判斷位差寄存器中的M_N[5:0]是否大于計(jì)數(shù)寄存器中的i[5:0],如果大于,則通過(guò)與門AND
輸出控制信號(hào),通知alu[31:0]接收ADD[31:0]的輸出數(shù)據(jù)。兩個(gè)與門AND的目的是判斷alu[31:0]的最高位是否為1,如果是,則通過(guò)多路復(fù)合器MUX[30:0]輸出alu[31:0]左移1位的數(shù)據(jù)并存儲(chǔ)在被減數(shù)寄存器中;否則,輸出alu[31:0]左移1位后加1,并將結(jié)果通過(guò)MUX[30:0]發(fā)送存儲(chǔ)在被減數(shù)寄存器中。
圖5b是本發(fā)明商發(fā)生器中的商發(fā)生電路組成示意圖,如圖5b所示,處理過(guò)程如下與門AND2和AND3用于判斷符號(hào)位寄存器Sign
的輸出是否為0,如果是,則控制多路復(fù)合器MUX1[31:0]選通輸出來(lái)自AND4[31:0]的數(shù)據(jù),否則,MUX1[31:0]選通輸出來(lái)自ADD3[31:0]的數(shù)據(jù)。ADD1[5:0]、左移器LSH、ADD2[31:0]和AND4[31:0]的目的是實(shí)現(xiàn)被除數(shù)minuend&((1<<(M_N+1))-1)的運(yùn)算,其中&表示邏輯與。而非門NOR
、輸入端子IN[31:1]和ADD3[31:0]的目的是為了獲得-(minuend&((1<<(M_N+1))-1))即ADD3[31:0]發(fā)送給MUX1[31:0]的數(shù)據(jù)為-(minuend&((1<<(M_N+1))-1))。MUX1[31:0]的第三組輸入端的選通信號(hào)來(lái)自一個(gè)比較器,圖5b中未示出,該比較器判斷除數(shù)的絕對(duì)值是否小于被除數(shù),如果是,則該比較器輸出為0,取非后作為MUX1[31:0]的第三組輸入端子的選通信號(hào),而該第三組輸入端子輸出的數(shù)據(jù)為0。
因此圖5b所示商發(fā)生電路的處理過(guò)程是判斷被除數(shù)的絕對(duì)值是否小于除數(shù),如果是,則MUX1[31:0]輸出的商為0;否則,進(jìn)一步判斷Sign
是否為1,如果是,則MUX1[31:0]輸出的商為-minuend&((1<<(M_N+1))-1),即所述將預(yù)設(shè)32位數(shù)值1左移位差位后減一,所得值與被減數(shù)進(jìn)行邏輯與運(yùn)算的負(fù)值;否則,Sign
為0,則MUX1[31:0]輸出的商為minuend&((1<<(M_N+1))-1)。即所述將預(yù)設(shè)32位數(shù)值1左移位差位后減一,所得值與被減數(shù)進(jìn)行邏輯與運(yùn)算的值。圖5b中的MUX2實(shí)際就是圖5a中的MUX。以上只是給出了其中一種實(shí)施例的電路圖實(shí)現(xiàn)方式,并不用于限定本發(fā)明的除法器。本發(fā)明強(qiáng)調(diào)的是,本發(fā)明除法器把除法運(yùn)算轉(zhuǎn)化化成移位運(yùn)算和減法運(yùn)算,與現(xiàn)有技術(shù)相比,便于硬件電路的實(shí)現(xiàn),較少了所用器件門數(shù),縮短了運(yùn)算時(shí)間,提高了運(yùn)算效率,取得了較好的效果。
本發(fā)明所述除法器與Celoxica公司的Handel C的邏輯電路開發(fā)工具中提供的除法模塊相比較其結(jié)果如表1所示。對(duì)于同樣是32位除法運(yùn)算,本發(fā)明所消耗的硬件資源只有上述除法模塊的14%,所需要的最大邏輯路徑延遲時(shí)間是它的3.8%。
表1以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi)所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種定點(diǎn)除法器,其特征在于,該定點(diǎn)除法器包括符號(hào)發(fā)生器(100),接收除數(shù)和被除數(shù),根據(jù)除數(shù)和被除數(shù)的符號(hào)位獲得商的符號(hào)位并輸出;絕對(duì)值發(fā)生器(101),接收除數(shù)和被除數(shù),獲取除數(shù)和被除數(shù)的絕對(duì)值,并輸出;判別器(102),分別接收除數(shù)絕對(duì)值和被除數(shù)絕對(duì)值,判斷被除數(shù)絕對(duì)值是否大于或等于除數(shù)絕對(duì)值,若是,則觸發(fā)位差發(fā)生器(103);否則,觸發(fā)商發(fā)生器(104);位差發(fā)生器(103),分別接收除數(shù)和被除數(shù)絕對(duì)值,計(jì)算被除數(shù)的最高有效位與除數(shù)的最高有效位之差,獲得被除數(shù)絕對(duì)值與除數(shù)絕對(duì)值的位差并輸出;商發(fā)生器(104),接收商的符號(hào)位、除數(shù)的絕對(duì)值,被除數(shù)的絕對(duì)值,以及位差,輸出有符號(hào)的商結(jié)果;或者接收來(lái)自判別器(102)的觸發(fā),輸出零。
2.根據(jù)權(quán)利要求1所述的定點(diǎn)除法器,其特征在于,所述定點(diǎn)除法器還包括除數(shù)絕對(duì)值寄存器和被除數(shù)絕對(duì)值寄存器;所述絕對(duì)值發(fā)生器(101)包括除數(shù)絕對(duì)值發(fā)生器和被除數(shù)絕對(duì)值發(fā)生器;所述除數(shù)絕對(duì)值發(fā)生器,用于接收除數(shù),獲取除數(shù)絕對(duì)值,并將所述除數(shù)絕對(duì)值輸出到除數(shù)絕對(duì)值寄存器;所述被除數(shù)絕對(duì)值發(fā)生器,用于接收被除數(shù),獲取被除數(shù)絕對(duì)值,并將所述被除數(shù)絕對(duì)值輸出到被除數(shù)絕對(duì)值寄存器中。
3.根據(jù)權(quán)利要求1或2所述的定點(diǎn)除法器,其特征在于,所述位差發(fā)生器(103)包括最高有效位數(shù)發(fā)生電路和位差發(fā)生電路;所述最高有效位數(shù)發(fā)生電路,用于接收除數(shù)絕對(duì)值或被除數(shù)絕對(duì)值,分別獲取除數(shù)或被除數(shù)的最高有效位數(shù)并輸出;所述位差發(fā)生電路,用于接收除數(shù)的最高有效位數(shù)和被除數(shù)的最高有效位數(shù),計(jì)算被除數(shù)的最高有效位與除數(shù)的最高有效位的數(shù)位之差,獲得被除數(shù)絕對(duì)值與除數(shù)絕對(duì)值的位差,并將所述位差輸出到位差寄存器中。
4.根據(jù)權(quán)利要求3所述的定點(diǎn)除法器,其特征在于,所述定點(diǎn)除法器還包括第一寄存器和第二寄存器;所述最高有效位發(fā)生電路包括除數(shù)最高有效位數(shù)發(fā)生電路和被除數(shù)最高有效位數(shù)發(fā)生電路;所述除數(shù)最高有效位數(shù)發(fā)生電路,用于接收除數(shù)絕對(duì)值,獲取除數(shù)的最高有效位數(shù),并將所述除數(shù)的最高有效位數(shù)輸出到第一寄存器中;所述被除數(shù)最高有效位數(shù)發(fā)生電路,用于接收被除數(shù)絕對(duì)值,獲取被除數(shù)的最高有效位數(shù),并將所述被除數(shù)的最高有效位數(shù)輸出到第二寄存器中。
5.根據(jù)權(quán)利要求1或2所述的定點(diǎn)除法器,其特征在于,所述商發(fā)生器(104)包括差發(fā)生電路和商發(fā)生電路;所述差發(fā)生電路至少包括加法器、判斷器、左移器和計(jì)數(shù)器;其中,所述左移器,用于接收除數(shù)絕對(duì)值、被除數(shù)絕對(duì)值、以及位差,將被除數(shù)絕對(duì)值左移位差位,并輸出給加法器;或者接收來(lái)自判斷器的第一通知,自身輸出的被減數(shù)絕對(duì)值左移1位,并將結(jié)果輸出給加法器;或者接收來(lái)自加法器的差值,將差值左移1位并加1,并將結(jié)果輸出給加法器,同時(shí)向計(jì)數(shù)器發(fā)送計(jì)數(shù)通知;所述加法器,用于接收除數(shù)絕對(duì)值,和來(lái)自左移器輸出的值,計(jì)算二者之差的值,并將結(jié)果輸出給判斷器;或者接收來(lái)自判斷器的第二通知,將差值輸出給左移器;所述判斷器,用于接收來(lái)自加法器的差值,判斷該差值是否小于0,如果是,向左移器輸出第一通知,否則,向加法器輸出第二通知;所述計(jì)數(shù)器,用于接收來(lái)自左移器的計(jì)數(shù)通知,開始計(jì)數(shù),并且在計(jì)算值大于位差值時(shí),輸出被減數(shù)絕對(duì)值的低位的位差值加1位到商發(fā)生電路;所述商發(fā)生電路,接收商的符號(hào)位、以及差發(fā)生電路輸出的被減數(shù)的低位的位差值加1位,將該被減數(shù)的低位的位差值加1位作為商,并根據(jù)符號(hào)位發(fā)生器輸出的符號(hào)位,輸出有符號(hào)的商結(jié)果;或接收來(lái)自所述判別器的觸發(fā),輸出零。
6.根據(jù)權(quán)利要求1所述的定點(diǎn)除法器,其特征在于,所述定點(diǎn)除法器還包括存儲(chǔ)除數(shù)的除數(shù)寄存器,和存儲(chǔ)被除數(shù)的被除數(shù)寄存器。
7.一種定點(diǎn)除法器實(shí)現(xiàn)運(yùn)算的方法,其特征在于,包括以下步驟A.獲取除數(shù)和被除數(shù)的絕對(duì)值;根據(jù)除數(shù)和被除數(shù)的符號(hào)位,獲取商的符號(hào)位并存儲(chǔ);B.判斷被除數(shù)絕對(duì)值是否大于或等于除數(shù)絕對(duì)值,若是,則計(jì)算被除數(shù)的最高有效位與除數(shù)的最高有效位之差,獲得位差,進(jìn)入步驟C;否則,輸出零并結(jié)束;C.根據(jù)商的符號(hào)位、除數(shù)或被除數(shù)絕對(duì)值,以及位差,獲取被除數(shù)與除數(shù)的商值。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,步驟A中所述獲取除數(shù)和被除數(shù)絕對(duì)值的方法為判斷所述除數(shù)或被除數(shù)的最高位的取值,如果所述除數(shù)或被除數(shù)的最高位為0,則除數(shù)或被除數(shù)的絕對(duì)值等于自身,否則,除數(shù)或被除數(shù)的絕對(duì)值等于除數(shù)或被除數(shù)的補(bǔ)碼。
9.根據(jù)權(quán)利要求7所述的方法,其特征在于,步驟A中所述獲取商的符號(hào)位的方法為判斷所述除數(shù)和被除數(shù)的最高位是否相等,如果相等,則商的符號(hào)位為正,否則,商的符號(hào)為負(fù)。
10.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述步驟C具體包括C1.將所述被除數(shù)絕對(duì)值左移位差位,并計(jì)算除數(shù)絕對(duì)值作為減數(shù)與左移后的被除數(shù)絕對(duì)值作為被減數(shù)之差,判斷該差值是否小于0,如果是,則將被減數(shù)左移1位,作為下一次減法運(yùn)算的被減數(shù),否則,將該差值左移1位并加1,作為下一次減法運(yùn)算的被減數(shù);C2.開始以遞增1的方式計(jì)數(shù),反復(fù)進(jìn)行步驟C1的減法運(yùn)算,直到計(jì)數(shù)器的計(jì)數(shù)值大于位差值為止,輸出被減數(shù)絕對(duì)值的低位的位差值加1位;C3.將該被減數(shù)絕對(duì)值的低位的位差值加1位作為商,并根據(jù)所述符號(hào)位,輸出有符號(hào)的商結(jié)果。
11.根據(jù)權(quán)利要求10所述的方法,其特征在于,所述步驟C3具體包括判斷被除數(shù)的絕對(duì)值是否小于除數(shù)的絕對(duì)值,如果是,則商為零;否則,進(jìn)一步判斷所述符號(hào)位是否為1,如果是,則商為將數(shù)值1左移位差位后減1,所得值與被減數(shù)進(jìn)行邏輯與運(yùn)算的負(fù)值,否則,商為將數(shù)值1左移位差位后減1,所得值與被減數(shù)進(jìn)行邏輯與運(yùn)算的值。
全文摘要
本發(fā)明公開了一種定點(diǎn)除法器,包括符號(hào)發(fā)生器、絕對(duì)值發(fā)生器、判別器、位差發(fā)生器,以及商發(fā)生器。本發(fā)明還公開了一種所述定點(diǎn)除法器實(shí)現(xiàn)運(yùn)算的方法,該方法包括獲取除數(shù)和被除數(shù)的絕對(duì)值,根據(jù)除數(shù)和被除數(shù)的符號(hào)位,獲取商的符號(hào)位并存儲(chǔ);判斷被除數(shù)絕對(duì)值是否大于或等于除數(shù)絕對(duì)值,若是,則計(jì)算被除數(shù)的最高有效位與除數(shù)的最高有效位的數(shù)位之差,獲得位差,并根據(jù)商的符號(hào)位、除數(shù)/被除數(shù)絕對(duì)值,以及位差,獲取被除數(shù)與除數(shù)的商值;否則輸出為零。本發(fā)明定點(diǎn)除法器把除法運(yùn)算轉(zhuǎn)化成移位運(yùn)算和減法運(yùn)算,與現(xiàn)有技術(shù)相比,便于硬件電路的實(shí)現(xiàn),減少了所用器件門數(shù),縮短了運(yùn)算時(shí)間,提高了運(yùn)算效率,取得了較好的效果。
文檔編號(hào)G06F7/487GK1952875SQ20061013970
公開日2007年4月25日 申請(qǐng)日期2006年9月18日 優(yōu)先權(quán)日2006年9月18日
發(fā)明者張江山, 魯平, 王琳 申請(qǐng)人:華為技術(shù)有限公司, 華中科技大學(xué)