基于改進的布斯算法的嵌入FPGA的乘法器設(shè)計
目前,FPGA作為可編程邏輯器件(PLD)的主要產(chǎn)品,在通信、消贊電子、汽車電子、工業(yè)控制、國防安全等領(lǐng)域得到廣泛的應(yīng)用。由于在性能和靈活性方面的完美組合,FPGA的使用范圍越來越廣,客觀上要求加強FPGA數(shù)字處理功能(如嵌入乘法器,數(shù)字信號處理器(DSP)等)?,F(xiàn)住幾乎每一款商用FPGA內(nèi)部幾乎都嵌入了乘法器或數(shù)字信號處理器,如Xilinx公司的VirtexⅡ系列、Spartan-3/3A系列等。相對來說我國的FPGA僅僅處于起步階段,F(xiàn)PGA的發(fā)展特別是高性能FPGA的發(fā)展刻不容緩。本文緊跟國家重大項目,對嵌入到FPGA的乘法器進行了深入的研究提出了一個低功耗、高速度的乘法器。該乘法器采用了高速布斯譯碼、基于全加器的9-2壓縮樹和35 b兩級超前進位加法器。高速布斯譯碼器采用了改進的布斯算法,使得部分積經(jīng)過3個門的延遲得到,提高速度約為50%;9-2壓縮樹由3個3-2壓縮和一個4-2壓縮組成,使得部分積陣列僅經(jīng)過7個異或門延遲;35 b兩級超前進位加法器采用的是基于4 b超前進位加法器,使得加法器僅僅經(jīng)過10個門的延遲。
1 整體結(jié)構(gòu)
圖1為18×18位乘法器的整體結(jié)構(gòu),它包含了布斯譯碼模塊、壓縮樹模塊和超前進位加法模塊。部分積是通過本文采取的布斯譯碼器快速產(chǎn)生,然后其通過9-2壓縮樹被壓縮成兩個35 b的二進制數(shù),最后通過超前進位加法器生成無符號位的35 b的結(jié)果。通過乘數(shù)和被乘數(shù)的符號位異或產(chǎn)生最終積的符號位,這樣就得到了36 b的最終結(jié)果。從圖1可以看出該乘法器整體結(jié)構(gòu)和傳統(tǒng)的結(jié)構(gòu)是一樣的。
2 布斯譯碼和部分積
通常進行兩個數(shù)相乘,是通過所有的部分積相加得到。這樣,不僅乘法器的速度都得不到保證,而且會浪費芯片的面積。因此采取現(xiàn)在比較流行的布斯算法,因為它可以使部分積的數(shù)目減半,這樣對面積和速度都比較有利。在原算法的基礎(chǔ)上進行了改進并得到一種新的布斯譯碼和部分積結(jié)構(gòu)。我們將布斯算法分解為“sig”,“sht”,“add”三個個因子,分別用來代表對被乘數(shù)的不同操作。其中“sig”用來決定被乘數(shù)是取反還是保持不變;“sht”代表是否對被乘數(shù)進行左移一位;而“add”則表示決定最終得到部分積。改進的算法用表達式表示則為:
從圖2可以看出,改進的布斯譯碼器由1個異或門、2個與門和1個或門構(gòu)成而部分積則是有3個二選一多路選擇器構(gòu)成,其關(guān)鍵路徑為3個門的延遲。因此結(jié)構(gòu)要比傳統(tǒng)的更為簡單、延遲更小。
3 9-2壓縮樹
華萊士樹(Wallace Tree)算法通過并行相加來提高速度。在華萊士樹中所有部分積列在同一時間各自獨立的進行相加。采用的是一種基于保留進位全加器的9-2壓縮樹用來壓縮部分積陣列的,在每一個9-2壓縮樹的最頂層有9 b的部分積。9-2壓縮樹中用到了3個3-2壓縮和1個4-2壓縮。對于那些少于9 b的部分積列,為了進一步減小芯片面積,根據(jù)部分積的數(shù)目采用相應(yīng)的壓縮樹,并且可以用半加器用來代替3-2壓縮(全加器)。
典型的4-2壓縮是由2個3-2壓縮構(gòu)成的,其延遲為4個異或。圖3為一個優(yōu)化了的4-2壓縮,其延遲為3個異或的延遲。因此9-2壓縮樹從頂層到最終輸出僅過了7個異或門的延遲。
4 35 b兩級超前進位加法器
超前進位加法器對乘法器的整體性能的影響至關(guān)重要,要想提高乘法器的速度,超前進位加法器也必須進行必要的優(yōu)化。在此采取基于4 b超前進位加法器的兩級加法器。
由于進位鏈延遲時間隨著輸入的增加而增加,必須考慮到輸入信號的個數(shù),在面積和速度中進行折中發(fā)現(xiàn)4 b超前進位加法器是最適合作為基本的模塊。
從圖4(b)中可以看到在4 b超前進位加法器中,除了P和G由與門實現(xiàn)的,其他的都是有與非門實現(xiàn)的。
圖4(a)為1位全加器的變形,有3個輸入Ai,Bi,Ci和三個輸出Pi,Si和Gi,其中Ai和Bi為兩個加數(shù),Cin為進位輸入,Pi和Gi分別為進位傳輸和進位產(chǎn)生,而Si為第i位的和。
采用基于4 b的超前進位加法器來組成16 b超前進位加法器,進位鏈采取與4 b超前進位鏈相同的結(jié)構(gòu)。同樣的分析方法,發(fā)現(xiàn)16 b的P和G延時為5個門的延遲。用2個16 b的超前進位加法器和一個3 b超前進位加法器組成35 b超前進位加法器,其進位鏈采取與上面相同的方法。研究不難發(fā)現(xiàn),經(jīng)過7個門延遲進位到達3 b超前進位加法器,再經(jīng)過3個門的延遲得到第35位的結(jié)果。也就是說整個加法器僅僅經(jīng)過10個門的延遲。
5 設(shè)計總結(jié)
5.1 綜合條件說明
采用TSMC0.18μm CMOS工藝和Synopsis DC進行的綜合并進行延遲分析。并在DC命令窗口輸入了命令“set_dont_use”和“set_dont_ touch”。
5.2 布斯譯碼和部分積
把傳統(tǒng)的布斯譯碼和部分積與本文采取的布斯譯碼和部分積進行了比較,并把結(jié)果列在了表2中。從表中發(fā)現(xiàn)本設(shè)計關(guān)鍵路徑與OhkuBo相比減少了50%,生成部分積的速度相應(yīng)的提高了50%。
5.3 與其他的乘法器進行比較
本文的乘法器與表3中乘法器相比速度有明顯提高,與Xilinx公司的Spartan-3A系列嵌入到FPGA的乘法器相比本文乘法器的速度更提高40%。更為關(guān)鍵的是在沒有增加芯片面積的情況下把速度提高40%。
6 結(jié)語
本文基于改進的布斯算法的18×18乘法器是特意為嵌入到FPGA而設(shè)計的,它解決了乘法器占用FPGA較多資源的問題,并為以后DSP嵌入到FPGA做了必要的準(zhǔn)備工作。采用了一種新的布斯譯碼和部分積、9-2壓縮和兩級超前進位加法器以使乘法器達到較好的性能。經(jīng)過仿真驗證,這里提出的基于改進的布斯乘法器各項指標(biāo)均能很好的滿足嵌入到FPGA的要求。
評論