專利名稱:二進制補碼和無符號量格式的數(shù)據(jù)乘法裝置的制作方法
技術領域:
本發(fā)明涉及用于執(zhí)行帶符號(二進制補碼)乘法,無符號量乘法,以及一個為帶符號(二進制補碼格式)而另一個為無符號量格式的兩個操作數(shù)的乘法的電路。
背景技術:
許多DSP算法需要無符號32位與帶符號16位的乘法。這一操作可以使用32位乘法器來執(zhí)行,但是,32位乘法器的高功率和面積成本使得在芯片上包括32位乘法器是不合理的。因此,這一操作典型地在用于所有其他16位DSP計算的16位乘法器上執(zhí)行。為了除標準16位DSP計算之外還執(zhí)行這一操作,16位乘法器必須能夠?qū)蓚€都是無符號量和二進制補碼格式的數(shù)相乘,以及將一個是二進制補碼格式而另一個是無符號量格式的兩個操作數(shù)相乘。
二進制補碼和無符號量格式的操作數(shù)的乘法也被某些應用所需要,例如視頻信號的處理,其中視頻信號的亮度分量以無符號量格式表示,并且與以二進制補碼格式表示的系數(shù)相乘。
本領域中已知的乘法器或者是接受兩個無符號操作數(shù)的無符號乘法器,或者是接受兩個帶符號操作數(shù)的帶符號乘法器。無符號操作數(shù)具有0~2n-1的值,其中n為操作數(shù)的位的長度。帶符號二進制補碼操作數(shù)具有-2n-1~2n-1-1的值。
構造帶符號乘法器的普通方法包括使用Baugh-Wooley方法將無符號陣列乘法器轉(zhuǎn)換成二進制補碼陣列乘法器。該乘法器仍然接受兩個n位操作數(shù),并且改變并增加某個邏輯到乘法器中,以處理一個或兩個操作數(shù)代表負值的情況。該邏輯包括將輸入操作數(shù)或者輸入操作數(shù)的乘積的位求補,以及附加的加法器以將常數(shù)加到最終的乘積中。
最初的Baugh-Wooley方法包括增加三個全加器(每個接收三位,并產(chǎn)生總和位與進位位)。該方法比先前由Pezaris提出的技術以及需要接收并產(chǎn)生負加權位的另一種形式全加器單元的其他技術簡單。Baugh-Wooley方法的一種修改形式可以減小最大列高度從而減小關鍵路徑的長度,因此是優(yōu)選的。
任何無符號n位數(shù)可以通過增加零作為最高有效位來表示成帶符號二進制補碼n+1位數(shù)。任何帶符號n位數(shù)可以通過符號擴展一位來表示成帶符號n+1位數(shù)。用來將混合的操作數(shù)相乘的普通方法,其中乘數(shù)是帶符號的而被乘數(shù)是無符號的或者反之,是將兩個操作數(shù)擴展成n+1位并且使用帶符號的n+1乘n+1的乘法器,如圖1中所示,其中通過寄存器22和23供給的16位操作數(shù)A和B,具有由部件20和21指定的最高有效位(MSB),并且在17×17位乘法器10中相乘,產(chǎn)生34位的乘積。然后,該乘積縮短成2n(32)位。因此,17乘17位的帶符號乘法器用來將兩個16位的數(shù)相乘,一個是帶符號的而另一個是無符號的,并且乘積縮短到32位。
但是,使用較大的(n+1)位乘法器增加乘法器的功耗。并且,它導致通過乘法器的關鍵路徑的增加,這可能影響芯片的工作頻率。陣列乘法器的面積與乘法器寬度的平方成正比。最壞情況功率也與乘法器寬度的平方成正比,并且通過陣列乘法器的延遲與寬度成線性比。因此,使用(n+1)位乘法器代替n位乘法器導致功率大約相對增加2/n(((n+1)2-n2)/n2=2/n+1/n2)并且延遲相對增加1/n(((n+1)-n)/n=1/n)。詳細的模擬可以說明,使用17位乘法器代替16位乘法器可以導致功耗增加高達12%并且關鍵路徑延遲增加高達8%。
因此,需要一種乘法器,它能夠?qū)⒍M制補碼和無符號量格式的數(shù)相乘,包括兩種格式的任意組合,與用于帶符號或無符號操作數(shù)的乘法器相比較,功率開銷少,而尺寸稍有增加。
發(fā)明內(nèi)容
本發(fā)明涉及用于執(zhí)行帶符號(二進制補碼)乘法,無符號量乘法,以及一個為二進制補碼格式而另一個為無符號量格式的兩個操作數(shù)的乘法的電路。
本發(fā)明的一個特征在于提供部分乘積元件,該元件可控制地反轉(zhuǎn)其部分乘積的符號。
本發(fā)明的另一個特征在于響應操作數(shù)的格式來產(chǎn)生要增加到乘積的第n個,第(n+1)個和第2n個位置中的位。
圖1顯示現(xiàn)有技術乘法器的總圖。
圖2以局部圖示部分示意的方式顯示根據(jù)本發(fā)明的乘法器。
圖3以局部圖示部分示意的方式顯示本發(fā)明的第一實施方案。
圖4顯示圖3實施方案的元件的表示和真值表。
圖5以局部圖示部分示意的方式顯示本發(fā)明的第二實施方案。
圖6顯示圖5實施方案的元件的表示和真值表。
圖7顯示圖5實施方案的附加元件的表示和真值表。
具體實施例方式
能夠?qū)⒁远M制補碼和無符號量表示的操作數(shù)相乘的部件的工作原理基于下面的數(shù)學基礎。
在下文中,術語“帶符號操作數(shù)”將用來指以二進制補碼格式給出的操作數(shù),而術語“無符號操作數(shù)”將用來指以無符號量格式給出的操作數(shù)。令p(x)表示2的x次冪,x大于或等于0(例如,p(0)=1,p(1)=2,p(2)=4,等等)。令a[n],…,a[1]為使用標準二進制表示法來表示無符號量形式的無符號數(shù)A的n個位,其中a[n]是最高有效位。
A的數(shù)值等于A=a[1]p(0)+a[2]p(1)+…+a[n]p(n-1)=∑i=1,…,n(a[i]p(i-1))。
令b[n],…,b[1]為使用標準二進制補碼二進制表示法來表示(以二進制補碼形式表示的)帶符號數(shù)B的n個位,其中b[n]是最高有效位。B的數(shù)值等于B=b[1]p(0)+b[2]p(1)+…+b[n-1]p(n-2)-b[n]p(n-1)=-b[n]p(n-1)+∑i=1,…,n-1(b[i]p(i-1))A和B的乘積等于AB=-b[n]p(n-1)(∑i=1,…,n(a[i]p(i-1)))+(∑i=1,…,n-1(b[i]p(i-1)))(∑i=1,…,n(a[i]p(i-1)))=∑i=1,…,n(-b[n]a[i]p(n-2+i))+∑j=1,…,n-1(∑i=1,…,n(a[i]b[j]p(i+j-2)))。
為了使用簡單的加法器單元來有效地實現(xiàn)乘法算法,在上面的表達式中必須沒有減法。為了僅具有加法而沒有減法,我們使用b[n]a[i]的二進制補碼,其等于(1-b[n]a[i]),并且以下面的形式寫乘積ABAB=∑i=1,…,n((1-b[n]a[i])p(n-2+i))-∑i=1,…,n(p(n-2+i))+∑i=1,…,n(∑i=1,…,n-1(a[i]b[j]p(i+j-2)))中項∑i=1,…,n(p(n-2+i))等于p(n-1)+p(n)+…+p(2n-2)=p(2n-1)-1-(p(n-1)-1)=p(2n-1)-p(n-1)最后的公式,對于A為無符號而B為帶符號時的情況,是(1)AB=∑i=1,…,n-1(∑j=1,…n-1(a[i]b[j]p(i+j-2))) (1a)+∑j=1,…,n-1(a[n]b[j]p(n-2+j)) (1b)+∑i=1,…,n-1((1-a[i]b[n])p(n-2+i)) (1c)+(1-a[n]b[n])p(2n-2)(1d)+p(n-1) (1e)-p(2n-1)(1f)類似的分析說明,如果A為帶符號而B為無符號,那么(2)AB=∑i=1,…,n-1(∑j=1…,n-1(a[i]b[j]p(i+j-2))) (2a)+∑j=1…,n-1((1-a[n]b[j])p(n-2+j))(2b)+∑i=1,…,n-1(a[i]b[n]p(n-2+i)) (2c)+(1-a[n]b[n])p(2n-2)(2d)
+p(n-1) (2e)-p(2n-1) (2f)當操作數(shù)A和B都為帶符號時,我們有(3)AB=∑i=1,…,n-1(∑i=1,…,n-1(a[i]b[j]p(i+j-2))) (3a)+∑i=1,…,n-1((1-a[n]b[j])p(n-2+j)) (3b)+∑i=1,…,n-1((1-a[i]b[n])p(n-2+i)) (3c)+a[n]b[n]p(2n-2) (3d)+p(n)(3e)-p(2n-1) (3f)并且最后當操作數(shù)A和B都為無符號時,我們有(4)AB=∑i=1,…,n(∑i=1,…,n(a[i]b[j]p(i+j-2)))=∑i=1,…,n-1(∑i=1,…,n-1(a[i]b[j]p(i+j-2))) (4a)+∑i=1,…,n-1(a[n]b[j]p(n-2+j)) (4b)+∑i=1,…,n-1(a[i]b[n]p(n-2+i)) (4c)+a[n]b[n]p(2n-2) (4d)現(xiàn)在參考圖2,其描繪兩個操作數(shù)逐位相乘而獲得的單個位部分乘積的陣列。兩個操作數(shù)A和B在圖的頂部示意地顯示,其中對該圖來說,操作數(shù)A和B每個都可以是帶符號或無符號的。部分乘積的陣列包括主陣列10和三個特殊的陣列-20,30和40。
稱作第一MSB陣列的陣列20包括A中的第一位與B中(除MSB以外)的位的部分乘積,即A[n]B[j],其中索引[n]表示操作數(shù)的最高有效位,而j是1~n-1的索引。稱作第二MSB陣列的陣列30包括B中的第一位與A中(除MSB以外)的位的相應部分乘積,即B[n]A[j],其中索引[n]表示操作數(shù)的最高有效位,而j是1~n-1的索引。稱作第三MSB陣列的陣列40包括兩個MSB的乘積,即A[n]B[n]。在底部,總的乘積如陣列80所示。在陣列80的上面,如下所描述的增加位50,60和70以處理帶符號操作數(shù)。
上面公式(1)中的第一項(1a)對應于不包括陣列20,30和40的塊10中的所有部分乘積的相加,即不考慮對應于操作數(shù)A的最高有效位與操作數(shù)B的位相乘的那些(陣列20和40),以及對應于操作數(shù)B的最高有效位與操作數(shù)A的位相乘的那些(陣列30和40)的所有部分乘積。注意,如果不是A為無符號而B為帶符號,我們要處理A為帶符號而B為無符號(2a),A和B都為帶符號(3a),或者A和B都為無符號(4a),該第一項(1a)保持完全相同。表達式的這一項與在標準乘法器(其中兩個操作數(shù)都以二進制補碼格式表示或者都以無符號量格式表示)中出現(xiàn)的類似表達式是完全相同的。這一項1a可以使用現(xiàn)有技術乘法器中所使用的任何傳統(tǒng)結構來實現(xiàn)。上面公式(1)中的第三項(1c)對應于與操作數(shù)B的最高有效位和操作數(shù)A的位相乘(陣列30)相對應的已反轉(zhuǎn)部分乘積的相加,假設操作數(shù)A為無符號而操作數(shù)B為帶符號。如果操作數(shù)A為帶符號而操作數(shù)B為無符號,那么(2)中的相應第二項(2b)對應于操作數(shù)A的最高有效位與操作數(shù)B的位的相乘。這些項(1c和2b)類似于在標準二進制補碼Baugh-Wooley乘法器中出現(xiàn)的表達式。
一個主要的不同在于,在本發(fā)明公開的算法中,兩組部分乘積20和30中的一個必須被反轉(zhuǎn),當一個操作數(shù)為帶符號而另一個操作數(shù)為無符號時。為了執(zhí)行兩個都為帶符號的操作數(shù)的乘法,部分乘積20和30都將被反轉(zhuǎn)(3b,3c),同時部分乘積40(其對應于A的最高有效位與B的最高有效位的相乘)不反轉(zhuǎn)(3d)。最后,為了執(zhí)行兩個都為無符號的操作數(shù)的乘法,部分乘積都不反轉(zhuǎn)。向前看,圖4C和7A中的真值表指定哪個部分乘積將被反轉(zhuǎn)。所描述的結果根據(jù)本發(fā)明通過為元件20,30和40的部分乘積產(chǎn)生器配備可獨立控制反轉(zhuǎn)的裝置,并且提供用于(基于指示所需乘法類型的乘法器控制輸入)產(chǎn)生三個獨立的反轉(zhuǎn)控制信號的邏輯一個用于部分乘積20,一個用于部分乘積30,并且一個用于元件40,來執(zhí)行。
上面公式(1)中的項(1e)(p(n-1))對應于在從右起第n個位置(60)加’1’到最終乘積。這不同于二進制補碼Baugh-Wooley乘法器,Baugh-Wooley乘法器需要在從右起第n+1個位置(70)加’1’到最終乘積(即,加p(n)而不是p(n-1))。
兩個都為二進制補碼格式的操作數(shù)的乘法仍然需要在從右起第n+1個位置(70)加’1’到最終乘積。
最后,為了執(zhí)行兩個都為無符號量格式的操作數(shù)的乘法,不需要在第n個或者第n+1個位置額外加’1’到乘積。這一結果根據(jù)本發(fā)明通過提供一種裝置來實現(xiàn),該裝置(在圖3中稱作位產(chǎn)生裝置18)依賴于指示所需乘法類型的乘法器控制輸入,在第n個和第(n+1)個位置中可控制地產(chǎn)生待(由可以方便定位的位加裝置)加到最終乘積的位。
上面公式(1)中的項(1f)(-p(2n-1))對應于減去p(2n-1)。它與二進制補碼Baugh-Wooley乘法器中的類似項完全相同。減去這一項等價于在2n位結果的最高有效位(50)加’1’到最終乘積,其解釋為具有負權值的帶符號二進制補碼數(shù)。當乘法器操作兩個都為無符號量格式的操作數(shù)時,并且僅有這時,加這個’1’是需要禁止的。這一結果通過位加裝置來實現(xiàn),該位加裝置依賴于乘法器可控制地在2n位結果的最高有效位(50)中加’1’。
圖3顯示使用相同硬件將二進制補碼和無符號量格式的數(shù)相乘的發(fā)明方法集成電路的優(yōu)選實現(xiàn)。
根據(jù)本發(fā)明第一優(yōu)選實施方案的乘法器硬件由包括第一,第二和第三MSB陣列20,30和40的部分乘積產(chǎn)生器陣列90,部分乘積簡化網(wǎng)絡17,最終結果加法器19,反轉(zhuǎn)控制塊15,第2n位置(帶符號)位產(chǎn)生器16,以及第(n+1)-第n位置位產(chǎn)生器(混合格式位產(chǎn)生器18)組成。該乘法器具有用于輸入操作數(shù)A和B的兩個n位原始輸入,用于乘法結果的2n位原始輸出(61),以及將輸入操作數(shù)A和B的格式編碼的控制輸入12。控制輸入12編碼成四種類型的乘法指令1)將操作數(shù)A和B都當作以無符號量格式表示的數(shù);2)將操作數(shù)A當作以二進制補碼格式表示的數(shù),而將操作數(shù)B當作以無符號量格式表示的數(shù);3)將操作數(shù)B當作以二進制補碼格式表示的數(shù),而將操作數(shù)A當作以無符號量格式表示的數(shù);以及4)將操作數(shù)A和B都當作以二進制補碼格式表示的數(shù)。這一信息的任何編碼可以用于控制輸入12。可以由系統(tǒng)設計者隨意省略四種組合中的一些。
部分乘積產(chǎn)生器陣列90產(chǎn)生Ai*Bj形式的n^2(n的平方)個部分乘積,i和j為1~n。每個部分乘積由部分乘積產(chǎn)生器單元2或3來產(chǎn)生。
所有部分乘積產(chǎn)生器單元,除了那些在左列中的(左列是產(chǎn)生A[n]*B[j]形式的部分乘積的列,其中A[n]是操作數(shù)A的最高有效位,并且j是1~n的索引,如圖2中陣列20和40所表示的)和那些在末行上的(末行是產(chǎn)生A[j]*B[n]形式的部分乘積的行,其中B[n]是操作數(shù)B的最高有效位,并且j是1~n的索引,如圖2中陣列30和40所表示的),使用如圖4a中所示的AND門來實現(xiàn)。這些部分乘積產(chǎn)生器單元在圖3中指定為’2’,并且分組在圖3中的子陣列10中。
按照慣例,乘法器如圖2中以局部圖示部分示意的形式所表示的來布置。本領域技術人員知道,乘法的順序可以互換,并且陣列布局是優(yōu)選的而不是絕對必需的。因此,在權利要求書中,術語“左列”將指對應于操作數(shù)A的最高有效位與操作數(shù)B的位相乘的那些部分乘積(圖2中的組20和40),而術語“末行”將指對應于操作數(shù)B的最高有效位與操作數(shù)A的位相乘的那些部分乘積(圖2中的組30和40)。并且,術語“第一MSB陣列”指圖2中的陣列20,“第二MSB陣列”指圖2中的陣列30,并且“第三MSB陣列”指圖2中的陣列40;(以及其他實施方案中的相應組或陣列)。
在前面的段落中排除的部分乘積產(chǎn)生器單元(陣列左列和末行中的那些)在圖3中指定為3。它們的實現(xiàn)在圖4b中顯示。部分乘積產(chǎn)生器單元3具有兩個操作數(shù)輸入a和b以及反轉(zhuǎn)控制輸入i。這些單元的反轉(zhuǎn)控制輸入連接到圖3中的反轉(zhuǎn)控制塊15。圖4b中的表格顯示部分乘積產(chǎn)生器3的真值表,并且門級圖顯示建議的門級實現(xiàn)。也可以使用遵守真值表的任何其他門或晶體管實現(xiàn)。
圖4c顯示反轉(zhuǎn)控制塊15的真值表和略圖。它的輸入連接到乘法器的控制輸入12,并且它的輸出連接到圖3中陣列的左列和末行中的部分乘積產(chǎn)生器單元3的輸入i。輸出21連接到左列上的部分乘積產(chǎn)生器單元,除了部分乘積產(chǎn)生器單元40。輸出22連接到部分乘積產(chǎn)生器陣列90左下角中的部分乘積產(chǎn)生器單元40。輸出23連接到末行上的部分乘積產(chǎn)生器單元30,除了部分乘積產(chǎn)生器單元40。圖4c中的真值表顯示反轉(zhuǎn)控制塊15的實現(xiàn)。反轉(zhuǎn)控制塊的門的具體實現(xiàn)依賴于控制輸入12的編碼??梢允褂脤崿F(xiàn)圖4c中真值表的,由本領域技術人員容易實現(xiàn)的任何組合的門。本領域技術人員將能夠容易地修改反轉(zhuǎn)控制塊15和具有反轉(zhuǎn)控制的部分乘積產(chǎn)生器單元3,當使用反轉(zhuǎn)版本的反轉(zhuǎn)控制信號21,22或23(它們中的所有或任意)時。
圖4d顯示第2n位置的位產(chǎn)生器16的真值表和略圖。它的輸入連接到乘法器的控制輸入12,并且它的輸出50連接到加法器19的最高有效位位置的輸入。圖4d中的真值表顯示第2n位置的位產(chǎn)生器16的實現(xiàn)。電路的門的具體實現(xiàn)依賴于控制輸入12的編碼??梢允褂脤崿F(xiàn)圖4d中真值表的任何組合的門。
圖4e說明第(n+1)-第n位置的位產(chǎn)生器18的真值表和略圖。它的輸入連接到乘法器的控制輸入12,并且它的輸出60和70連接到簡化網(wǎng)絡17的輸入。輸出70連接到簡化網(wǎng)絡17的從右起(從最低有效位位置開始計數(shù))第(n+1)位位置的輸入。輸出60連接到簡化網(wǎng)絡17的從右起(從最低有效位位置開始計數(shù))第n位位置的輸入。圖4e中的真值表顯示第(n+1)-第n位置的位產(chǎn)生器18的實現(xiàn)。電路的門的具體實現(xiàn)依賴于圖2中控制輸入12的編碼??梢允褂脤崿F(xiàn)圖4e中真值表的任何組合的門。
圖3中的部分乘積簡化網(wǎng)絡17可以實現(xiàn)成乘法器領域技術人員眾所周知的任何傳統(tǒng)現(xiàn)有技術的簡化樹。依賴于實現(xiàn),它可能具有不需要進入最終加法器的位于最低有效位置的許多輸出(如圖3中的線53所示),以及連接到最終加法器輸入的位于最終乘積最高有效位置的許多輸出(由數(shù)51-52所表示)。
圖3中的加法器19可以實現(xiàn)成計算機算法領域技術人員眾所周知的任何傳統(tǒng)的進位傳播加法器??赡艿膶崿F(xiàn)實例包括超前進位加法器,進位選擇加法器,Kogge加法器,跳越進位加法器等。加法器19的輸出61連接到乘法器的適當輸出(圖2中的80),根據(jù)乘法器領域技術人員眾所周知的傳統(tǒng)方案。
如果考慮周期所需要,圖3的乘法器可以流水成二或更多級。在乘法器的流水線實現(xiàn)中,鎖存器插入在簡化網(wǎng)絡17內(nèi)部以及在簡化網(wǎng)絡的輸出51-52處。這些鎖存器在圖3中如虛線17’和54所示意顯示的。第2n和第(n+1)-第n位置的位產(chǎn)生器16和18也因此流水,使得這些塊的輸出延遲適當數(shù)目個周期。使用兩組鎖存器,乘法器劃分成三級,使得三組操作數(shù)可以同時處理??梢允褂帽绢I域技術人員眾所周知的任何流水線機制。對權利要求書來說,鎖存器,延遲電路和控制電路將共同稱作流水線裝置。
依賴于所需的功能性,圖3中的乘法器可以具有許多附加的控制輸入,用來控制DSP算法領域技術人員眾所周知的乘法器的附加功能性,例如帶有飽和度的乘法,帶有移位的乘法等。這些特征與本發(fā)明中公開的方法無關。本領域技術人員能夠容易地將附加的功能性和本專利中公開的方法相結合。
圖5顯示發(fā)明的乘法器集成電路的可選實現(xiàn)。與圖3的實施方案沒有變化的元件將被指定。另外,圖5中的參考數(shù)字表示圖6中或正文中指定的元件。根據(jù)本發(fā)明該實施方案的乘法器硬件由組織成陣列乘法器的部分乘積產(chǎn)生器陣列90,最終結果加法器19,反轉(zhuǎn)控制塊15,第2n位置的位產(chǎn)生器16,以及進位產(chǎn)生器18組成。該乘法器具有用于輸入操作數(shù)A和B的兩個n位輸入,用于乘法結果的2n位輸出(圖3中的61),以及將輸入操作數(shù)A和B的格式編碼的控制輸入12??刂戚斎?2編碼成如圖3中的四種類型的乘法指令。
部分乘積產(chǎn)生器陣列90產(chǎn)生Ai*Bj形式的n2(n的平方)個部分乘積,i和j為1~n。每個部分乘積由部分乘積產(chǎn)生器單元2,3,4,5或6中的一個來產(chǎn)生。部分乘積產(chǎn)生器的輸入和輸出根據(jù)本領域技術人員眾所周知的陣列乘法器傳統(tǒng)方案來連接。在首行上,單元產(chǎn)生器的輸出通過線71傳遞到下一行。在第二行上,單元產(chǎn)生器3的輸出通過線72傳遞,并且進位位通過線73傳遞。類似地對于第三行和隨后的行,單元產(chǎn)生器4的輸出通過線74,76,78等傳遞,并且進位位通過線75,77,79等傳遞。使用不同的產(chǎn)生器2,3和4不是必需的,但是節(jié)省空間。
所有部分乘積產(chǎn)生器單元,除了在左列中的那些和在末行上的那些,(即圖5中的單元2,3和4),根據(jù)本領域技術人員眾所周知的傳統(tǒng)陣列乘法器的乘法器單元來實現(xiàn),其一個實例在圖6a,6b和6c中顯示。這些單元分組在圖5中的子陣列(部分乘積產(chǎn)生器的主陣列)10中。第一行上的單元實現(xiàn)成如圖6a中所示的AND門91.這些部分乘積產(chǎn)生器單元在圖5中指定為2。第二行上的單元3實現(xiàn)成在其一個輸入處具有AND門91的半加器,如圖6b中所示。圖5中子陣列10的剩余行上的單元4實現(xiàn)成在其一個輸入處具有AND門91的全加器,如圖6c中所示。圖6a,6b和6c中的電路是傳統(tǒng)的,并且對本領域技術人員是眾所周知的。
陣列90左列中的部分乘積產(chǎn)生器單元(第一MSB陣列20’)在圖5中用數(shù)字5指定。它們的實現(xiàn)在圖6d中顯示。部分乘積產(chǎn)生器單元5具有兩個操作數(shù)輸入a和b以及反轉(zhuǎn)控制輸入i。這些單元的反轉(zhuǎn)控制輸入連接到圖5中的反轉(zhuǎn)控制塊15的輸出21。圖6d中的圖顯示門級實現(xiàn)。也可以使用遵守圖4b中真值表的任何門或晶體管實現(xiàn)。
陣列90末行中的部分乘積產(chǎn)生器單元(第二MSB陣列30’),除了也位于左列上的(陣列90左下角中的)部分乘積產(chǎn)生器單元(第三MSB陣列40’),在圖5中用數(shù)字6指定。它們的實現(xiàn)在圖6e中顯示。部分乘積產(chǎn)生器單元6類似于圖6c中所示的在其一個輸入處具有AND門的全加器。除此之外,部分乘積產(chǎn)生器6具有控制部分乘積反轉(zhuǎn)的反轉(zhuǎn)控制輸入i,如圖6e中所示。單元6的反轉(zhuǎn)控制輸入連接到圖5中的反轉(zhuǎn)控制塊15的輸出23。可以使用實現(xiàn)相同邏輯功能的任何其他門或晶體管實現(xiàn)來代替圖6e中的電路。
圖7a顯示反轉(zhuǎn)控制塊15的真值表和實現(xiàn),其與圖3中的相同。它的輸入連接到乘法器的控制輸入12,并且它的輸出連接到圖5中陣列的左列和末行中的部分乘積產(chǎn)生器單元的輸入i。輸出21連接到左列上的部分乘積產(chǎn)生器單元,除了在左列和末行上的部分乘積產(chǎn)生器單元40’(產(chǎn)生部分乘積A[n]*B[n]的單元,其中A[n]是操作數(shù)A的最高有效位且B[n]是操作數(shù)B的最高有效位)。輸出22連接到陣列90左下角中的部分乘積產(chǎn)生器單元40’。輸出23連接到末行上的部分乘積產(chǎn)生器單元,除了部分乘積產(chǎn)生器單元40’。圖7a中的真值表顯示反轉(zhuǎn)控制塊15的實現(xiàn)。反轉(zhuǎn)控制塊的門的具體實現(xiàn)依賴于控制輸入12的編碼??梢允褂脤崿F(xiàn)圖7a中真值表的任何組合的門。如何修改反轉(zhuǎn)控制塊15和具有反轉(zhuǎn)控制的部分乘積產(chǎn)生器單元3,當使用反轉(zhuǎn)版本的反轉(zhuǎn)控制信號21,22或23(它們中的所有或任意)時,對本領域技術人員應該是顯然的。
圖7b顯示第2n位置的位產(chǎn)生器16的真值表和實現(xiàn)。它的輸入連接到乘法器的控制輸入12,并且它的輸出50連接到加法器19的最高有效位位置的輸入。圖7b中的真值表顯示第2n位置的位產(chǎn)生器16的實現(xiàn)。電路的門的具體實現(xiàn)依賴于控制輸入12的編碼??梢允褂脤崿F(xiàn)圖7b中真值表的任何組合的門。
圖7c顯示進位產(chǎn)生器58的真值表和實現(xiàn)。它的輸入85連接到圖5右下角中的部分乘積產(chǎn)生器單元的總和輸出。這是產(chǎn)生部分乘積A[n]*B[n]的單元,其中A[n]是操作數(shù)A的最低有效位,并且B[n]是操作數(shù)B的最高有效位。塊58的其他輸入連接到乘法器的控制輸入12。
塊58的輸出60連接到乘法器的輸出,從最低有效位開始計數(shù)的位置n。輸出70連接到加法器19的進位輸入。圖7c中的真值表顯示進位產(chǎn)生器58的實現(xiàn)。電路的門的具體實現(xiàn)依賴于控制輸入12的編碼。可以使用實現(xiàn)圖7c中真值表的任何組合的門。
圖5中的加法器19可以實現(xiàn)成計算機算法領域技術人員眾所周知的任何傳統(tǒng)的進位傳播加法器??赡艿膶崿F(xiàn)實例包括超前進位加法器,進位選擇加法器,Kogge加法器,跳越進位加法器等。最佳的性能通過使用關鍵路徑上沒有進位信號的加法器,例如超前進位加法器來獲得。加法器19的輸出連接到乘法器的適當輸出61,根據(jù)乘法器領域技術人員眾所周知的傳統(tǒng)方案。
依賴于周期的需求,圖5中的乘法器可以流水成二或更多級。在乘法器的流水線實現(xiàn)中,鎖存器插入在加法器19的輸入處,和/或陣列90內(nèi)部。這些鎖存器在圖5中如虛線92和92’所示意顯示的。第2n和進位產(chǎn)生器16和58也因此流水,使得這些塊的輸出延遲適當數(shù)目個周期??梢允褂帽绢I域技術人員眾所周知的任何流水線機制。
依賴于所需的功能性,圖5中的乘法器可以具有許多附加的控制輸入,用來控制DSP算法領域技術人員眾所周知的乘法器的附加功能性,例如帶有飽和度的乘法,帶有移位的乘法等。這些特征與本發(fā)明中公開的方法無關。本領域技術人員能夠容易地將附加的功能性和本專利中公開的方法相結合。
本領域技術人員將知道,圖3中所示例的實施方案包括壓縮樹,因此對于高寬度的乘法來說比圖5的實施方案快。另一方面,陣列乘法器,例如圖5的實施方案比圖3的實施方案更加規(guī)則,布局中具有更短的連線并且具有更低的功耗。圖3的實施方案對于高寬度乘法是優(yōu)選的,而圖5的實施方案對于低寬度乘法是優(yōu)選的。
雖然本發(fā)明已經(jīng)根據(jù)一對優(yōu)選實施方案來描述,本領域技術人員將認識到,本發(fā)明可以在下面的權利要求書的本質(zhì)和范圍內(nèi)的各種版本中實踐。
權利要求
1.一種乘法器,適合于操作以二進制補碼和無符號量格式的任何組合表示的操作數(shù),包括一組部分乘積產(chǎn)生器,包括部分乘積產(chǎn)生器部件的主陣列,第一MSB陣列,第二MSB陣列和第三MSB陣列,其中所述第一第二和第三MSB陣列中的部件包括用于響應來自反轉(zhuǎn)控制部件的信號而反轉(zhuǎn)在那里所產(chǎn)生的部分乘積的可控制裝置;連接到所述反轉(zhuǎn)控制部件的帶符號位產(chǎn)生電路;連接到所述反轉(zhuǎn)控制部件的混合格式位產(chǎn)生電路;以及用于從所述部分乘積組來產(chǎn)生乘積的最終結果加法器。
2.根據(jù)權利要求1的乘法器,還包括用于組合所述部分乘積組以形成到所述最終結果加法器的輸入的裝置。
3.根據(jù)權利要求1的乘法器,還包括接受兩個n位輸入的裝置,由此所述乘法器可以操作兩個n位無符號數(shù),兩個n位二進制補碼數(shù),以及一個n位無符號數(shù)和一個n位二進制補碼數(shù)。
4.根據(jù)權利要求2的乘法器,其中響應指定操作數(shù)格式的輸入格式信號的所述反轉(zhuǎn)控制部件包括電路,以產(chǎn)生到第一MSB陣列,第二MSB陣列和在所述左列和末行中的第三MSB陣列的控制信號,使得當僅僅所述第一操作數(shù)為帶符號時反轉(zhuǎn)所述第一和第三MSB陣列的內(nèi)容,當僅僅所述第二操作數(shù)為帶符號時反轉(zhuǎn)所述第二和第三MSB陣列的內(nèi)容,而當所述第一和第二操作數(shù)都為帶符號時反轉(zhuǎn)所述第一和第二MSB陣列的內(nèi)容。
5.根據(jù)權利要求4的乘法器,其中響應指定操作數(shù)格式的所述輸入格式信號的所述帶符號位產(chǎn)生電路包括電路,用于(a)將邏輯值加到所述乘法器輸出的第n位,并且(b)當兩個操作數(shù)都為二進制補碼格式時,將邏輯值加到輸出的第(n+1)位。
6.根據(jù)權利要求5的乘法器,其中所述混合格式位產(chǎn)生電路包括用于將邏輯值加到輸出的第2n位的電路。
7.根據(jù)權利要求1的乘法器,還包括流水線裝置,由此至少一個較早的級操作較晚的一對操作數(shù),而至少一個較晚的級操作第一對操作數(shù)。
8.根據(jù)權利要求3的乘法器,還包括流水線裝置,由此至少一個較早的級操作較晚的一對操作數(shù),而至少一個較晚的級操作第一對操作數(shù)。
9.根據(jù)權利要求4的乘法器,還包括流水線裝置,由此至少一個較早的級操作較晚的一對操作數(shù),而至少一個較晚的級操作第一對操作數(shù)。
10.根據(jù)權利要求5的乘法器,還包括流水線裝置,由此至少一個較早的級操作較晚的一對操作數(shù),而至少一個較晚的級操作第一對操作數(shù)。
11.一種乘法器,適合于操作以二進制補碼和無符號量格式的任何組合表示的操作數(shù),包括具有一組部分乘積產(chǎn)生器的部分乘積產(chǎn)生和簡化部件,其中至少一些乘積產(chǎn)生器包括用于產(chǎn)生進位位的裝置,該部件包括一組部分乘積產(chǎn)生部件,其中左列上和末行上的部件包括用于響應來自反轉(zhuǎn)控制部件的信號而反轉(zhuǎn)在那里所產(chǎn)生的部分乘積的可控制裝置;連接到左列上和末行上的所述部件的反轉(zhuǎn)控制部件;帶符號位產(chǎn)生電路;混合格式位產(chǎn)生電路;以及最終結果加法器。
12.一種乘法器,包括用于產(chǎn)生兩個操作數(shù)的一組部分乘積并且用于組合所述部分乘積組以形成最終乘積的裝置,該乘法器還包括反轉(zhuǎn)控制裝置,用于可控制地反轉(zhuǎn)部分乘積A[n]B[j],A[n]B[n]和A[j]B[n],其中索引[n]指定操作數(shù)的最高有效位,而j為1~n-1的索引;以及用于可控制地在乘積的第2n位置,第(n+1)位置和第n位置中加’1’的裝置。
13.根據(jù)權利要求12的乘法器,還包括接受兩個n位輸入的裝置,由此所述乘法器可以操作兩個n位無符號數(shù),兩個n位二進制補碼數(shù),以及一個n位無符號數(shù)和一個n位二進制補碼數(shù)。
14.根據(jù)權利要求13的乘法器,其中所述反轉(zhuǎn)控制裝置響應指定操作數(shù)格式的輸入格式信號,并且包括電路以產(chǎn)生到包括A[n]B[j]的第一MSB陣列,其中索引[n]指定操作數(shù)的最高有效位,而j為1~n-1的索引,包括A[j]B[n]的第二MSB陣列和包括A[n]B[n]的第三MSB陣列的控制信號,用于當僅僅所述第一操作數(shù)為帶符號時反轉(zhuǎn)所述第一和第三MSB陣列的內(nèi)容,當僅僅所述第二操作數(shù)為帶符號時反轉(zhuǎn)所述第二和第三MSB陣列的內(nèi)容,而當所述第一和第二操作數(shù)都為帶符號時反轉(zhuǎn)所述第一和第二MSB陣列的內(nèi)容。
15.根據(jù)權利要求12的乘法器,還包括流水線裝置,由此至少一個較早的級操作較晚的一對操作數(shù),而至少一個較晚的級操作第一對操作數(shù)。
16.根據(jù)權利要求13的乘法器,還包括流水線裝置,由此至少一個較早的級操作較晚的一對操作數(shù),而至少一個較晚的級操作第一對操作數(shù)。
17.根據(jù)權利要求14的乘法器,還包括流水線裝置,由此至少一個較早的級操作較晚的一對操作數(shù),而至少一個較晚的級操作第一對操作數(shù)。
全文摘要
一種二進制補碼乘法器結合附加的電路元件以提供一種乘法器,該乘法器能夠?qū)⒁远M制補碼(帶符號)或無符號量格式的任何組合表示的兩個操作數(shù)相乘,而與用于以相同格式表示的兩個操作數(shù)的乘法器相比較,不增加乘法器的大?。煌ㄟ^對乘法器陣列的左列和底端行中的部分乘積元件提供獨立的反轉(zhuǎn)控制,并且控制到執(zhí)行部分乘積最終加法的進位傳播加法器的進位信號的產(chǎn)生,來實現(xiàn)附加的能力。
文檔編號G06F7/44GK1591318SQ03158108
公開日2005年3月9日 申請日期2003年9月3日 優(yōu)先權日2003年9月3日
發(fā)明者杰米·H.·莫瑞諾, 烏齊·施瓦頓, 阿亞爾·扎克斯, 維克托·V.·久班 申請人:國際商業(yè)機器公司