文獻(xiàn)標(biāo)識(shí)碼: B
文章編號(hào): 0258-7998(2011)04-0109-04
參數(shù)化可配置技術(shù)是指在集成開發(fā)環(huán)境下,利用設(shè)計(jì)中的可配置資源,根據(jù)需求重新配置一個(gè)運(yùn)算系統(tǒng),以實(shí)現(xiàn)兼顧高性能硬件設(shè)計(jì)和可配置特征的系統(tǒng),即成為參數(shù)化可配置運(yùn)算系統(tǒng)。參數(shù)化可配置系統(tǒng)的原理是:通過對(duì)參數(shù)可配置元件的利用,將硬件系統(tǒng)由專門的電路設(shè)計(jì)轉(zhuǎn)變成為功能模塊的組裝,因此具有靈活、高效、低耗、易于開發(fā)與升級(jí)等特性。
在混沌電路、信號(hào)及圖像處理中有大量的浮點(diǎn)數(shù)加、減、乘、除操作,浮點(diǎn)數(shù)本身的復(fù)雜性決定其需要專用的硬件來實(shí)現(xiàn)[1]。傳統(tǒng)硬件電路的實(shí)現(xiàn)依靠手工搭建,過程復(fù)雜,存在電路參數(shù)分布性大、元器件老化、易受溫度影響及通用性差等問題,尤其是對(duì)網(wǎng)格狀多渦卷混沌吸引子的電路設(shè)計(jì)和調(diào)試需要花費(fèi)更多時(shí)間。此外,要求電路設(shè)計(jì)者要有較高的技巧和經(jīng)驗(yàn)[2]?;贗P核模塊的設(shè)計(jì)方法是采用IP核模塊而不是采用基本邏輯或電路單元作為基礎(chǔ)單元,是以功能組裝代替功能設(shè)計(jì),用戶只需通過設(shè)置參數(shù)即可方便地按需要定制自己的宏功能模塊。使用戶可以將精力集中于系統(tǒng)頂層及關(guān)鍵功能模塊的設(shè)計(jì)上,致力于提高產(chǎn)品整體性能和個(gè)性化特性,加快了芯片設(shè)計(jì)速度,提高了芯片設(shè)計(jì)能力。
此外,IP核通常要經(jīng)過嚴(yán)格的測(cè)試和優(yōu)化,并且已經(jīng)封裝完畢,利用IP核進(jìn)行電路設(shè)計(jì)可以在FPGA等可編程邏輯器件中達(dá)到最優(yōu)的性能和最低的邏輯資源使用率,以保證電路的性能和質(zhì)量?;趨?shù)可配置IP核的浮點(diǎn)運(yùn)算器的設(shè)計(jì)可大大提高混沌電路及其他電路設(shè)計(jì)者的電路設(shè)計(jì)能力,有力推動(dòng)了混沌電路在相關(guān)領(lǐng)域的應(yīng)用。
1 參數(shù)化IP核
IP核的本質(zhì)特征之一是可重用性,在不同的應(yīng)用場(chǎng)合對(duì)IP核功能、性能、面積及功耗等要求也不同,這就要求IP核具有較好的可伸縮性和靈活性。為了使IP核在使用中具有更好的靈活性和可配置性,IP核應(yīng)該被設(shè)置為參數(shù)化可配置的。根據(jù)參數(shù)配置時(shí)機(jī)的不同,參數(shù)化IP核的配置參數(shù)可分為靜態(tài)參數(shù)和動(dòng)態(tài)參數(shù)[3]。
(1)靜態(tài)參數(shù):靜態(tài)參數(shù)是指在系統(tǒng)運(yùn)行前,一次性將參數(shù)化IP核的參數(shù)配置為系統(tǒng)所需的某個(gè)或數(shù)個(gè)功能,這些配置好的功能,在系統(tǒng)運(yùn)行期間不會(huì)改變,直到系統(tǒng)完成任務(wù)后,參數(shù)化IP核才配置成為其他功能去完成其他任務(wù)。也就是說,當(dāng)硬件要重新配置參數(shù)時(shí),系統(tǒng)必須先停止運(yùn)行,待參數(shù)配置完成后系統(tǒng)才能繼續(xù)運(yùn)行。
(2)動(dòng)態(tài)參數(shù):動(dòng)態(tài)參數(shù)是在系統(tǒng)運(yùn)行過程中,可隨時(shí)重新配置參數(shù)化IP核的功能,參數(shù)配置與系統(tǒng)運(yùn)行是同時(shí)的。因此,在設(shè)計(jì)IP核的動(dòng)態(tài)參數(shù)時(shí),必須先把參數(shù)配置所需的電路模塊包含在其中,并將可配置的參數(shù)保存在寄存器中,這樣在系統(tǒng)運(yùn)行時(shí)才能隨時(shí)配置參數(shù)調(diào)用所需的功能。圖1為動(dòng)態(tài)參數(shù)的控制結(jié)構(gòu)。
(3)動(dòng)態(tài)參數(shù)與靜態(tài)參數(shù)的比較:動(dòng)態(tài)參數(shù)的使用大大提升了IP核的運(yùn)行靈活性,但其缺點(diǎn)也很明顯。因?yàn)閯?dòng)態(tài)參數(shù)屬于“運(yùn)行時(shí)配置”的參數(shù)。采用動(dòng)態(tài)參數(shù)設(shè)計(jì)的IP核,在設(shè)計(jì)時(shí)已經(jīng)將所有的功能模塊包含在電路中,通過參數(shù)寄存器來實(shí)時(shí)選擇IP核的功能,因此,電路設(shè)計(jì)功能越多、參數(shù)越復(fù)雜,其芯片面積的占用和功耗也越大。而靜態(tài)參數(shù)屬于“編譯時(shí)配置”的參數(shù)[4],它在流片之前就已經(jīng)將IP核的參數(shù)確定好,因而在實(shí)現(xiàn)過程中不會(huì)產(chǎn)生冗余電路,減小了設(shè)計(jì)成本。
2 參數(shù)化浮點(diǎn)運(yùn)算器IP核設(shè)計(jì)
在參數(shù)化浮點(diǎn)運(yùn)算器IP核的設(shè)計(jì)中,由于浮點(diǎn)減法器與浮點(diǎn)除法器都可通過參數(shù)化浮點(diǎn)加法器和參數(shù)化浮點(diǎn)乘法器實(shí)現(xiàn),故本設(shè)計(jì)只重點(diǎn)探討參數(shù)化浮點(diǎn)加法器和參數(shù)化乘法器的優(yōu)化算法和設(shè)計(jì)技術(shù)。
2.1參數(shù)化浮點(diǎn)加法器設(shè)計(jì)
浮點(diǎn)加/減法在浮點(diǎn)運(yùn)算中占有很大的比例,在浮點(diǎn)加法器的設(shè)計(jì)中,尾數(shù)的計(jì)算是影響浮點(diǎn)運(yùn)算性能的關(guān)鍵,而其中進(jìn)位運(yùn)算對(duì)尾數(shù)計(jì)算速度影響最大。因此,圍繞如何提高浮點(diǎn)運(yùn)算器的進(jìn)位產(chǎn)生速度,科研人員在傳統(tǒng)串行的行波進(jìn)位加法器的基礎(chǔ)上,提出了一些并行快速產(chǎn)生進(jìn)位的方法,如:超前進(jìn)位加法器CLA(Carry Look-ahead Adder)、條件進(jìn)位選擇CCS(Conditional Carry-Selection)加法器等。本文采用的是對(duì)超前進(jìn)位加法器改進(jìn)后的、適用于參數(shù)化浮點(diǎn)運(yùn)算器設(shè)計(jì)的分塊超前進(jìn)位加法器BCLA(Block Carry Look-ahead Adder)。
2.1.1 分塊超前進(jìn)位加法器算法
圖2是一個(gè) 4 bit超前進(jìn)位加法器模塊,通過將數(shù)個(gè)CLA分成相同大小分組級(jí)聯(lián),組間采用行波進(jìn)位的方式連接,以加強(qiáng)加法器件的模塊性。
依據(jù)式(1),組間產(chǎn)生和傳遞的進(jìn)位,可以采用相類似的方式產(chǎn)生,通過增加一個(gè)組間CLA以組合方式設(shè)計(jì)成為分塊超前進(jìn)位加法器組合電路。圖3為采用BCLA以及CLA組合設(shè)計(jì)的16 bit加法器邏輯圖。對(duì)于n位操作數(shù)的加法,可將其分為n/4個(gè)分組,每4 bit一個(gè)CLA的模塊完成一次超前進(jìn)位運(yùn)算需要2ΔG的時(shí)間(假設(shè)每個(gè)門電路延遲為ΔG)。其中需要1ΔG的時(shí)間產(chǎn)生Pi和Gi,2ΔG的時(shí)間來產(chǎn)生本位輸出,因此,整個(gè)電路的總運(yùn)算時(shí)間為:
從式(2)可以看出,與完全的行波進(jìn)位加法器的延遲2nΔG相比,采用BCLA方法設(shè)計(jì)的加法器的延遲理論上只有其1/4,性能得到了很大的提升。
2.1.2 分塊超前進(jìn)位加法器設(shè)計(jì)
根據(jù)IEEE-754標(biāo)準(zhǔn)的浮點(diǎn)加/減法的基本原理[5],對(duì)于兩個(gè)浮點(diǎn)數(shù)的加/減法,可將其分解為8個(gè)步驟:符號(hào)運(yùn)算、指數(shù)運(yùn)算、尾數(shù)移位、尾數(shù)運(yùn)算、規(guī)格化、指數(shù)調(diào)整、舍入、封裝。然后根據(jù)這8個(gè)步驟,對(duì)浮點(diǎn)加/減法進(jìn)行運(yùn)算的細(xì)化。在細(xì)化流程的基礎(chǔ)上,把尾數(shù)對(duì)位劃分為對(duì)階和移位,在符號(hào)運(yùn)算電路中加入加減法操作的信號(hào),根據(jù)IEEE-754標(biāo)準(zhǔn)的浮點(diǎn)格式的限制及異常處理,劃分浮點(diǎn)數(shù)的加/減法運(yùn)算電路的功能模塊。圖4為分塊超前進(jìn)位加法器的功能模塊。
為了使基于VHDL設(shè)計(jì)的參數(shù)化IP核開發(fā)流程明確、設(shè)計(jì)目標(biāo)清晰,需要在進(jìn)行VHDL描述之前對(duì)浮點(diǎn)加法器的參數(shù)的提取進(jìn)行研究,分析出可提取參數(shù)和可實(shí)現(xiàn)的參數(shù)。在浮點(diǎn)運(yùn)算器中對(duì)參數(shù)的配置主要要求是:
(1) 各參數(shù)之間的耦合度應(yīng)該比較?。?br/>
(2) 可進(jìn)行參數(shù)配置的模塊,能夠顯著改變浮點(diǎn)運(yùn)算器的性能、面積、功耗等;
(3) 參數(shù)化應(yīng)該比較容易實(shí)現(xiàn)。
2.2參數(shù)化浮點(diǎn)乘法器設(shè)計(jì)
浮點(diǎn)乘法在浮點(diǎn)運(yùn)算器中的使用比例僅次于浮點(diǎn)加/減法,因此也是非常關(guān)鍵的浮點(diǎn)運(yùn)算部件之一。按照IEEE-754標(biāo)準(zhǔn),浮點(diǎn)運(yùn)算被分為符號(hào)位運(yùn)算、指數(shù)運(yùn)算、尾數(shù)相乘三個(gè)步驟,從20世紀(jì)60年代至今,已經(jīng)提出了許多種定點(diǎn)乘法運(yùn)算單元的實(shí)現(xiàn)方法。各種乘法器運(yùn)算方式都是先將乘法轉(zhuǎn)換為加法,再通過快速求和的方法來得到最終的計(jì)算結(jié)果。本文采用的是適用于參數(shù)化浮點(diǎn)運(yùn)算器設(shè)計(jì)的Booth算法。
(1)為解決有符號(hào)數(shù)乘法運(yùn)算中復(fù)雜的符號(hào)修正問題,Booth提出了一種針對(duì)乘數(shù)進(jìn)行編碼的Booth編碼。Booth編碼在乘數(shù)最低位增加一個(gè)零值,在循環(huán)求部分積時(shí),每次取乘數(shù)的相鄰兩位(基-4)進(jìn)行判斷,依據(jù)這兩位的值,判斷其部分積是被乘數(shù)的一倍或是兩倍[6]。
Booth編碼乘法運(yùn)算可分三步進(jìn)行:①產(chǎn)生部分積;②加法陣列累加部分積;③應(yīng)用加法器求得最終結(jié)果。
采用Booth編碼設(shè)計(jì)的乘法器原理如圖5所示。
(2)根據(jù)IEEE-754標(biāo)準(zhǔn)的浮點(diǎn)乘法的基本原理,對(duì)于兩個(gè)浮點(diǎn)數(shù)的乘法,可將其分解為7個(gè)步驟[7]:符號(hào)運(yùn)算、指數(shù)運(yùn)算、尾數(shù)移位、尾數(shù)運(yùn)算、規(guī)格化、指數(shù)調(diào)整、舍入。根據(jù)這7個(gè)步驟,對(duì)浮點(diǎn)加/減法進(jìn)行運(yùn)算的細(xì)化, 在細(xì)化流程的基礎(chǔ)上,根據(jù)IEEE-754標(biāo)準(zhǔn)的浮點(diǎn)格式的限制及異常處理,劃分浮點(diǎn)數(shù)乘法運(yùn)算電路的功能模塊。圖6是浮點(diǎn)乘法器的功能模塊設(shè)計(jì)。
3 綜合與仿真
3.1綜合
綜合是使用指定的元件,通過綜合工具將一個(gè)設(shè)計(jì)從硬件描述(VHDL)轉(zhuǎn)變?yōu)橐粋€(gè)電路的過程,是VHDL在數(shù)字設(shè)計(jì)中不可缺少的一步[8]。而綜合工具可大大縮短數(shù)字系統(tǒng)的設(shè)計(jì)周期,設(shè)計(jì)人員只需在高層對(duì)系統(tǒng)進(jìn)行綜合,可大大提高設(shè)計(jì)效率,縮減系統(tǒng)開發(fā)時(shí)間。
依據(jù)在參數(shù)化浮點(diǎn)加法器和浮點(diǎn)乘法器的參數(shù)配置,設(shè)定參數(shù)wE=8,wM=23,分別采用RCA和BCLA配置,使用Xilinx ISE 10.1 在VirtexE XCV400E上分別綜合一個(gè)單精度浮點(diǎn)加法器,綜合結(jié)果如表2所示。
設(shè)定參數(shù)wE=8,wM=23,分別采用默認(rèn)的方式和Booth配置綜合一個(gè)單精度浮點(diǎn)乘法器綜合結(jié)果如表3所示。
3.2 仿真
仿真驗(yàn)證是保證一個(gè)項(xiàng)目設(shè)計(jì)成功的重要方法。IP核的設(shè)計(jì)過程中,利用可編程邏輯器件進(jìn)行電路驗(yàn)證,對(duì)保證設(shè)計(jì)的正確性和投片成功十分重要。
依據(jù)仿真的基本方法,依照自底向上的仿真流程,在ModelSimPE環(huán)境下,對(duì)各模塊進(jìn)行仿真驗(yàn)證。圖7~圖9給出了仿真驗(yàn)證的實(shí)例。其中,RCA模塊采用wM參數(shù)賦值8 bit,綜合成一個(gè)8 bit行波進(jìn)位加法器,進(jìn)行獨(dú)立的仿真驗(yàn)證;Booth模塊采用wM參數(shù)賦值8,綜合成一個(gè)8×8位乘法器,進(jìn)行獨(dú)立的仿真驗(yàn)證。
本文對(duì)參數(shù)化IP核、浮點(diǎn)運(yùn)算器設(shè)計(jì)的相關(guān)技術(shù)以及參數(shù)化在浮點(diǎn)運(yùn)算器設(shè)計(jì)中的應(yīng)用,作了比較深入的研究。給出了參數(shù)化IP核的設(shè)計(jì)方案和設(shè)計(jì)流程。依照IEEE-754標(biāo)準(zhǔn),分析了浮點(diǎn)加/減法、乘法的基本原理,并細(xì)化設(shè)計(jì)了適合參數(shù)化的浮點(diǎn)運(yùn)算器流程;最后在Xilinx ISE 10.1和Modelsim 6.6a平臺(tái)上進(jìn)行了綜合與仿真。
參考文獻(xiàn)
[1] Liu Zhusong. A novel fourth-order chaotic circuit and its implementation[C]. 9th International Conference for Young Computer Scientists, 2008:3045-3050.
[2] 周武杰,禹思敏. 基于現(xiàn)場(chǎng)可編程門陣列技術(shù)的混沌數(shù)字通信系統(tǒng)——設(shè)計(jì)與實(shí)現(xiàn)[J]. 物理學(xué)報(bào), 2009,58(1).
[3] Zhao Junchao, Chen Weiliang, WEI Shao Jun. Parameterized IP core design[C]. Proceedings:4th International Conference on, 2001:744-747.
[4] 徐晨,袁紅林.基于VerilogHDL的IP核參數(shù)化設(shè)計(jì)[J]. 微電子學(xué)與計(jì)算機(jī),2005,12(1): 85-88.
[5] 陳弦, 張偉功, 于倫正.并行浮點(diǎn)加法器架構(gòu)與核心算法的研究[J].計(jì)算機(jī)工程與應(yīng)用, 2006,17(1):53-55,75.
[6] Chen Pinghua, Zhao Juan. High-speed parallel 32×32-b multiplier using a radix-16 booth encoder[C]. Third International Symposium on Intelligent Information Technology Application Workshops, 2009: 406-409.
[7] 周德金, 孫鋒, 于宗光. 一種32位高速浮點(diǎn)乘法器設(shè)計(jì)[J]. 電子與封裝, 2008, 65(1): 35-38.
[8] 江思敏. VHDL數(shù)字電路及系統(tǒng)設(shè)計(jì)[M]. 北京:機(jī)械工業(yè)出版社, 2006.