元件在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
其实根本没有楼上回答的那么复杂。楼上说道要用matlab做设计验证,这个是必须有的,而后却没有说出关键之所在。
方法一:
1.先在matlab上设计一个巴特沃斯滤波器,根据你的设计需要设置位宽之类的东西。
2.matlab有一个功能就是能把在matlab上设计的东西自动转换成VHDL语言文本,然后再在FPGA上应用即可。(这才是关键)
方法二:(推荐)
直接在Quartus上安装一个DSP Builder扩展软件,然后DSP Builder中有很多现成的IP核,比如各种滤波器现成的IP核,直接用DSP Builder配置出你所需要的功能的滤波器即可(这可是菜单式,图形化的配置界面,无需自己去想公式和函数),然后DSP Builder会把你配置出来得IP核以功能模块形式生成并放入相应库中,然后需要做的就是在QUartus中调用生成的这个滤波器原件即可。
如何用用FPGA实现FIR滤波器你接到要求用FPGA实现FIR滤波器的任务时,也许会想起在学校里所学的FIR基础知识,但是下一步该做什么呢?哪些参数是重要的?做这个设计的最佳方法是什么?还有这个设计应该怎样在FPGA中实现?现在有大量的低成本IP核和工具来帮助你进行设计,因为FIR是用FPGA实现的最普通的功能。
基础和主要参数
也许你在听FIR滤波器课时不够专注。这里做一个快速的复习,最简单的形式是, FIR 滤波器的输出 y(n)是求采样数据x(n) 的N个输入的平均值。 存储的每个采样称为抽头。 当然大多数设计都比这个复杂, 要提供优化的滤波器 特性,要用系数乘 每个抽头, 或者对 h(i) 进行加权。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)