软件: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同理):
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. 仿真图
整体仿真


分频模块仿真


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


滤波器模块仿真


阅读全文
1017