數字濾波是頻譜、語音和圖像處理等應用中的一個基本技術,與模擬濾波相比,數字濾波具有很多突出的優點。數字濾波在性能上可以滿足幅度和相位的嚴格要求,可以避免電壓漂移、溫度漂移和噪聲問題; 在實現上具有穩定性好,精度高、抗干擾能力強等優點[1]。
當今的數字信號濾波,多采用微處理器ASIC( Application Specific Integrated Circuit) 芯片實現[2]。近年來隨著大規模集成電路技術的飛速發展,DSP( Digital Signal Processor) 技術與微處理器技術緊密結合,可以極大地提高系統的運算速度與精度,使得新一代的具有DSP內核的微處理器成為高檔智能化儀器與設備的核心元件。但是高性能的專業DSP 芯片的價格也是昂貴的,在系統開發時必須要考慮到系統的整體成本價格,選擇合適的設計方案。DSP 的ASIC 濾波芯片往往應用于專門的領域,如直流電壓的高分辨率測量、溫度、壓力和質量信號的測量等。如何采用靈活的設計方式,低成本地實現數字濾波成為一項挑戰[3]。
地震數據采集系統為地質勘探服務的儀器,將地面上的震動信號轉換為數字形式記錄下來,通過對采集的數據進行反演,得到地層的結構。本文針對地震數據采集系統的數字濾波設計提出并實現了一種FPGA( Field Programmable Gate Array) 與MCU( Micro Control Unit)相結合的設計方案,兼顧開發成本和靈活性。方案的思想不僅適用于地震數據采集系統,也適用于電壓、壓力、音頻等各種傳感器網絡。
1 數字濾波系統結構
在現代地震數據采集的設計中,為了能獲得高分辨率的振動信號,不僅數據精度要求達到24 位,系統測試時信噪比通常要好于110dB[4]。地震數據采集的另一個特點是有效性能量都處于低頻部分[5],通常在幾百赫茲以下,因此最終只需要1 kHz /s 的數據采樣率[6]。
Sigma - Delta 轉換器以遠遠高于奈奎斯特采樣率對模擬信號進行過采樣,非常適用于最低頻率低于數千赫茲的緩慢變化信號的高精度A/D 轉換。目前在地震數據采集中廣泛應用的Sigma - Delta A/D 轉換器主要有Cirrus Logic公司的CS5371 /5372 高精度24 位A/D 轉換器[7]。
根據地震數據采集Sigma - Delta 高度過采樣的特點,需要在后端設計一個數字抽取濾波器,對信號進行抽取和調理。需要實現的功能有三個: 一是使調制器輸出的高速的信號頻率降到奈奎斯特頻率; 二是濾除調制器輸出的高頻噪聲; 三是將調制器輸出的一位數字信號轉換為高精度的多位數字輸出信號[8]。
在將數字濾波器運用于Sigma - Delta A/D轉換器中時,理論上既能采用FIR( Finite ImpulseResponse) 數字濾波器,也能采用IIR( Infinite Impulse Response) 數字濾波器來實現。IIR濾波器具有無限長的沖激響應,但是IIR 數字濾波器的相位特性不好控制,對相位要求較高時,需加相位校準網絡,因此IIR 數字濾波器是不適合的。FIR 濾波器沒有反饋回路,故不存在不穩定的問題,同時可以做到嚴格的線性相位。由于Sigma - Delta A/D 轉換器是一種高精度、高保真的A/D 轉換器,因此除了要保證信號幅度的精度外,還必須保證信號各頻率分量的相對相位不變,否則會產生相位失真[9]。
Sigma - Delta A/D 轉換器的高度過采樣要求數字抽取濾波器具有很高的抽取率,濾波器采用多級抽取的結構可以獲得更高的效率。多級的抽取結構和單級的結構相比,計算量和存儲量要求更低,每一級的歸一化帶寬較寬,可以減少有限字長效應[8]。此外,由于抽取方式應用時降低了數據率,所以后續工作的FIR 濾波器需要的時鐘速率也跟著降低了,能最大限度地節約高速硬件系統中的功耗。
直接式FIR 濾波器的結構需要很多乘法器和加法器,這樣的結構需要較多的面積和成本,所以要想辦法減少乘法器和加法器的使用。CIC 濾波器( Cascaded Integrator - Comb Filter)是一種高效計算實現窄帶低通的濾波器,它的頻率響應曲線跟SINC 函數sin( x) /x 相似,通常被應用在現代通信系統,實現硬件抽取和內插。CIC 濾波器在硬件設計中受歡迎的一個重要的特點是它們不需要乘法,只需要加法和減法,可以降低計算復雜性,便于系統實現[10]。
在CIC 濾波器抽取/插值的應用中,常常希望得到一個平的通帶和一個窄的過渡帶,但是這跟CIC 濾波器本身的特性是不符合的,為了解決這一問題,CIC 濾波器的前端或者后端通常有一個高性能線性相位低通FIR 濾波器,這些FIR 濾波器的任務是補償CIC 濾波器的非平坦的傳輸頻帶。
圖1( a) 所示是一個經典的一階CIC 濾波器,由延遲單元和加減單元構成。對于一個N階,時延為D 的CIC 濾波器,其z 域傳輸函數為:
?
CIC 濾波器有抽取濾波的形式,抽取操作意味著每隔R 個樣點只取一個樣點輸出,從而導致輸入采樣率是輸出采樣率的R 倍。梳狀濾波器的位置放在抽取之后可以節約計算時需要的寄存器空間。大部分的CIC 濾波器都是采用如圖1( b) 所示的結構,此時梳狀濾波器的延遲為N = D/R,而不是D。
?
CIC 濾波器的主要特點是延遲累加,所以只要用加法器、減法器和寄存器就能實現,無需乘法器,因此用FPGA 實現起來比軟件算法實現要簡單,而且由于FPGA 是并行結構,所以處理的速度也比軟件處理快,故選用FPGA 來實現CIC 濾波。
FIR 濾波器算法是對具有一組相關系數的輸入信號進行離散卷積。一個M 階FIR 濾波器的變換函數為:
?
由變換函數的表達式可看出,變換函數實際上需要用乘法器、延時元件及加法器來實現。FIR 也可以使用FPGA 來實現。用FPGA 實現FIR 的優點與實現CIC 一樣,處理速度快,但是由于FIR 實現需要用到乘法器,所以實現起來比CIC 復雜,也需要更多的資源,這樣對成本控制是不利的。并且在地震數據濾波中,數據速率很低,并不需要高速的FIR 濾波,所以在這里,把FIR 濾波部分由MCU 來完成,在節省硬件資源的同時降低了成本。
濾波系統的整體框圖如圖2 所示,由FPGA模塊、MCU 模塊兩部分組成。其中CIC 濾波模塊在FPGA 內實現,而FIR 濾波在MCU 內實現。
?
濾波系統的輸入信號為正弦信號經過Sigma-Delta ADC 轉換后形成的1 bit 數據流,數據率為512 kHz。經過CIC 抽取濾波器和FIR濾波器抽取濾波之后,得到24 位1 kHz 數據率的輸出數據。
2 SINC 濾波器設計
地震數據采集的采樣率除了最常用的1 k采樣率,還有2 k,4 k 采樣率等,為了支持多種采樣率,CIC 整體模塊由4 個單級的CIC 模塊級聯形成。在其他采樣率時,可以旁路其中部分濾波器。
如圖3 所示,這四個單級CIC 濾波器分別是一個5 階的8 抽樣CIC 濾波器( CIC 1) 、一個4 階的2 抽樣濾波器( CIC 2) 、一個5 階的2 抽樣濾波器( CIC 3) 和一個6 階的2 抽樣濾波器( CIC 4) 。Sigma - Delta A/D 轉換器輸入數據率和位寬分別是512k、1 bit,經過CIC 1 后,位寬17 bit、數據率64 kHz; 經過CIC 2 后,位寬21bit、數據率32 kHz; 經過CIC 3 后,位寬24 bit、數據率16 kHz; 經過CIC 4 后,位寬24 bit、數據率8 kHz。
?
四級CIC 濾波器變換函數H( z) 分別為:
后三級CIC 濾波器的傳輸函數形式上是一樣的,分成三級設計是為了將時鐘頻率逐級降低下來,盡可能地減少工作在高速時鐘的邏輯,達到降低功耗的目的。
因為CIC 濾波器所占用的邏輯面積很小,選擇Xilinx 公司的FPGA 芯片XC3S100E 來實現。它是Spartan3E 系列中邏輯門數最少的芯片,已經足夠實現CIC 功能和其它很多控制邏輯[11]。Sigma - Delta A/D 轉換器輸入數據在FPGA 內部經過四級CIC 濾波后產生8 kHz、24bit 數據。FPGA 通過SPI 接口將數據發送到MCU。
3 FIR 濾波器設計
FIR 濾波器采用兩級FIR 串聯的形式達到濾波效果。由于CIC 濾波器在低頻部分有著衰減的帶寬,需要通過一個FIR 濾波器改善整個濾波系統低頻部分的性能。其后另接一個FIR濾波器,產生一個快速下降的帶寬,以對高頻部分濾除。
FIR 濾波結構特點是沒有反饋支路,即沒有環路,其單位脈沖響應是有限長度。FIR 的特征函數將輸入X( n) 和h( k) 做卷積運算,得到輸出Y( n) 的差分方程為:
如圖4 所示,FIR1 抽取濾波器為48 抽頭( 47 階) 4 抽取濾波器。FIR2 抽取濾波器為126 抽頭( 127 階) 2 抽取濾波器,Matlab 可以根據需要達到的濾波效果產生具體的濾波系數。
?
對于FIR 濾波器,從卷積公式可知,有K個系數的FIR 濾波對每個輸入需要做K + 1 次乘法,在抽取時,這個運算可以被簡化,不是每個輸入都要跟每個系數相乘,可以只算有效的乘積,忽視會被抽取掉的選項,可以節約MCU資源,大大提高效率[12]。
抽取為M 時,則M 個數里有一個才是有效項,即式( 5) 所示:
以一個階數M 為3,抽樣為3 的FIR 濾波器為例,它含有4 個系數,它的有效乘積項可以用圖5 直觀表示。
對一個有K 個系數,抽樣為M 的FIR 來說,一般的算法除了開頭的K - 1 個輸入,以后每個輸入都需要做K 次乘法運算; 優化后的算法每個輸入只需要做[K /M]次乘法,其中[K /M]為系數個數除以抽樣數后向上取整。
FIR 濾波部分由三部分組成: SPI 接口,FIR濾波器和串口。SPI 是MCU 跟FPGA 通訊的通道,MCU 從SPI 得到數據; FIR 濾波器為FIR 濾波功能實現模塊; 串口為MCU 跟主機通訊的通道,主機可以通過串口給MCU 發指令,MCU 可以將處理完的數據用串口發給計算機。比如NXP 公司的LPC2106 芯片是一款ARM7 核的MCU,功耗低,數十兆赫茲的處理能力已經能夠勝任32 kHz 的數據處理[13]。
4 系統仿真和實際測試
Matlab 可以對系統的性能做出理論上的分析。CIC 濾波器的幅頻響應如圖6 所示,可以看出CIC 在低頻部分有著良好的響應,但是在高頻部分下降得不夠快。CIC 濾波器和FIR 濾波器的整體幅頻響應如圖7 所示,CIC 和FIR兩級濾波器在430 Hz 以下有著良好的低通性能; 而在430 Hz ~ 500 Hz 的頻率范圍內,幅度響應下降了137 dB。
通過Matlab 仿真,可以從理論上得到CIC和FIR 構成的數字濾波器的性能。在實際中,可以通過真實的信號進行進一步的測試。在系統測試時,需要提供一個正弦波經過AD采樣后的數據,這個電路可以通過CS4373和AD轉換器CS5372 組成。CS4373 的主要功能是提供一個正弦信號,而CS5372 是高精度Sigma-Delta AD 轉換器,能產生符合測試條件的串行bit 數據流,數據率為512 kb /s。
圖8 是測試數據的頻域波形,通過計算可以得到信噪好于110 dB,能夠滿足地震數據采集的需求。
?
5 結論
本文針對地震數據采集系統中Sigma-Delta A/D 轉換器后端的多級抽取濾波器進行了設計和實現。濾波器由四級CIC 濾波器和兩級FIR濾波器構成,分別在FPGA 和MCU內實現。相對于專用的濾波芯片設計,極大地降低了成本。濾波器有著良好的低通性能,并能有效壓制噪聲,實測信噪比好于110 dB,能夠很好地滿足地震數據采集的需求。
這種FPGA 和MCU 相結合的方式所實現的地震信號濾波器,是一種低成本地震信號數字濾波器設計的嘗試。從原理上驗證了此類濾波器實現的可能性,并從性能上給出了初步的評估結果。但是這種方案的應用具有一定的局限性,它的功耗同商業濾波器相比相對較高。下一步可以在此方案的基礎上進行實現方面的研究,從而達到性能、功耗和價格方面的多點平衡。
評論
查看更多