專利名稱:用于有效的混和精度dsp的分割乘法器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字信號處理器(“DSP”),并且更具體地涉及在數(shù)字信號處理ASIC實(shí)施方案中優(yōu)化乘法運(yùn)算。
背景技術(shù):
眾所周知,對于混和了信號處理變量的定點(diǎn)精度的算法實(shí)施方案來說,可編程數(shù)字信號處理系統(tǒng)在資源和功耗方面的效率都很低。這種低效是因?yàn)樾枰惯\(yùn)算精度不同的所有共享硬件都適應(yīng)最大的精度而造成的。換而言之,共享的硬件必須支持最大的必要精度。因而,當(dāng)使用這種硬件來執(zhí)行精度要求較低的運(yùn)算時,會導(dǎo)致低效。
在固定的ASIC實(shí)施方案中,經(jīng)常使精度最小化,以便提高硬件效率。最普遍的例子是用于數(shù)字地面電視接收(“ATSC8-VSB”)應(yīng)用之殘留邊帶的判決反饋均衡器,其中數(shù)據(jù)運(yùn)算數(shù)是由4位判決符號組成的。對于該均衡器的前饋部分使用完全的12位軟符號精度。前饋均衡器通常由16位系數(shù)的64個前向抽頭組成,而反饋均衡器通常由16位系數(shù)的128個抽頭組成。因此,當(dāng)在ASIC的硬件中進(jìn)行優(yōu)化時,反饋計(jì)算需要128個4×16的乘法,而前饋計(jì)算需要64個12×16的乘法。因而需要映射到不同乘法器。然而,如果均衡器被映射到共享硬件的可編程系統(tǒng),則需要把包括128個4×16乘法在內(nèi)的所有運(yùn)算都映射到同一12×16乘法器,因?yàn)樗俏ㄒ豢捎玫某朔ㄆ?。后一種情形將引入128個映射實(shí)例,而這比固定的ASIC中的映射實(shí)例多三倍,在每個反饋乘法運(yùn)算期間,實(shí)際上浪費(fèi)了可用硬件中的三分之二。
理論上,為了彌補(bǔ)這樣的低效率,在某種程度上可以利用算術(shù)和存儲資源中的子字并行來彌補(bǔ)這種低效映射。子字并行允許并行地提取多個操作數(shù)并對之運(yùn)算,并且取決于可用的并行算術(shù)資源。例如,如果共享硬件被設(shè)計(jì)成用于實(shí)施12×16個乘法,則很容易將其改成同時實(shí)現(xiàn)3個并行的4×16乘法?;蛘撸瑢τ谏婕耙粋€全精度12位字的完全的12×16乘法,將該字分割到3個4×16乘法器上,并組合它們的中間結(jié)果。然而,在本例中,如果字被組合到一個全精度運(yùn)算中,則算數(shù)資源應(yīng)當(dāng)可以被組合成一個全精度運(yùn)算。盡管對于存儲器和諸如加法器的簡單單元來說,對于資源精度的分割和組合都非常簡單,但是對于二元補(bǔ)碼乘法器(two’s complement multiplier)來說卻十分困難。諸如Booth或者Baugh-Wooley的標(biāo)準(zhǔn)的雙補(bǔ)碼乘法器把出現(xiàn)在最左邊(MSB)的非零比特或符號、位置解釋為表示一個負(fù)數(shù)。因此,在兩個或者三個二元補(bǔ)碼乘法器中的寬操作數(shù)分布(如圖2中的結(jié)構(gòu)所示)無法產(chǎn)生正確乘積。
因而,在本領(lǐng)域中所需要的是一種能夠使用共享硬件來有效地實(shí)現(xiàn)不同精度的二元補(bǔ)碼乘法的裝置。
進(jìn)一步,還需要一種裝置,用于在二元補(bǔ)碼乘法中,當(dāng)把較大操作數(shù)映射到多個較小的并行乘法器上時能夠獲得正確結(jié)果。
發(fā)明概述本發(fā)明尋求通過提出一種用于實(shí)現(xiàn)二元補(bǔ)碼乘法分割的方法和結(jié)構(gòu)來彌補(bǔ)現(xiàn)有技術(shù)的上述缺陷。因而,利用本發(fā)明所提供的方法和結(jié)構(gòu),就可以獲得用于乘法資源的有效的子字并行程度。
在優(yōu)選實(shí)施例中提出了一種雙二元補(bǔ)碼乘法器,這樣可以分割n比特操作數(shù)B,并且操作數(shù)B的每一部分并行地同另一操作數(shù)A相乘。在一個加法器中將中間乘積與補(bǔ)償向量組合,以便校正來自該乘法器的二元補(bǔ)碼子積的任何錯誤負(fù)號,處理分割操作數(shù)B的最低有效的p位或者較低的p位,或者B[p-10],其中p=n/2。該補(bǔ)償向量C是利用簡單電路從A和B操作數(shù)中獲得的。
本發(fā)明的技術(shù)很容易擴(kuò)展到3個或者多個并行乘法器,在這些乘法器上分割n位操作數(shù)D,并使其并行地和操作數(shù)A相乘。以類似于雙二元補(bǔ)碼乘法器實(shí)施例的方式從D和A操作數(shù)中獲得補(bǔ)償向量C’。
附圖簡介
圖1示出了并行運(yùn)算并且共享一個操作數(shù)的兩個m乘p的二元補(bǔ)碼乘法器;圖2將一個操作數(shù)分配到兩個m乘p的雙補(bǔ)碼乘法器中并且在輸出加法器中組合子積;圖3示出了依照本發(fā)明優(yōu)選實(shí)施例對圖2的傳統(tǒng)結(jié)構(gòu)的改進(jìn);圖4更詳細(xì)地示出了圖3的系統(tǒng);以及圖5示出了依照本發(fā)明用戶獲得補(bǔ)償向量的示例電路。
優(yōu)選實(shí)施例詳述本發(fā)明討論了用于實(shí)現(xiàn)分割二元補(bǔ)碼乘法器的方法,以便為乘法資源提供有效的子字并行程度。作為示例,希望雙乘法器的配置可以實(shí)現(xiàn)如圖1所示的較低精度的兩個并行運(yùn)算。并且希望這些相同的乘法器能夠支持一個全精度運(yùn)算,如圖2中所示。
對于以上討論的VSB DFE實(shí)例,三個4×16乘法器陣列可以提供3個同時的乘法,或者一個12×16的乘法。因此,這種分割乘法器是實(shí)現(xiàn)資源和功耗有效的共享硬件的可編程資源的重要工具。
以下將就兩個單獨(dú)的二元補(bǔ)碼乘法器的情形來討論分割乘法器的實(shí)現(xiàn)方法。參照圖1,兩個m乘p的二元補(bǔ)碼乘法器101和102使用單個共享的m位系數(shù)A來實(shí)現(xiàn)并行乘法,并行地將A同B和C相乘,產(chǎn)生B×A的乘積P1和C×A的乘積P0。這種乘法可用于以上討論的情形中的兩個較低精度的乘法。
圖2示例了在兩個乘法器上分割更高精度乘法的情形。圖2示出了試圖將單個n位操作數(shù)分布于兩個相同的m×p乘法器201和202上,然后在輸出加法器203中組合子積,從而組成乘積。在所描述的情形中,因?yàn)椴僮鲾?shù)B的第p-1位被解釋為更低階乘法器201中的二元補(bǔ)碼符號位,因此不能得到正確的乘積。
正確的方法是如圖3中所示的那樣地、在兩個乘法器上分割操作數(shù)B。在圖3中,通過把補(bǔ)償向量310和兩個乘法子積320以及321一起添加到最終的乘積相加中來獲得正確結(jié)果。該補(bǔ)償向量是使用簡單電路而從操作數(shù)A和B中獲得的。在圖5中描述了一個這樣的電路例子。以下將就兩個和三個乘法器的情形來解釋操作數(shù)A和B以及補(bǔ)償向量C之間的解析關(guān)系,并且也可以按照希望而容易地從這種情形擴(kuò)展到更多的乘法器。
補(bǔ)償向量可以用如下的方式添加到乘積上(1)子積組合加法器之后的附加加法器(未示出);(2)子積組合加法器303中的附加端口(圖3所示的實(shí)施方式);或者(3)每一個二元補(bǔ)碼乘法器面板的一個附加行(未示出)。
進(jìn)而,分割乘法器可以被實(shí)施為兩個獨(dú)立的二元補(bǔ)碼乘法器面板(panel),其具有單個分割加法器用以形成最終的結(jié)果。通過利用任意一種所述的設(shè)計(jì)選擇,在此所示的分割乘法器結(jié)構(gòu)都不會產(chǎn)生明顯的門延時損失。
對于VSB DFE中所期望的3到1乘法器情形,如下所述地類似得出,由于兩個乘法器的情形可以確定用于將這3個二元補(bǔ)碼乘法器合并為一個組合乘法器所需的補(bǔ)償向量。為了示例的目的,接下來描述用于將兩個單獨(dú)的乘法器合并為一個而獲得補(bǔ)償向量的方式。
在雙補(bǔ)碼格式中的操作數(shù)被表示如下A=-am-12m-1+Σi=0m-iai2i]]>等式1注意最高有效位(符號)是負(fù)值。
m乘n個乘數(shù)am和bn的乘積被表示為Pab=[-am-12m-1+Σi=0m-2ai2i]×[-bn-12n-1+Σj=0n-2bj2j]]]>=am-1bn-12m+n-2-am-1Σj=0n-2bj2m+j-1-bn-1Σi=0m-2ai2m+i-1+Σi=0m-2Σj=0n-2aibj2i+j]]>=(1)+(2)+(3)+(4)]]>等式2下面解釋分割的n位乘數(shù)B,低階乘法器中的雙m乘p的補(bǔ)碼乘法器將該段的最高有效位解釋為符號位,如下B=-bn-12n-1+Σj=pn-2bj2j+Σk=0p-1bk2k⇒-bn-12n-1+Σj=pn-2bj2j-bp-12p-1+Σk=0p-2bk2k]]>等式3用3來置換2得到等式4,如下
Pab′=[-am-12m-1+Σi=0m-2ai2i]×[-bn-12n-1+Σj=pn-2bj2j-bp-12p-1+Σk=0p-2bk2k]]]>=am-1bn-12m+n-2]]>-am-1{Σj=pn-2bj2m+j-1-bp-12m+p-2+Σj=0p-2bk2m+j-1}]]>-bn-1Σi=0m-2ai2n+i-1]]>+Σi=0m-2Σj=pn-2aibj2i+j+Σi=0m-2Σj=0p-2aibj2i+j-bp-1Σi=0m-2ai2p+i-1]]>等式4比較4與2,可以得到補(bǔ)償項(xiàng),如等式5中所示Pab′=(1)+(3)]]>+(2)+2am-1bp-12m+p-2]]>+(4)-2bp-1Σi=0m-2ai2p+i-1]]>=Pab+am-1bp-12m+p-1-bp-1Σi=0m-2ai2p+i]]>=Pab-compensation]]>等式5其中的compensation(補(bǔ)償)由等式6給出。
compensation=bp-1[-am-12m+p-1+Σi=0m-2ai2p+i]]]>等式6如果乘數(shù)B的MSB(bp-1)等于0,則只是簡單地等于0,或者說如果bp-1=0,則compensation=0。
使用正項(xiàng)來替換6中的負(fù)項(xiàng)可以獲得-am-12m+p-1=am-1{(Σm+pm+n-22i)+0*2m+p-1+(Σ0m+p-22i)+1}.]]>=am-1(Σm+p-1m+1-22i)]]>等式7最后,補(bǔ)償向量是符號擴(kuò)展的A乘數(shù),左移p位(子乘法器的寬度),如等式8所示。補(bǔ)償向量只是被施加到非零的錯誤符號bp-1。因而,必須使用硬件對p-1位置上的非零位進(jìn)行簡單檢查。如果該位是1,則補(bǔ)償向量被添加到最終的加法器。
Pab=Pab′+bp-1{am-1Σm+p-1m+n-22i+Σ0m+p-2ai2p+i}]]>等式8圖4因而示出了本發(fā)明完整的兩個加法器的實(shí)施方式,示出了(如前)兩個乘法器401和402以及加法器。乘數(shù)B被分割到兩個乘法器401和402上,在加法器403中,中間乘積411和412被加在一起獲得正確的乘積450。如上所述,如果乘數(shù)B的第p-1位是0,則補(bǔ)償向量也是0。
接下來,為了完整起見,給出了3個操作數(shù)情形下的補(bǔ)償向量的取得方式。
B=-bn-12n-1+Σj=pn-2bj2j+Σk=0p-1bk2k+Σl=0q-1bl2l]]>⇒-bn-12n-1+Σj=pn-2bj2j-bp-12p-1+Σk=0p-2bk2k-bq-12q-1+Σl=0q-2bl2l]]>等式9
使用和2路分割取得相似的方式,用以上的等式1乘以等式9來獲得擴(kuò)展乘積。比較該等式的12項(xiàng)得到合并的乘法器(等式2),以獲得Pab′=(1)+(3)]]>+(2)+2am-1bp-12m+p-2+2am-1bq-12m+q-2]]>+(4)-2bp-1Σi=0m-2ai2p+i-1-2bq-1Σi=0m-2ai2q+i-1]]>=Pab+am-1bp-12m+p-1-bp-1Σi=0m-2ai2p+i+am-1bq-12m+q-1-bq-1Σi=0m-2ai2q+i]]>=Pab-compensation(p)-compensation(q)]]>等式10其中對于每個補(bǔ)償項(xiàng)compensation(x)=bx-1[-am-12m+x-1+Σi=0m-2ai2x+i]]]>=bx-1{am-1Σm+x-1m+n-22i+Σ0m+x-2ai2x+i}]]>=bx-12xsext(A)]]>等式11一般來說,為了為每個操作數(shù)在二元補(bǔ)碼乘法器面板中引入分割,我們必須增加一個校正項(xiàng)(等式11)到來自每一個面板的部分和的相加中。該校正項(xiàng)只是正交于該分割的乘數(shù)(操作數(shù)不被分割),經(jīng)過符號擴(kuò)展、在分割的操作數(shù)中與錯誤符號位相乘,然后移位,使得校正值的LSB被添加到由面板的上半部分所引入的部分和中。這種分割可以被分別沿每個操作數(shù)引入,從而允許乘法器的任意劃分。操作數(shù)的每個分割都需要一個補(bǔ)償向量,以用于校正最后乘積。
一般來說,沿著一個軸,對于乘法器的每個劃分都有一個補(bǔ)償向量。例如,如果每個乘數(shù)被分割一次(構(gòu)成4個面板的乘法器),則需要兩個補(bǔ)償向量。
盡管以上描述了本發(fā)明的優(yōu)選實(shí)施例,但是本領(lǐng)域技術(shù)人員可以利用各種修改和變化,諸如,將本發(fā)明擴(kuò)展為在許多乘法器上分割乘數(shù),因而允許在同樣的共享硬件中以各種級別的精度來實(shí)現(xiàn)乘法。此外,也可以很容易地實(shí)現(xiàn)把補(bǔ)償向量加到最終加法器中的該示例方法的變體的使用。這些修改被預(yù)定由附加的權(quán)利要求所覆蓋。
權(quán)利要求
1.一種利用子字并行來實(shí)現(xiàn)二元補(bǔ)碼乘法的方法,包括在多個乘法器(401,402)之間分割第一操作數(shù)B,并且將它們中的每一個與第二乘數(shù)A相乘;以及把中間乘積(411,412)和補(bǔ)償向量(410)相加(403)以獲得最終乘積。
2.權(quán)利要求1的方法,其中乘法器(401,402)具有相等的寬度。
3.權(quán)利要求2的方法,其中補(bǔ)償向量(410)是零,其前提是如果沒有錯誤符號位被引入到該分割操作數(shù)B的給定片斷的MSB;以及符號擴(kuò)展的第二乘數(shù)A,其左移了該較低分割乘法器(410)的寬度。
4.權(quán)利要求1的方法,其中補(bǔ)償向量按照以下方式之一添加不同于中間乘積相加的其他加法;與中間乘積相加(403)同時;或者與并行乘法同時。
5.權(quán)利要求1-4中任意一個的方法,該方法被用于在相同的共享硬件上實(shí)施不同精度的乘法。
6.權(quán)利要求5的方法,其中乘法器(401,402)的數(shù)目是2或者3。
7. 一種能夠?qū)崿F(xiàn)多精度二元補(bǔ)碼乘法的集成電路,包括兩個子乘法器(401,402);加法器(403),以及用于產(chǎn)生補(bǔ)償向量的電路(圖5)。
8.權(quán)利要求7的電路,還附加包括一個用于測試子乘法器的乘數(shù)的MSB中的非零符號位的電路。
9.權(quán)利要求8的電路,其中附加的電路控制補(bǔ)償向量的值。
10.權(quán)利要求7-9中任意一個的電路,其中補(bǔ)償向量(410)通過以下方式之一添加不同于中間乘積加法器的附加加法器;中間乘積加法器(403)中的附加端口;或者在二元補(bǔ)碼乘法面板中的附加行。
11.一種能夠?qū)崿F(xiàn)多精度二元補(bǔ)碼乘法的集成電路,包括N個子乘法器(401,402);加法器(403);以及用于產(chǎn)生補(bǔ)償向量的電路(圖5)。
12.權(quán)利要求11的電路,還附加包括用于測試每個子乘法器(401)的一個乘數(shù)的MSB中的非零符號位的電路。
13.權(quán)利要求12的電路,其中附加的電路控制補(bǔ)償向量的值。
14.權(quán)利要求11-13中任意一個的電路,其中補(bǔ)償向量通過以下方式之一添加不同于中間乘積加法器的附加加法器;中間乘積加法器(403)中的附加端口;或者在二元補(bǔ)碼乘法面板中的附加行。
15.權(quán)利要求14的電路,其中沿一個軸對于該乘法器的每一分區(qū)都有一個補(bǔ)償向量(410)。
16.權(quán)利要求5的方法,其中沿一個軸對于該乘法器的每一分區(qū)都有一個補(bǔ)償向量(410)。
全文摘要
給出了一種方法和結(jié)構(gòu),可利用該方法和結(jié)構(gòu)來獲得用于乘法資源有效的子字并行。在一個優(yōu)選實(shí)施例中給出了一個雙二元補(bǔ)碼乘法器,這樣n位操作數(shù)B可以被分割,并且該操作數(shù)B的每一部分并行地與另一操作數(shù)A相乘。其中間乘積和補(bǔ)償向量在加法器中組合,以校正來自該乘法器的二元補(bǔ)碼子積的任何錯誤負(fù)號,處理分割操作數(shù)B的最低有效位或者較低的p位,或者說B[p-10],其中p=n/2。補(bǔ)償向量C是使用簡單電路從A和B操作數(shù)中獲得的。該技術(shù)可以被輕易擴(kuò)展到3個或者更多個并行乘法器,在其上可分割n位操作數(shù)D,并且并行地與操作數(shù)A相乘。以和雙二元補(bǔ)碼乘法器實(shí)施例相似的方式,補(bǔ)償向量C’可以從操作數(shù)D和A中相似地獲得。
文檔編號G06F7/52GK1561478SQ02819320
公開日2005年1月5日 申請日期2002年9月30日 優(yōu)先權(quán)日2001年10月1日
發(fā)明者G·F·布爾恩斯 申請人:皇家飛利浦電子股份有限公司