一種Booth編碼器及乘法器的制造方法
【專利摘要】本發(fā)明公開了一種Booth編碼器及乘法器。針對現(xiàn)有的面向模(2n-2p-1)乘法器耗費資源,速度較低的問題,提出了一種針對模(2n-2p-1)Booth乘法器的Booth編碼器,以及基于該Booth編碼器的模(2n-2p-1)乘法器。本發(fā)明的乘法器,在運算過程中,直接把個部分積和修正項C進行同時壓縮,從而實現(xiàn)在運算過程中就實現(xiàn)了修正,大大減少了運算量,從而減少了資源的耗費和關鍵路徑的延遲。
【專利說明】—種Booth編碼器及乘法器
【技術領域】
[0001]本發(fā)明屬于計算機和集成電路領域,尤其涉及一種高速乘法器的設計。
【背景技術】
[0002]在介紹乘法器之前,先對余數(shù)系統(tǒng)(RNS, Residue Number Systems)做一說明。余數(shù)系統(tǒng)RNS是一種通過一組兩兩互質余數(shù)基的余數(shù)來描述數(shù)字的數(shù)值表征系統(tǒng)。由Im1, m2,...,mj組成的L個余數(shù)基,整數(shù)X,0≤X〈M,其中M=Hi1Xm2X...XmL,在RNS系統(tǒng)中
有唯一的表示方式為X=U1, χ2,…,xj,a; _〉〃,.,其中〈氣表示X對于模Hli的余數(shù)。在
余數(shù)系統(tǒng)中兩個操作數(shù)進行操作,操作符為O,可以定義為:(Z1, Z2,..., ZL} = {x1, X2,…,X1J
Θ {yi, y2,…,yj,其中z = {χβ>? )ll:i,這里?可以是模加法,模減法或模乘法。在余數(shù)系
統(tǒng)中這些算術運算都是并行執(zhí)行的,而且處理的都是很小的余數(shù)而不是一個很大的數(shù)。模(2η-2ρ-1)乘法器可以廣泛應用于Fermat數(shù)值轉換和余數(shù)系統(tǒng)以及數(shù)字信號處理中,在余數(shù)系統(tǒng)中具有非常重要的意義。
[0003]在文獻 L.Li, J.Hu, Y.Chen, “An universal architecture for designingmodulo (2n_2p_l) multipliers,,,IEICE Electronics Express, vol.9, n0.3, pp.193-199,F(xiàn)eb.2012提出的乘法器結構需要一個n位Xn位的乘法器,CSA壓縮器,一個p位的加法器,三個 η 位的加法器;在文獻 A.A.Hiasat, “New Efficient Structure for a ModularMultiplier for RNS”,IEEE Trans.Computers, vol.49,n0.2,pp.170-174,F(xiàn)eb.2000 提出的乘法器結構需要一個n位Xn位的乘法器,一個(n-p-2)位X (p+1)位的乘法器,CSA壓縮器,2個η位的加法器,還有復雜的組合邏輯。因此它們耗費資源較多,速度較低。這兩種結構都是先進行二進制的乘法運算,再在二進制的乘法運算結果上進行修正,這兩種結構都存在修正邏輯過于復雜的問題。
【發(fā)明內容】
[0004]本發(fā)明的目的是為了解決現(xiàn)有的面向模(2η-2ρ_1)乘法器耗費資源,速度較低的問題,提出了一種針對模(2n_2p-l)B00th乘法器的Booth編碼器,以及基于該Booth編碼器的模(2n-2p-l)乘法器。
[0005]本發(fā)明的技術方案是:一種Booth編碼器,由Booth譯碼器和Booth選擇器組成,其中,所述Booth譯碼器包括第一異或門、第一同或門、第一或非門、第一與門、第二與門和第一或門;所述Booth選擇器包括第三與門、第四與門、第二或非門和第二同或門;
[0006]設4=&1^"&^"&(|,8=1311_1"4^"13(|為基于模(2n-2p_l)表示的需要相乘操作的兩個操作數(shù);
[0007]Booth譯碼器:所述第一異或門包括兩個輸入端,用于輸入操作數(shù)B相鄰的兩位b[2k]和b[2k_l],所述第一異或門的輸出為Ix [k],作為Booth譯碼器的第一輸出,輸入到Booth選擇器中;所述第一同或門包括兩個輸入端,用于輸入操作數(shù)B相鄰的兩位b [2k]和b[2k+l],所述第一同或門的輸出輸入到所述第一或非門;所述第一或非門包括兩個輸入端,分別用于輸入所述第一異或門和所述第一同或門的輸出,所述第一或非門的輸出為2x [k],輸入到所述第二與門,作為Booth譯碼器的第二輸出,并輸入到Booth選擇器中;所述第一與門的兩個輸入端,分別用于輸入所述第一異或門的輸出lx[k]和操作數(shù)B的對應位b[2k+l],所述第一與門的輸出為s[k].Ix [k],作為Booth譯碼器的第三輸出;所述第二與門的兩個輸入端,分別用于輸入第一或非門的輸出2x[k]和操作數(shù)B的對應位b[2k+l],所述第二與門的輸出為 s[k] *2X[k],作為Booth譯碼器的第四輸出;所述第一或門的兩個輸入端,分別用于輸入所述第一與門和所述第二與門的輸出,所述第一或門的輸出為zp [k],作為Booth譯碼器的第五輸出輸入到Booth選擇器中;
[0008]Booth選擇器:所述第三與門的兩個輸入端,分別用于輸入操作數(shù)A的對應位a [i]和從Booth譯碼器輸出的Ix [k],所述第三與門的輸出輸入到所述第二或非門的第一輸入端;所述第四與門的兩個輸入端,分別用于輸入操作數(shù)A的對應位a[i_l]和從Booth譯碼器輸出的2x[k],所述第四與門的輸出輸入到所述第二或非門第二輸入端;所述第二或非門的兩個輸入端,分別用于輸入第三與門和第四與門的輸出,所述第二或非門的輸出輸入到所述第二同或門;所述第二同或門的兩個輸入端,分別用于輸入所述第二或非門的輸入和從Booth譯碼器輸出的zp [k],所述第二同或門的輸出記為pp [k] [i],作為所述Booth選擇器的輸出端。
[0009]基于上述Booth編碼器,本發(fā)明還提出了一種模(2n-2p-l)Booth乘法器,包括:Booth譯碼器陣列、Booth選擇器陣列、壓縮陣列和第一模(2n-2p-l)加法器,第二模(2n-2p-l)加法器和第三模(2n-2p-l)加法器,設A和B為基于模(2n_2p_l)表示的需要相乘操作的兩個操作數(shù),Y為模(2n-2p-l) Booth乘法器的輸出,具體連接方式如下:操作數(shù)A作為Booth選擇器陣列的輸入連接到Booth選擇器陣列,操作數(shù)B作為Booth譯碼器陣列的輸入連接到Booth譯碼器陣列,Booth譯碼器陣列的輸出作為輸入連接到Booth選擇器陣
列,Booth選擇器陣列輸出
【權利要求】
1.一種Booth編碼器,由Booth譯碼器和Booth選擇器組成,其中,所述Booth譯碼器包括第一異或門、第一同或門、第一或非門、第一與門、第二與門和第一或門;所述Booth選擇器包括第三與門、第四與門、第二或非門和第二同或門;(2n-2p-l)表示的需要相乘操作的兩個操作數(shù); Booth譯碼器:所述第一異或門包括兩個輸入端,用于輸入操作數(shù)B相鄰的兩位b [2k]和b[2k-l],所述第一異或門的輸出為lx[k],作為Booth譯碼器的第一輸出,輸入到Booth選擇器中;所述第一同或門包括兩個輸入端,用于輸入操作數(shù)B相鄰的兩位b[2k]和b[2k+l],所述第一同或門的輸出輸入到所述第一或非門;所述第一或非門包括兩個輸入端,分別用于輸入所述第一異或門和所述第一同或門的輸出,所述第一或非門的輸出為2x [k],輸入到所述第二與門,作為Booth譯碼器的第二輸出并輸入到Booth選擇器中;所述第一與門的兩個輸入端,分別用于輸入所述第一異或門的輸出lx[k]和操作數(shù)B的對應位b[2k+l],所述第一與門的輸出為s[k].Ix [k],作為Booth譯碼器的第三輸出;所述第二與門的兩個輸入端,分別用于輸入第一或非門的輸出2x[k]和操作數(shù)B的對應位b[2k+l],所述第二與門的輸出為s[k] *2X[k],作為Booth譯碼器的第四輸出;所述第一或門的兩個輸入端,分別用于輸入所述第一與門和所述第二與門的輸出,所述第一或門的輸出為zp [k],作為Booth譯碼器的第五輸出輸入到Booth選擇器中; Booth選擇器:所述第三與門的兩個輸入端,分別用于輸入操作數(shù)A的對應位a[i]和從Booth譯碼器輸出的lx[k],所述第三與門的輸出輸入到所述第二或非門的第一輸入端;所述第四與門的兩個輸入端,分別用于輸入操作數(shù)A的對應位a [1-1]和從Booth譯碼器輸出的2x[k],所述第四與門的輸出輸入到所述第二或非門的第二輸入端;所述第二或非門的兩個輸入端,分別用于輸入第三與門和第四與門的輸出,所述第二或非門的輸出輸入到所述第二同或門;所述第二同或門的兩個輸入端,分別用于輸入所述第二或非門的輸入和從Booth譯碼器輸出的zp [k],所述第二同或門的輸出記為pp [k] [i],作為所述Booth選擇器的輸出端。
2.基于權利要求1所述Booth編碼器的模(2n-2p-l)Booth乘法器,包括:Booth譯碼器陣列、Booth選擇器陣列、壓縮陣列和第一模(2n-2p-l)加法器,第二模(2n-2p-l)加法器和第三模(2n-2p-l)加法器,設A和B為基于模(2n-2p-l)表示的需要相乘操作的兩個操作數(shù),Y為模(2n-2p-l) Booth乘法器的輸出,具體連接方式如下:操作數(shù)A作為Booth選擇器陣列的輸入連接到Booth選擇器陣列,操作數(shù)B作為Booth譯碼器陣列的輸入連接到Booth譯碼器陣列,Booth譯碼器陣列的輸出作為輸入連接到Booth選擇器陣列,Booth選擇器陣列輸出的$個部分積作為輸入連接到壓縮陣列,Booth譯碼器陣列輸出的修正項C輸入到壓縮陣列,其中,
^ r n + l\ ^ r n + l~\ n π, 「η + 1] 、ι1「η + 1
C = s[ — -2].2χ[ — -2]) #(4 — -2].1χ[ — -2])#...#(s[k].2x[k])#(s[k].lx[k])#***#(s[0].2x[0])#(s[0].1χ[0])s [k].Ix [k]和 s[k] *2x[k]
【文檔編號】G06F7/533GK103530085SQ201310421299
【公開日】2014年1月22日 申請日期:2013年9月16日 優(yōu)先權日:2013年9月16日
【發(fā)明者】李磊, 李賽野, 楊鵬, 尹鵬勝, 周婉婷 申請人:電子科技大學