王莉,申雅峰
(航空工業北京長城計量測試技術研究所,北京 100095)
在航空航天、橋梁建筑等領域的光纖傳感測試中,大量使用光纖光柵原理的傳感器組建傳感網絡進行測試[1-4]。基于光譜獲取的光纖傳感解調系統具有光源能量強、獲取傳感器光譜信息豐富、測試通道易擴展等特點,可有效滿足光纖傳感網絡大數據量、數據實時處理的要求。一般測試系統的數據采集功能由數模轉換芯片(ADC)、控制器(FPGA,DSP 或單片機等)和網口傳輸模塊組成,模擬信號經ADC 轉換成數字信號并發送至控制器,然后通過網口傳輸至上位機進行數據分析[5-7]。FPGA 是現場可編程門陣列,具有抗干擾、速度快等優點,適用于邏輯控制,因此多選用FPGA 作為主控制器實現測試系統的數據采集功能。
本文主要解決16 通道光纖傳感解調系統對超過100點傳感器網絡的實時采集及解算問題,系統的采樣頻率為100 Hz,根據光纖光柵解調系統精度及分辨力的要求,80 nm 波長范圍至少需要7500點數據。一幀光譜的采樣周期為10 ms,為保證采集的信號滿足系統要求,每個采樣周期內需要采集7500 個信號點,故16 個通道采集到的總數據量為0.92 MB。如果將16 通道的采集數據直接發送至上位機,網口的傳輸速率為92 MB/s,由于數據量巨大,網口通信和上位機數據處理難度都較高。針對此問題,本文設計并實現了一種基于FPGA 的大數據量實時處理系統,將有用的峰值數據從龐大的數據量中提取出來,減少傳輸數據,從而降低數據傳輸壓力和上位機數據分析壓力。使用該系統時,一幀光譜數據中,有效的數據是光譜中峰極大值點對應的坐標和峰的包絡(取41 個光強值),按照100 點傳感器網絡計算,每個采樣周期內,FPGA 輸出的數據量為0.038 MB,網口的數據傳輸速率可降至3.8 MB/s,極大減輕了網口傳輸壓力和上位機數據處理壓力。對基于FPGA 的大數據量實時處理系統的硬件構架和關鍵模塊設計進行具體介紹,詳細闡述了基于FPGA 的尋峰模塊和交叉讀寫緩存模塊設計方法,最后通過實驗對該系統的實際性能進行驗證。
光纖光柵解調系統的硬件架構如圖1所示,首先FPGA 驅動AD 芯片,進行16 個通道傳感器光譜和一個校準傳感器光譜的采集,光譜的模擬信號經AD 轉換為數字信號,進入FPGA,然后在FPGA內進行大數據量實時處理,將少量的有效數據(通道數、峰極大值點坐標、峰的包絡)篩選出來,發送給單片機,最后單片機通過TCP/IP 通訊協議將數據傳輸至上位機。
圖1 光纖光柵解調系統的硬件架構Fig.1 Hardware architecture of fiber grating demodulation system
LTC2325-16 是一款16-Bit 四通道同時采樣逐次逼近寄存器模數轉換芯片,每個通道的最高采樣率為5 Ms/s,且具有寬動態范圍和高共模抑制比。5 片LTC2325-16 可以實現17 路光譜模擬信號(包括16 路傳感器信號和1 路校準傳感器信號)的1 MHz 高速采集,能夠有效滿足系統對AD 多通道和高采樣率的要求。
FPGA 選用INTEL 生產 的Cyclone Ⅲ系列EP3C120F484 芯片,M9K 內存塊432 個,嵌入式存儲空間3888 KB,豐富的存儲資源支持FPGA 對大容量數據的實時處理,滿足系統存儲需求。EP3C120F484芯片的IO 口有284個,支持LVCMOS和LVDS 等多種接口類型,豐富的接口數量和接口類型能夠支持FPGA 對多片AD 芯片和其他芯片進行驅動控制與數據交換。
FPGA 大數據量處理流程圖如圖2所示,FPGA對16 個通道傳感器的光譜和一個校準傳感器的光譜進行同步采集和大數據量處理。在AD 驅動模塊中,FPGA 驅動AD 芯片進行數據采集,將多路光譜模擬信號轉換為數字信號并傳輸至FPGA。在尋峰模塊中,為濾除信號高頻噪聲,首先對光譜信號進行滑動平均濾波[8],然后將校準傳感器和被測傳感器的光譜分開處理,因為校準傳感器的峰數量多,尋峰不能有效減少校準傳感器光譜數據的數據量,所以校準傳感器的全光譜數據跳過尋峰模塊,直接緩存進入后續交叉讀寫模塊的RAM中;對16個通道被測傳感器的光譜數據進行尋峰,找到多個峰極大值點對應的坐標和峰的包絡,實現有效數據的提取,減少后續傳輸的數據量。
圖2 FPGA大數據量處理流程圖Fig.2 Flow chart of FPGA large data volume processing
2.1.1 AD驅動模塊
模數轉換芯片LTC2325-16支持CMOS 和LVDS兩種高速SPI 兼容型串行接口,LVDS 差分信號的抗干擾能力更強,因此選用LVDS 接口。選用狀態機實現AD 驅動,使用Verilog HDL 硬件描述語言,采用組合邏輯與時序邏輯相結合的三段式狀態機編程方式,避免組合邏輯可能帶來的毛刺[9],AD驅動的狀態轉換圖如圖3所示,在空閑狀態下等待觸發信號,獲得觸發信號后進入采集狀態,CNV信號置高并保持5 個CLK,采集狀態完成后進入轉換和讀出狀態,FPGA 向SCK 引腳輸出16 個脈沖,在每個脈沖的上升沿完成信號的轉換和讀出,待AD 轉換完成后,進入數據串行轉并行狀態,將16位的串行數據轉換成并行數據,便于后續數據處理。
圖3 AD驅動狀態轉換圖Fig.3 Diagram of AD driver status conversion
利用Quartus II 軟件自帶的調試工具SignalTap得到的AD 驅動仿真圖如圖4 所示,其中,cnv 和sck 為AD 的驅動信號;AD2_SDOA,AD2_SDOB,AD2_SDOC,AD2_SDOD 信號為AD 輸出的四路串行數據信號;parallel_en為串轉并使能信號。
圖4 AD驅動仿真圖Fig.4 Diagram of AD driver simulation
2.1.2 尋峰模塊
一幀數據的尋峰通常在上位機中進行,方法有簡單比較法、導數法、CFAR 法、對稱零面積法和線性擬合尋峰法等[10]。除了簡單比較法,其他方法涉及求導、擬合等數據處理,在FPGA 內較難實現。簡單比較法首先對數據進行平滑處理,然后進行最大值比較,其優點是速度快并且適于尋找強單峰,但一幀光譜數據中有多個強單峰,因此本文改進了簡單比較法,實現了多個峰的查找。在尋峰模塊內,FPGA 對16個通道的光譜進行大數據量處理,尋峰程序頂層模塊圖如圖5所示,輸入信號為時鐘CLK_100M、復位信號rst 和16 個通道全光譜數據,輸出信號為交叉讀寫模塊RAM 的寫使能、寫地址和寫入的數據。運行尋峰算法之前先對每個通道的全光譜進行滑動平均濾波,去除光譜數據中高頻噪聲信號帶來的干擾。然后對每個通道的光譜進行尋峰,找到光譜中的有效數據,即峰極大值點坐標和峰的包絡。基本思路是先找到一幀光譜中多個超過閾值的峰的坐標,再根據坐標從一幀光譜中提取出峰的包絡。
數據處理流程如下:
步驟一:將一幀光譜數據存入RAM1,與此同時,將光譜數據依次存入有41個寄存器的數組中。在數組中進行數據大小比較,當第21 個寄存器的數據最大并且超過設置的閾值時,表明找到了光譜的某個有效峰,將該數據在光譜中的坐標存入RAM2 中備用。當一幀光譜存放入RAM1 時,光譜中多個有效峰的坐標也全部在RAM2 中存放完成。本步驟中16個通道同時進行數據處理。
步驟二:將RAM2 中存放的坐標數據讀取出來,作為RAM1的讀地址,從一幀光譜數據中讀取出峰的包絡,完成光譜有效數據的篩選。16 個通道的有效數據均寫入交叉緩存模塊的同一塊RAM中,依次進行數據處理。實現步驟二的難點在于程序中RAM2的讀地址addrc、讀使能enc和讀數據peak_inx 與RAM1 的讀地址addrb、讀使能enb 的時序匹配,只有時序匹配正確才能確保從RAM1中讀取到的包絡準確。利用Quartus II 軟件自帶的調試工具SignalTap 抓取兩個RAM 的讀信號,仿真圖如圖6 所示,兩個RAM 的使能信號enb,enc 同時置高,RAM2 讀出一個峰極大值點坐標peak_inx 后,讀地址addrc 保持不變,RAM1 中對應峰的包絡數據peak_value 被讀出后,RAM2 的讀地址addrb 增加1,讀出下一個峰坐標值peak_inx。
圖6 RAM控制信號仿真圖Fig.6 Simulation diagram of RAM control signal
數據的實時傳輸流程圖如圖7所示,一路校準光譜和16 個通道的尋峰模塊輸出的有效峰值數據依次寫入RAM 中存放,寫入完成后從RAM 中讀出全部數據進行下一步數據傳輸,但讀出RAM 中的數據時,新的數據正被寫入RAM,RAM 的讀寫時序重疊,互相干擾,影響數據流,而交叉讀寫緩存使用兩片RAM,使得數據的寫入和讀出互不干擾,保證數據傳輸的實時性。交叉讀寫緩存基本流程如下:在第一個光譜采集周期,將輸入數據寫入RAM3緩存;在第二個光譜采集周期,將輸入數據寫入RAM4 緩存,同時將RAM3 上一周期緩存的數據讀出并傳送至輸出數據選擇模塊;在第三個光譜采集周期,將輸入數據寫入RAM3緩存,同時將RAM4上一周期緩存的數據讀出并傳送至輸出數據選擇模塊,如此循環,兩個RAM 交叉讀寫,實現數據的連續實時發送。
圖7 數據實時傳輸流程圖Fig.7 Flow chart of real-time data transmission
單片機和FPGA 間的SPI 總線連接如圖8 所示,采用主從控制模式,單片機做主設備,FPGA 做從設備。一般SPI 總線只有CS/SS,SCK,MOSI,MISO 四 條信 號 線[11-12],其中CS/SS 是片 選 信號,高電平表示從設備被選中與主設備進行通信,SCK是串行時鐘線,控制數據交換的時機和速率,MOSI 傳輸SPI 主設備向SPI 從設備發送的數據,MISO 傳輸SPI 主設備接收SPI 從設備傳輸過來的數據,CS_en 信號線的作用是提醒主設備從設備要向其發送數據,CS_en 由低電平轉換為高電平時,CS/SS 隨之變為高電平,主從設備就可以進行通信,單片機接收從FPGA發送的數據。
圖8 SPI總線連接示意圖Fig.8 Diagram of SPI bus connection
單片機和上位機間的數據傳輸通過TCP/IP 通信,特點是可靠性高,不丟包。FPGA 和單片機均可以實現TCP/IP 協議通信。TCP/IP 協議由應用層、傳輸層、網絡層和鏈路層四層協議構成,指令復雜,通過FPGA 實現TCP/IP協議需要通過硬件描述語言對底層網絡協議進行重構[13],對開發人員的FPGA 硬件邏輯編程能力要求高,難度較大,相比之下單片機實現TCP/IP 協議更簡單一些,有很多輕量級開源TCP/IP 協議棧開源代碼可以參考,其中LwIP 最 常用[14-15]。LwIP 的 優 點是 運行 需 求的RAM和ROM少,這是因為LwIP協議棧實現四層協議將網絡接口層、網絡層和傳輸層放在一個進程中處理,所以協議層之間處理的實時性更好,內存資源占用更少。
對上述數據處理思想進行實驗驗證。從16 通道中選擇4個通道接入不同的傳感器串,上位機接收到待測傳感器的數據如圖9所示,沒有接傳感器的通道數據均為0(除通道數外),接入傳感器的通道有通道數、峰的包絡和峰極大值點坐標等數據,并且每個通道中峰的數目與接入的傳感器串相符,表明基于FPGA 的光纖傳感解調數據處理系統成功采集到了多通道數據,并把16 通道總的7500×16個全光譜數據壓縮為7500個,減小了數據量,提高了系統的效率。從圖9 中通道3 數據的放大圖可以清楚地看到,通道3 光譜中有效峰有3個。每個峰取峰的41 點包絡和相應的峰極大值點坐標數據發送至上位機,為驗證尋峰程序的準確性,單獨采集通道3傳感器的原始光譜圖,如圖10所示。圖9 與圖10 中峰的坐標、光強等信息相符,表明通過基于FPGA 的尋峰模塊,準確地提取了光譜的有效峰值數據,為光纖傳感解調系統的實時數據處理提供了可靠支撐。
圖9 上位機接收的16通道數據Fig.9 16-channel data received by upper computer
圖10 通道3傳感器的原始光譜圖Fig.10 Original spectrum of channel 3 sensor
針對光纖傳感測試領域中組網測試采集量大的問題,設計了一套基于FPGA 的大數據量實時處理系統,利用FPGA 驅動AD 芯片對16 個通道傳感器光譜和一個校準傳感器光譜進行采集,之后將光譜的模擬信號轉換為數字信號輸入FPGA,利用FPGA 中的尋峰模塊從大量光譜數據中選取有效數據,減少了傳輸的數據量,并通過交叉讀寫緩存保證數據傳輸的連續性,將篩選后的有效數據發送至上位機。經實驗證明,該系統能夠高效、可靠地滿足基于光譜采集的多通道光纖傳感解調數據處理要求,具有重要技術借鑒價值。