《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于FPGA分布式算法的濾波器設(shè)計
基于FPGA分布式算法的濾波器設(shè)計
摘要: 0引言傳統(tǒng)數(shù)字濾波器硬件的實現(xiàn)主要采用專用集成電路(ASIC)和數(shù)字信號處理器(DSP)來實現(xiàn),。FPGA內(nèi)部的功能塊中采用了SRAM的查找表(lo-okuptable,LUT)結(jié)構(gòu),,這種結(jié)構(gòu)特別適用于并行處理結(jié)構(gòu)
關(guān)鍵詞: FPGA 濾波器
Abstract:
Key words :

    傳統(tǒng)數(shù)字濾波器硬件的實現(xiàn)主要采用專用集成電路(ASIC)和數(shù)字信號處理器(DSP)來實現(xiàn),。FPGA內(nèi)部的功能塊中采用了SRAM的查找表(lo-ok up table,LUT)結(jié)構(gòu),,這種結(jié)構(gòu)特別適用于并行處理結(jié)構(gòu),,相對于傳統(tǒng)方法來說,其并行度和擴展性都很好,,它逐漸成為構(gòu)造可編程高性能算法結(jié)構(gòu)的新選擇,。
    分布式算法是一種適合FPGA設(shè)計的乘加運算,由于FPGA中硬件乘法器資源有限,,直接應(yīng)運乘法會消耗大量的資源,。本文利用了豐富的存儲器資源進行查找表運算,設(shè)計了一種基于分布式算法低通FIR濾波器,;利用線性相位FIR濾波器的對稱性減小了硬件規(guī)模,;利用分割查找表的方法減小了存儲空間;采用并行分布式算法結(jié)構(gòu)和流水線技術(shù)提高了濾波器的速度,,在FPGA上實現(xiàn)了該濾波器,。

1 分布式的濾波器算法
   
FIR濾波器突出的特點是單位取樣響應(yīng)h(n)僅有有限個非零值。對于一個N階的FIR濾波器形式如下:
   
    在許多數(shù)字信號處理應(yīng)用領(lǐng)域中,,在技術(shù)上是不需要通用的乘法算法的,。對于本系統(tǒng)可以通過Matlab中的fdatool工具根據(jù)設(shè)計要求設(shè)計出濾波器的系統(tǒng)函數(shù)h(n),那么乘積項h(k)×x(n-k)就變成了2個常數(shù)的乘法,。無符號數(shù)的分布式算法和有符號數(shù)的分布式算法是分布式算法在FIR濾波器中的2種典型算法,。
1.1 無符號數(shù)的分布式算法設(shè)計
   
由于FPGA為并行處理結(jié)構(gòu),所以假設(shè)x(n-k)數(shù)據(jù)寬度為L b,則由式(1)可表示為:
   
    由式(1),、式(2)可以得到:
   
    假設(shè):
   
則式(1)可以表示為:
   
1.2 有符號數(shù)的分布式算法設(shè)計
   
對于有符號數(shù)的補碼表示為:
   
則由式(5),,式(1)可得:


2 分布式的濾波器的軟件實現(xiàn)
   
從式(5)和式(7)可以看出,利用分布式算法實現(xiàn)一個N項乘積和,,關(guān)鍵是如何實現(xiàn)式(4)中乘積項及各乘積項之和,。
    在FPGA中可以預(yù)先設(shè)定一個N位輸入的查找表來實現(xiàn)部分乘積項,即預(yù)先設(shè)定N階濾波系統(tǒng)查找表,,實現(xiàn)向量x(i)={x0(i),,x1(i),x2(i),,…,,xN-1(i))到p(i)的一個映射。由于查找表的地址空間與階數(shù)成指數(shù)關(guān)系(2N),,完全用查找表來實現(xiàn)部分乘積項需要容量很大的存儲器,,這就需要占用巨大的資源,而且功耗增加,、速度降低,。因此為了減小設(shè)計規(guī)模,可以將一個大的查找表分為幾個較小的查找表來實現(xiàn),。例如,,本系統(tǒng)采用的8階FIR濾波器,則用一個查找表來實現(xiàn)需要256(28)位地址空間的ROM,,將8階FIR濾波器分成兩個4階FIR濾波器實現(xiàn),,只需要2個16(24)位地址空間的ROM,這樣大大地降低了設(shè)計規(guī)模和資源使用量,。把輸入x(i)作為地址,,分為高四位和低四位地址進行查找。表1給出了8階濾波系統(tǒng)的低四位地址x(i)與p(i)的映射關(guān)系,。

 


    本系統(tǒng)中濾波器系統(tǒng)函數(shù)采用Matlab中的fdatool工具,,并根據(jù)設(shè)計要求采用了kaiser窗設(shè)計出濾波器的系統(tǒng)函數(shù)h(n),其采樣頻率為500 kHz,,通頻帶帶寬為100 Hz,。設(shè)計的低通濾波器如圖1所示。若需實現(xiàn)高通或帶通濾波器,,只需在設(shè)計時利用高通或帶通濾波器代替低通濾波器即可,。


    利用Verilog硬件描述語言設(shè)計本系統(tǒng)軟件,系統(tǒng)主要分為以下4個部分,。包括頂層文件,、A/D采樣,、算法實現(xiàn)和D/A轉(zhuǎn)換。系統(tǒng)總體結(jié)構(gòu)如圖2所示,。


    由于FPGA頻率為100 MHz,,采用的ADC0809轉(zhuǎn)換頻率必須小于1 MHz,,所以在頂層文件對系統(tǒng)時鐘進行200分頻,,提供外圍所需時鐘。然后對各模塊進行例化,,使之成為完整的系統(tǒng),。

    對A/D采樣輸入3位地址,并使ALE=1,,將地址存入地址鎖存器中,。此地址經(jīng)譯碼選通8路模擬輸入之一到比較器。START上升沿將逐次逼近寄存器復(fù)位,。下降沿時啟動A/D轉(zhuǎn)換,,之后EOC輸出信號變低,指示轉(zhuǎn)換正在進行,。直到完成A/D轉(zhuǎn)換,,EOC變?yōu)楦唠娖剑甘続/D轉(zhuǎn)換結(jié)束,,結(jié)果數(shù)據(jù)已存入鎖存器,,這個信號可用作中斷申請。當(dāng)OE輸入高電平時,,輸出三態(tài)門打開,,轉(zhuǎn)換結(jié)果的數(shù)字量輸出到數(shù)據(jù)總線上。CLK為時鐘輸入信號線,。由頂層文件的分頻時鐘提供500 kHz時鐘,,對信號進行采集。
    算法主體的實現(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ù)的每一位進行檢測和提取,,組成算法中所需要的數(shù)據(jù)。在控制信號的作用下利用累加器對數(shù)據(jù)疊加、移位處理即可實現(xiàn),。
    最后,,F(xiàn)PGA向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下進行設(shè)計,。利用modelsim 6.5對濾波器進行仿真,。系統(tǒng)采用頻率為500 kHz的分頻時鐘,在FPGA中產(chǎn)生一個高頻方波和一個低頻鋸齒波信號,,并對兩個信號進行疊加,。疊加后的信號作為輸入,對應(yīng)圖中DIN,,經(jīng)過系統(tǒng)處理后輸出結(jié)果對應(yīng)圖中RESULT,,仿真結(jié)果如圖3所示。

 


    由圖3中可以看出,,本系統(tǒng)存在相位偏移和濾波后依然存在雜波信號的缺點,,相位偏移主要是由濾波處理滯后于輸入引起的,比較穩(wěn)定且偏移較小,,一般情況下可以忽略,;雜波信號由系統(tǒng)階數(shù)較低和系數(shù)量化誤差引起的。實際應(yīng)用中可根據(jù)情況選擇適當(dāng)階數(shù)的濾波器和提高采樣頻率予以解決,。
    工況信號測試實驗,。由信號發(fā)生器同時產(chǎn)生一個50 Hz低頻信號和一個5 kHz高頻信號,然后對兩個信號進行疊加,,作為被測的工況信號,。被測的工況信號經(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)用,。

   

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。