首先大概說一下這個工具的使用。
假設我們需要設計一個濾波器:
采樣率Fs為30.72MHz。
通帶Fpass: 9 MHz,
阻帶Fstop: 10MHz
帶內波動: Apass: 0.1
帶外抑制: Apass: 80
定點化,將系數(shù)歸一化,設置如下圖,確保輸入通帶的波形和輸出波形幅值基本不變。
生成的COE文件可以直接被XILINX的 IP核使用。
如果上述生成濾波器系數(shù)的步驟,可以通過matlab代碼來實現(xiàn),則會更加的事半功倍。
例如,假如有一個這樣的需求
采樣率Fs為80MHz。
通帶Fpass: 9+n0.5 MHz, (0<=n<=40)
阻帶Fstop: 10+n0.5MHz (0<=n<=40)
帶內波動: Apass: 0.1
帶外抑制: Apass: 80
需要生成41組COE,每次都通過fdatool工具來進行生成,那將是繁瑣的。而我們可以通過以下代碼來簡化工作:
figure(1); Apass = 0.1; Astop = 80; Fs = 30.72; Fpass = 9; Fstop = 10; dev = [(10^(Apass /20)-1)/(10^(Apass /20)+1) 10^(-Astop/20)]; [n,fo,ao,w] = firpmord([Fpass Fstop] ,[1 0],dev,Fs); b = firpm(n,fo,ao,w,{20}); bb = round(b*2^15); plot(bb); grid; hold on; I = find(bb < 0); bb(I) = 65536 + bb(I); c = [ dec2hex(bb)]; fid1 = fopen('d:filter1.coe','w'); fprintf(fid1,';Create by gzy de tool '); fprintf(fid1,'Radix = 16; '); fprintf(fid1,'Coefficient_Width = 16; '); fprintf(fid1,'CoefData = '); for i = 1 : length(b)-1 fprintf(fid1,'%s, ',c(i,end-3:end)); end; fprintf(fid1,'%s; ',c(end,end-3:end)); fclose(fid1);
上面的代碼與fdatool生成的定點化系數(shù)完全一致。
-
matlab
+關注
關注
180文章
2956瀏覽量
229868 -
濾波器
+關注
關注
159文章
7670瀏覽量
177212 -
低通濾波器
+關注
關注
13文章
470瀏覽量
47265 -
FIR
+關注
關注
4文章
145瀏覽量
33025
原文標題:利用matlab代碼來生成FIR 低通濾波器系數(shù)
文章出處:【微信號:FPGA十年老鳥,微信公眾號:FPGA十年老鳥】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論