My title page contents

基于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


FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com


演示视频:

设计文档:

设计文档.doc

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

代码文件(付费下载):



1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 基于FPGA的8阶线性相位结构FIR设计Verilog代码VIVADO仿真

发表评论

模板文件不存在: ./template/plugins/comment/pc/index.htm

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员