FPGA设计FIR滤波器低通滤波器,代码及视频

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

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=firicon-default.png?t=N7T8http://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. 仿真图

整体仿真

分频模块仿真

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

滤波器模块仿真

猜你喜欢

转载自blog.csdn.net/diaojiangxue/article/details/133979754