这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » 求FIR数字滤波器的设计思路与方法

共8条 1/1 1 跳转至

求FIR数字滤波器的设计思路与方法

助工
2011-05-18 16:32:28     打赏
本人现在要做基于FPGA的FIR数字滤波器设计与仿真的小项目,采用分布式算法实现,但在实现的过程当中不知道如何求出滤波器的系数 h(n),以及有那些模块啊,这方面有点不懂啊.求高手帮忙一下啊。



关键词: 数字     滤波器     设计     思路     方法    

工程师
2011-05-18 18:07:32     打赏
2楼
MATLAB 中有个FDA,可以求出滤波器系数,然后导入到FIR IP中,即可实现FIR的设计!

高工
2011-05-19 14:05:15     打赏
3楼
楼主是要自己设计FIR,还是用的IP CORE?

滤波器系数一般用Matlab设计

助工
2011-05-19 19:20:43     打赏
4楼

这是一个11阶fir滤波器verilog程序,但其中我有点module fir(clk,x,y);
input[7:0] x;
input clk;
output[15:0] y;
reg[15:0] y;
reg[7:0] tap0,tap1,tap2,tap3,tap4,tap5,tap6,tap7,tap8,tap9,tap10;
reg[7:0] t0,t1,t2,t3,t4,t5;
reg[15:0] sum;

always@(posedge clk)
  begin
 t0<=tap5;
    t1<=tap4+tap6;
    t2<=tap3+tap7;
    t3<=tap2+tap8;
    t4<=tap1+tap9;
 t5<=tap0+tap10;
    
    sum<=(t1<<4)+{t1[7],t1[7:1]}+{t1[7],t1[7],t1[7:2]}+{t1[7],t1[7],t1[7],
 t1[7:3]}-(t2<<3)-(t2<<2)+t2-{t2[7],t2[7],t2[7:2]}
 +(t3<<2)+t3+{t3[7],t3[7],t3[7:2]}+{t3[7],t3[7],t3[7],t3[7],t3[7:4]}
 +{t3[7],t3[7],t3[7],t3[7],t3[7],t3[7:5]}
 -t4-{t4[7],t4[7:1]}-{t4[7],t4[7],t4[7],t4[7:3]}
 +{t5[7],t5[7:1]}-{t5[7],t5[7],t5[7],t5[7],t5[7],t5[7:5]}
 +(t0<<7)-((t0<<2)<<2)-(t0<<2)+{t0[7],t0[7:1]}
 +{t0[7],t0[7],t0[7:2]}+{t0[7],t0[7],t0[7],t0[7],t0[7:4]};
 
 tap10<=tap9;
    tap9<=tap8;
    tap8<=tap7;
    tap7<=tap6;
    tap6<=tap5;
    tap5<=tap4;
    tap4<=tap3;
    tap3<=tap2;
    tap2<=tap1;
    tap1<=tap0;
    tap0<=x;
  
 y<={sum[15],sum[15],sum[15],sum[15],sum[15],sum[15],sum[15],sum[15:7]};
  end
endmodule

看不懂,现附上程序,希望别人指点一下啊,我不知道那个求和表达式sum怎么得出来的啊,希望别人指点一下啊。


高工
2011-05-19 20:19:40     打赏
5楼
sum<=(t1<<4)+{t1[7],t1[7:1]}+{t1[7],t1[7],t1[7:2]}+{t1[7],t1[7],t1[7],
 t1[7:3]}-(t2<<3)-(t2<<2)+t2-{t2[7],t2[7],t2[7:2]}
 +(t3<<2)+t3+{t3[7],t3[7],t3[7:2]}+{t3[7],t3[7],t3[7],t3[7],t3[7:4]}
 +{t3[7],t3[7],t3[7],t3[7],t3[7],t3[7:5]}
 -t4-{t4[7],t4[7:1]}-{t4[7],t4[7],t4[7],t4[7:3]}
 +{t5[7],t5[7:1]}-{t5[7],t5[7],t5[7],t5[7],t5[7],t5[7:5]}
 +(t0<<7)-((t0<<2)<<2)-(t0<<2)+{t0[7],t0[7:1]}
 +{t0[7],t0[7],t0[7:2]}+{t0[7],t0[7],t0[7],t0[7],t0[7:4]};


合并同类项一下就可以了;
sum = t1*(2^4+1/2+1/4+1/8)+...   后面的自己理吧

其实就是FIR的乘加结构,想办法把乘法简化就行了

助工
2011-05-20 09:04:36     打赏
6楼
谢谢了,现在有点看懂了

助工
2011-05-20 09:05:00     打赏
7楼
谢谢了,现在有点看懂了

菜鸟
2017-11-23 17:15:09     打赏
8楼


共8条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]