本例程实现8阶滤波器,9个系数,由于系数的对称性,h(0)=h(8),h1(1)=h(7),h(2)=h(6),h(3)=h(5),h(4)为中间单独一个系数。根据公式:
实现框图:
推导出当系数n为偶数时,例如n=4:y(n)=h(0)*{x(0)+x(n-3)}+h(1)*{x(n-1)+x(n-2)}
当系数n为奇数时,例如n=5:
y(n)=h(0)*{x(0)+x(n-1)}+h(1)*{x(n-1)+x(n-3)}+h(2)*x(n-2)
1、用matlab生成和量化滤波器系数
设置参数后,点击“design filter”按钮,“file”—“export”,把滤波器系数导出到workspace,如下图:
执行命令:num=num’ ,把滤波器系数拷贝到文件cofficient.dat中。
量化系数:在matlab中运行quantization.m
2、说明
用matlab程序sin_1mhz_gen.m生成正弦波波形表,改变变量f0 = 1.5e6可以生成不同频率的波形。把第一个周期的波形数据存入signal_1m.dat文件中,存入的数据个数为fs/fo的最小正整数之比的分子,比如fs=25mhz,fo=0.3mhz,fs/fo=250/3(fs=25/24mhz),则存入文件signal_1m.dat的波形数据个数为开头的250个数据。相应的signal_gen0.v中的语句if(i0<50)相应的改为if(i0<250)。仿真时signal_1m.dat放在仿真目录下
3、滤波器的multisim仿真
运行matlab,用sin_1mhz_gen.m产生5mhz(f0 =5e6)正弦波信号,fs/fo=5,把数据hex_sin_data的前5个数据存入signal_1m.dat文件,相应的signal_gen0.v中的语句if(i0<50)相应的改为if(i0<5)。
仿真的波形如下图(fir滤波器的输入输出信号):
运行matlab,用sin_1mhz_gen.m产生1mhz(f0 =1e6)正弦波信号,fs/fo=25,把数据hex_sin_data的前5个数据存入signal_1m.dat文件,相应的signal_gen0.v中的语句if(i0<5)相应的改为if(i0<25)。
仿真的波形如下图(fir滤波器的输入输出信号):
由此可见fir对带外信号起到衰减的作用。
部分代码:
//date :2012-5-27
//description : 8 阶fir滤波器 ,通带2mh,阻带8mhz ,带外衰减80db,通带波动1db
//uesedfor
//taobao :
//e-mail :2352517093@qq.com
//==========================================================================
`timescale 1 ns / 1 ns
module fir_filter
(
i_fpga_clk ,
i_rst_n ,
i_filter_in,
o_filter_out
);
input i_fpga_clk ; //25mhz
input i_rst_n ;
input signed [7:0] i_filter_in ; //数据速率25mh
output reg signed [7:0] o_filter_out; //滤波输出
//==============================================================
//8阶滤波器系数,共9个系数,系数对称
//==============================================================
wire signed[15:0] coeff1 = 16'd239 ;
wire signed[15:0] coeff2 = 16'd1507;
wire signed[15:0] coeff3 = 16'd4397;
wire signed[15:0] coeff4 = 16'd7880;
wire signed[15:0] coeff5 = 16'd9493;
//===============================================================
//延时链
//===============================================================
reg signed [7:0] delay_pipeline1 ;
reg signed [7:0] delay_pipeline2 ;
reg signed [7:0] delay_pipeline3 ;
reg signed [7:0] delay_pipeline4 ;
reg signed [7:0] delay_pipeline5 ;
reg signed [7:0] delay_pipeline6 ;
reg signed [7:0] delay_pipeline7 ;
reg signed [7:0] delay_pipeline8 ;
always@(posedge i_fpga_clk or negedge i_rst_n)
if(!i_rst_n)
begin
delay_pipeline1 <= 8'b0 ;
delay_pipeline2 <= 8'b0 ;
delay_pipeline3 <= 8'b0 ;
delay_pipeline4 <= 8'b0 ;
delay_pipeline5 <= 8'b0 ;
delay_pipeline6 <= 8'b0 ;
delay_pipeline7 <= 8'b0 ;
delay_pipeline8 <= 8'b0 ;
end
else
begin
delay_pipeline1 <= i_filter_in ;
移动芯片成寡头游戏 德州仪器为何抽身而退?
斯派特激光奠基开工仪式举办,预计明年年底投产
MOSFET结构解析(1)
无PCB(PCB-less)的霍尔锁存器在汽车座椅电机定位的解决方案
应对智能网卡设计的挑战
基于matlab FPGA verilog的FIR滤波器设计
一个月内DDR内存价格涨幅已超10%
小米已在印度推出了Mi Dual Driver入耳式耳机
小米6最新消息:系统基于安卓7.1.1+ 安兔兔跑分17万+骁龙835,高配置你期待吗?
纳特通信5G通信服务产品及解决方案
爱采购行业峰会-电子行业专场 助力开拓电子元器件终端生意
华为、魅族、小米这些智能手机品牌谁能站到最后呢?
光纤/光缆断点、光衰点、故障点精准定位-光频域反射仪(OFDR)
真固态——汽车激光雷达的未来
ios10.3最新消息:ios10.3主要更新了啥?ios10.3纠纷引发严重的BUG
环球晶计划进行12吋厂扩建,提升先进半导体磊晶硅晶圆产能
鸿蒙OS 2.0有哪些亮点 鸿蒙的开源备受关注
行业 | 中国人工智能市场现状与趋势
用lm358自制12v充电器(六款充电器电路详解)
Apple watch怎么选,如何找到适合自己的Apple watch