• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

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

08/05 14:00
687
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-240614201444O4.doc

共1个文件

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

软件:VIVADO

语言:Verilog

代码功能:

8阶线性相位结构FIR

滤波器系数设计:打开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

演示视频:

设计文档:

1. 工程文件

2. 设计指标

截止频率:20KHz

阶数:8阶

采样频率:100KHz

输入位宽:10bit

输出位宽:10bit

结构:线性相位结构

3. 程序文件

4. 程序编译

5. Testbench

6. 仿真图

部分代码展示:

//8阶线性相位结构FIR
module?FIR(
input?clk,//100K
input?reset_p,//高电平复位
input??[9:0]data_in,//叠加信号
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;
//设计截止频率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
//将系数放大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

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=870

  • 2-240614201444O4.doc
    下载

相关推荐