李彥孚,宋 路
(長春理工大學(xué) 電子信息工程學(xué)院,長春 130022)
乘法器模塊在FPGA中的實現(xiàn)
李彥孚,宋 路
(長春理工大學(xué) 電子信息工程學(xué)院,長春 130022)
作為數(shù)字信號處理領(lǐng)域的基本運算單元,乘法器在其中起到了至關(guān)重要的作用。本文設(shè)計了三種基于FPGA的數(shù)字乘法器模塊,包括傳統(tǒng)乘法器,LUT乘法器和Booth算法的乘法器,利用Modelsim仿真軟件分別對三種算法進(jìn)行了仿真,并用QuartusII軟件對所編寫的Verilog程序進(jìn)行編譯綜合,這里用到的FPGA芯片是Altera公司生產(chǎn)的cycloneII器件,最后對結(jié)果進(jìn)行了說明。
數(shù)字信號處理;LUT乘法器;Booth乘法器;FPGA
隨著現(xiàn)代通信和數(shù)字信號處理對于數(shù)字系統(tǒng)的實時性要求越來越高,乘法器性能的優(yōu)劣將起到至關(guān)重要的作用。在數(shù)字信號處理中包括各種各樣的運算,例如卷積運算,數(shù)字濾波,F(xiàn)FT,相關(guān)計算,矩陣運算等,而這些運算中都有大量的類似于A(k)B(n-k)的運算,因此乘法和累加是數(shù)字信號處理中基本的大量的運算。DSP(digital signal processor)中雖然有內(nèi)嵌的乘法器,但只對應(yīng)于特定的算法,相較于DSP,很多類型的FPGA器件中雖然有內(nèi)置的乘法器,但是可以利用Verilog語言進(jìn)行軟乘法器模塊的編寫,這就使乘法器的設(shè)計非常靈活。因此,考慮到FPGA的資源一般還算豐富的條件下,自己編寫乘法器模塊。
對于乘法器的設(shè)計,此前已有很多相關(guān)的算法產(chǎn)生,但主流的乘法器歸納起來主要有以下幾類,包括傳統(tǒng)乘法器,移位相加乘法器,LUT乘法器,Booth算法乘法器。本文對傳統(tǒng)乘法器,LUT乘法器,Booth算法乘法器進(jìn)行了軟件設(shè)計,利用Modelsim仿真軟件進(jìn)行了仿真,在QuartusII開發(fā)平臺上基于cycloneII器件對程序進(jìn)行了綜合驗證,最后對幾種算法的乘法器的時鐘消耗以及器件邏輯資源的占用等情況進(jìn)行了比較和分析。
可以說傳統(tǒng)乘法器是各種各樣乘法器研究的基礎(chǔ),因此對于傳統(tǒng)乘法器的掌握是十分有必要的。
在傳統(tǒng)的概念上乘法等價于“重復(fù)幾次”。比如n*m,也就是對n進(jìn)行m次的累加,每進(jìn)行一次累加操作,乘數(shù)m就遞減一次,直到乘數(shù)的值減為0,便得到乘積?;谶@樣的思想,我們進(jìn)行乘法器模塊的設(shè)計,但其中需要注意的一個問題是乘積結(jié)果的正負(fù)。其實乘法器中乘積結(jié)果的正負(fù)就是兩個乘積項進(jìn)行異或的結(jié)果。表1給出了這種映射關(guān)系。
表1 乘法器中乘積結(jié)果的正負(fù)關(guān)系
圖1給出了一個8bit*8bit傳統(tǒng)乘法器的仿真分析圖。
圖1 傳統(tǒng)乘法器的仿真分析圖
由圖1可以看出,傳統(tǒng)乘法器的設(shè)計雖然簡單,但是此種算法的時間受限于被乘數(shù)的大小,被乘數(shù)越大,消耗的時鐘也就越多。
所謂LUT乘法器就是查找表乘法器,顧名思義,這種方法就是事先把各種各樣的結(jié)果儲存在一個表中,然后我們以“查表”的方式取得乘積的結(jié)果。圖2給出了該種乘法器的基本原理框圖。相對于傳統(tǒng)的乘法器,LUT乘法器要快很多,因為查找表乘法器只需少量的時鐘,去查表就可以完成乘積結(jié)果的獲取。而非查表的乘法器要消耗相對較多的時鐘,才能求得乘積結(jié)果。但這種乘法器受限于乘積項存放的存儲器的速度,比較適用于位數(shù)較少的乘積項,對于位數(shù)較多的乘積項,需要的尋址范圍也自然會增大,因此不適用位數(shù)較高的乘法運算。
本文設(shè)計的是8Bit*8Bit的LUT乘法器,仿真結(jié)果如圖2所示。
圖2 LUT乘法器仿真結(jié)果
Booth算法是一種比較好的帶符號數(shù)乘法,它實際上是一種“加碼”乘法運算,采用相加和相減的操作計算補(bǔ)碼數(shù)據(jù)的乘積,基本原理可以先從數(shù)學(xué)的角度進(jìn)行理解。Booth算法對乘數(shù)從低位開始判斷,根據(jù)兩個數(shù)據(jù)位的情況決定進(jìn)行加法、減法還是僅僅移位操作。判斷的兩個數(shù)據(jù)位為當(dāng)前位及其右邊的位(初始時需要增加一個輔助位0),移位操作是向右移動。
表2給出了這種算法的運算規(guī)則。該規(guī)則首先在乘數(shù)B的最低位加一個輔助位0,然后從輔助位開始兩位兩位讀取,相鄰兩位的值決定了執(zhí)行何種操作。當(dāng)前2位判斷過后,需將乘積寄存器右移一位,開始新的判斷和操作。對于帶符號數(shù)的運算,乘積寄存器進(jìn)行右移操作時,必須對中間結(jié)果進(jìn)行符號擴(kuò)展,是將原來的符號位復(fù)制到移位后的最高位。
表2 Booth算法乘法器運算規(guī)則
圖3給出了這種算法的具體操作流程。本文是以A(4Bit)*B(4Bit)的乘法器為例,先初始化一個P空間,P[4:1]填入乘數(shù) B 的值,P[8:5]初始化為 0。首先判斷 B[0]位和 B[-1]位,根據(jù)上表的運算規(guī)則,使P[8:5]與被乘數(shù)A進(jìn)行相應(yīng)的運算。判斷P[8],如果是邏輯0,P空間需右移一位補(bǔ)0;如果是邏輯1,P空間右移一位補(bǔ)1。然后進(jìn)入下一次的循環(huán),接著對B[1]位和B[0]為進(jìn)行判斷,如此反復(fù),直到執(zhí)行完N次循環(huán)(這里的N取4),便得到乘積結(jié)果P[8:1]。
圖3 算法的操作流程圖
圖4為8Bit*8Bit的Booth乘法器的仿真波形圖。
圖4 Booth乘法器的仿真波形圖
進(jìn)行了功能仿真后,本文針對特定的FPGA芯片(cycloneII EP2C5Q208C8),利用QuartusII開發(fā)平臺,進(jìn)行了不同算法程序的在線下載。表3給出了8Bit*8Bit乘法器的三種不同算法的綜合結(jié)果。
表3 乘法器的三種不同算法的綜合結(jié)果
由綜合的結(jié)果可以看出,對于8bit*8bit的乘法器而言,傳統(tǒng)乘法器占用了較多的時鐘周期,這主要與乘數(shù)的值有關(guān),但從其硬件資源的使用情況來看,這種方法還是比較實用的。LUT乘法器的運算速度要高于傳統(tǒng)乘法器和Booth乘法器,但是這是以犧牲硬件資源為前提的,所以這種方法比較適于位寬較小的乘法的運算。雖然此處的Booth算法的運算速度沒有體現(xiàn)出其優(yōu)勢,但是經(jīng)過驗證,對于16位的乘法運算,Boot乘法器的運算速度要遠(yuǎn)遠(yuǎn)高于LUT乘法器,并且此種算法的硬件資源的耗用也是可以接受的??梢姡珺ooth算法的綜合優(yōu)勢明顯,因此得到更廣泛的應(yīng)用。
相較于模擬乘法器,數(shù)字乘法器的精度,可靠性和運算速度上都有很大的優(yōu)勢,對于通信中的調(diào)制解調(diào)等信號處理領(lǐng)域的發(fā)展都有很大幫助。本文分別對傳統(tǒng)乘法器,LUT乘法器和Booth乘法器的基本原理進(jìn)行了說明,并且編寫了基于這些算法的Verilog程序,最后進(jìn)行了仿真分析和綜合驗證。通過比對,我們發(fā)現(xiàn)幾種乘法器在不同的應(yīng)用場合下,它們的性能是有所區(qū)別的。因此,我們可以根據(jù)自身的需要來設(shè)計滿足要求的乘法器。
[1] 吳戈.VerilogHDL與數(shù)字系統(tǒng)設(shè)計簡明教程[M].北京:人民郵電出版社,2009.
[2] 夏宇聞.從算法設(shè)計到硬線邏輯的實現(xiàn)[M].北京:高等教育出版社,2000.
[3] 鞠芳,馬昕,田嵐.基于FPGA的數(shù)字乘法器性能比較[J].電子器件,2011,34(6):718-722.
[4] 應(yīng)征,吳金,常昌遠(yuǎn),等.高速乘法器的性能比較[J].電子器件,2003,26(1):42-45.
[5] 劉凌,胡永生.數(shù)字信號處理 FPGA實現(xiàn)[M].北京:清華大學(xué)出版社,2003.
The Realization of Multiplier Module in FPGA
LI Yan-fu,SONG Lu
(School of Electronics and Information Engineering,Changchun University of Science and Technology,Changchun 130022,China)
As the basic computing unit in digital signal processing area,multiplier plays a crucial role.This paper designs three digital multiplier modules based on FPGA,including traditional multiplier,LUT multiplier and Booth algorithm multiplier.With Modelsim simulation software,the three algorithms are simulated,and the written Verilog program is compiled with QuartusII software,here the FPGA chip used is the cycloneII device produced by Altera Company,finally the results are illustrated.
digital signal processing;LUT multiplier;Booth multiplier;FPGA
TP331.1+1
A
1009-3907(2012)08-0933-04
2012-04-26
李彥孚(1987-),男,吉林長春人,碩士研究生,主要從事數(shù)字視頻與圖像處理技術(shù)研究;宋路(1952-),女,吉林長春人,教授,博士生導(dǎo)師,主要從事光通信系統(tǒng)理論與無線通信技術(shù)研究。
責(zé)任編輯:吳旭云