一種具有高精度低能耗特性的固定位寬乘法器的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于集成電路技術(shù)領(lǐng)域,具體的說設(shè)及一種具有高精度低能耗特性的固定 位寬乘法器。
【背景技術(shù)】
[0002] 乘法器是數(shù)字集成電路中一種非常重要的基本單元。在數(shù)字系統(tǒng)設(shè)計(jì)中,乘法器 的性能和功耗很大程度上影響著整個(gè)數(shù)字系統(tǒng)。
[0003] 在乘法器設(shè)計(jì)中,一般采用編碼電路對乘數(shù)進(jìn)行編碼,W減少乘數(shù)中非零位的數(shù) 量從而減少部分積的產(chǎn)生,進(jìn)而減少用W累加部分積的加法器的數(shù)量,達(dá)到簡化硬件、減小 功耗、提升乘法運(yùn)算速度的目的。其中CSD(CanonicalSi即edDigit)編碼器就是一種應(yīng)用 于乘法運(yùn)算的冗余帶符號數(shù)編碼方式,其優(yōu)勢在于可將乘數(shù)中非零位的數(shù)量減少到最小, 并且滿足編碼后任何兩個(gè)非零數(shù)不相鄰。
[0004] 在實(shí)際應(yīng)用中,在需要反復(fù)迭代運(yùn)算或需要限制存儲長度的場合,通常采用固定 位寬乘法器設(shè)計(jì)。固定位寬乘法器是一種使得乘法運(yùn)算結(jié)果保持與被乘數(shù)位寬相同的乘法 器,它通過采用某些補(bǔ)償結(jié)構(gòu)來實(shí)現(xiàn)對精確輸出結(jié)果的近似。在傳統(tǒng)全精度CSD乘法器的 基礎(chǔ)上,采用固定位寬乘法器設(shè)計(jì),可W進(jìn)一步簡化乘法運(yùn)算,實(shí)現(xiàn)更低的功耗和更高的運(yùn) 算速度。 陽0化]傳統(tǒng)的固定位寬CSD乘法器采用了比較簡單的補(bǔ)償方式,通常包括了全精度運(yùn)算 再截?cái)嗪椭苯咏財(cái)鄡煞N方式。全精度運(yùn)算再截?cái)喾绞绞窃谌冗\(yùn)算的結(jié)果上截?cái)鄼?quán)重較 低的位數(shù),再采用常數(shù)補(bǔ)償方式,實(shí)現(xiàn)了較高的精度,但是其功耗和速度相對全精度的設(shè)計(jì) 并不具有優(yōu)勢;直接截?cái)喾绞诫m然具有較低的功耗和較快的速度,但運(yùn)算結(jié)果和精確結(jié)果 相比誤差較大,因而應(yīng)用價(jià)值較低。傳統(tǒng)的固定位寬CSD乘法器在補(bǔ)償方式的設(shè)計(jì)上比較 明顯的缺點(diǎn),極大的制約了固定位寬CSD乘法器的應(yīng)用范圍。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明所要解決的,就是針對上述問題,提出一種具有高精度低能耗特性的固定 位寬乘法器。
[0007] 為實(shí)現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:
[0008] 一種具有高精度低能耗特性的固定位寬乘法器,包括CSD編碼電路、高位部分積 產(chǎn)生電路、低位補(bǔ)償電路和部分積壓縮電路;所述CSD編碼電路的輸入端接第一外部輸入 數(shù)據(jù),其輸出端接高位部分積產(chǎn)生電路的第一輸入端、低位補(bǔ)償電路的第一輸入端;所述高 位部分積產(chǎn)生電路的第二輸入端接第二外部輸入數(shù)據(jù),其輸出端接部分積壓縮電路的第一 輸入端;所述低位補(bǔ)償電路的第二輸入端接第二外部輸入數(shù)據(jù),其輸出端接部分積壓縮電 路的第二輸入端;所述部分積壓縮電路的輸出端為固定位寬乘法器的輸出端;
[0009] 所述CSD編碼電路用于接收固定字長的外部數(shù)據(jù),所述第一外部輸入數(shù)據(jù)為乘法 器的乘數(shù),所述乘數(shù)為二進(jìn)制數(shù)據(jù),CSD編碼電路根據(jù)接收的二進(jìn)制數(shù)據(jù)迭代產(chǎn)生輸出CSD 編碼結(jié)果,將CSD編碼結(jié)果輸入到高位部分積產(chǎn)生電路的第一輸入端、低位補(bǔ)償電路的第 一輸入端;
[0010] 所述高位部分積產(chǎn)生電路用于產(chǎn)生乘法高位部分積,所述外部輸入數(shù)據(jù)為乘法器 的被乘數(shù),采用二進(jìn)制數(shù)據(jù),根據(jù)CSD編碼結(jié)果和外部輸入數(shù)據(jù),通過并行運(yùn)算得到高位的 精確部分積結(jié)果;
[0011] 所述低位補(bǔ)償電路用于產(chǎn)生近似的乘法低位部分積,所述第二外部輸入數(shù)據(jù)為乘 法器的被乘數(shù)輸入,所述被乘數(shù)為二進(jìn)制數(shù)據(jù),低位補(bǔ)償電路根據(jù)CSD編碼結(jié)果和第二外 部輸入數(shù)據(jù),產(chǎn)生用于擬合乘法的低位部分積結(jié)果;
[0012] 所述部分積壓縮電路用于壓縮高位部分積產(chǎn)生電路和低位補(bǔ)償電路產(chǎn)生的兩個(gè) 部分積,從而減少乘法部分積的數(shù)量,最終輸出固定位寬乘法運(yùn)算的結(jié)果。
[0013] 進(jìn)一步的,所述CSD編碼電路根據(jù)接收的二進(jìn)制數(shù)據(jù)迭代產(chǎn)生輸出CSD編碼結(jié)果 的具體方法為:
[0014] 設(shè)外部輸入的乘數(shù)為n位二進(jìn)制數(shù)據(jù),分別為第一位數(shù)bO、第二位數(shù)bl、……、第 n位數(shù)bn-1 ;
[0015] CSD編碼電路輸出為W符號-幅值方式編碼的CSD碼,位數(shù)均為n位,且一一對應(yīng), 符號位分別為第一位數(shù)符號位dO,S、第二位數(shù)符號位dl,S、……、第n位數(shù)符號位化-1,S, 幅值位分別為第一位數(shù)幅值位do,m、第二位數(shù)幅值位dl,m、......、第n位數(shù)幅值位化-1,m, W-個(gè)符號位di-1,S和一個(gè)幅值位di-1,m共同表示第i個(gè)CSD編碼位di-1,輸出的所有 符號位和幅值位接高位部分積產(chǎn)生電路的第一輸入端、低位補(bǔ)償電路的第一輸入端;
[0016] 所述CSD編碼電路由第1位CSD編碼子電路、第n位CSD編碼子電路和其它CSD 編碼子電路=類CSD編碼子電路構(gòu)成;
[0017] 所述的第1位CSD編碼子電路由一個(gè)與口AND構(gòu)成;第1位CSD編碼數(shù)的幅值位 為外部輸入乘數(shù)的第一位數(shù)bO,同時(shí)接與口AND的輸入端;與口AND的另一個(gè)輸入端接外 部輸入乘數(shù)的第二位數(shù)bl,其輸出端接第1位CSD編碼數(shù)的符號位; 陽0化]所述的第n位CSD編碼子電路由同或口XN0R、或非口NOR、反相器INV和與口AND構(gòu)成;第n-1位輸入二進(jìn)制位bi-2和第n位輸入二進(jìn)制位bn-1接同或口XN0R的輸入端, 同或口XN0R的輸出接或非口NOR的一個(gè)輸入端;或非口NOR的另一個(gè)輸入端接第n-1位輸 出CSD編碼的幅值位化-2,m,其輸出端作為第i位輸出CSD編碼的幅值位化-1,m,同時(shí)接 與口AND的第一輸入端;反相器INV的輸入端接第n-1位輸出CSD編碼的幅值位化-2,m, 輸出端接與口AND的第二輸入端;與口AND的第一輸入端接或非口NOR的輸出端,第二輸入 端接反相器INV的輸出端,第S輸入端接第n位輸入二進(jìn)制位bn-1,其輸出端作為第i位輸 出CSD編碼的符號位化-1,S;
[0019] 所述的其它CSD編碼子電路W第i位為例,所述CSD編碼電路由同或口XN0R、或非 口NOR和與口AND構(gòu)成;第i-1位輸入二進(jìn)制位bi-2和第i位輸入二進(jìn)制位bi-1接同或 口XN0R的輸入端,其輸出接或非口NOR的輸入;或非口NOR的一個(gè)輸入端接同或口XN0R的 輸出,其另一個(gè)輸入端接第i-1位輸出CSD編碼的幅值位di-2,m,其輸出端作為第i位輸 出CSD編碼的幅值位di-1,m,同時(shí)接與口AND的輸入端;與口AND的一個(gè)輸入端接或非口 NOR的輸出端,其另一個(gè)輸入端接第i+1位輸入二進(jìn)制位bi,其輸出端作為第i位輸出CSD 編碼的符號位di-l,s。
[0020] 進(jìn)一步的,所述高位部分積產(chǎn)生電路根據(jù)CSD編碼結(jié)果和外部輸入數(shù)據(jù),通過并 行運(yùn)算得到高位的部分積結(jié)果的具體方法為:
[0021] 設(shè)被乘數(shù)為n位二進(jìn)制數(shù)據(jù),分別為第一位數(shù)aO、第二位數(shù)al、……、第n位數(shù) 曰n-1 ;
[0022] 所述高位部分積產(chǎn)生電路,輸入為外部輸入的被乘數(shù)和CSD編碼電路的輸出數(shù) 據(jù),輸出為高位部分積,包括n行,其中第i行由i位數(shù)組成,依次為pi-1,n-1,pi-1,n-2,… …,pi-l,n-i,接部分積壓縮電路的第一輸入端;所述高位部分積產(chǎn)生電路由n(l+n)/2個(gè) 異或口X0R和n(1+n) /2個(gè)與口AND構(gòu)成;W第i行第j位部分積pi-1,j-1為例,由第i位 CSD編碼di-1與第j位被乘數(shù)aj-1產(chǎn)生,其中i和j需要滿足i+j>n+1,第i位CSD編 碼的符號位化-1,S接異或口X0R的輸入端,第j位被乘數(shù)aj-1接異或口X0R的另一個(gè)輸 入端,X0R的輸出端接與口AND的輸入端;與口AND的一個(gè)輸入端接異或口X0R的輸出端, 另一個(gè)輸入端接第i位CSD編碼的幅值位di-1,m,與口AND的輸出端為第i行第j列部分 積pi-1,j-1。
[0023] 進(jìn)一步的,所述低位補(bǔ)償電路根據(jù)CSD編碼結(jié)果和第二外部輸入數(shù)據(jù),產(chǎn)生用于 擬合乘法的低位部分積結(jié)果的具體方法為:
[0024] 所述的低位補(bǔ)償電路由判斷產(chǎn)生模塊和低位部分積產(chǎn)生模塊構(gòu)成,;所述判斷產(chǎn) 生模塊用于判斷下式中等號右側(cè)每一項(xiàng)數(shù)據(jù)為1的總個(gè)數(shù),判斷的結(jié)果用sum表示,即: 陽0巧]
[00%] 其中,運(yùn)算符I表示或運(yùn)算,運(yùn)算符活表示異或運(yùn)算;曰2表示外部輸入的被乘數(shù)第 3位二進(jìn)制數(shù),接低位補(bǔ)償電路的第一輸入端,即判斷產(chǎn)生模塊的第一輸入端,在低位補(bǔ)償 電路中接判斷產(chǎn)生模塊的第一輸入端;所述di-1,m和di-1,S作為CSD編碼電路第i位輸 出接低位補(bǔ)償電路的第二輸入端,在低位補(bǔ)償電路中接判斷產(chǎn)生模塊的第二輸入端;所述 sum表示判斷產(chǎn)生模塊的數(shù)據(jù)輸出,接低位部分積產(chǎn)生模塊的輸入端;
[0027] 所述低位部分積產(chǎn)生模塊用于產(chǎn)生近似的低位部分積,包括W下步驟:
[0028] a.取二「log,令1 = k-1 ; ',
[0029] b.判斷sum>2I+I是否成立,若是,則取Ci=1,sum=sum-21;若否,則取c1= 0,令1 = 1-1 ;
[0030]C.判斷1=0是否成立,若是,則輸出C,其中C的第1-1位為Cl;若否,則回到步 驟b;
[0031] 所述sum表示低位部分積產(chǎn)生模塊的輸入端,接判斷產(chǎn)生模塊的數(shù)據(jù)輸出,所述C 為一個(gè)k位二進(jìn)制數(shù),作為低位部分積產(chǎn)生模塊的輸出端,接低位補(bǔ)償電路的輸出端,接部 分積壓縮電路的第二輸入端。
[0032] 進(jìn)一步的,所述部分積壓縮電路壓縮高位部分積產(chǎn)生電路