本發(fā)明涉及基于非精確電路設(shè)計(jì)領(lǐng)域,尤其涉及一種高性能非精確冗余二進(jìn)制乘法器及其設(shè)計(jì)方法。
背景技術(shù):
:
隨著各種移動(dòng)設(shè)備終端的功能體驗(yàn)不斷豐富和發(fā)展,功耗已經(jīng)成為制約數(shù)字集成電路設(shè)計(jì)發(fā)展的一個(gè)關(guān)鍵問(wèn)題。工業(yè)界對(duì)于芯片設(shè)計(jì)的要求已經(jīng)從追求高性能和小面積轉(zhuǎn)變?yōu)閷?duì)性能、面積和功耗的綜合要求。
大量研究表明數(shù)字集成電路計(jì)算的精確度和功耗呈現(xiàn)出正比的關(guān)系,降低計(jì)算精確度能達(dá)到降低功耗的效果,同時(shí)這種能量的節(jié)省和功耗的降低是非常明顯的。通過(guò)降低計(jì)算精確度來(lái)實(shí)現(xiàn)低功耗的方法和設(shè)計(jì)理念被稱為非精確計(jì)算,非精確計(jì)算與現(xiàn)有精確計(jì)算系統(tǒng)的最大不同在于:非精確計(jì)算系統(tǒng)可以將錯(cuò)誤限定在可允許的范圍內(nèi),并且不需要添加任何錯(cuò)誤糾正或者補(bǔ)償措施。
現(xiàn)有的精確乘法器面臨著日益嚴(yán)峻的實(shí)時(shí)和低功耗運(yùn)算的要求,目前已有的普通二進(jìn)制非精確乘法器由于在高位部分積壓縮的過(guò)程中仍需精確壓縮,因而依然存在連續(xù)進(jìn)位的問(wèn)題,這不利于設(shè)計(jì)高速并行的乘法器,迫切需要設(shè)計(jì)新型的高速并行的非精確乘法器來(lái)進(jìn)一步地提高性能并降低功耗。
冗余二進(jìn)制數(shù)是一種有符號(hào)數(shù)的表示方法,附圖3給出了由普通二進(jìn)制數(shù)生成冗余二進(jìn)制數(shù)的編碼方式。冗余二進(jìn)制加法器具有連續(xù)進(jìn)位無(wú)關(guān)的特性和規(guī)整的互連結(jié)構(gòu),冗余二進(jìn)制加法器的連續(xù)進(jìn)位無(wú)關(guān)規(guī)則保證了冗余二進(jìn)制數(shù)加法運(yùn)算的時(shí)間是一個(gè)定值,該值只取決于電路結(jié)構(gòu)本身,而與操作數(shù)字長(zhǎng)無(wú)關(guān)。由冗余二進(jìn)制加法器構(gòu)成的壓縮器因其進(jìn)位無(wú)關(guān)、并行壓縮的特性在乘法器設(shè)計(jì)的部分積壓縮過(guò)程中有很大優(yōu)勢(shì),在32位以及64位等較大位寬的非精確乘法器設(shè)計(jì)中非精確的冗余二進(jìn)制乘法器速度高、面積小、功耗低的優(yōu)勢(shì)將會(huì)體現(xiàn)出來(lái)。
技術(shù)實(shí)現(xiàn)要素:
:
本發(fā)明所要解決的技術(shù)問(wèn)題是針對(duì)嵌入式實(shí)時(shí)低功耗應(yīng)用,提供一種高性能非精確冗余二進(jìn)制乘法器及其設(shè)計(jì)方法,該乘法器面積小、速度高、功耗低。
本發(fā)明采用如下技術(shù)方案:
一種高性能非精確冗余二進(jìn)制乘法器,其特征在于所述乘法器包括:非精確Booth編碼單元、精確Booth編碼單元、非精確冗余4-2壓縮器單元、精確冗余4-2壓縮器單元、精確壓縮樹(shù)形結(jié)構(gòu)單元以及冗余二進(jìn)制數(shù)到普通二進(jìn)制數(shù)轉(zhuǎn)換單元;該乘法器為N bit的乘法器,最終的乘積結(jié)果為2N bit位,乘積結(jié)果的H bit高位由精確Booth編碼單元和精確冗余4-2壓縮器單元生成;乘積結(jié)果的L bit低位由非精確Booth編碼單元和非精確冗余4-2壓縮器單元生成;2N=H+L,N為乘數(shù)和被乘數(shù)的位寬;
精確Booth編碼單元根據(jù)乘數(shù)和被乘數(shù)生成普通二進(jìn)制形式的精確部分積,并將生成的普通二進(jìn)制精確部分積轉(zhuǎn)換為冗余二進(jìn)制精確部分積后傳遞給精確冗余4-2壓縮器單元;
非精確Booth編碼單元根據(jù)乘數(shù)和被乘數(shù)生成非精確部分積,并將生成的普通二進(jìn)制非精確部分積轉(zhuǎn)換為冗余二進(jìn)制非精確部分積后傳遞給非精確冗余4-2壓縮器單元;
精確壓縮樹(shù)形結(jié)構(gòu)單元用于消除在普通二進(jìn)制精確部分積轉(zhuǎn)換為冗余二進(jìn)制精確部分積和普通二進(jìn)制非精確部分積轉(zhuǎn)換為冗余二進(jìn)制非精確部分積的過(guò)程中,由最后兩行普通二進(jìn)制部分積轉(zhuǎn)換為冗余二進(jìn)制部分積時(shí)產(chǎn)生的多余修正序列;
精確冗余4-2壓縮器單元和非精確冗余4-2壓縮器單元分別將冗余二進(jìn)制精確部分積和冗余二進(jìn)制非精確部分積壓縮至一行并傳遞給冗余二進(jìn)制數(shù)到普通二進(jìn)制數(shù)轉(zhuǎn)換單元;冗余二進(jìn)制數(shù)到普通二進(jìn)制數(shù)轉(zhuǎn)換單元將壓縮至僅剩一行的冗余二進(jìn)制部分積轉(zhuǎn)換為普通二進(jìn)制數(shù),得到最終乘積結(jié)果。
本發(fā)明還提出一種高性能非精確冗余二進(jìn)制乘法器的設(shè)計(jì)方法,其特征在于,包括步驟:
(1)構(gòu)建如權(quán)利要求1所述的高性能非精確冗余二進(jìn)制乘法器;
(2)通過(guò)精確Booth編碼單元和非精確Booth編碼單元產(chǎn)生N/2行普通二進(jìn)制部分積并將普通二進(jìn)制部分積轉(zhuǎn)換為冗余二進(jìn)制形式的部分積;每行普通二進(jìn)制形式的部分積分為精確部分積和非精確部分積;普通二進(jìn)制精確部分積由精確Booth編碼單元產(chǎn)生,普通二進(jìn)制非精確部分積由非精確Booth編碼單元產(chǎn)生;
第i行普通二進(jìn)制部分積中精確部分積的表達(dá)式為:
精確Booth編碼單元產(chǎn)生的糾錯(cuò)字為:
第i行普通二進(jìn)制部分積中非精確部分積的表達(dá)式為:
非精確Booth編碼單元產(chǎn)生的糾錯(cuò)字為:ECWi'=b2i+1;
式中,b2i表示乘數(shù)中第2i位的權(quán)值系數(shù),aj表示被乘數(shù)中第j位的權(quán)值系數(shù);其中i取整數(shù),當(dāng)i=0時(shí),b2i-1=b-1=0;0≤j<N,j取整數(shù);當(dāng)j=0時(shí),aj-1=a-1=0;
將普通二進(jìn)制形式的部分積轉(zhuǎn)換為冗余二進(jìn)制形式的部分積,轉(zhuǎn)換的方法為:
當(dāng)i為偶數(shù)時(shí),即時(shí),令當(dāng)i為奇數(shù)時(shí),即時(shí),令相鄰的兩行構(gòu)成一行冗余二進(jìn)制部分積pk;
(3)通過(guò)精確壓縮樹(shù)形結(jié)構(gòu)單元消除普通二進(jìn)制部分積轉(zhuǎn)換為冗余二進(jìn)制形式部分積過(guò)程中產(chǎn)生的多余修正序列;并將修正后的冗余進(jìn)制形式部分積發(fā)送給精確冗余4-2壓縮器單元和非精確冗余4-2壓縮器單元;
(4)通過(guò)精確冗余4-2壓縮器單元和非精確冗余4-2壓縮器單元將冗余二進(jìn)制形式的部分積壓縮至一行;精確冗余4-2壓縮器單元壓縮冗余二進(jìn)制形式的部分積中的精確部分積,非精確冗余4-2壓縮器單元壓縮冗余二進(jìn)制形式的部分積中的非精確部分積;
(5)通過(guò)冗余二進(jìn)制數(shù)到普通二進(jìn)制數(shù)轉(zhuǎn)換單元將步驟(4)中壓縮至一行的冗余二進(jìn)制部分積轉(zhuǎn)換為普通二進(jìn)制數(shù),得到最終普通二進(jìn)制形式的乘積結(jié)果。
進(jìn)一步的,所述精確冗余4-2壓縮器單元包括一組精確冗余4-2壓縮器,每個(gè)精確冗余4-2壓縮器的輸入為權(quán)值相同的四個(gè)數(shù)輸出為精確冗余4-2壓縮器輸入與輸出值之間的邏輯關(guān)系表達(dá)式為:
所述非精確4-2壓縮器單元包括一組非精確4-2壓縮器,每個(gè)非精確4-2壓縮器輸入為輸出為非精確冗余4-2壓縮器單元輸入與輸出值之間的邏輯關(guān)系表達(dá)式為:
當(dāng)k=0時(shí),
進(jìn)一步的,所述步驟(3)中通過(guò)精確壓縮樹(shù)形結(jié)構(gòu)單元消除多余修正序列的方法為:
分別用替代用替代令其中:
進(jìn)一步的,所述步驟(5)中,通過(guò)冗余二進(jìn)制數(shù)到普通二進(jìn)制數(shù)轉(zhuǎn)換單元將冗余二進(jìn)制部分積轉(zhuǎn)換為普通二進(jìn)制數(shù)的方法為:
定義任意一位冗余二進(jìn)制部分積為Xi對(duì)應(yīng)的編碼為Si為補(bǔ)碼位,Ci為低位送來(lái)的進(jìn)位,C0=0,Ci+1為向高位的進(jìn)位;對(duì)冗余二進(jìn)制部分積中的每一位執(zhí)行以下步驟:以為輸入,計(jì)算:
本發(fā)明具有如下有益效果:
1.與之前的乘法器相比,需要更少的硬件資源;
2.與之前的乘法器相比,功耗更低,速度更快,應(yīng)用效果更好。
附圖說(shuō)明:
圖1為以N=8,L=4,H=12的非精確冗余二進(jìn)制乘法器的原理實(shí)現(xiàn)圖;
圖2為8位普通二進(jìn)制乘法器部分積產(chǎn)生原理圖;
圖3為8位冗余二進(jìn)制乘法器部分積產(chǎn)生原理圖;
圖4為普通二進(jìn)制數(shù)到冗余二進(jìn)制數(shù)轉(zhuǎn)換方式圖;
圖5為電路中的門(mén)符號(hào)含義圖;
圖6為非精確Booth編碼單元的門(mén)級(jí)實(shí)現(xiàn)電路圖;
圖7為精確冗余4-2壓縮器單元中的的門(mén)級(jí)實(shí)現(xiàn)電路圖;
圖8為精確冗余4-2壓縮器單元中的的門(mén)級(jí)實(shí)現(xiàn)電路圖;
圖9為非精確冗余4-2壓縮器單元中的門(mén)級(jí)實(shí)現(xiàn)電路圖;
圖10為非精確冗余4-2壓縮器單元中的門(mén)級(jí)實(shí)現(xiàn)電路圖;
圖11為冗余二進(jìn)制數(shù)到普通二進(jìn)制數(shù)轉(zhuǎn)換方式圖。
具體實(shí)施方式:
下面以N=8,H=12,L=4,即以乘積結(jié)果的高12位為精確設(shè)計(jì),而低4位為非精確設(shè)計(jì)的8位非精確冗余二進(jìn)制乘法器為例,結(jié)合附圖對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)說(shuō)明:
如圖1所示為本發(fā)明的,本發(fā)明高性能非精確冗余二進(jìn)制乘法器包括非精確Booth編碼單元、精確Booth編碼單元、非精確冗余4-2壓縮器單元、精確冗余4-2壓縮器單元、精確壓縮樹(shù)形結(jié)構(gòu)單元以及冗余二進(jìn)制數(shù)到普通二進(jìn)制數(shù)轉(zhuǎn)換單元。各單元電路如圖5至10所示。
其中精確Booth編碼單元是用于兩個(gè)操作數(shù)生成精確的高12位部分積,將部分積的行數(shù)減少至4行并且將部分積傳遞給精確壓縮器單元使用。
高12位使用精確Booth編碼單元產(chǎn)生部分積的表達(dá)式為:
糾錯(cuò)字為:
式中,b2i表示乘數(shù)中第2i位的權(quán)值系數(shù),aj表示被乘數(shù)中第j位的權(quán)值系數(shù)。其中0≤i<4,i取整數(shù);0≤j<8,j取整數(shù)。
其中非精確Booth編碼單元是用于兩個(gè)操作數(shù)生成非精確的低4位部分積,將部分積的行數(shù)減少至4行并且將部分積傳遞給非精確壓縮器單元使用。
而非精確Booth編碼單元中部分積產(chǎn)生的表達(dá)式為:
糾錯(cuò)字為:ECWi′=b2i+1;
式中,b2i表示乘數(shù)中第2i位的權(quán)值系數(shù),aj表示被乘數(shù)中第j位的權(quán)值系數(shù)。其中0≤i<4,i取整數(shù);0≤j<8,j取整數(shù)。
精確Booth編碼單元和非精確Booth編碼單元產(chǎn)生的均為普通二進(jìn)制形式部分積,普通二進(jìn)制的部分積產(chǎn)生原理圖如圖2所示。
圖3為8位冗余二進(jìn)制乘法器部分積產(chǎn)生原理圖。其中a8等于符號(hào)位a7,由于被乘數(shù)A需要與進(jìn)行Booth編碼的乘數(shù)B相乘,當(dāng)部分積結(jié)果為2A時(shí)需要A向左移1位,這使得低位向左移位占據(jù)符號(hào)位的位置,導(dǎo)致符號(hào)位丟失產(chǎn)生錯(cuò)誤,因此將a8作為a7的擴(kuò)展位,在僅增加少量硬件復(fù)雜度的情況下可以解決這一錯(cuò)誤。
即第0行普通二進(jìn)制部分積的P04,P05,……P07由精確Booth編碼生成,例如而P00,P01,……P03及ECW0′=b1均由非精確Booth編碼及對(duì)應(yīng)的糾錯(cuò)字生成,例如P00=P′00=(b0·0)+(b1⊕a0)。
第1行普通二進(jìn)制部分積的P12,P13,……P17由精確Booth編碼生成,而P10,P11及糾錯(cuò)字ECW1'=b3均由非精確Booth編碼及對(duì)應(yīng)的糾錯(cuò)字產(chǎn)生方式生成。
第2行普通二進(jìn)制部分積的P20,P21,……P27及由精確Booth編碼及對(duì)應(yīng)的糾錯(cuò)字產(chǎn)生方式生成。
第3行普通二進(jìn)制部分積的P30,P31,……P37及由精確Booth編碼及對(duì)應(yīng)的糾錯(cuò)字產(chǎn)生方式生成。
將上述通過(guò)精確與非精確Booth編碼方式產(chǎn)生的普通二進(jìn)制部分積做如下變換,當(dāng)i為偶數(shù)(即i=0,2)時(shí),將P0j變換為將P2j變換為當(dāng)i為奇數(shù)時(shí)(即i=1,3),將P1j轉(zhuǎn)換為將P3j轉(zhuǎn)換為這樣相鄰的兩行普通二進(jìn)制部分積就可以用來(lái)構(gòu)成一行冗余二進(jìn)制部分積p0,就可以用來(lái)構(gòu)成一行冗余二進(jìn)制部分積p1。
兩個(gè)M位普通二進(jìn)制部分積A和B相加可以表示為:
因此一個(gè)冗余二進(jìn)制部分積可以表示為它由數(shù)集構(gòu)成,這里的圖4給出了一種由普通二進(jìn)制數(shù)到冗余二進(jìn)制數(shù)的編碼方式。根據(jù)這種編碼方式,對(duì)于8位冗余二進(jìn)制乘法器而言,這兩行普通二進(jìn)制部分積的最高2位為符號(hào)擴(kuò)展位,該2位由符號(hào)位確定并互為反函數(shù),同時(shí)將最高位取反,并產(chǎn)生一個(gè)修正值-1,即可將普通二進(jìn)制數(shù)部分積轉(zhuǎn)化為冗余二進(jìn)制部分積。
利用具有進(jìn)位無(wú)關(guān)特性的冗余二進(jìn)制加法器將轉(zhuǎn)換得到的冗余二進(jìn)制部分積進(jìn)行壓縮,即可得到冗余二進(jìn)制形式的積。
其中精確冗余4-2壓縮器的輸入為權(quán)值相同的四個(gè)數(shù)輸出為表達(dá)式為:
非精確4-2壓縮器輸入為輸出為表達(dá)式為:
當(dāng)k=0時(shí),
作為本發(fā)明高性能非精確冗余二進(jìn)制乘法器進(jìn)一步的優(yōu)化方案,對(duì)于8位乘法器而言,通過(guò)邏輯化簡(jiǎn)分別用替代用替代令進(jìn)而可以在減少一級(jí)壓縮的前提下仍然可以實(shí)現(xiàn)精確的壓縮樹(shù)形結(jié)構(gòu)單元,相比于忽略多余糾錯(cuò)序列的壓縮樹(shù)形結(jié)構(gòu)單元提高了壓縮精度。其中:
將壓縮至僅剩一行的冗余二進(jìn)制部分積,通過(guò)冗余二進(jìn)制數(shù)到普通二進(jìn)制數(shù)轉(zhuǎn)換單元得到最終乘積結(jié)果。根據(jù)圖11的冗余二進(jìn)制數(shù)到普通二進(jìn)數(shù)轉(zhuǎn)換方式圖,由構(gòu)成的Xi為冗余二進(jìn)制數(shù)位,Si為二進(jìn)制數(shù)的補(bǔ)碼輸出,Ci為低位送來(lái)的進(jìn)位,C0=0,Ci+1為向高位的進(jìn)位輸出。可以得到Si和Ci+1的邏輯表達(dá)式為:
本發(fā)明還給出了8位高性能非精確冗余二進(jìn)制乘法器的應(yīng)用方法。其中使用精確Booth編碼單元、精確冗余4-2壓縮器單元和非精確Booth編碼單元、非精確冗余4-2壓縮器單元的位數(shù)確定包含以下步驟:
步驟1),將非精確冗余二進(jìn)制乘法器中使用非精確Booth編碼單元和非精確冗余4-2壓縮器單元的位數(shù)L設(shè)為非精確因子p,而使用精確Booth編碼單元和精確冗余4-2壓縮器單元的位數(shù)H則為H=16-p;
步驟2),對(duì)非精確冗余二進(jìn)制乘法器進(jìn)行建模;
步驟3),根據(jù)具體的應(yīng)用數(shù)據(jù)確定非精確因子p,并對(duì)建模后的非精確冗余二進(jìn)制乘法器進(jìn)行仿真;
步驟4),根據(jù)應(yīng)用的要求評(píng)估仿真結(jié)果,如果仿真的結(jié)果不符合應(yīng)用的要求,則令非精確因子p=p-1;
步驟5),重復(fù)步驟3)和步驟4),直至仿真的結(jié)果符合應(yīng)用的要求。此時(shí)p值即為L(zhǎng)的取值,對(duì)應(yīng)的H的取值為H=16-L;
以上只是對(duì)本發(fā)明的優(yōu)選實(shí)施方式進(jìn)行了描述。對(duì)該技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),根據(jù)以上實(shí)施方式可以很容易地聯(lián)想到其它的優(yōu)點(diǎn)和變形。因此,本發(fā)明并不局限于上述實(shí)施方式,其僅僅作為例子對(duì)本發(fā)明的一種形態(tài)進(jìn)行詳細(xì)、示范性的說(shuō)明。在不背離本發(fā)明宗旨的范圍內(nèi),本領(lǐng)域普通技術(shù)人員在本發(fā)明技術(shù)的方案范圍內(nèi)進(jìn)行的通常變化和替換,都應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。