FPGA數字訊號處理(十五)多速率FIR濾波器

2021-08-21 03:47:16 字數 2742 閱讀 3640

這個概念是相對於單速率(single rate)訊號處理而言的。單速率是指整個訊號處理流程中只有一種資料速率;多速率是指系統中存在多個資料速率。使用多速率訊號處理可以節省儲存空間、減少通訊資料量、減少運算量、減輕設計難度。

比如在ddc(數字下變頻)系統中,前級需要很高的取樣率fs確保adc採集到訊號的訊雜比;而在去載波並提取出低頻的基帶訊號後,訊號有效頻寬已經很小,此時可以滿足要求的取樣率也遠遠低於fs,如果不進行資料速率轉換的處理,會造成許多資源的浪費和設計上的困難(詳情參考「fpga綜合系統設計(七):基於ddc的兩路訊號相位差檢測:

乙個簡單的多速率訊號處理系統框圖如下所示:

多速率訊號處理主要包括資料速率的轉換lpf的設計兩個過程。資料速率的轉換包括抽取(decimation,降低取樣率)和內插(interpolation,提高取樣率)。抽取/內插時應保證訊號的有效頻帶內沒有頻譜混疊,因此需要完成lpf的設計,常用的有多速率fir濾波器、cic濾波器、hb濾波器

當需要降低取樣率時,輸入訊號資料每隔d-1個取乙個,取出的資料依次排序,這個過程稱作d倍抽取,取樣率變為原來的1/d。但是我們需要確保抽取之後的取樣率仍然可以滿足nyquist取樣定理,否則會造成頻譜的混疊。當然由於adc的轉換也會在整個頻段內引入白雜訊,因此在抽取前還是需要加入抗混疊濾波器。如下圖所示:

當需要提高取樣率時,在兩個相鄰的資料之間插入i-1個零值,再進行低通濾波,這個過程稱作i倍內插,取樣率變為原來的i倍。只要lpf的通帶為訊號的有效頻寬,即使插值時只插入零值點(沒有插入取樣值的點),也可以達到i倍內插的效果。經過插值後的訊號由dac輸出會引入更小的高頻雜訊。如下圖所示:

上面抽取和內插實現的都是整數倍資料速率的轉換。而實際設計中遇到的更多不會是整數倍關係。可以使用先內插、再抽取的方式完成取樣率為有理數比值的資料速率轉換,且可以共用乙個lpf,截止頻率選取二者的最小頻寬即可。如下圖所示:

matlab中的語法可以很簡單的實現抽取和插值操作。抽取過程如下:

t = 0 : 1 / fs : 0.5;

c = 2 * pi * f * t;

si=sin(c); %產生正弦波

d=8; %抽取倍數

d2 = si(1 : d : length(t)); %抽取

插值過程如下:

t = 0 : 1/fs : 0.5;

c = 2 * pi * f * t;

si = sin(c); %產生正弦波

i=8; %內插倍數

isi = zeros(1, length(si)*i); %先構造全0序列

isi(1 : i : length(isi)) = si; %將源訊號插入

濾波器的設計不再贅述。

quartus和vivado的fir ip核都可以設定為多速率fir模式,完成資料速率的轉換工作。比如在上文鏈結內的設計中,adc需要以100mhz的速率採集20mhz的訊號,通過ddc解調後基帶訊號頻率僅有500khz。將fir設定為10倍抽取模式,取樣率降為10mhz,足以完成接下來的處理。

quartus中以fir compiler ip核為例:

右上角的rate specification即為設定內插或抽取,factor表示抽取和內插 的倍數。設定好後,在右下角的throughput中可以看到輸入資料速率和輸出資料速率。此處設定為了10倍抽取,則每10個時鐘才會輸出乙個有效資料,相當於取樣率降低了10倍。

vivado中以fir compiler ip核的7.2版本為例:

在filter options標籤下,「filter type」可以設定為抽取或內插模式,並設定對應的倍數decimation rate value和interpolation rate value。在channel specification標籤下設定好輸入取樣速率和時鐘頻率後,可以看到輸入資料速率和輸出資料速率(這裡設定了10倍抽取)。

此外vivado的fir ip核還提供了非整數倍抽取/內插的功能,將「rate change type」修改為「fixed fractional」,即可分別設定插值倍數和抽取倍數,組合為乙個值為有理數的倍數,如下圖所示:

可以看出多速率fir濾波器必須工作在很高的頻率上(即資料轉換速率前後的兩個取樣率中更大的那個速率),才能完成資料速率轉換的工作。而fir通常會使用大量的乘法器,因此具有占用資源多的缺點。與之相比,cic濾波器和hb濾波器在結構和效能上更優良,將在後面的文章中介紹。

數字訊號處理

1.乙個切比雪夫i型模擬帶阻濾波器用下面的指標設計 通帶截止頻率為 和 阻帶截止頻率為 和 峰值通帶紋波是 最小阻帶衰減為 相應的模擬低通濾波器的頻帶截止頻率和階次是多少?帶阻濾波器的階次是多少?用matlab函式cheblord來驗證濾波器階次結果 寫出程式關鍵步驟 matlab驗證 n 3 fs...

數字訊號處理

一 訊號處理的典型過程 1 模擬濾波 x t xa t 觀測訊號經過前置模擬器ha s 去掉一些帶外成分和干擾 2 取樣 xa t xa nt 以取樣週期t對xa t 進行取樣,得到時域離散訊號xa nt 將時間離散化 3 a d 變換 xa nt x n 把原先訊號幅值連續變換 量化幅值 將幅值離...

數字訊號處理與數字訊號處理器

數字訊號處理與數字訊號處理器 數字訊號處理 digital signal processing,dsp 與數字訊號處理器 digital signal processor,dsp 兩者的縮寫都是dsp,但凡是電子資訊類專業的同學,都知道dsp是這個學科最重要的專業基礎課程之一,但實際上,很多朋友對這...