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

FIR滤波器低通滤波器线性相位结构Verilog/VHDL代码

05/07 13:23
1017
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

1-231022225149162.doc

共1个文件

名称:FIR滤波器低通滤波器(代码在文末付费下载)

软件:Quartus

语言:Verilog/VHDL

本资源含有verilog及VHDL两种语言设计的工程,每个工程均可实现以下FIR滤波器的功能。

e2b3a0bc-46e4-4418-921e-482c7e86db23.png

代码功能:

设计一个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同理):

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

部分代码展示

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同理):

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. Testbench

6. 仿真图

整体仿真

分频模块仿真

产生带噪声正弦波模块仿真

滤波器模块仿真

  • 1-231022225149162.doc
    下载

相关推荐