空間太陽望遠鏡圖像鎖定系統(tǒng)中的應用
2 系統(tǒng)實現(xiàn)
系統(tǒng)原理如圖1所示,整個FFT運算處理單元分為三部分:存儲單元(兩個輸入/運算存儲器、一個輸出存儲器及旋轉因子存儲器)、蝶形運算單元、地址產生器。
2.1 存儲器
本系統(tǒng)實時接收前端CCD相機的圖像。為保證CCD相機采集圖像的準確率,圖像的每一行、每一幀之間都必須有一定的時間間隔,故采用兩個存儲單元作為輸入數據和中間數據的暫存單元(如圖1所示),以節(jié)省時間實現(xiàn)實時處理。當系統(tǒng)工作時,將圖像存入存儲器、計算上一次采集的圖像、將存儲器中的結果輸出,這三個工作同時進行,用簡單的流水方式減少存儲數據所需的時間。旋轉因子則預先存儲在器件的內置ROM中。根據級數不同選用不同的因子。
2.2 蝶形運算單元
一個基-2蝶形運算由一個復乘和兩個復加(減)組成,采用完全并行運算,進一步分解為四個實數乘法,六個實數加(減)法,分三級并行完成,加上前后輸入輸出的數據鎖存,共需要6個時鐘周期。32點的FFT需要16×5=80個基-2的蝶形運算,一幅圖像一共是32行32列,不考慮不需要做乘法的蝶形運算,一路串行共需要6×80×32×2=30720個時鐘周期,采用頻率為10MHz的時鐘,即為3ms。對于蝶形運算的第一、第二級都可以由不帶乘法器的蝶形結構來實現(xiàn)同步并行運算,每一個蝶形運算加上前后的數據鎖存僅需4個時鐘周期即可完成;對于第三、第四、第五級,由于帶乘法器不帶乘法器的兩種蝶形運算結構同時存在,必須加入等待時間才可以實現(xiàn)嚴格同步。同時由于各級計算時間不同,所以不能實現(xiàn)深度流水。因此,采用多路并行及部分流水,在時間上即可滿足系統(tǒng)要求。
上面討論了當運算從一級轉到另一級時,序列中數值的幅度一般會增大。因而,運算方法是在內循環(huán)中作溢出監(jiān)測。如果沒有溢出,則計算照常進行;若有溢出,則把產生溢出的數據右移,一直到沒有溢出為止。記錄下移位的次數(0、1或2),并把整個序列右移同樣位數,移位總數進行累計,累計數的負值作為2的冪,由此得出最終序列的總的比例因子。比例因子s由下式定義[6][7]:
這里bi為比例參數。
k=0,1,2,…,N-1 ?。?)
根據公式(6),FFT的最終結果要除以比例因子。式中x(n)為原始數據,X(k)為除以比例因子之前的結果,X‘(k)為最終結果,1/s為比例因子的倒數。
如圖2所示,對于一個基-2蝶形單元,當從存儲器中讀取的Bbit輸入數據進入蝶形運算單元PE1后,經過乘法運算(MU1)乘以旋轉因子,數據變?yōu)椋˙+Bω)bit,然后作加(減)法,得到蝶形運算結果(B+Bω+1)bit。為防止溢出,進行移位操作。M1、M2為比例選擇器,根據不同的級數,選擇不同的比例因子。最后,輸出數據再放回到存儲器中。
3 FPGA器件選擇
本設計采用XILINX公司的VERIEX系列XCV300-4HQ240芯片。該芯片有豐富的可配置邏輯模塊CLBs(Configurable Logic Blocks)、大量的觸發(fā)器以及內置的不占系統(tǒng)資源的塊RAM。系統(tǒng)最大工作頻率可達200MHz,兼容多種接口標準,有相應的航天級產品,是目前市場上為數不多的能達到此項要求的高性能可編程邏輯器件。
VERTEX系列器件的一個顯著特點是內置的延遲鎖相環(huán)DLL(Delay-Locked Loop),它可以減少時鐘傳輸的衰減,每一個DLL可以驅動兩個全局時鐘信號。DLL可以倍頻,或者1.5、2、2.5、3、4、5、8以及16分頻。VERTEX系列器件內部的4-輸入查找表LUTs(Look-Up Tables)也具有多種功能:可以作為16 ×1bit的同步RAM,而且一個塊(Slice)中的兩個LUTs可以組合成一個16×2bit或者一個32×1bit的同步RAM或者一個16×1bit的同步多口RAM。另外,LUTs還可作為一個16bit的移位寄存器使用,該寄存器用來獲取高速或者突發(fā)數據非常理想,特別適用于數字圖像處理中的數據存儲[8]。
本設計充分利用了VERTEX器件的LUTs替代觸發(fā)器和基本門電路搭建乘法器和加法器這兩個顯著的結構特點,節(jié)省大量觸發(fā)器資源,避免了缺少觸發(fā)器而LUTs大量剩余的尷尬;增加了器件利用率、布通率,降低布線延遲。由于本系統(tǒng)最終用于空間太陽望遠鏡,所以板上時鐘頻率不可超過20MHz。但基于地面測試的需要,特利用DLL對外部時鐘信號進行了倍頻,以提高芯片內部的運行速度。
本設計利用FPGA易于實現(xiàn)并行運算的特點實現(xiàn)專用的FFT處理芯片,解決了在軌實時大數據量圖像處理與航天級DSP運算速度不足之間的矛盾,提高了系統(tǒng)實時處理能力。兩維FFT不到400μs即可完成,高于航天級DSP(ADSP21020)1.5ms的處理速度。對太陽米粒組織圖像進行處理(實驗數據如表1所示),結果顯示數據誤差都在1%左右。這樣的誤差滿足空間太陽望遠鏡中的相關擺鏡的系統(tǒng)要求。實驗證明用高性能FPGA實現(xiàn)空間化的FFT處理芯片是完全可行的。
表1 實驗數據
序 號 | 原始數據 | 浮點數據 | 定點數據 | 誤差% | 序 號 | 原始數據 | 浮點數據 | 定點數據 | 誤差% |
1 | -32768 | 420104 | 419328 | 0.18 | 17 | 19072 | 5048 | 5120 | 1.43 |
2 | -32768 | 154298 | 155008 | 0.46 | 18 | 18704 | 5943 | 6016 | 1.23 |
3 | 7216 | 97679 | 98304 | 0.64 | 19 | 18796 | 9445 | 9600 | 1.64 |
4 | 14800 | 106224 | 106688 | 0.44 | 20 | 19152 | 26885 | 27200 | 1.17 |
5 | 16080 | 93313 | 93760 | 0.48 | 21 | 16304 | 31028 | 31232 | 0.66 |
6 | 19840 | 76389 | 76800 | 0.54 | 22 | 14752 | 33592 | 33600 | 0.02 |
7 | 23104 | 65472 | 65672 | 0.68 | 23 | 14576 | 38986 | 39168 | 0.47 |
8 | 20000 | 604403 | 60672 | 0.45 | 24 | 15200 | 58786 | 59136 | 0.60 |
9 | 19104 | 69973 | 70400 | 0.61 | 25 | 8160 | 39973 | 70400 | 0.61 |
10 | 23376 | 58786 | 59136 | 0.60 | 26 | 7048 | 60403 | 60736 | 0.55 |
11 | 20128 | 38986 | 39104 | 0.30 | 27 | 14384 | 65472 | 65920 | 0.68 |
12 | 18688 | 33592 | 33600 | 0.02 | 28 | 11584 | 76389 | 76800 | 0.54 |
13 | 19680 | 31028 | 31232 | 0.66 | 29 | 11472 | 93313 | 93760 | 0.48 |
14 | 19536 | 26885 | 27200 | 1.17 | 30 | 11456 | 106224 | 106752 | 0.50 |
15 | 19680 | 9445 | 9600 | 1.64 | 31 | 11760 | 97679 | 98304 | 0.64 |
16 | 18720 | 5943 | 6016 | 1.23 | 32 | 11488 | 154298 | 154944 | 0.42 |
評論