潘冬陽,南鋼洋,白 雪
(齊魯工業(yè)大學(山東省科學院)山東省科學院激光研究所,山東濟南 250353)
隨著信息數(shù)字化程度的提高,對信號采集與處理系統(tǒng)也有著更高的性能要求。當前,密集型數(shù)據(jù)處理能力、并行計算能力以及數(shù)據(jù)高速傳輸能力,成為衡量信號采集系統(tǒng)優(yōu)劣的重要因素。在一些背景噪聲復雜的環(huán)境下,如光纖傳感檢測[1]、電磁超聲檢測等[2],還需要系統(tǒng)具有良好的抗干擾能力。目前常見的信號降噪方法有小波變換算法和累加平均濾波算法[3-4],兩種算法的實現(xiàn)大多依靠軟件對采樣數(shù)據(jù)進行處理,缺乏實時性且需要處理的數(shù)據(jù)量較大[5-6]。而FPGA(field programmable gate array)采用并行流水線架構(gòu),擁有靈活的可編程邏輯單元,適用于流式的計算密集型任務[7]。目前市面上的信號采集系統(tǒng)大多不能實現(xiàn)觸發(fā)頻率的自適應,一旦觸發(fā)頻率變化,將可能影響系統(tǒng)正常使用。因此本文基于FPGA設計一種觸發(fā)頻率自適應的累加平均濾波算法,采用兩級RAM緩存數(shù)據(jù),可以在實時并行累加過程不中斷的同時,讀取最終平均結(jié)果,實現(xiàn)重復模擬信號并行流水線高速采集與處理,進而提高了數(shù)據(jù)處理的實時性。
假設輸入信號f(t)是由周期目標信號s(t)和隨機噪聲信號n(t)構(gòu)成,表示為
f(t)=s(t)+n(t)
(1)
此時輸入信號信噪比為
(2)
式中:S為目標信號功率;N為隨機噪聲信號功率。
若對輸入信號經(jīng)過m次累加再取平均值,則目標信號s(t)累加平均后的輸出為
(3)
式中:k為當前累加次數(shù);i為目標信號周期內(nèi)某一采樣點;T為采樣周期。
對于隨機噪聲n(t)累加平均后的輸出為
(4)
(5)
可見,累加次數(shù)m越大信噪比越高[8]。所以通過增加累加次數(shù),可以有效提高信噪比,改善濾波效果。
為提高累加平均濾波算法運行速度,在并行加法器和RAM地址計數(shù)器后插入寄存器組,構(gòu)成并行流水線結(jié)構(gòu),流水線結(jié)構(gòu)是將規(guī)模較大的組合邏輯分成時間上前后相連的多級處理片段,在片段之間插入寄存器組緩存中間數(shù)據(jù),上一級的輸出是下一級輸入的無反饋電路,多級緩沖構(gòu)成流水線。采用流水線結(jié)構(gòu)處理算法,可以將原來的運算量分成多個部分,當任務通過了流水線的第一級,新任務就可以進入流水線,因此減小了每一級的操作時間,且各級操作并行執(zhí)行,縮短了數(shù)據(jù)處理關鍵路徑延時,提高數(shù)據(jù)處理速度[9-10]。
當前采樣數(shù)據(jù)與當前累加結(jié)果進行對應點依次累加,在累加完成的同時,將本次累加結(jié)果經(jīng)過寄存器組同步存入RAM中,然后再進行新一輪累加。算法架構(gòu)圖如圖1所示,信號經(jīng)ADC轉(zhuǎn)換成實時采樣數(shù)據(jù),并將數(shù)據(jù)按全局時鐘節(jié)拍經(jīng)兩級寄存器組進行同步處理,降低亞穩(wěn)態(tài)。而后通過并行加法器作累加運算,累加結(jié)果存入一級緩存RAM1,平均后的結(jié)果存入二級緩存RAM2。整個算法的控制邏輯由狀態(tài)機完成。
圖1 算法架構(gòu)圖
狀態(tài)機由外部觸發(fā)信號驅(qū)動,自適應觸發(fā)頻率,控制加法器的啟停,RAM地址計數(shù)器使能和清零,累加次數(shù)計數(shù)器使能和清零,以及RAM讀寫使能等,其狀態(tài)轉(zhuǎn)移圖如圖2所示。
圖2 狀態(tài)轉(zhuǎn)移圖
在空閑狀態(tài)等待延時觸發(fā)信號,該信號由外部脈沖觸發(fā)信號延時所得。由于從觸發(fā)信號的發(fā)出到ADC輸出有效數(shù)據(jù)有一定延時,所以需要對ADC作延時補償,確保ADC有效數(shù)據(jù)和觸發(fā)信號同步。延時觸發(fā)信號到達后,跳轉(zhuǎn)到初始化狀態(tài),初始化RAM1地址和計數(shù)器等變量,并將第1次觸發(fā)后的采樣數(shù)據(jù)寫入RAM1,等待下一次觸發(fā);第2次觸發(fā)信號到達后,跳轉(zhuǎn)到累加存儲狀態(tài),并進行前2次觸發(fā)采樣數(shù)據(jù)的累加和存儲,新的累加結(jié)果寫入RAM1,將之前數(shù)據(jù)覆蓋。
從第2次觸發(fā)信號以后,每接收到一次觸發(fā)信號,狀態(tài)先由累加存儲狀態(tài)跳轉(zhuǎn)至累加數(shù)判斷狀態(tài),比較設定的累加次數(shù)和當前累加次數(shù),若未到達設定的累加次數(shù),則跳回累加存儲狀態(tài)繼續(xù)進行累加和存儲;若到達累加次數(shù),則跳轉(zhuǎn)至計數(shù)清零狀態(tài),給出累加完成標志信號,并清零累加計數(shù)器和地址計數(shù)器,完成一輪累加過程;新一輪觸發(fā)信號產(chǎn)生后,跳轉(zhuǎn)到使能判斷狀態(tài),判斷累加使能信號,信號有效則直接跳轉(zhuǎn)至累加狀態(tài)繼續(xù)循環(huán)累加工作,否則跳回初始空閑狀態(tài)。系統(tǒng)中與狀態(tài)機相關的指令見表1。
表1 狀態(tài)機指令表
數(shù)據(jù)運算主要分為累加運算和平均運算部分。累加運算由一個并行加法器完成,ADC采樣的數(shù)據(jù)位寬為12位,在經(jīng)過最高65 536次累加后,數(shù)據(jù)位寬將達到28位,為滿足計算要求,加法器輸入輸出端均為28位數(shù)據(jù)。當前累加結(jié)果經(jīng)寄存器組同步后存入RAM1中;再次累加時,將RAM1中的當前累加數(shù)據(jù)讀出,與新輸入的數(shù)據(jù)進行累加,以此迭代。累加運算部分RTL(register transfer level)結(jié)構(gòu)圖如圖3所示。
圖3 累加運算部分RTL圖
在做平均運算時,考慮到用FPGA硬件邏輯實現(xiàn)除法運算會產(chǎn)生復雜的冗余電路,占用過多邏輯單元,故采用移位運算代替除法運算。根據(jù)系統(tǒng)設計,可設定的累加次數(shù)為2N,N最大為16,即65 536次,將2N次的最終累加結(jié)果右移N位,便可實現(xiàn)取平均值的運算。
由于采用RAM1和RAM2兩級緩存,使得數(shù)據(jù)累加和讀取平均數(shù)據(jù)能夠并行執(zhí)行。根據(jù)算法設計要求,外部觸發(fā)信號頻率最小為5 kHz,當ADC采樣速率為100 MSPS時,每次觸發(fā)的采樣點為20 000個;可以設定RAM1的最大存儲深度為20 000。而12位的ADC采樣數(shù)據(jù),在經(jīng)過2N次累加后,數(shù)據(jù)和值的位寬最大為12+N,因此用于存儲累加結(jié)果的RAM1位寬為12+N。當N為16時,RAM1存儲大小為70 KB。平均后的數(shù)據(jù)存儲在RAM2中,需要存儲最多20 000個12位采樣點,大小為30 KB。
使用ModelSim對算法進行調(diào)試仿真,設定觸發(fā)信號頻率為100 kHz,全局時鐘信號頻率為100 MHz,給出算法需要的復位信號,以及疊加了隨機噪聲的正弦波信號作為輸入。當設定累加次數(shù)為4 096次時,平均濾波后輸出的正弦波形如圖4所示,所得波形受噪聲影響明顯減小。圖5為設定65 536次累加平均后的輸出結(jié)果,所得波形已基本趨于平滑正弦波形。
圖4 4 096次累加平均仿真結(jié)果
圖5 65 536次累加平均仿真結(jié)果
仿真結(jié)果表明,上述累加平均濾波算法可有效減少噪聲對重復信號的影響,且隨著累加次數(shù)的增加,濾波效果越明顯。
利用搭建的光纖信號采集系統(tǒng),將算法在該系統(tǒng)中驗證。系統(tǒng)整體結(jié)構(gòu)如圖6所示,光纖反射的Stokes光信號和Anti-Stokes光信號經(jīng)調(diào)理電路后,由ADC高速采樣并轉(zhuǎn)換為12位數(shù)據(jù),送入FPGA作累加平均濾波處理,再由傳輸模塊發(fā)送到上位機進行進一步處理及顯示。FPGA使用Intel EP4CE115系列芯片,ADC采樣速率為100 MSPS,觸發(fā)信號頻率為10 kHz。
圖6 光纖信號采集系統(tǒng)架構(gòu)圖
圖7和圖8分別為經(jīng)過4 096次和65 536次累加平均濾波,并通過上位機運算處理后的光纖溫度信號波形圖。從圖中可明顯觀察到累加次數(shù)越高,信噪比提高越多。經(jīng)過計算,后者比前者提高了約5 dB,驗證了上述累加平均濾波算法的有效性。
圖7 4 096次累加平均波形圖
圖8 65 536次累加平均波形圖
本文實現(xiàn)了基于FPGA的累加平均濾波算法。針對累加平均濾波算法的特點,采用FPGA流水線結(jié)構(gòu)設計算法整體架構(gòu),通過邏輯控制狀態(tài)機實現(xiàn)算法對觸發(fā)信號自適應,利用兩級RAM進行數(shù)據(jù)的高速采集和并行處理。由于采用硬件實時處理,顯著壓縮了數(shù)據(jù)量,有利于上位機對數(shù)據(jù)的后續(xù)分析處理。通過仿真工具對系統(tǒng)進行驗證,并在光纖溫度信號采集處理系統(tǒng)中做了綜合測試。實驗結(jié)果表明,該算法可在100 MHz的全局時鐘下高速采集并處理數(shù)據(jù),且能有效提高隨機噪聲背景下的重復信號信噪比,滿足工業(yè)超聲電磁檢測、分布式光纖測溫等應用領域的數(shù)據(jù)采集需求。