版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
FIR及IIR濾波器的FPGA設(shè)計(jì)實(shí)現(xiàn)方案IIR濾波器設(shè)計(jì)(一)沖激響應(yīng)不變法這種方法是通過(guò)將模擬濾波器頻率特性H(s)反拉氏變換為h(t),再將h(t)等間隔抽樣成h(n)后,對(duì)h(n)取Z變換求得H(z),即得到了數(shù)字濾波器的系統(tǒng)函數(shù)。對(duì)比(1)式和(4)式可以發(fā)現(xiàn)S域中的極點(diǎn)s映射到Z域,則位于z=e^(sT)處。由映射關(guān)系可知z平面與s平面呈多值映射的關(guān)系。s平面的虛軸對(duì)應(yīng)的σ=0,則上式中第一項(xiàng)e^(σT)=1,第二項(xiàng)表示旋轉(zhuǎn)的角度,角度以2π/T為周期,所以s平面的虛軸每段2π/T都對(duì)應(yīng)z平面上的單位圓。s左平面對(duì)應(yīng)σ<0,即第一項(xiàng)e^(σT)<1,所以s域的左半平面對(duì)應(yīng)z平面上的單位圓內(nèi)。s右平面對(duì)應(yīng)σ>0,即第一項(xiàng)e^(σT)>1,所以s域的右半平面對(duì)應(yīng)z平面上的單位圓外。在第二步中,我們對(duì)h(t)進(jìn)行了抽樣,對(duì)應(yīng)到S域則會(huì)產(chǎn)生頻譜沿虛軸以2π/T為周期的搬移。所以實(shí)際上我們得到的是h(t)抽樣后的S平面與Z平面的映射,當(dāng)Ω以2π/T整數(shù)倍改變時(shí),會(huì)映射到Z平面上同一點(diǎn)。下圖所示為s平面虛軸映射到z平面的單位圓??梢钥闯霎a(chǎn)生了頻譜混疊現(xiàn)象。綜上,沖激響應(yīng)不變法可以將模擬濾波器轉(zhuǎn)換成數(shù)字濾波器,但由于混疊現(xiàn)象使得高頻部分嚴(yán)重失真,因而只適用于低通濾波器或限帶(0<Ω<π)的高通或帶通場(chǎng)合。(二)雙線性變換法上面的沖激響應(yīng)不變法的缺點(diǎn)就是會(huì)產(chǎn)生頻譜混疊,究其原因是由于對(duì)信號(hào)進(jìn)行了抽樣,實(shí)際得到的是周期延拓后的S平面與Z平面的映射,所以產(chǎn)生了多值映射。在雙線性變換法中,我們首先將S平面通過(guò)反正切函數(shù)壓縮到S1平面的(-π/T,π/T)橫帶內(nèi),再使用上面沖激響應(yīng)不變法中使用的平面映射關(guān)系Z=e^(s1T),將S1平面映射到Z平面。這樣一來(lái)S平面與Z平面就構(gòu)成了單值映射的關(guān)系。第二步由S1平面映射至Z平面時(shí),使用了z=e^(s1T),和沖激響應(yīng)不變法中S到Z平面使用的映射一樣,應(yīng)該相當(dāng)于用了沖激響應(yīng)不變法,進(jìn)行了一次頻譜延拓再映射到Z平面吧。延拓后S1平面到Z平面是多值映射,但S平面到Z平面是單值映射。S平面整個(gè)虛軸對(duì)應(yīng)于Z平面的單位圓一周。綜上,雙線性變換法克服了多值映射關(guān)系,可以消除頻率的混疊。但是由于Ω與w成非線性關(guān)系,頻率有畸變。FIR濾波器設(shè)計(jì)FIR濾波器的設(shè)計(jì)比較簡(jiǎn)單,就是要設(shè)計(jì)一個(gè)數(shù)字濾波器去逼近一個(gè)理想的低通濾波器。通常這個(gè)理想的低通濾波器在頻域上是一個(gè)矩形窗。但是在時(shí)域上它是一個(gè)Sa函數(shù)。但是這個(gè)采樣序列是無(wú)限的,計(jì)算機(jī)是無(wú)法對(duì)它進(jìn)行計(jì)算。故我們需要對(duì)此采樣函數(shù)進(jìn)行截?cái)嗵幚?。也就是把這個(gè)時(shí)域采樣序列去乘一個(gè)窗函數(shù),也就是加一個(gè)窗函數(shù)。就把這個(gè)無(wú)限的時(shí)域采樣序列截成了有限個(gè)序列值。但是加窗后對(duì)此采樣序列的頻域也產(chǎn)生了影響:此時(shí)的頻域便不在是一個(gè)理想的矩形窗,而是成了一個(gè)有過(guò)渡帶,阻帶有波動(dòng)的低通濾波器。通常根據(jù)所加的窗函數(shù)的不同,在頻域所得的低通濾波器的阻帶衰減也不同。常用的窗函數(shù)有矩形窗、三角窗、漢寧窗(升余弦窗)、BLACKMAN窗(二階升余弦窗)等。所以窗函數(shù)法設(shè)計(jì)FIR濾波器的步驟如下:FIR濾波器的FPGA實(shí)現(xiàn)由于在Quartus中提供了FIR濾波器的IP核,所以只需要利用MATLAB根據(jù)要求計(jì)算出濾波器的系數(shù),再將系數(shù)導(dǎo)入IP核就可以實(shí)現(xiàn)FIR濾波器。要求:濾波器采樣頻率8MHz,過(guò)渡帶[1MHz,2MHz],通帶衰減小于1dB,阻帶衰減大于40dB,濾波器系數(shù)量化位數(shù)為12比特。1.利用MATLAB設(shè)計(jì)出滿足要求的FIR濾波器這里需要用到kaiserord函數(shù)得到滿足要求的最小階數(shù),及firpm函數(shù)設(shè)計(jì)最優(yōu)濾波器。下面的代碼參考自《數(shù)字調(diào)制解調(diào)技術(shù)的MATLAB與FPGA實(shí)現(xiàn)》杜勇。matlab代碼(可以滑動(dòng)喲)%E4_5_LpfDesign.m%設(shè)計(jì)一個(gè)低通濾波器。采樣頻率fs=8MHz,過(guò)渡帶fc=[1MHz2MHz];%繪出濾波器第數(shù)量化前后的幅頻響應(yīng)圖;將量化后的濾波器系數(shù)寫入指定的txt文本文件中functionh_pm=E4_5_LpfDesign;fs=8*10^6;%采樣頻率qm=12;%濾波器系數(shù)量化位數(shù)fc=[110^6210^6];%過(guò)渡帶mag=[10];%窗函數(shù)的理想濾波器幅度%設(shè)置通帶容限a1及阻帶容限a2%通帶衰減ap=-20*log10(1-a1)=0.915dB,阻帶衰減為as=-20*log10(a2)=40dBa1=0.1;a2=0.01;dev=[a1a2];%采用凱塞窗函數(shù)獲取滿足要求的最小濾波器階數(shù)[n,wn,beta,ftype]=kaiserord(fc,mag,dev,fs)%采用firpm函數(shù)設(shè)計(jì)最優(yōu)濾波器fpm=[0fc(1)*2/fsfc(2)*2/fs1];%firpm函數(shù)的頻段向量magpm=[1100];%firpm函數(shù)的幅值向量h_pm=firpm(n,fpm,magpm);%設(shè)計(jì)最優(yōu)濾波器%量化濾波系數(shù)q_pm=round(h_pm/max(abs(h_pm))*(2^(qm-1)-1));%將生成的濾波器系數(shù)數(shù)據(jù)寫入FPGA所需的txt文件中fid=fopen('E:FPGADOCFPGA數(shù)字信號(hào)處理數(shù)字調(diào)制解調(diào)技術(shù)的MATLAB與FPGA實(shí)現(xiàn)——AlteraVerilog版Chapter_4E4_5_FirIpCoreE4_5_lpf.txt','w');fprintf(fid,'%12.12f
',h_pm);fclose(fid);2.調(diào)用FIR濾波器IP核設(shè)置FIR參數(shù)時(shí),設(shè)置濾波器系數(shù)位寬為12比特;流水線級(jí)數(shù)為1;實(shí)現(xiàn)結(jié)構(gòu)設(shè)置為Multi-Cycle(多時(shí)鐘周期結(jié)構(gòu)),F(xiàn)PGA系統(tǒng)時(shí)鐘頻率為32MHz,而數(shù)據(jù)速率為8MHz,所以每4個(gè)時(shí)鐘周期處理一個(gè)數(shù)據(jù)即可,因此設(shè)置“Clocktocompute”的值為4。在設(shè)置濾波器系數(shù)的時(shí)候,將設(shè)計(jì)好的TXT文件裝載進(jìn)去,生成完IP核后將其例化。頂層模塊moduleFirIPCore(reset_n,clk,Xin,Yout);inputreset_n;//復(fù)位信號(hào),低電平有效inputclk;//FPGA系統(tǒng)時(shí)鐘/數(shù)據(jù)速率:32MHzinputsigned[11:0]Xin;//數(shù)據(jù)輸入頻率為8MHZoutputsigned[24:0]Yout;//濾波后的輸出數(shù)據(jù)wiresink_valid,ast_source_ready,ast_source_valid,ast_sink_ready;wire[1:0]ast_source_error;wire[1:0]ast_sink_error;assignast_source_ready=1'b1;assignast_sink_error=2'd0;//由于系統(tǒng)時(shí)鐘為數(shù)據(jù)速率的4倍,因此需要每4個(gè)時(shí)鐘周期設(shè)置一次ast_sink_valid有效信號(hào)reg[1:0]count;regast_sink_valid;always@(posedgeclkornegedgereset_n)if(!reset_n)begincount<=2'd0;ast_sink_valid<=1'b0;endelsebegincount<=count+2'd1;if(count==0) ast_sink_valid<=1'b1;else ast_sink_valid<=1'b0;endassignsink_valid=ast_sink_valid;//實(shí)例化fir濾波器核firu0(.clk(clk),.reset_n(reset_n),.ast_sink_data(Xin),.ast_sink_valid(sink_valid),.ast_source_ready(ast_source_ready),.ast_sink_error(ast_sink_error),.ast_source_data(Yout),.ast_sink_ready(ast_sink_ready),.ast_source_valid(ast_source_valid),.ast_source_error(ast_source_error));endmodule3.MATLAB產(chǎn)生仿真測(cè)試數(shù)據(jù)由于設(shè)計(jì)的時(shí)截止頻率為2MHz的低通濾波器,我們可以產(chǎn)生頻率為1MHz和2MHz的合成信號(hào)。產(chǎn)生測(cè)試數(shù)據(jù)%E4_6_TestData.Mf1=1*10^6;%信號(hào)1頻率為1MHzf2=2.1*10^6;%信號(hào)2頻率為2.1MHzFs=8*10^6;%采樣頻率為8MHzN=12;%量化位數(shù)為12比特Len=2000;%數(shù)據(jù)長(zhǎng)度為2000%%產(chǎn)生兩個(gè)單載波合成后的信號(hào)t=0:1/Fs:(Len-1)/Fs;c1=2pif1*t;c2=2pif2*t;s1=sin(c1);%產(chǎn)生正弦波s2=sin(c2);%產(chǎn)生正弦波s=s1+s2;%對(duì)兩個(gè)單載波信號(hào)進(jìn)行合成%調(diào)用E4_6_LpfDesign函數(shù)設(shè)計(jì)的濾波器對(duì)信號(hào)進(jìn)行濾波hn=E4_5_LpfDesign;Filter_s=filter(hn,1,s);%求信號(hào)的幅頻響應(yīng)m_s=20*log(abs(fft(s,1024)))/log(10);m_s=m_s-max(m_s);%濾波后的幅頻響應(yīng)Fm_s=20*log(abs(fft(Filter_s,1024)))/log(10);Fm_s=Fm_s-max(Fm_s);%濾波器本身的幅頻響應(yīng)m_hn=20*log(abs(fft(hn,1024)))/log(10);m_hn=m_hn-max(m_hn);%設(shè)置幅頻響應(yīng)的橫坐標(biāo)單位為Hzx_f=[0:(Fs/length(m_s)):Fs/2];%只顯示正頻率部分的幅頻響應(yīng)mf_s=m_s(1:length(x_f));Fmf_s=Fm_s(1:length(x_f));Fm_hn=m_hn(1:length(x_f));%繪制幅頻響應(yīng)曲線subplot(211)plot(x_f,mf_s,'-.',x_f,Fmf_s,'-',x_f,Fm_hn,'--');xlabel('頻率(Hz)');ylabel('幅度(dB)');title('Matlab仿真合成單頻信號(hào)濾波前后的頻譜');legend('輸入信號(hào)頻譜','輸出信號(hào)頻譜','濾波器響應(yīng)');grid;%繪制濾波前后的時(shí)域波形subplot(212)%繪制時(shí)域波形%設(shè)置顯示數(shù)據(jù)范圍,設(shè)置橫坐標(biāo)單位mst=0:1/Fs:80/Fs;t=t*10^6;t_s=s(1:length(t));t_filter_s=Filter_s(1:length(t));plot(t,t_s,'--',t,t_filter_s,'-');xlabel('時(shí)間(ms)');ylabel('幅度');title('FPGA仿真合成單頻信號(hào)濾波前后的時(shí)域波形');legend('輸入信號(hào)波形','輸出信號(hào)波形');grid;%對(duì)仿真產(chǎn)生的合成單頻信號(hào)進(jìn)行量化處理s=s/max(abs(s));%歸一化處理Q_s=round(s*(2^(N-1)-1));%12比特量化%將生成的數(shù)據(jù)以二進(jìn)制數(shù)據(jù)格式寫入txt文件中fid=fopen('E:FPGADOCFPGA數(shù)字信號(hào)處理數(shù)字調(diào)制解調(diào)技術(shù)的MATLAB與FPGA實(shí)現(xiàn)——AlteraVerilog版Chapter_4E4_5_FirIpCoreE4_5_TestData.txt','w');fori=1:length(Q_s)B_noise=dec2bin(Q_s(i)+(Q_s(i)<0)*2^N,N);forj=1:NifB_noise(j)=='1'tb=1;elsetb=0;endfprintf(fid,'%d',tb);endfprintf(fid,'');endfprintf(fid,';');fclose(fid);4.編寫測(cè)試激勵(lì)文件測(cè)試激勵(lì)文件`timescale1ns/1nsmoduleFirIPCore_vlg_tst();reg[11:0]Xin;regclk,clk_data;regreset_n;wire[24:0]Yout;FirIPCorei1(.Xin(Xin),.Yout(Yout),.clk(clk),.reset_n(reset_n));parameterclk_period=20;//設(shè)置時(shí)鐘信號(hào)周期(頻率):50MHzparameterdata_clk_period=clk_period*4;//設(shè)置數(shù)據(jù)時(shí)鐘周期parameterclk_half_period=clk_period/2;parameterdata_half_period=data_clk_period/2;parameterdata_num=2000;//仿真數(shù)據(jù)長(zhǎng)度parametertime_sim=data_num*data_clk_period;//仿真時(shí)間initialbegin//設(shè)置輸入信號(hào)初值Xin=12'd10;//設(shè)置時(shí)鐘信號(hào)初值clk=1;clk_data=1;//設(shè)置復(fù)位信號(hào)reset_n=0;#110reset_n=1;//設(shè)置仿真時(shí)間#time_sim$finish;end//產(chǎn)生時(shí)鐘信號(hào)always#clk_half_periodclk=~clk;always#data_half_periodclk_data=~clk_data;//從外部TX文件(E4_5_TestData.txt)讀入數(shù)據(jù)作為測(cè)試激勵(lì)integerPattern;reg[11:0]stimulus[1:data_num];initialbegin//文件必須放置在"工程目錄simulationmodelsim"路徑下$readmemb("E4_5_TestData.txt",stimulus);Pattern=0;repeat(data_num)begin Pattern=Pattern+1; Xin=stimulus[Pattern]; #data_clk_period;endend//將仿真數(shù)據(jù)Yout寫入外部TXT文件中(E4_5_FpgaData.txt)integerfile_out;initialbegin//文件放置在"工程目錄simulationmodelsim"路徑下file_out=$fopen("E4_5_FpgaData.txt");if(!file_out)begin $display("couldnotopenfile!"); $finish;endendwirerst_write;wiresigned[24:0]dout_s;assigndout_s=Yout;//將Yout轉(zhuǎn)換成有符號(hào)數(shù)據(jù)assignrst_write=clk_data&(reset_n);//產(chǎn)生寫入時(shí)鐘信號(hào),復(fù)位狀態(tài)時(shí)不寫入數(shù)據(jù)always@(posedgerst_write)$fdisplay(file_out,"%d",dout_s);endmodule仿真結(jié)果IIR濾波器的FPGA實(shí)現(xiàn)IIR濾波器結(jié)構(gòu)包括直接Ⅰ型、直接Ⅱ型、級(jí)聯(lián)型和并聯(lián)型。其中級(jí)聯(lián)型結(jié)構(gòu)便于準(zhǔn)確實(shí)現(xiàn)數(shù)字濾波器零極點(diǎn),且受參數(shù)量化影響小,因此使用廣泛。它實(shí)際上相當(dāng)于將級(jí)數(shù)較多的濾波器分解成多個(gè)級(jí)數(shù)小于等于3的IIR濾波器,前一級(jí)的輸出作為后一級(jí)的輸入,其中每個(gè)濾波器均可看成獨(dú)立的結(jié)構(gòu)。同樣濾波器的參數(shù)需要使用matlab計(jì)算出,還需要將計(jì)算出的濾波器參數(shù)轉(zhuǎn)換成級(jí)聯(lián)的形式。由于沒(méi)有現(xiàn)成的IIR濾波器IP核,所以需要用verilog來(lái)實(shí)現(xiàn),結(jié)構(gòu)如下??梢钥闯鲇肍PGA實(shí)現(xiàn)并不復(fù)雜,只是移位乘上系數(shù)相加的過(guò)程。部分代碼如下IIR第一級(jí)moduleFirstTap(rst,clk,Xin,Yout);inputrst;//復(fù)位信號(hào),高電平有效inputclk;//FPGA系統(tǒng)時(shí)鐘,頻率為2kHzinputsigned[11:0]Xin;//數(shù)據(jù)輸入頻率為2kHZoutputsigned[11:0]Yout;//濾波后的輸出數(shù)據(jù)//零點(diǎn)系數(shù)的實(shí)現(xiàn)代碼///////////////////////////將輸入數(shù)據(jù)存入移位寄存器中regsigned[11:0]Xin1,Xin2;always@(posedgeclkorposedgerst)if(rst) //初始化寄存器值為0 begin Xin1<=12'd0; Xin2<=12'd0;end elsebegin Xin1<=Xin; Xin2<=Xin1; end//采用移位運(yùn)算及加法運(yùn)算實(shí)現(xiàn)乘法運(yùn)算wiresigned[23:0]XMult0,XMult1,XMult2;assignXMult0={{6{Xin[11]}},Xin,6'd0}+{{7{Xin[11]}},Xin,5'd0}-{{11{Xin[11]}},Xin,1'd0};//*94assignXMult1={{5{Xin1[11]}},Xin1,7'd0}+{{9{Xin1[11]}},Xin1,3'd0}+{{10{Xin1[11]}},Xin1,2'd0};//*140assignXMult2={{6{Xin2[11]}},Xin2,6'd0}+{{7{Xin2[11]}},Xin2,5'd0}-{{11{Xin2[11]}},Xin2,1'd0};//*94//對(duì)濾波器系數(shù)與輸入數(shù)據(jù)乘法結(jié)果進(jìn)行累加wiresigned[23:0]Xout;assignXout=XMult0+XMult1+XMult2;//極點(diǎn)系數(shù)的實(shí)現(xiàn)代碼///////////////////////wiresigned[11:0]
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025下半年四川省瀘州市江陽(yáng)區(qū)事業(yè)單位招聘60人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上海浦東新區(qū)港城房產(chǎn)集團(tuán)對(duì)外招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年黑龍江雙鴨山市事業(yè)單位公開(kāi)招聘工作人員48人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年甘肅事業(yè)單位聯(lián)考招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年江蘇省揚(yáng)州高郵市事業(yè)單位招聘157人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年四川南充西充縣招聘事業(yè)單位工作人員65人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年內(nèi)蒙古事業(yè)單位聯(lián)考招錄高頻重點(diǎn)提升(共500題)附帶答案詳解
- 重慶市江北區(qū)重點(diǎn)高中2024-2025學(xué)年高一上學(xué)期12月月考語(yǔ)文試卷含答案
- 2024年度地膠施工與綠色環(huán)保材料采購(gòu)合同3篇
- 一年級(jí)數(shù)學(xué)計(jì)算題專項(xiàng)練習(xí)1000題集錦
- 2024年度共享辦公空間租賃合同2篇
- 《血?dú)夥治龅呐R床應(yīng)》課件
- 2024年07月11026經(jīng)濟(jì)學(xué)(本)期末試題答案
- 2024年01月11289中國(guó)當(dāng)代文學(xué)專題期末試題答案
- 2024年四級(jí)品酒師資格認(rèn)證考試題庫(kù)(濃縮400題)
- 國(guó)家電投《新能源電站單位千瓦造價(jià)標(biāo)準(zhǔn)值(2024)》
- 電影攝影及特殊拍攝技術(shù)(上海電影藝術(shù)職業(yè)學(xué)院)知到智慧樹答案
- 理論力學(xué)(浙江大學(xué))知到智慧樹章節(jié)答案
- [資料]馬蘭士(MarantzPM17)功放維護(hù)修理手冊(cè)(含電路圖)
- 電氣工程課程設(shè)計(jì)——車間動(dòng)力及照明設(shè)計(jì)
- 客服(部)人員績(jī)效考核細(xì)則
評(píng)論
0/150
提交評(píng)論