多通道超聲波探傷實時處理-飛泰
多通道系統(tǒng)的超聲探傷波形數(shù)據(jù)需要實時傳輸?shù)轿⑻幚砥鬟M行處理和顯示,應用程序還需要監(jiān)控多通道的實時報警情況。這些功能都是通過軟硬件共同實現(xiàn)的,其中 FPGA 相關算法模塊實現(xiàn)多通道高速采樣數(shù)據(jù)的非均勻壓縮算法和閘門報警算法,應用程序?qū)崿F(xiàn)軟件功能的控制與數(shù)據(jù)的存儲等。實時功能模塊的設計直接影響本系統(tǒng)的性能指標,也是超聲波探傷系統(tǒng)的技術重點和難點。
1.多通道超聲回波信號輸入到 AD9212 進行高速采樣,采樣后的數(shù)字信號送入 FPGA。FPGA對多通道高速數(shù)字信號進行并行非均勻壓縮,壓縮后的數(shù)據(jù)存放在 8 個 FIFO 中。因為 ARM 子系統(tǒng)同時只處理一個物理通道的數(shù)據(jù),所以,同一時刻 FPGA 也只有一個 FIFO 與 ARM 子系統(tǒng)連接,稱為當前實時波形 FIFO。當當前實時波形 FIFO 產(chǎn)生完一幀數(shù)據(jù)時,F(xiàn)PGA 向 ARM 子系統(tǒng)發(fā)送一個硬件中斷 int1。如果開啟了硬件報警功能,相關通道實時數(shù)據(jù) FIFO 將繼續(xù)輸入到FPGA 中的實時報警模塊,分別與相應的閘門數(shù)據(jù)進行比較,如果數(shù)據(jù)超過相應的閘門門限值,將進行實時聲光報警,并對相應的狀態(tài)寄存器進行置位。當實時報警模塊判定報警結(jié)束時,將產(chǎn)生的報警數(shù)據(jù)寫入相應的報警數(shù)據(jù) FIFO 中,并向 ARM 子系統(tǒng)發(fā)送硬件中斷 int2。以上是FPGA 相關算法模塊的具體工作。
2.操作系統(tǒng)接收到外部中斷 int1 或者 int2 后,根據(jù)相關驅(qū)動程序中已經(jīng)注冊的中斷,調(diào)用相關的驅(qū)動程序中的中斷服務子程序。探傷系統(tǒng)中,int1 的中斷服務子程序在實時波形模塊驅(qū)動程序中實現(xiàn),int2 的中斷服務子程序在實時報警模塊驅(qū)動程序中實現(xiàn)。在這兩個中斷服務子程序中,都向應用程序發(fā)送了 SIGIO 信號,從而通知應用程序波形數(shù)據(jù)或者報警數(shù)據(jù)已經(jīng)就緒。
3.應用程序在運行過程中接收到 SIGIO 信號后,便跳轉(zhuǎn)到相應的信號處理函數(shù)。首先通過調(diào)用實時報警模塊驅(qū)動程序中的 ioctl(),判斷是否是報警中斷。如果是報警中斷,則將報警 FIFO中的數(shù)據(jù)讀取到用戶空間并保存;如果是實時波形中斷,則首先通過 ioctl() 方法讀取報警狀態(tài)寄存器 reg_state,根據(jù) reg_state 判斷哪幾個通道發(fā)生報警,并在顯示屏上進行顯示,然后將當前通道的數(shù)據(jù)從 FIFO 中讀取到用戶空間,進行處理后在波形區(qū)域?qū)崟r顯示。