基于FPGA的8阶线性相位结构FIR设计Verilog代码VIVADO仿真

名称:基于FPGA的8阶线性相位结构FIR设计Verilog代码VIVADO仿真(文末获取)

软件:VIVADO

语言:Verilog

代码功能:

8阶线性相位结构FIR

设计截止频率10K的低通滤波器,时钟为100KHz,100K*0.1=10K

m=fir1(7,0.2),fir1为matlab中滤波器设计函数,7表示滤波器阶数为7,0.2表示截止频率为100K*0.1=10K

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

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

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. Testbench

6. 仿真图

局部放大波形

部分代码展示:

//滤波器
module FIR_filter(
input clk_in,//50MHz
input reset_p,//高电平复位
input [2:0]amp_cnt1,//幅值控制信号1--值越大输出幅值越高
input [2:0]amp_cnt2,//幅值控制信号2--值越大输出幅值越高
input [15:0]fre_cnt1,//频率控制信号1--值越大输出频率越低
input [15:0]fre_cnt2,//频率控制信号2--值越大输出频率越低
output [10:0] sin_1,//输出频率1
output [10:0] sin_2,//输出频率2
output [10:0] sin_super,//叠加信号
output [9:0] fir_data//滤波后结果
);
wire [10:0] sin_super_buf;
wire clk_100K;
//分频模块,50M分频到100K
div_clk i_div_clk(
. clk_in(clk_in),
. clk_out(clk_100K)
);
wire [7:0] sin_high_out;//输出频率1
wire [7:0] sin_low_out;//输出频率2
//产生带噪声的正弦波
sin_noise i_sin_noise(
. clk_in(clk_in),//50MHz
. reset_p(reset_p),//高电平复位
. fre_cnt1(fre_cnt1),//频率控制信号1--值越大输出频率越低
. fre_cnt2(fre_cnt2),//频率控制信号2--值越大输出频率越低
. sin_high_out(sin_high_out),//输出频率1
. sin_low_out(sin_low_out)//输出频率2
);
//8阶线性相位结构FIR
FIR i_FIR(
. clk(clk_100K),//100K
. reset_p(reset_p),//高电平复位
. data_in(sin_super_buf[10:1]),//带噪声的正弦波
. fir_data(fir_data)//滤波后结果
);
assign sin_1=amp_cnt1*sin_high_out;//输出频率1
assign sin_2=amp_cnt2*sin_low_out;//输出频率2
assign sin_super_buf=amp_cnt1*sin_high_out+amp_cnt2*sin_low_out;//叠加信号
assign sin_super=sin_super_buf;
endmodule
源代码

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值