摘要:提出了一種基于FPGA的依據(jù)核磁共振譜儀雙通道頻譜圖對其信號增益和相位差不平衡進行調(diào)節(jié)的設計方案,詳細闡述了FFT算法在FPGA中的設計與實現(xiàn)方法。該模塊中的FFT處理器通過多個64點并行FFT模塊復用實現(xiàn),復數(shù)乘法全部采用移位相加來完成,大大降低了功耗,可移植性很強;并通過優(yōu)化措施有效地降低了由于有限字長效應引入的噪聲。結果表明,該設計大大提高了譜儀信號檢測的準確性與使用的方便性。
關鍵詞:核磁共振譜儀;頻譜分析;FPGA;FFT處理器
0 引言
核磁共振(Nuclear Magnetic Resonance,NMR)自從1946年首次觀測以來已經(jīng)成功地應用到物理、化學、生物和醫(yī)學等諸多領域。與此同時,核磁共振儀器技術也得到了不斷的發(fā)展,其中核磁共振譜儀被廣泛用于化合物的結構測定,定量分析和動物學研究等方面。
核磁共振譜儀通過短時間的高功率射頻脈沖激發(fā)原子核體系使之偏離平衡狀態(tài),然后檢測該體系在恢復平衡過程中產(chǎn)生的自由感應衰減信號,經(jīng)過FFT處理后得到相關的譜信息。目前NMR譜儀普遍使用的檢測信號的方法是正交檢波技術,它需要兩路相檢波來區(qū)分正負頻率,然而當兩通道的增益與相位存在微小的不平衡時,譜圖上就會產(chǎn)生鏡像峰,解決的有效方法是采用相位循環(huán)。但對于長期使用、老化或故障造成增益或相位差與理想值偏離較大的儀器,即使采用相位循環(huán)也不足以解決問題,這時需要通過手動調(diào)節(jié),然而調(diào)節(jié)到什么程度往往只能憑借經(jīng)驗。
本文提出了一種依據(jù)雙通道的頻譜圖給出調(diào)節(jié)依據(jù)的方法。系統(tǒng)結構框圖如圖1所示,通過ADC模塊對雙通道進行采樣,要在頻域?qū)π盘栠M行分析,需要得到信號的頻域信息,因此在采樣之后通過FPGA對信號做FFT變換,然后將得到的頻域信息存入DDR2RAM,以便主機通過PCIE接口將數(shù)據(jù)讀入主機內(nèi)存并進行顯示。在調(diào)節(jié)的時候,可根據(jù)頻譜圖顯示的譜峰把I通道的增益和相位適當?shù)恼{(diào)小或者對應的調(diào)節(jié)Q通道(如圖2所示),直到譜峰消失。
1 正交檢波原理
如圖2所示,正交檢波系統(tǒng)由兩路檢波通道(I通道和Q通道)組成,譜儀接收到的核磁共振信號V(t),首先經(jīng)過混頻器或模擬乘法器與參考信號相乘,對于I,Q通道來說參考信號是相位相差90°的等幅射頻信號,分別將兩者的乘積作為兩通道的輸出。
對于分子中只有一種質(zhì)子的簡單情況,根據(jù)Bloch方程接收到的核磁共振信號如下式:
V(t)=Acos(ω0+φ)exp(-t/T2) (1)
I通道的參考信號為cosωt,經(jīng)過混頻器與輸入信號相乘后為:
得到的乘積為兩項:第一項為和頻分量,經(jīng)過后面的低通濾波器被濾除掉;第二項為差頻分量作為I通道的輸出。綜上所述I通道的輸出為:
對于Q通道,輸入為V(t),參考信號為sinωt,通過類似方法可以計算出Q通道的輸出為:
然后經(jīng)過模/數(shù)轉換分別將I通道和Q通道的數(shù)據(jù)作為復數(shù)的實部和虛部存儲下來。
2 FFT算法實現(xiàn)
FFT算法在FPGA上實現(xiàn)的過程中,信號的值、系統(tǒng)的系數(shù)和運算中的結果都存儲在有限字長的存儲單元中,從而導致了設計時的無限精度轉變成實現(xiàn)時的有限精度,必將產(chǎn)生相對于原設計系統(tǒng)的誤差,嚴重時會將由于雙通道不平衡產(chǎn)生的鏡像峰湮滅,從而使整個設計失去意義。
為了實現(xiàn)FFT實時運算,基于FPGA的FFT信號處理模塊是關鍵,并且要求此模塊能在頻率至少為210 MHz的系統(tǒng)時鐘下穩(wěn)定工作。同時又因為并行的FFT設計需要占用大量的資源,資源使用率過大會制約布局布線后的時序收斂。為了平衡資源與速度間的矛盾,整個設計通過64點FFT并行模塊的復用來實現(xiàn)。
2.1 有限字長效應及其優(yōu)化措施
在FFT算法中,采用蝶形計算,如圖3所示。
對于基2時間抽選FFT算法,蝶形公式如下:
式中:N為FFT點數(shù);Nm和P為兩個同迭代次數(shù)m有關的量;Xm-1為ADC輸出信號經(jīng)過m-2級蝶形運算得到的計算結果;旋轉因子由式(7)給出,每個蝶形包含兩個復數(shù)乘法。
由于存儲單元有限,必須對計算結果截取,進行定點化,但是同時又會引入舍入誤差en,這種現(xiàn)象即為有限字長效應??紤]到每個復數(shù)乘法相當于4個實數(shù)乘法,因此有限字長時復數(shù)乘法的實際乘積可以表示為:
式中e1,e2,e3,e4分別為其對應的實數(shù)乘法的舍入誤差。因此可進一步建立如圖4所示的蝶形計算舍入誤差模型。
如果用一般的定點計算,信噪比下降,噪聲會將產(chǎn)生的鏡像峰湮滅,因此必須采取一定的措施減小由定點化產(chǎn)生的誤差。考慮到在64點FFT并行模塊里點數(shù)是固定的,進行蝶形運算時旋轉因子是常數(shù),因此可以根據(jù)系數(shù)的特點對定點化時的階碼做動態(tài)調(diào)整,在保證無溢出的條件下最大程度的減小噪聲。
如圖5所示,對比在Matlab中的仿真結果,在沒有采取動態(tài)調(diào)整措施前進行定點化的噪聲量級達到±1(見圖5(a)),進行動態(tài)調(diào)整后下降到10-3(見圖5(b)),可見采用動態(tài)調(diào)整進行定點化可以有效地降低由于有限字長效應引起的噪聲。
圖6為進行動態(tài)調(diào)整后在FPGA硬件運行的仿真結果,與軟件自帶的FFT IP相比誤差很小,在輸入正弦波的時候可以明顯地觀察到尖峰,這樣的結果足以滿足NMR譜儀的信號檢測要求。
2.2 64點FFT并行模塊資源優(yōu)化
由于64點FFT模塊并行實現(xiàn),所占用的FPGA邏輯資源太多,在一般的FPGA中難以實現(xiàn),因此有必要對其進行優(yōu)化減少所占用的資源。該設計中N是確定的,旋轉因子都是常數(shù),蝶形運算中的復數(shù)乘法為常系數(shù)乘法,根據(jù)這個特點,可對使用資源進行優(yōu)化。
如式(9)所示,64點FFT可分解為384個蝶形運算單元。
n=Nlog N (9)
式中:N為FFT點數(shù);n為所需的蝶形運算單元的個數(shù)。
式(5)和(6)各包含1個復數(shù)加法運算和1個復數(shù)乘法運算,需要2個加法器和4個乘法器實現(xiàn)。但經(jīng)過如式(10)所示的運算后的復數(shù)乘法可用三乘法器實現(xiàn),因此綜合后的資源先比四乘法器架構優(yōu)化了25%,
(A1+B1i)(A2+B2i)=(A1A2-B1B2)(A1B2-A2B1)i=A1(A2+B2)=B2(A1+B1)+[A1(A2+B2)-A2(A1+B1)] (10)
旋轉因子WN的二進制表示可看作是若干項2次冪數(shù)相加組合而成的數(shù),那么一個數(shù)與WN相乘即可通過在移位操作的基礎上執(zhí)行相應的加法操作來實現(xiàn)。根據(jù)正弦函數(shù)與余弦函數(shù)的對稱性,第5階與第6階與相乘所占用的乘法器完全可以省略。
如式(11)所示,在WN的二進制序列中,在不引入噪聲的基礎上把N個移位寄存器和N-1個加法器的運算用2個移位寄存器和1個減法器來實現(xiàn)。這樣不僅可以大大減少硬件資源的消耗,最大的優(yōu)點是不消耗RAM和乘法器資源,因此速度很快。
2.3 FPGA邏輯資源與性能分析
該設計中的64點并行FFT模塊通過在不同系列芯片綜合仿真后,系統(tǒng)時鐘最高可達285 MHz,完全滿足設計要求。所占用的FPGA邏輯資源和性能與Xilinx FFT IPcore比較如表1所示。
Xilinx公司的ISE集成開發(fā)環(huán)境可以提供成熟的FFT IP核,但是由于占用大量的DSP Slices,可移植性很差,但該設計中由于沒有用到DSP Slices,可移植性很強。圖7為64點并行FFT模塊的時序圖,圖中運算器的數(shù)據(jù)處理時間為1個時鐘周期,數(shù)據(jù)處理的延時Tlatency為37個時鐘周期,使得整個運算器的數(shù)據(jù)處理吞吐率高達656 Gb/s,而數(shù)據(jù)延時時間僅為0.129 μs,與Xilinx公司和Altera公司已經(jīng)成熟的FFT處理器相比時延大大減少,提高了FFT處理器實時處理性能。
3 結語
該設計通過對64點并行FFT進行改進,大大提高了信號處理的實時性,所占用的FPGA邏輯資源和有限字長效應引起的噪聲也得到了優(yōu)化,可移植性大大增強。該設計已經(jīng)完成了硬件電路的設計與調(diào)試,結果證明通過雙通道頻譜圖對由于增益與相位不平衡產(chǎn)生的鏡像峰進行調(diào)節(jié),可大大提高譜儀信號檢測的準確性,也使譜儀的應用更加方便。