參數化可配置IP核浮點(diǎn)運算器的設計與實(shí)現
參數化可配置技術(shù)是指在集成開(kāi)發(fā)環(huán)境下,利用設計中的可配置資源,根據需求重新配置一個(gè)運算系統,以實(shí)現兼顧高性能硬件設計和可配置特征的系統,即成為參數化可配置運算系統。參數化可配置系統的原理是:通過(guò)對參數可配置元件的利用,將硬件系統由專(zhuān)門(mén)的電路設計轉變成為功能模塊的組裝,因此具有靈活、高效、低耗、易于開(kāi)發(fā)與升級等特性。
在混沌電路、信號及圖像處理中有大量的浮點(diǎn)數加、減、乘、除操作,浮點(diǎn)數本身的復雜性決定其需要專(zhuān)用的硬件來(lái)實(shí)現[1]。傳統硬件電路的實(shí)現依靠手工搭建,過(guò)程復雜,存在電路參數分布性大、元器件老化、易受溫度影響及通用性差等問(wèn)題,尤其是對網(wǎng)格狀多渦卷混沌吸引子的電路設計和調試需要花費更多時(shí)間。此外,要求電路設計者要有較高的技巧和經(jīng)驗[2]?;?a class="contentlabel" href="http://dyxdggzs.com/news/listbylabel/label/IP">IP核模塊的設計方法是采用IP核模塊而不是采用基本邏輯或電路單元作為基礎單元,是以功能組裝代替功能設計,用戶(hù)只需通過(guò)設置參數即可方便地按需要定制自己的宏功能模塊。使用戶(hù)可以將精力集中于系統頂層及關(guān)鍵功能模塊的設計上,致力于提高產(chǎn)品整體性能和個(gè)性化特性,加快了芯片設計速度,提高了芯片設計能力。
此外,IP核通常要經(jīng)過(guò)嚴格的測試和優(yōu)化,并且已經(jīng)封裝完畢,利用IP核進(jìn)行電路設計可以在FPGA等可編程邏輯器件中達到最優(yōu)的性能和最低的邏輯資源使用率,以保證電路的性能和質(zhì)量?;趨悼膳渲肐P核的浮點(diǎn)運算器的設計可大大提高混沌電路及其他電路設計者的電路設計能力,有力推動(dòng)了混沌電路在相關(guān)領(lǐng)域的應用。
1 參數化IP核
IP核的本質(zhì)特征之一是可重用性,在不同的應用場(chǎng)合對IP核功能、性能、面積及功耗等要求也不同,這就要求IP核具有較好的可伸縮性和靈活性。為了使IP核在使用中具有更好的靈活性和可配置性,IP核應該被設置為參數化可配置的。根據參數配置時(shí)機的不同,參數化IP核的配置參數可分為靜態(tài)參數和動(dòng)態(tài)參數[3]。
(1)靜態(tài)參數:靜態(tài)參數是指在系統運行前,一次性將參數化IP核的參數配置為系統所需的某個(gè)或數個(gè)功能,這些配置好的功能,在系統運行期間不會(huì )改變,直到系統完成任務(wù)后,參數化IP核才配置成為其他功能去完成其他任務(wù)。也就是說(shuō),當硬件要重新配置參數時(shí),系統必須先停止運行,待參數配置完成后系統才能繼續運行。
(2)動(dòng)態(tài)參數:動(dòng)態(tài)參數是在系統運行過(guò)程中,可隨時(shí)重新配置參數化IP核的功能,參數配置與系統運行是同時(shí)的。因此,在設計IP核的動(dòng)態(tài)參數時(shí),必須先把參數配置所需的電路模塊包含在其中,并將可配置的參數保存在寄存器中,這樣在系統運行時(shí)才能隨時(shí)配置參數調用所需的功能。圖1為動(dòng)態(tài)參數的控制結構。
(3)動(dòng)態(tài)參數與靜態(tài)參數的比較:動(dòng)態(tài)參數的使用大大提升了IP核的運行靈活性,但其缺點(diǎn)也很明顯。因為動(dòng)態(tài)參數屬于“運行時(shí)配置”的參數。采用動(dòng)態(tài)參數設計的IP核,在設計時(shí)已經(jīng)將所有的功能模塊包含在電路中,通過(guò)參數寄存器來(lái)實(shí)時(shí)選擇IP核的功能,因此,電路設計功能越多、參數越復雜,其芯片面積的占用和功耗也越大。而靜態(tài)參數屬于“編譯時(shí)配置”的參數[4],它在流片之前就已經(jīng)將IP核的參數確定好,因而在實(shí)現過(guò)程中不會(huì )產(chǎn)生冗余電路,減小了設計成本。
2 參數化浮點(diǎn)運算器IP核設計
在參數化浮點(diǎn)運算器IP核的設計中,由于浮點(diǎn)減法器與浮點(diǎn)除法器都可通過(guò)參數化浮點(diǎn)加法器和參數化浮點(diǎn)乘法器實(shí)現,故本設計只重點(diǎn)探討參數化浮點(diǎn)加法器和參數化乘法器的優(yōu)化算法和設計技術(shù)。
2.1參數化浮點(diǎn)加法器設計
浮點(diǎn)加/減法在浮點(diǎn)運算中占有很大的比例,在浮點(diǎn)加法器的設計中,尾數的計算是影響浮點(diǎn)運算性能的關(guān)鍵,而其中進(jìn)位運算對尾數計算速度影響最大。因此,圍繞如何提高浮點(diǎn)運算器的進(jìn)位產(chǎn)生速度,科研人員在傳統串行的行波進(jìn)位加法器的基礎上,提出了一些并行快速產(chǎn)生進(jìn)位的方法,如:超前進(jìn)位加法器CLA(Carry Look-ahead Adder)、條件進(jìn)位選擇CCS(Conditional Carry-Selection)加法器等。本文采用的是對超前進(jìn)位加法器改進(jìn)后的、適用于參數化浮點(diǎn)運算器設計的分塊超前進(jìn)位加法器BCLA(Block Carry Look-ahead Adder)。
2.1.1 分塊超前進(jìn)位加法器算法
圖2是一個(gè) 4 bit超前進(jìn)位加法器模塊,通過(guò)將數個(gè)CLA分成相同大小分組級聯(lián),組間采用行波進(jìn)位的方式連接,以加強加法器件的模塊性。
依據式(1),組間產(chǎn)生和傳遞的進(jìn)位,可以采用相類(lèi)似的方式產(chǎn)生,通過(guò)增加一個(gè)組間CLA以組合方式設計成為分塊超前進(jìn)位加法器組合電路。圖3為采用BCLA以及CLA組合設計的16 bit加法器邏輯圖。對于n位操作數的加法,可將其分為n/4個(gè)分組,每4 bit一個(gè)CLA的模塊完成一次超前進(jìn)位運算需要2ΔG的時(shí)間(假設每個(gè)門(mén)電路延遲為ΔG)。其中需要1ΔG的時(shí)間產(chǎn)生Pi和Gi,2ΔG的時(shí)間來(lái)產(chǎn)生本位輸出,因此,整個(gè)電路的總運算時(shí)間為:
從式(2)可以看出,與完全的行波進(jìn)位加法器的延遲2nΔG相比,采用BCLA方法設計的加法器的延遲理論上只有其1/4,性能得到了很大的提升。
2.1.2 分塊超前進(jìn)位加法器設計
根據IEEE-754標準的浮點(diǎn)加/減法的基本原理[5],對于兩個(gè)浮點(diǎn)數的加/減法,可將其分解為8個(gè)步驟:符號運算、指數運算、尾數移位、尾數運算、規格化、指數調整、舍入、封裝。然后根據這8個(gè)步驟,對浮點(diǎn)加/減法進(jìn)行運算的細化。在細化流程的基礎上,把尾數對位劃分為對階和移位,在符號運算電路中加入加減法操作的信號,根據IEEE-754標準的浮點(diǎn)格式的限制及異常處理,劃分浮點(diǎn)數的加/減法運算電路的功能模塊。圖4為分塊超前進(jìn)位加法器的功能模塊。
為了使基于VHDL設計的參數化IP核開(kāi)發(fā)流程明確、設計目標清晰,需要在進(jìn)行VHDL描述之前對浮點(diǎn)加法器的參數的提取進(jìn)行研究,分析出可提取參數和可實(shí)現的參數。在浮點(diǎn)運算器中對參數的配置主要要求是:
(1) 各參數之間的耦合度應該比較??;
(2) 可進(jìn)行參數配置的模塊,能夠顯著(zhù)改變浮點(diǎn)運算器的性能、面積、功耗等;
(3) 參數化應該比較容易實(shí)現。
2.2參數化浮點(diǎn)乘法器設計
浮點(diǎn)乘法在浮點(diǎn)運算器中的使用比例僅次于浮點(diǎn)加/減法,因此也是非常關(guān)鍵的浮點(diǎn)運算部件之一。按照IEEE-754標準,浮點(diǎn)運算被分為符號位運算、指數運算、尾數相乘三個(gè)步驟,從20世紀60年代至今,已經(jīng)提出了許多種定點(diǎn)乘法運算單元的實(shí)現方法。各種乘法器運算方式都是先將乘法轉換為加法,再通過(guò)快速求和的方法來(lái)得到最終的計算結果。本文采用的是適用于參數化浮點(diǎn)運算器設計的Booth算法。
(1)為解決有符號數乘法運算中復雜的符號修正問(wèn)題,Booth提出了一種針對乘數進(jìn)行編碼的Booth編碼。Booth編碼在乘數最低位增加一個(gè)零值,在循環(huán)求部分積時(shí),每次取乘數的相鄰兩位(基-4)進(jìn)行判斷,依據這兩位的值,判斷其部分積是被乘數的一倍或是兩倍[6]。
Booth編碼乘法運算可分三步進(jìn)行:①產(chǎn)生部分積;②加法陣列累加部分積;③應用加法器求得最終結果。
采用Booth編碼設計的乘法器原理如圖5所示。
評論