微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 帮我看看这程序fir的系数如何设置

帮我看看这程序fir的系数如何设置

时间:10-02 整理:3721RD 点击:
module fir3(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[/email] 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
这个程序是我在网上找的11阶fir 仿真好像也可以通过  但请问各位大虾   滤波器系数hn是如何设置的呢  谢谢

高手解答下

这段我也看过。但是你根本没有看全整篇。系数就在运算当中了。是用移位相加来近似的。比如系数2.25.就等于2+0.25 就是左移一位和右移两位相加。

MATLAB

呵呵,学习了,早就明白这样的设计方法,但实际中我只用到了平均滤波,数字滤波的效果在我的应用中,不如在模拟好.

呵呵  谢谢了 !
刚接触verilog语言,中间那段确实没有看懂。

金领一族  请教一下 全文名字 叫什么?去拜读一下

确实如3楼所说 。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top