基于FPGA分布式算法的濾波器設(shè)計
對A/D采樣輸入3位地址,并使ALE=1,將地址存入地址鎖存器中。此地址經(jīng)譯碼選通8路模擬輸入之一到比較器。START上升沿將逐次逼近寄存器復(fù)位。下降沿時啟動A/D轉(zhuǎn)換,之后EOC輸出信號變低,指示轉(zhuǎn)換正在進(jìn)行。直到完成A/D轉(zhuǎn)換,EOC變?yōu)楦唠娖?,指示A/D轉(zhuǎn)換結(jié)束,結(jié)果數(shù)據(jù)已存入鎖存器,這個信號可用作中斷申請。當(dāng)OE輸入高電平時,輸出三態(tài)門打開,轉(zhuǎn)換結(jié)果的數(shù)字量輸出到數(shù)據(jù)總線上。CLK為時鐘輸入信號線。由頂層文件的分頻時鐘提供500 kHz時鐘,對信號進(jìn)行采集。
算法主體的實現(xiàn)主要由以下幾個部分組成:數(shù)據(jù)接收存儲、數(shù)據(jù)選擇器、2個存儲器、加法和控制部分。
數(shù)據(jù)接收是在每個時鐘下降沿時檢測轉(zhuǎn)換完成信號,如果完成,則存入對應(yīng)的存儲器中,對于N階的系統(tǒng),就需要存儲N個數(shù)據(jù)等待處理。然后利用數(shù)據(jù)選擇器依次選擇各個數(shù)據(jù),對數(shù)據(jù)的每一位進(jìn)行檢測和提取,組成算法中所需要的數(shù)據(jù)。在控制信號的作用下利用累加器對數(shù)據(jù)疊加、移位處理即可實現(xiàn)。
最后,FPGA向DAC0832的數(shù)據(jù)輸入口(D10~D17)輸送數(shù)據(jù)。提供DAC0832數(shù)據(jù)鎖存允許控制信號ILE,高電平有效。提供DAC0832控制信號(CS:片選信號;Xfer:數(shù)據(jù)傳輸控制信號;WRl、WR2:DAC寄存器寫選通信號),低電平有效。
3 仿真實驗、工況信號測試實驗
基于分布式算法低通FIR濾波器選用xilinx公司的virrex-Ⅱpro器件,在isel0.1下進(jìn)行設(shè)計。利用modelsim 6.5對濾波器進(jìn)行仿真。系統(tǒng)采用頻率為500 kHz的分頻時鐘,在FPGA中產(chǎn)生一個高頻方波和一個低頻鋸齒波信號,并對兩個信號進(jìn)行疊加。疊加后的信號作為輸入,對應(yīng)圖中DIN,經(jīng)過系統(tǒng)處理后輸出結(jié)果對應(yīng)圖中RESULT,仿真結(jié)果如圖3所示。本文引用地址:http://butianyuan.cn/article/191524.htm
由圖3中可以看出,本系統(tǒng)存在相位偏移和濾波后依然存在雜波信號的缺點,相位偏移主要是由濾波處理滯后于輸入引起的,比較穩(wěn)定且偏移較小,一般情況下可以忽略;雜波信號由系統(tǒng)階數(shù)較低和系數(shù)量化誤差引起的。實際應(yīng)用中可根據(jù)情況選擇適當(dāng)階數(shù)的濾波器和提高采樣頻率予以解決。
工況信號測試實驗。由信號發(fā)生器同時產(chǎn)生一個50 Hz低頻信號和一個5 kHz高頻信號,然后對兩個信號進(jìn)行疊加,作為被測的工況信號。被測的工況信號經(jīng)過A/D轉(zhuǎn)換、濾波處理、D/A轉(zhuǎn)換,然后在示波器中顯示,如圖4所示。輸出波形中過濾掉了高頻信號部分,同時低頻信號能夠通過該濾波器。由圖4中可以看出,濾波處理后與實際信號還存在一定的誤差。誤差主要是由于算法中采用了低階濾波器、系數(shù)量化誤差、器件精度低等原因所致,該誤差可以控制在允許范圍,還可以通過選擇高精度的器件和增加濾波器的階數(shù)得以提高。
4 結(jié)語
實驗結(jié)果表明,基于分布式算法低通FIR濾波器的優(yōu)點是工作可靠,濾波精度較高,且具有占用資源少,運算速度快。在資源允許的條件下可根據(jù)實際應(yīng)用任意確定濾波器的字長和階數(shù),在高速數(shù)字信號處理領(lǐng)域可以得到很好的應(yīng)用。
評論