a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 基于FPGA的迭代層析重建中的小數處理方法

基于FPGA的迭代層析重建中的小數處理方法

作者: 時間:2008-06-25 來源:網絡 收藏

1 引 言

發射光譜層析(EST)技術是一種不干擾原待測場分布的測量診斷技術,他在熱物理量測試、等離子體診斷等方面顯示出了極大的優越性,尤其是在場分布測量方面,幾乎是其他不可替代的,是測量三維流場內部物理量分布的一種常用

傳統的層析技術,通常是利用軟件編程在計算機上直接完成,這要花費很長的時間,無法滿足實時時對速度的要求,現在已有研究者開始著手研究在硬件(例如和DSP)上來實現層析技術,例如:在上實現ART算法。但是,由于ART算法在重建圖像時對噪聲的抑制能力較差,迭代格式復雜,且有除法運算,用實現起來較為復雜。同時迭代重建算法--SIRT能夠有效抑制測量誤差的影響,迭代格式簡單,得到廣泛應用,但該法用FPGA(現場可編程邏輯門陣列)來實現時,牽涉到運算問題。因為在FPGA中數據都是以二進制形式參與存儲、運算的,計算問題是FPGA應用中的一大難點,目前業界用FPGA來大都采用定點,這種行之有效,但應用范圍很有限,對于在層析重建中的小數,采用定點運算是無法的。

本文提出一種處理小數的方法,即把將要參與運算的數據轉化為IEEE標準754的二進制單精度浮點數,然后調用Altera開放的浮點數運算IP核對數據進行運算,Altera提供的IP核是Altera公司經過嚴格測試和優化過的電路功能模塊,在設計項目時調用IP核既減少了設計中的工作量,又在一定程度上節省了芯片資源,為迭代層析實時重建提供了可能。SIRT算法較ART算法迭代格式簡單,且更易減小重建誤差,提高重建速度,更適用于實時重建。FPGA在設計時采用Verilog編程和調用Altera的開放IP核相結合的方法來實現,軟件設計和綜合模擬仿真在QuartusⅡ5.1開發平臺中完成,最后給出了一些模塊仿真的波形。

2 SIRT算法

SIRT算法的迭代格式為:

其中P是測量數據,WT是投影矩陣W的轉置,λ為松弛因子,F是重建量。

物理意義為:取測量向量的反投影作為初始圖像,在求k+1次估計F(k+1)時,利用k次估計F(k)加上校正圖像。校正圖像正比于第k次估計的誤差矢量的反投影WT*(P-W*F(k))。因而每個像素的校正值實際是通過該像素的所有射線和的誤差值之累加,而不是只與一條射線有關,這也是SIRT能有效地抑制測量數據中噪聲的根本原因。由于每一像素的校正值是所有過該像素射線的共同貢獻,一些隨機誤差被平均掉了,因此SIRT的校正過程被稱為逐點校正。其中松弛因子的選取,會對誤差收斂曲線產生影響,如果環境不變,松弛因子可以固定。 3 IEEE754對浮點數的規定

標準浮點數字長由一個符號位S、指數E和無符號(小數)的規格化尾數M構成。其格式如下:


考慮一個由一位符號位,E=8位指數寬度和M=23位的尾數(不包括隱藏的1)組成的浮點數表達式。現在來研究545.2510在單精度浮點數格式下的表達形式。由bias=2E-1-1計算偏移量如下:

定義二進制浮點數算法的IEEE754-1985標準還定義了一些其他有用的特殊數的處理,例如溢出和下溢。指數E=Emax=1…12與0尾數m=0組合是為∞保留的,0是用0指數E=Emin=0…02和與0尾數m=0編碼的,注意由于有符號尾數表達式、正零和負零編碼是不同的,在IEEE754標準中還定義了兩個特殊數,但在FPGA浮點數算法中通常都不支持這些其他的表達式。這些其他數字是非正規數和(denormal)NaNs(not a number,非數字)。

4小數的預處理

IP核來計算數據時,輸入數據和輸出數據都應為IEEE標準754的二進制單精度浮點數,這樣就要求在進行浮點數運算之前,先要對數據進行處理使測量值P和投影矩陣W的值轉化為IEEE標準的二進制浮點數。

預處理步驟如下:

(1)對于測量數據P,他是由CCD采集并經10位A/D轉換,使測量數據轉換為10位二進制整數,然后經過數據預處理模塊,把數據處理轉化為IEEE標準754的二進制單精度浮點數,輸入到外部寄存器P等待調用。

(2)對于投影矩陣W,如果圖像大小一定,則投影矩陣W也是固定的,可先由Matlab仿真生成并處理轉化為IEEE標準754的二進制單精度浮點數,然后存到W寄存器,等待調用。

在此只討論由FPGA處理的部分,即只討論對測量數據P的預處理,而對于W矩陣的值則可由Matlab編程處理完成,在此不再贅述。

流程圖如圖2所示。

5模擬與仿真

對于測量值P,他是由面陣CCD采集,并經有自制的10位A/D轉換得來的二進制整數,根據其數據特點,可以采用移位,然后按規律重組就能將其變為IEEE標準754的二進制單精度浮點數。

5.1預處理P的模塊

測量數據P為二進制整數,將其轉化為IEEE標準754形式,只需要先對數據進行檢測,若數據為正則符號位S=0,否則S=1;然后找出為"1"的最高位,設為"1"的最高位為第L位,則保留P[L-1:0]作為IEEE標準754的尾數M的高位,然后在其后補"0"至23位,即得尾數M;而L的值即為指數e,則E=e+127。假設P[9:0]=0001011011,則為"1"的最高位為P[6],保留P[5:0]作為尾數M[22:0]的高位,然后在后面補"0",即得尾數M,在此M=01101100000000000000000,而指數e為6,則E[7:0]的大小為E=e+127,在此即為133,即為二進制的10000101,此處為S=0,則P轉化后的值為Pout[31:0]=01000010101101100000000000000000,仿真結果如圖3所示。

顯然仿真結果是正確的。

按照IEEE標準754形式,把測量所得數據P和投影矩陣W的值預處理轉化為IEEE標準754形式以后,即可進行運算。

5.2 浮點加法器的實現

兩浮點數相加,設兩個IEEE標準754單精度浮點數分別為01000000011000000000000000000000和01000000010000000000000000000000,即為十進制的3.5和3,調用浮點加法IP核,仿真波形圖如圖4所示。
由仿真波形圖可見相加結果為01000000110100000000000000000000,即為十進制的6.5,顯然結果是正確的。

5.3 浮點乘法器的實現

兩浮點數相乘,設兩數均為01000000011000000000000000000000,即為十進制的3.5,調用浮點數乘法IP核,進行仿真。仿真結果如圖5所示。

由仿真波形圖可見兩數相乘結果為01000001010001000000000000000000,為十進制數的12.25,即結果是正確的。

6 結 語

通過以上討論分析,本文提出的FPGA的處理小數的方法是可行的,不僅解決了在FPGA上實現發射光譜層析SIRT算法時的小數問題,同時也拓寬了FPGA的應用范圍,使得FPGA不只能處理整數還可以處理小數,突破了以往FPGA處理小數時只能用定點處理的限制,同時本文巧妙地利用了經過嚴格測試和優化的Altera開放的IP核并結合自編Verilog程序,這樣既減少了設計中的工作量,又可以在一定程度上節省硬件資源,提高系統運行速度,向發射光譜實時層析重建邁了有意義的一步。


評論


相關推薦

技術專區

關閉