茅 飛 劉樹(shù)青 朱興華 朱昊
1.南京康尼電子科技有限公司,江蘇 南京 210013
2.南京工程學(xué)院先進(jìn)數(shù)控技術(shù)江蘇省高校重點(diǎn)建設(shè)實(shí)驗(yàn)室,江蘇 南京 211167
3.常州大學(xué)機(jī)械工程學(xué)院,江蘇 常州 213016
FPGA中浮點(diǎn)運(yùn)算功能的實(shí)現(xiàn)技術(shù)
茅 飛1劉樹(shù)青2朱興華3朱昊2
1.南京康尼電子科技有限公司,江蘇 南京 210013
2.南京工程學(xué)院先進(jìn)數(shù)控技術(shù)江蘇省高校重點(diǎn)建設(shè)實(shí)驗(yàn)室,江蘇 南京 211167
3.常州大學(xué)機(jī)械工程學(xué)院,江蘇 常州 213016
浮點(diǎn)運(yùn)算在眾多領(lǐng)域廣泛應(yīng)用,通過(guò)采用純硬件電路方法實(shí)現(xiàn)并形成模塊化,可以增強(qiáng)可移植性、提高浮點(diǎn)運(yùn)算速度和精度、縮短研發(fā)周期和降低開(kāi)發(fā)成本。詳細(xì)介紹了FPGA中浮點(diǎn)運(yùn)算功能的實(shí)現(xiàn)算法和實(shí)現(xiàn)技術(shù),實(shí)現(xiàn)了32位浮點(diǎn)數(shù)的加減乘除功能運(yùn)算單元設(shè)計(jì),通過(guò)QuartusII自帶的仿真軟件獲得仿真波形,驗(yàn)證了正確性。
浮點(diǎn)運(yùn)算;現(xiàn)場(chǎng)可編程門(mén)陣列;模塊化
隨著半導(dǎo)體技術(shù)的快速發(fā)展和生產(chǎn)工藝水平的不斷提高,F(xiàn)PGA芯片在性能和密度方面得到了提高,已具有性能高、密度高、電壓低、功耗低、可靠性高等特點(diǎn),可滿(mǎn)足純硬件實(shí)現(xiàn)浮點(diǎn)運(yùn)算的需要。本文介紹了FPGA中浮點(diǎn)運(yùn)算功能的實(shí)現(xiàn)算法和實(shí)現(xiàn)技術(shù)。
E為階碼位,共8位,E∈[1,254],當(dāng)E=0或E=255時(shí)Y為非數(shù)(NAN,Not A Number)或非規(guī)格化數(shù)。32位浮點(diǎn)數(shù)(單精度)組成結(jié)構(gòu)如表1。
表1 32位浮點(diǎn)數(shù)組成結(jié)構(gòu)
為表述方便,設(shè)有浮點(diǎn)數(shù)Y1和Y2,分別為:
其中S1,S2為符號(hào)位;F1,F(xiàn)2為尾碼位;E1,E2為階碼位。令
2.1 浮點(diǎn)數(shù)加減法算法
如(1-3)、(1-4)兩個(gè)浮點(diǎn)數(shù),其加減法運(yùn)算可如下表示:
Y1和Y2兩浮點(diǎn)數(shù)加減法運(yùn)算流程如圖1所示。其運(yùn)算步驟如下:
⑷ 求和或求差:對(duì)階完畢浮點(diǎn)數(shù)的尾碼需要進(jìn)行求和或求差;
圖1 浮點(diǎn)數(shù)加減法流程
2.2 加減法模塊實(shí)現(xiàn)
根據(jù)2.1算法,可利用Verilog HDL硬件描述語(yǔ)言實(shí)現(xiàn)浮點(diǎn)數(shù)加減法運(yùn)算器。浮點(diǎn)數(shù)運(yùn)算器邏輯框圖如圖2所示。
圖2 浮點(diǎn)運(yùn)算器邏輯框
浮點(diǎn)數(shù)進(jìn)入輸入單元后,提取出符號(hào)位、階碼位、尾碼位送到相應(yīng)的運(yùn)算單元進(jìn)行處理,再經(jīng)過(guò)規(guī)格化處理單元,得到結(jié)果。浮點(diǎn)運(yùn)算器端口定義見(jiàn)表2。
在加減法運(yùn)算單元中,符號(hào)判斷和前導(dǎo)1檢測(cè)比較重要,前者決定運(yùn)算方式和最終結(jié)果符號(hào),后者為規(guī)格化服務(wù)。
表2 浮點(diǎn)運(yùn)算器端口
符號(hào)判斷硬件語(yǔ)言描述:
其中y為兩浮點(diǎn)數(shù)尾碼相加或相減后的結(jié)果,e為兩浮點(diǎn)數(shù)階碼比較后的階碼,前導(dǎo)1檢測(cè)就是檢測(cè)尾碼運(yùn)算結(jié)果的第一位是否為1,如不是,則左移,左移1位,階碼減1;casex語(yǔ)句中x表示0、1均可,如23'b001xxxxxxxxxxxxxxxxxxxx表示只判斷前三位是否001,條件成立則f左移2 位賦值給F 輸出,F(xiàn) 值為23'b1xxxxxxxxxxxxxxxxxxxx00,同時(shí)階碼減2(8'b00000010)。
3.1 浮點(diǎn)數(shù)乘除法算法
如(1-3)、(1-4)兩個(gè)浮點(diǎn)數(shù),其乘除法運(yùn)算可如下表示:
Y1和Y2兩浮點(diǎn)數(shù)乘除法運(yùn)算流程如圖3所示。其運(yùn)算步驟如下:
得出結(jié)果符號(hào)。
⑷ 規(guī)格化處理:對(duì)結(jié)果進(jìn)行前導(dǎo)零檢測(cè)、初次規(guī)格化、尾數(shù)舍入和最終規(guī)格化得到最后結(jié)果。
圖3 浮點(diǎn)數(shù)乘除法流程
3.2 乘除法模塊實(shí)現(xiàn)
根據(jù)3.1算法,利用Verilog HDL硬件描述語(yǔ)言、FPGA內(nèi)嵌的硬件乘法器和除法器實(shí)現(xiàn)浮點(diǎn)數(shù)乘除法運(yùn)算單元。浮點(diǎn)數(shù)乘除法運(yùn)算邏輯框圖如圖2所示。
浮點(diǎn)數(shù)進(jìn)入輸入單元后,提取出符號(hào)位、階碼位、尾碼位送到相應(yīng)的運(yùn)算單元進(jìn)行處理,再經(jīng)過(guò)規(guī)格化處理單元,得到結(jié)果。浮點(diǎn)運(yùn)算器端口定義見(jiàn)表2。
內(nèi)嵌硬件乘法器和除法器可完成高速乘除法操作,精度較高。比使用邏輯單元完成乘除法運(yùn)算更節(jié)省邏資源,延時(shí)更小。內(nèi)嵌硬件乘法器例化描述如下:
其輸入為23位,輸出結(jié)果為45位,結(jié)果經(jīng)舍入處理為23位后,規(guī)格化得到尾碼23位。
硬件除法器例化與乘法器有所不同,其結(jié)果分
為商和余數(shù),內(nèi)嵌硬件除法器例化描述如下:
其輸入為23位,輸出商為23位,余數(shù)為23位,余數(shù)經(jīng)過(guò)移位與除數(shù)輾轉(zhuǎn)相除,得到最后結(jié)果。
在浮點(diǎn)數(shù)加減、乘除運(yùn)算單元的基礎(chǔ)上,實(shí)現(xiàn)三個(gè)子單元的模塊化設(shè)計(jì),可以縮短研發(fā)周期和降低開(kāi)發(fā)成本,為以后的I P核固化打下基礎(chǔ)。模塊由數(shù)據(jù)輸入單元、運(yùn)算選擇單元和運(yùn)算處理單元組成,運(yùn)算處理單元包含加減法運(yùn)算單元、乘法運(yùn)算單元和除法運(yùn)算單元。模塊通過(guò)數(shù)據(jù)輸入單元提取符號(hào)位、階碼位和尾碼位;通過(guò)運(yùn)算選擇單元決定是何種運(yùn)算;通過(guò)運(yùn)算處理單元處理相應(yīng)的運(yùn)算。模塊邏輯框如圖4所示。
圖4 模塊邏輯框
由于只有3個(gè)運(yùn)算單元,選擇信號(hào)只需2位,具體選擇信號(hào)與運(yùn)算單元之間關(guān)系見(jiàn)表3。
表3 選擇信號(hào)與運(yùn)算單元關(guān)系
使用硬件描述言語(yǔ)輸入和原理圖輸入,在Altera公司的可編程邏輯器件開(kāi)發(fā)軟件Quartus II中經(jīng)過(guò)分析和綜合后得到的模塊封裝圖如圖5所示,模塊綜合仿真圖如圖6所示。
圖5 模塊封裝圖
圖6 模塊綜合仿真圖
仿真圖中clk(1位)是時(shí)鐘信號(hào),ctr(2位)是運(yùn)算模式控制信號(hào);y1in(32位),y2in(32位) 為輸入信號(hào);yresult(32位)為輸出信號(hào)。圖中控制信號(hào)是二進(jìn)制格式,輸入輸出信號(hào)是十六進(jìn)制格式。
本文詳細(xì)介紹浮點(diǎn)運(yùn)算的加減運(yùn)算和乘除運(yùn)算的實(shí)現(xiàn)算法和技術(shù),并在此基礎(chǔ)上實(shí)現(xiàn)三個(gè)運(yùn)算單元的模塊化設(shè)計(jì)。通過(guò)Altera公司的可編程邏輯
器件開(kāi)發(fā)軟件Quartus II軟件仿真,驗(yàn)證了設(shè)計(jì)的正確性。
[1]劉增明,張文山.嵌入式軟件浮點(diǎn)運(yùn)算精度分析[J].洛陽(yáng):航空兵器,2010
10.3969/j.issn.1001-8972.2011.23.034
江蘇省自然科學(xué)研究基金項(xiàng)目(BK2008367);南京工程學(xué)院科研創(chuàng)新基金項(xiàng)目(CKJ2009004)