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