如何用用fpga实现fir滤波器

如何用用fpga实现fir滤波器,第1张

如何用用FPGA实现FIR滤波器

你接到要求用FPGA实现FIR滤波器的任务时,也许会想起在学校里所学的FIR基础知识,但是下一步该做什么呢?哪些参数是重要的?做这个设计的最佳方法是什么?还有这个设计应该怎样在FPGA中实现?现在有大虚碰量的低成本IP核和工具来帮助你进行设计,因为FIR是用FPGA实现的最普通的功能差迟谈。

基旦蠢础和主要参数

也许你在听FIR滤波器课时不够专注。这里做一个快速的复习,最简单的形式是, FIR 滤波器的输出 y(n)是求采样数据x(n) 的N个输入的平均值。 存储的每个采样称为抽头。 当然大多数设计都比这个复杂, 要提供优化的滤波器 特性,要用系数乘 每个抽头, 或者对 h(i) 进行加权。

现在fpga设计都用quartus了啊,下面程序中fir0_ast

元件在std_logic_1164包中,具体程序如下:

library IEEE

use IEEE.std_logic_1164.all

ENTITY fir0 IS

PORT (

clk : IN STD_LOGIC

reset_n : IN STD_LOGIC

ast_sink_data : IN STD_LOGIC_VECTOR (7 DOWNTO 0)

ast_sink_valid : IN STD_LOGIC

ast_source_ready : IN STD_LOGIC

ast_sink_error : IN STD_LOGIC_VECTOR (1 DOWNTO 0)

ast_source_data : OUT STD_LOGIC_VECTOR (17 DOWNTO 0)

ast_sink_ready : OUT STD_LOGIC

ast_source_valid : OUT STD_LOGIC

ast_source_error : OUT STD_LOGIC_VECTOR (1 DOWNTO 0)

)

END fir0

ARCHITECTURE SYN OF fir0 IS

COMPONENT fir0_ast

PORT (

clk : IN STD_LOGIC

reset_n : IN STD_LOGIC

ast_sink_data : IN STD_LOGIC_VECTOR (7 DOWNTO 0)

ast_sink_valid : IN STD_LOGIC

ast_source_ready : IN STD_LOGIC

ast_sink_error : IN STD_LOGIC_VECTOR (1 DOWNTO 0)

ast_source_data : OUT STD_LOGIC_VECTOR (17 DOWNTO 0)

ast_sink_ready : OUT STD_LOGIC

ast_source_valid : OUT STD_LOGIC

ast_source_error : OUT STD_LOGIC_VECTOR (1 DOWNTO 0)

)

END COMPONENT

BEGIN

fir0_ast_inst : fir0_ast

PORT MAP (

clk => clk,

reset_n => reset_n,

ast_sink_data => ast_sink_data,

ast_source_data => ast_source_data,

ast_sink_valid => ast_sink_valid,

ast_sink_ready => ast_sink_ready,

ast_source_valid => ast_source_valid,

ast_source_ready => ast_source_ready,

ast_sink_error => ast_sink_error,

ast_source_error => ast_source_error

)

END SYN

xilinx有个工具是DSP_TOOL,altera有个工数蠢李具是DSP_BUILDER。

两个都能在matlab/simulink下设计FIR滤波器,然档脊后直薯迟接生成VHDL或者Verilog HDL代码。

你需要做的只是设置FIR滤波器的相关参数以及类型就够了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12266028.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存