專利名稱::一種由補(bǔ)碼求原碼絕對(duì)值的方法
技術(shù)領(lǐng)域:
:本發(fā)明屬于電子
技術(shù)領(lǐng)域:
,具體涉及一種補(bǔ)碼求絕對(duì)值方法。
背景技術(shù):
:在集成電路設(shè)計(jì)過(guò)程中,人們經(jīng)常會(huì)遇到求補(bǔ)碼的絕對(duì)值運(yùn)算。而補(bǔ)碼轉(zhuǎn)換成原碼通常會(huì)采用附圖1所示的取反加一的方法,先將補(bǔ)碼的各位取反,再加一,得到最終的結(jié)果。因?yàn)槿》醇右坏倪^(guò)程需要大量的半加器和反相器,所以消耗的器件比較多。而且取反加一的關(guān)鍵路徑很長(zhǎng),特別是位數(shù)比較多的情況下,面積和成本相應(yīng)比較高,計(jì)算速度也比較慢。
發(fā)明內(nèi)容本發(fā)明針對(duì)現(xiàn)有技術(shù)的不足,提供了一種補(bǔ)碼求絕對(duì)值方法。應(yīng)用該方法可以節(jié)省一定的基本單元,縮短關(guān)鍵路徑上的延時(shí)。在芯片的設(shè)計(jì)中,特別是位數(shù)多的情況下,可節(jié)約器件和降低計(jì)算時(shí)間。本發(fā)明解決技術(shù)問(wèn)題所采用的方案是一種補(bǔ)碼求絕對(duì)值方法,其特征在于,參加運(yùn)算的數(shù)必須為負(fù)數(shù)的補(bǔ)碼,步驟如下(3)將補(bǔ)碼A送入編碼器C,得到編碼后的數(shù)B。(4)將編碼后得到的數(shù)B與原來(lái)的補(bǔ)碼A逐位異或,最后得到補(bǔ)碼的絕對(duì)值D。編碼器C的特征在于編碼規(guī)律為從補(bǔ)碼A的最低位開始逐位檢查,直到找出第一個(gè)1出現(xiàn)的位置A[X],然后輸出Β[Χ:0]為0,B[N-1:X+1]為1。具體步驟如下第一步檢查補(bǔ)碼A的A位是否為1。如果A為1,則輸出B為0,B[N-1:1]位輸出為1。如果A為0,繼續(xù)第二步。第二步檢查補(bǔ)碼A的A[l]位是否為1。如果A[l]為1,則輸出B[1:0]都為0,B[N-1:2]位輸出為1。如果A[l]為0,繼續(xù)第三步。第三步檢查補(bǔ)碼A的A[2]位是否為1。如果A[2]為1,則輸出B[2:0]都為0,B[N-1:3]輸出為。.如果A[2]為0,繼續(xù)第四步。.......這樣從最低位A到A[N_1]位逐位檢查第一個(gè)1出現(xiàn)的位置,對(duì)應(yīng)輸出見(jiàn)表1,表中Y表示取值為0或者1。在輸入數(shù)據(jù)中,Y...表示Α[Ν-3:3]中取任意值。0...表示Α[Ν-3:3]數(shù)據(jù)全部為0。在輸出數(shù)據(jù)中,1...表示Β[Ν-3:3]全部為1,0...表示Β[Ν_3:3]全部為0。特別地,從最低位開始檢查,當(dāng)Α[Ν-2:0]都為0的時(shí)候,不管Α[Ν_1]輸入是0還是1,輸出從Β[Ν-1:0]都為0.表1:<table>tableseeoriginaldocumentpage4</column></row><table>從表1可以總結(jié)出B的每一位的輸出表達(dá)式為B=0B[l]=AB[2]=A+A[1]B[N-2]=A+A[l]+A[2]+......+A[N_3]B[N-1]=A+A[l]+A[2]+......+A[N-2]整個(gè)電路的原理圖參見(jiàn)圖2。本發(fā)明原理的特點(diǎn)是,用編碼的方法取代了傳統(tǒng)的用半加器加一的方法,來(lái)達(dá)到優(yōu)化的目的。本發(fā)明的有益效果是,在芯片設(shè)計(jì)中為實(shí)現(xiàn)補(bǔ)碼轉(zhuǎn)原碼的運(yùn)算,使用本發(fā)明提供的方法,可節(jié)省一定的基本單元,縮短關(guān)鍵路徑上的延時(shí),從而使設(shè)計(jì)的產(chǎn)品面積變小,功耗降低,成本降低,且計(jì)算速度得到提高。圖1是現(xiàn)有常用的補(bǔ)碼轉(zhuǎn)原碼方法示意圖;圖2是本發(fā)明的求補(bǔ)碼的絕對(duì)值的示意圖;圖3是4位編碼器C的電路圖。具體實(shí)施例方式下面結(jié)合附圖和實(shí)例對(duì)本發(fā)明作進(jìn)一步說(shuō)明,本發(fā)明的目的和效果將更加明顯,但本發(fā)明的實(shí)施不限于此。如圖2,為本發(fā)明的求補(bǔ)碼的絕對(duì)值的示意圖。補(bǔ)碼A送入編碼器C,得到編碼后的數(shù)B,所述補(bǔ)碼A為負(fù)數(shù)的補(bǔ)碼;將編碼后得到的數(shù)B與原來(lái)的補(bǔ)碼A逐位異或,最后得到補(bǔ)碼的絕對(duì)值D。下面以4位的負(fù)數(shù)的補(bǔ)碼求絕對(duì)值作為例子,4位的編碼器C的編碼原理如表2所示,表2<table>tableseeoriginaldocumentpage5</column></row><table>根據(jù)上表,我們可以寫出對(duì)應(yīng)的B[(N-1):1]的各位的表達(dá)式B=OB[1]=AB[2]=A+A[1]B[3]=A+A[l]+A[2]具體實(shí)現(xiàn)的電路如圖3所示,圖中的in[3…0]為補(bǔ)碼A的輸入,out[3…0]為輸出數(shù)B。本實(shí)施方式求絕對(duì)值處理方法具體步驟如下(1)將補(bǔ)碼A送入編碼器C,得到編碼后的數(shù)B。(2)將編碼后得到的數(shù)B與原來(lái)的補(bǔ)碼A逐位異或,得到補(bǔ)碼的絕對(duì)值D。例如,補(bǔ)碼A為1010(-6),其中最高位為符號(hào)位。步驟(1),通過(guò)編碼后對(duì)應(yīng)輸出B為1100步驟(2),A與B逐位異或11001010=0110,最終得到結(jié)果D=0110.結(jié)果正確。8位,16位,32位等的電路可以用4位的電路進(jìn)行級(jí)聯(lián)。下面列舉采用以上方法與使用傳統(tǒng)取反加一的方法所占用資源情況。采用不同方法占用資源對(duì)比如表3所示,表3中“所有邏輯單元”中的not表示非門,xor表示或非門,and表示與門。“在關(guān)鍵路徑延時(shí)”上,and表示一個(gè)與門的延時(shí),xor表示一個(gè)異或門的延時(shí),or表示一個(gè)或門的延時(shí)。表3<table>tableseeoriginaldocumentpage6</column></row><table>由上表可以看出,位數(shù)越高,面積優(yōu)勢(shì)比較明顯,延時(shí)優(yōu)勢(shì)下降。針對(duì)不同的面積和延時(shí)的需要,采用不同的位數(shù)優(yōu)化。權(quán)利要求一種由補(bǔ)碼求原碼絕對(duì)值的方法,其特征在于包括如下步驟(1)將補(bǔ)碼A送入編碼器C,得到編碼后的數(shù)B,所述補(bǔ)碼A為負(fù)數(shù)的補(bǔ)碼;(2)將編碼后得到的數(shù)B與原來(lái)的補(bǔ)碼A逐位異或,最后得到補(bǔ)碼的絕對(duì)值D。2.根據(jù)權(quán)利要求1所述的方法,特征在于編碼器C的編碼過(guò)程為從補(bǔ)碼A的最低位開始逐位檢查,直到找出第一個(gè)1出現(xiàn)的位置A[X],然后輸出Β[Χ:0]都為0,Β[Ν-1:Χ+1]都為1,其中,N為編碼器的位數(shù),X為0N-I中的某個(gè)整數(shù),X越大,表示A[X]、B[X]所在的位越高,Β[Χ:0]表示數(shù)B中B[X]至B的所有位,Β[Ν-1:Χ+1]表示數(shù)B中B[N-1]至B[X+1]的所有位。3.根據(jù)權(quán)利要求2所述的方法,特征在于編碼器C的編碼步驟具體如下第一步檢查補(bǔ)碼A的A位是否為1,如果々為1,則輸出BW]為0,B[N-1]1]位輸出為1,如果A為0,繼續(xù)第二步;第二步檢查補(bǔ)碼A的A[l]位是否為1,如果A[l]為1,則輸出B[10]都為0,B[N_12]位輸出為1,如果A[l]為0,繼續(xù)第三步;第三步檢查補(bǔ)碼A的A[2]位是否為1,如果々[2]為1,則輸出B[20]都為0,B[N_13]輸出為1,如果A[2]為0,繼續(xù)第四步;這樣從最低位A依次到最高位A[N-1]位逐位檢查第一個(gè)1出現(xiàn)的位置,然后輸出數(shù)B各位的值。4.根據(jù)權(quán)利要求3所述的方法,其特征在于編碼器C的編碼過(guò)程中,從最低位開始檢查,當(dāng)A[N-20]都為0的時(shí)候,不管A[N-1]輸入是0還是1,輸出從B[N_10]都為0。5.根據(jù)權(quán)利要求4所述的方法,其特征在于B的每一位的輸出表達(dá)式為B=0B[l]=AB[2]=A+A[1]B[N-2]=A+A[l]+A[2]+......+A[N_3]B[N-1]=A+A[l]+A[2]+......+A[N-2],全文摘要本發(fā)明提供一種由補(bǔ)碼求原碼絕對(duì)值的方法,可用于完成補(bǔ)碼原碼轉(zhuǎn)換。該方法將要轉(zhuǎn)換的補(bǔ)碼A通過(guò)編碼器C得到編碼后的結(jié)果B,再把B與原來(lái)的補(bǔ)碼A異或,最終得到補(bǔ)碼的絕對(duì)值D。使用本發(fā)明提供的方法,與常規(guī)的技術(shù)相比可節(jié)省一定的基本單元,面積變小,功耗降低,且關(guān)鍵路徑上的延時(shí)變短,計(jì)算速度提高。文檔編號(hào)G06F7/00GK101819513SQ20101011599公開日2010年9月1日申請(qǐng)日期2010年2月11日優(yōu)先權(quán)日2010年2月11日發(fā)明者姜小波,范永杰申請(qǐng)人:華南理工大學(xué)