專(zhuān)利名稱(chēng):一種補(bǔ)碼乘法處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及集成電路設(shè)計(jì)和補(bǔ)碼乘法運(yùn)算領(lǐng)域,特別地,涉及一種補(bǔ)碼乘法處理方法。
背景技術(shù):
在集成電路設(shè)計(jì)過(guò)程中,人們經(jīng)常會(huì)遇到兩個(gè)補(bǔ)碼相乘得到補(bǔ)碼的乘法運(yùn)算。而補(bǔ)碼和補(bǔ)碼相乘無(wú)法直接得到補(bǔ)碼結(jié)果,所以通常會(huì)采用附圖1的方法,先將兩個(gè)補(bǔ)碼換算到原碼,然后兩個(gè)原碼相乘,再將所乘結(jié)果換算回補(bǔ)碼,得到最終結(jié)果。
因?yàn)檠a(bǔ)碼原碼之間轉(zhuǎn)換是一個(gè)取反加一的過(guò)程。所以這種乘法結(jié)構(gòu)將會(huì)消耗3個(gè)加法器和一個(gè)乘法器,消耗器件比較大,特別是乘法運(yùn)算量大的情況下,產(chǎn)品的面積和成本相應(yīng)較高,計(jì)算速度也較慢。
發(fā)明內(nèi)容
本發(fā)明針對(duì)現(xiàn)有技術(shù)的不足,提供了一種補(bǔ)碼乘法處理方法;應(yīng)用該方法,可以節(jié)省一個(gè)加法器。在芯片設(shè)計(jì)中,特別是乘法運(yùn)算量大的情況下,可極大地節(jié)約器件。
本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案是一種補(bǔ)碼乘法處理方法,參加補(bǔ)碼運(yùn)算的兩個(gè)數(shù)分別為補(bǔ)碼A和補(bǔ)碼B,步驟如下(1)將補(bǔ)碼A和補(bǔ)碼B送入乘法器,相乘得到AB;(2)將補(bǔ)碼A的低a-1位和補(bǔ)碼B的符號(hào)位y送到選擇器,結(jié)果為yA;同時(shí)補(bǔ)碼B的低b-1位和補(bǔ)碼A的符號(hào)位x送到選擇器,結(jié)果為xB;(3)將yA和xB分別送入加法器中的“加數(shù)1”端和“加數(shù)2”端,對(duì)“加數(shù)1”的低b位置0,對(duì)“加數(shù)2”的低a位置0,加法運(yùn)算的結(jié)果為2byA+2axB;
(4)將所述步驟(1)的結(jié)果AB與所述步驟(3)的結(jié)果2byA+2axB送入加法器進(jìn)行減法運(yùn)算,結(jié)得到R=AB-(2byAa-1+2axBb-1)。
進(jìn)一步地,所述補(bǔ)碼A和補(bǔ)碼B相同時(shí),所述步驟(2)具體為補(bǔ)碼A的低k-1位和補(bǔ)碼B的符號(hào)位y送到選擇器,結(jié)果為yAk-1;同時(shí)補(bǔ)碼B的低b-1位和補(bǔ)碼A的符號(hào)位x送到選擇器,結(jié)果為xBk-1,所述步驟(3)具體為把yAk-1和xBk-1送入加法器,得到結(jié)果yAk-1+xBk-1;所述步驟(4)具體為將所述步驟(1)的結(jié)果AB和所述步驟(2)的結(jié)果yAk-1+xBk-1送入加法器進(jìn)行減法運(yùn)算,其中yAk-1+xBk-1所對(duì)應(yīng)的加數(shù)端的低k位補(bǔ)0,這樣得到最終結(jié)果R=AB-2k(yAk-1+xBk-1)。
本發(fā)明的有益效果是,在芯片設(shè)計(jì)中為實(shí)現(xiàn)乘法補(bǔ)碼運(yùn)算,使用本發(fā)明提供的方法,可節(jié)省一個(gè)加法器,從而使得設(shè)計(jì)的產(chǎn)品的面積變小,功耗降低,成本降低,且計(jì)算速度得到提高。
圖1是現(xiàn)有常用補(bǔ)碼相乘方法示意圖;圖2是本發(fā)明的補(bǔ)碼乘法處理方法示意圖;圖3是本發(fā)明的補(bǔ)碼乘法處理方法在當(dāng)兩乘數(shù)的位數(shù)相同時(shí)的示意圖。
具體實(shí)施例方式
下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明,本發(fā)明的目的和效果將更加明顯。
在集成電路設(shè)計(jì)過(guò)程中,我們經(jīng)常會(huì)遇到兩個(gè)補(bǔ)碼相乘得到補(bǔ)碼的乘法運(yùn)算。而補(bǔ)碼和補(bǔ)碼相乘無(wú)法直接得到補(bǔ)碼結(jié)果,所以現(xiàn)在通常會(huì)采用圖1所示的方法,先將兩個(gè)補(bǔ)碼換算到原碼,然后兩個(gè)原碼相乘,再將所乘結(jié)果換算回補(bǔ)碼,得到最終結(jié)果。因?yàn)檠a(bǔ)碼原碼之間轉(zhuǎn)換是一個(gè)取反加一過(guò)程。所以補(bǔ)碼原碼之間轉(zhuǎn)換需要加法器,原碼相乘需要乘法器,這種實(shí)現(xiàn)方法將會(huì)消耗3個(gè)加法器和一個(gè)乘法器,消耗器件比較大,產(chǎn)品的面積和成本相應(yīng)較高,計(jì)算速度也較慢。
本發(fā)明提供了一種新的方法來(lái)實(shí)現(xiàn)補(bǔ)碼的乘法運(yùn)算,這種實(shí)現(xiàn)方法可節(jié)省一個(gè)加法器,從而使得設(shè)計(jì)的產(chǎn)品的面積變小,功耗降低,成本降低,且計(jì)算速度得到提高。在芯片設(shè)計(jì)中,特別是乘法運(yùn)算量大的情況下,在器件消耗量的節(jié)約上是非常可觀的。
本發(fā)明的補(bǔ)碼乘法處理方法如下如圖2所示,參加補(bǔ)碼運(yùn)算的兩個(gè)數(shù)是A和B,補(bǔ)碼乘法運(yùn)算結(jié)果是R,A的位數(shù)是a,B的位數(shù)是b,R是m位數(shù),A的符號(hào)位為x(當(dāng)A為負(fù)數(shù)時(shí)x=1,否則為0),B的符號(hào)位為y(當(dāng)B為負(fù)數(shù)時(shí)y=1,否則為0),A的有效位即低a-1位為Aa-1,B的有效位即低b-1位為Bb-1,那么按照公式R=AB-(2byAa-1+2axBb-1)就可以實(shí)現(xiàn)補(bǔ)碼乘法運(yùn)算。
本發(fā)明的補(bǔ)碼乘法處理方法具體步驟如下(1)將補(bǔ)碼A和補(bǔ)碼B送入乘法器11,相乘得到AB,這里消耗一個(gè)乘法器;(2)將補(bǔ)碼A的低a-1位和補(bǔ)碼B的符號(hào)位y送到選擇器11,結(jié)果為yA;同時(shí)補(bǔ)碼B的低b-1位和補(bǔ)碼A的符號(hào)位x送到選擇器12,結(jié)果為xB,這里消耗兩個(gè)選擇器;(3)yA和xB分別送入加法器11中的“加數(shù)1”端和“加數(shù)2”端,對(duì)“加數(shù)1”的低b位置0,對(duì)“加數(shù)2”的低a位置0,加法運(yùn)算的結(jié)果為2byA+2axB,這里只消耗一個(gè)加法器;(4)第(1)步的結(jié)果AB與第(3)步的結(jié)果2byA+2axB送入加法器12進(jìn)行減法運(yùn)算,結(jié)果就是R=AB-(2byAa-1+2axBb-1),這里要消耗一個(gè)加法器。
從上面所述,共消耗兩個(gè)加法器,一個(gè)乘法器和兩個(gè)選擇器,由于選擇器電路非常簡(jiǎn)單,這兩個(gè)選擇器對(duì)芯片面積和成本等的影響遠(yuǎn)遠(yuǎn)小于一個(gè)加法器的影響,因此與原有補(bǔ)碼乘法運(yùn)算實(shí)現(xiàn)方法比較少了一個(gè)加法器。
特別地,當(dāng)參加補(bǔ)碼運(yùn)算的兩個(gè)數(shù)A和B的位數(shù)相同時(shí),補(bǔ)碼乘法運(yùn)算可以優(yōu)化成如圖3的結(jié)構(gòu)。公式為R=AB-2k(yAk-1+xBk-1),其中k為A和B的位數(shù)。
(1)將補(bǔ)碼A和補(bǔ)碼B送入乘法器21,相乘得到AB,這里消耗一個(gè)乘法器;(2)將補(bǔ)碼A的低k-1位和補(bǔ)碼B的符號(hào)位y送到選擇器21,結(jié)果為yAk-1;同時(shí)補(bǔ)碼B的低b-1位和補(bǔ)碼A的符號(hào)位x送到選擇器22,結(jié)果為xBk-1,然后把yAk-1和xBk-1送入加法器21,得到結(jié)果yAk-1+xBk-1,這里消耗兩個(gè)選擇器和一個(gè)加法器;(3)將第(1)步的結(jié)果AB和第(2)步的結(jié)果yAk-1+xBk-1送入加法器22進(jìn)行減法運(yùn)算,其中yAk-1+xBk-1所對(duì)應(yīng)的加數(shù)端的低k位補(bǔ)0,這樣得到最終結(jié)果R=AB-2k(yAk-1+xBk-1),這里要消耗一個(gè)加法器22。這里的加法器22位數(shù)可以比通用加法器11中的加法位數(shù)小,進(jìn)而芯片面積可以更加減少。
下面證明公式R=AB-(2byAa-1+2axBb-1)的正確性。
如圖2所示,假設(shè)參加補(bǔ)碼運(yùn)算的兩個(gè)數(shù)是A和B,補(bǔ)碼乘法運(yùn)算結(jié)果是R,A的位數(shù)是a,B的位數(shù)是b,R是m位數(shù),A的符號(hào)位為x(當(dāng)A為負(fù)數(shù)時(shí)x=1,否則為0),B的符號(hào)位為y(當(dāng)B為負(fù)數(shù)時(shí)y=1,否則為0),A的有效位即低a-1位為Aa-1,B的有效位即低b-1位為Bb-1,那么R=[x(2m-a+1-1)×2a+A]×[y(2m-b+1-1)×2b+B]=[2m+1x-2ax+A]×[2m+1y-2by+B]=
×
=2a+bxy-2byA-2axB+AB=-2byA-2axB+AB=AB-(2byA+2axB)=AB-[2by(2a-1x+Aa-1)+2ax(2b-1y+Bb-1)]=AB-(2byAa-1+2ax Bb-1)-2a+bxy=AB-(2byAa-1+2axBb-1)式中,[2m+1x-2ax+A]×[2m+1y-2by+B]=
×
是因?yàn)檫\(yùn)算結(jié)果R的總位數(shù)只有m位,所以2m+1x和2m+1y等價(jià)于0。
式中,2a+bxy-2byA-2axB+AB=-2byA-2axB+AB是因?yàn)閮蓴?shù)相乘,兩乘數(shù)的位數(shù)總和必定大于乘積的位數(shù),所以a+b≥m,進(jìn)而2a+bxy等價(jià)于0。
權(quán)利要求
1.一種補(bǔ)碼乘法處理方法,其特征在于,參加補(bǔ)碼運(yùn)算的兩個(gè)數(shù)分別為補(bǔ)碼A和補(bǔ)碼B,步驟如下(1)將補(bǔ)碼A和補(bǔ)碼B送入乘法器(11),相乘得到AB。(2)將補(bǔ)碼A的低a-1位和補(bǔ)碼B的符號(hào)位y送到選擇器(11),結(jié)果為yA;同時(shí)將補(bǔ)碼B的低b-1位和補(bǔ)碼A的符號(hào)位x送到選擇器(12),結(jié)果為xB。(3)將yA和xB分別送入所述加法器(11)中的“加數(shù)1”端和“加數(shù)2”端,對(duì)“加數(shù)1”的低b位置0,對(duì)“加數(shù)2”的低a位置0,加法運(yùn)算的結(jié)果為2byA+2axB。(4)將所述步驟(1)的結(jié)果AB與所述步驟(3)的結(jié)果2byA+2axB送入加法器(12)進(jìn)行減法運(yùn)算,得到R=AB-(2byAa-1+2axBb-1)。
2.根據(jù)權(quán)利要求1所述的一種補(bǔ)碼乘法處理方法,其特征在于,所述補(bǔ)碼A和補(bǔ)碼B相同時(shí),所述步驟(2)具體為將補(bǔ)碼A的低k-1位和補(bǔ)碼B的符號(hào)位y送到選擇器(21),結(jié)果為yAk-1;同時(shí)將補(bǔ)碼B的低b-1位和補(bǔ)碼A的符號(hào)位x送到選擇器(22),結(jié)果為xBk-1,所述步驟(3)具體為把yAk-1和xBk-1送入加法器(21),得到結(jié)果yAk-1+xBk-1;所述步驟(4)具體為將所述步驟(1)的結(jié)果AB和所述步驟(2)的結(jié)果yAk-1+xBk-1送入加法器(22)進(jìn)行減法運(yùn)算,其中yAk-1+xBk-1所對(duì)應(yīng)的加數(shù)端的低k位補(bǔ)0,得到最終結(jié)果R=AB-2k(yAk-1+xBk-1)。
全文摘要
本發(fā)明公開(kāi)了一種補(bǔ)碼乘法處理方法,該方法將參加補(bǔ)碼運(yùn)算補(bǔ)碼A和補(bǔ)碼B送入乘法器相乘,得到結(jié)果AB,后將補(bǔ)碼A的低a-1位和補(bǔ)碼B的符號(hào)位y送到選擇器,結(jié)果為yA;同時(shí)補(bǔ)碼B的低b-1位和補(bǔ)碼A的符號(hào)位x送到選擇器,結(jié)果為Xb,將yA和xB分別送入加法器11中的“加數(shù)1”端和“加數(shù)2”端,對(duì)“加數(shù)1”的低b位置0,對(duì)“加數(shù)2”的低a位置0,從而得到加法運(yùn)算的結(jié)果為文檔編號(hào)G06F7/52GK1716178SQ200510050609
公開(kāi)日2006年1月4日 申請(qǐng)日期2005年7月7日 優(yōu)先權(quán)日2005年7月7日
發(fā)明者郭斌林, 莫國(guó)兵, 朱江明 申請(qǐng)人:杭州晶圖微芯技術(shù)有限公司