名称:FIR滤波器低通滤波器
软件:Quartus
语言:Verilog/VHDL
本资源含有verilog及VHDL两种语言设计的工程,每个工程均可实现以下FIR滤波器的功能。
代码功能:
设计一个8阶FIR滤波器(低通滤波器),要求截止频率为20KHz,使用线性相位结构。
参数设计方法:
使用matlab软件设计滤波器系数
滤波器系数设计:
打开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.
演示视频(以VHDL工程文件为例,verilog同理):
http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=212
FPGA代码Verilog/VHDL代码资源下载网:www.hdlcode.com
代码下载:
FIR滤波器低通滤波器(代码在文末付费下载)软件:Quartus语言:Verilog/VHDL本资源含有verilog及VHDL两种语言设计的工程,每个工程均可实现以下FIR滤波器的功能。代码功能:设计一个8阶FIR滤波器(低通滤波器),要求截止频率为20KHz,使用线性相位结构。参数设计方法:使用matlab软件设计滤波器系数滤波器系数设计:打开Matlab软件在指令窗口中键入:m=fir名称:FIR滤波器低通滤波器(代码在文末付费下载)软件:Quartus语言:Verilog/VHDL本资源含有verilog及VHDL两种语言设计的工程,每个工程均可实现以下FIR滤波器的功能。代码功能:设计一个8阶FIR滤波器(低通滤波器),要求截止频率为20KHz,使用线性相位结构。参数设计方法:使用matlab软件设计滤波器系数滤波器系数设计:打开Matlab软件在指令窗口中键入:m=firhttp://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=212
部分代码展示
verilog代码:
//滤波器 module FIR_filter( input clk_in,//50MHz input reset_p,//高电平复位 output [9:0]fir_data//滤波后结果 ); wire [9:0] data_in; wire clk_100K; //分频模块,50M分频到100K div_clk i_div_clk( . clk_in(clk_in), . clk_out(clk_100K) ); //产生带噪声的正弦波 sin_noise i_sin_noise( . clk_in(clk_in),//50MHz . reset_p(reset_p),//高电平复位 . sin_and_noise(data_in)//产生带噪声的正弦波 ); //8阶线性相位结构FIR FIR i_FIR( . clk(clk_100K),//100K . reset_p(reset_p),//高电平复位 . data_in(data_in),//周期1K,噪声频率30K左右 . fir_data(fir_data)//滤波后结果 ); endmodule
VHDL代码:
LIBRARY ieee; USE ieee.std_logic_1164.all; --滤波器 ENTITY FIR_filter IS PORT ( clk_in : IN STD_LOGIC;--50MHz reset_p : IN STD_LOGIC;--高电平复位 fir_data : OUT STD_LOGIC_VECTOR(9 DOWNTO 0)--滤波后结果 ); END FIR_filter; ARCHITECTURE behave OF FIR_filter IS --产生带噪声的正弦波 COMPONENT sin_noise IS PORT ( clk_in : IN STD_LOGIC; reset_p : IN STD_LOGIC; sin_and_noise : OUT STD_LOGIC_VECTOR(9 DOWNTO 0) ); END COMPONENT; --分频模块 COMPONENT div_clk IS PORT ( clk_in : IN STD_LOGIC; clk_out : OUT STD_LOGIC ); END COMPONENT; --8阶线性相位结构FIR COMPONENT FIR IS PORT ( clk : IN STD_LOGIC; reset_p : IN STD_LOGIC; data_in : IN STD_LOGIC_VECTOR(9 DOWNTO 0); fir_data : OUT STD_LOGIC_VECTOR(9 DOWNTO 0) ); END COMPONENT; --定义内部信号 SIGNAL data_in : STD_LOGIC_VECTOR(9 DOWNTO 0); SIGNAL clk_100K : STD_LOGIC; BEGIN --分频模块,50M分频到100K i_div_clk : div_clk PORT MAP ( clk_in => clk_in, clk_out => clk_100K ); --产生带噪声的正弦波 i_sin_noise : sin_noise PORT MAP ( clk_in => clk_in,--50MHz reset_p => reset_p,--高电平复位 sin_and_noise => data_in--产生带噪声的正弦波 ); --8阶线性相位结构FIR i_FIR : FIR PORT MAP ( clk => clk_100K,--100K reset_p => reset_p,--高电平复位 data_in => data_in,--周期1K,噪声频率30K左右 fir_data => fir_data--滤波后结果 ); END behave;
设计文档(以VHDL工程文件为例,verilog同理):
设计文档.doc
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. Testbench
6. 仿真图
整体仿真
分频模块仿真
产生带噪声正弦波模块仿真
滤波器模块仿真