Quartus滤波器系数设计verilog代码仿真

名称:Quartus滤波器系数设计verilog代码仿真(文末获取)

软件:Quartus

语言:Verilog

代码功能:

滤波器系数设计:打开Matlab软件在指令窗口中键入:m=fir1(7,0.2),即可得到如下的系数:

0.009、0.048、0.164、0.279、0.279、0.164、0.048、0.009

将系数放大1000倍即:9,48,164,279;乘加计算计算完成后再除以1000.

滤波器截止频率为20KHz

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. Testbench

6. 仿真图

部分代码展示:

//8阶线性相位结构FIR
module FIR(
input clk,//100K
input reset_p,//高电平复位
input  [9:0]data_in,//周期1K,噪声频率20K左右
output [9:0]fir_data//滤波后结果
);
wire [31:0] mul_data_1;
wire [31:0] mul_data_2;
wire [31:0] mul_data_3;
wire [31:0] mul_data_4;
wire [31:0]add_data;
reg  [9:0] shift_data_0=10'd0;
reg  [9:0] shift_data_1=10'd0;
reg  [9:0] shift_data_2=10'd0;
reg  [9:0] shift_data_3=10'd0;
reg  [9:0] shift_data_4=10'd0;
reg  [9:0] shift_data_5=10'd0;
reg  [9:0] shift_data_6=10'd0;
reg  [9:0] shift_data_7=10'd0;
//滤波器系数设计:打开Matlab软件在指令窗口中键入:m=fir1(7,0.2),即可得到如下的系数:
//0.009、0.048、0.164、0.279、0.279、0.164、0.048、0.009
//将系数放大1000倍即:9,48,164,279;乘加计算计算完成后再除以1000.
//乘加计算
assign mul_data_1=9*(shift_data_0+shift_data_7);//线性结构,对称结构
assign mul_data_2=48*(shift_data_1+shift_data_6);
assign mul_data_3=164*(shift_data_2+shift_data_5);
assign mul_data_4=279*(shift_data_3+shift_data_4); 
assign add_data=(mul_data_1+mul_data_2+mul_data_3+mul_data_4)/1000;//累加,再除以1000.
assign fir_data=add_data[9:0];//滤波后结果
//移位寄存器,每个时钟移位一次
always @(posedge clk or posedge reset_p)
    begin
        if(reset_p)
        begin
            shift_data_0<=10'd0;
            shift_data_1<=10'd0;
            shift_data_2<=10'd0;
            shift_data_3<=10'd0;
            shift_data_4<=10'd0;
            shift_data_5<=10'd0;
            shift_data_6<=10'd0;
            shift_data_7<=10'd0;
        end
        else
        begin
shift_data_0<=data_in;
            shift_data_1<=shift_data_0;
            shift_data_2<=shift_data_1;
            shift_data_3<=shift_data_2;
            shift_data_4<=shift_data_3;
            shift_data_5<=shift_data_4;
            shift_data_6<=shift_data_5;
            shift_data_7<=shift_data_6;
        end
    end
endmodule
完整代码

 扫描文章末尾的公众号二维码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值