fir fpga 评语推荐阅读:
请教些关于FIR滤波器的FPGA实现中遇到的一些问题:
首先,分清FIR的设计与实现是2阶段;关系很紧密,但是还是有些概念不能混同的。
实际的AD采样如果是直接送到滤波器接口上,就直接将Fs设置为40MHz;若有下采样或其他处理导致实际“数据率”是其他的值,就应该设定其他值的。
既问题又回来了,先确定需要处理什么样的数据,得到什么样的效果;再确定FIR的参数;这阶段的重点是FIR理论。
而实现阶段,数据是正数、截位等就需要找一下相关的资料了。
简单点说:
1.40MHz采集5MHz频率的数据可以不失真,信号能较好还原;可以直接进入FIR处理;既Fs=40MHz;2.采集的数据都是正数可能是AD有编码处理,如偏置、强行改了符号位等;如果信号是有符号数,需要处理回来的;建议对数据进行去偏置处理
3.滤波器需要量化吧
看你量化的位宽和插损怎么样,输出信号强度怎么样了;我们一般原则是输入的信号最大时,输出没有溢出;输出很小时,精度尽量高;建议使用MATLAB先仿真一下;还是有些工作或细节需要注意的
有用verilog写过fir数字滤波器的吗,最好在fpga上跑过的...那些系数有正负的和位数怎么处理的..
滤波器的乘累加运算可以用DA(分布式)算法来做,用LUT和位-移位寄存器来代替乘法器,比较适合在FPGA上实现,因为FPGA就是基于LUT的吗,而且乘法器也比较占用资源。
你搜一下DA算法。
这本书《基于Verilog HDL的数字系统应用设计》-国防工业出版社。
上有现成的例子。
FPGA实现FIR滤波器时,系数位宽怎么确定
1、理论上大于10m就ok了,但是实际中肯定要留有余量的,40m可以,主要看你的主频能做到多少了。
2、不管是正数还是负数,在FPGA中最好都用补码表示。
3、截位当然是截断最低的位,高位截断了数据就错了。
还有问题就是你这样做肯定只能用并行的方法来做了,因为你用大于10m的采样频率,如果你用10阶的FIR滤波器,同时需要9个乘法器,不知道你的数据是多少位的,也不知道你的FIR是多少阶的,如果位数宽,且阶数多的话,你的FPGA可能没有这么多的乘法器,
还有不知道FPGA里面的乘法器是不是补码乘法器,如果不是的话,你的数据表示方法如果用补码的话,乘法之前要求原码,乘法器之后还要再求补码,可能得不偿失,这样的话可以考虑用原
码表示整数和负数。
关于补充:你的第一个问题没有提到时钟频率啊。
如果你的时钟频率比采样频率高很多的话,就可以用串行的方法来做,这样的话需要很高的时钟频率,但是省资源(乘法器和加法器),如果你没有很高的时钟,只能串行做,这种方法适用于时钟频率等于或者略大于时钟频率。
硬件类一般都上硬之城看那里比较专业,专业的问题专业解决,这是最快的也是最好的方法,好过自己瞎搞,因为电子元器件的电子型号那些太多了一不小心就会弄错,所以还是找专业的帮你解决。
想请教你一点关于用xilinx FPGA实现FIR滤波器的问题
这里一个很重要的信息就是你的采样率Fs用的是多少
基于FPGA的FIR滤波器设计,要求VHDL编写,在maxplus能运行,求各位有用过的发给我啊402868096
现在fpga设计都用quartus了啊,下面程序中fir0_ast
元件在std_logic_1164包中,具体程序如下:
library IEEE;use IEEE.std_logic_1164.all;ENTITYfir0 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)
ENDfir0;ARCHITECTURE SYN OFfir0 IS
COMPONENTfir0_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;BEGINfir0_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;
毕业论文:基于FPGA的FIR设计
这个事ALTERA 上的,http:\/\/www.altera.com\/support\/examples\/verilog\/ver_base_fir.html
还有一些资料,不过是英文的,有兴趣翻译了看看。
http:\/\/www.arcetri.astro.it\/science\/Radio\/alma\/Report_5a_2002.pdf
上面的是verilog语言的,如果你用VHDL,看看下面的连接。
http:\/\/www.edaboard.com\/ftopic341364.html这个有可以下载的源文件。
还找了一些资料http:\/\/www.inesc-id.pt\/ficheiros\/publicacoes\/5229.pdf。
嘿嘿。
我不了解fir,不知道我在网上搜的这些有用没。
如果没人回答,就把这140分给我吧。
呵呵哈。
ISE的FPGA中FIR与FFT模块的连接问题
fir你选择的配置是两路的,I路(实部)和Q路(虚部)
fft你也选择的两路,其实只要选择一路就行了,它本身就会有实部虚部两路输入
然后滤波器的实部输出连xn_re,虚部连xn_im就行了
简述iir,fir滤波器的优缺点
一、FIR滤波器的优缺点
优点:
1、有着规整的内部逻辑阵列和丰富的连线资源,特别适合于数字信号处理任务,相对于串行运算为主导的通用DSP芯片来说,其并行性和可扩展性更好,利用FPGA乘累加的快速算法,可以设计出高速的FIR数字滤波器。
2、可以无限增加精度(在足够运算能力的前提下),并且不存在IIR滤波器的相位精度问题,是目前比较高端的解决方案。
劣势:
1、因为采用的精度很高,所以对计算资源和内存、功耗的使用更高;2、FIR在其他领域主要解决高频问题,在音频应用常常遇到1Khz以下的信号,FIR至少需要FIR 512才能对1K以下产生作用
3、过分运算,因为FIR每个处理单元宽度不能调整,因此在解决低频问题时,高频会出现过分运算的情况。
二、IIR滤波器的优缺点
优点:
1、IIR数字滤波器的系统函数可以写成封闭函数的形式。
2、直接设计可以采用优化设计(CAD)法,数字滤波器的系统函数H(Z)的系数ai,bi或零极点ci,di等参数,可采用优化设计的方法。
3、IIR数字滤波器在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,其设计工作量比较小,对计算工具的要求不高。
缺点:
1、IIR数字滤波器的相位特性不好控制,对相位要求较高时,需加相位校准网络。
扩展资料
IIR数字滤波器与FIR数字滤波器的区别:
1、单位响应
IIR滤波器的单位脉冲响应为无限长,网络中有反馈回路。
FIR滤波器的单位脉冲响应是有限长的,一般网络中没有反馈回路。
FIR滤波器的系统函数一般是一个有理分式,分母多项式决定滤波器的反馈网络。
FIR滤波器的系统函数用下式表示
2、幅频特性
IIR数字滤波器幅频特性精度很高,不是线性相位的,可以应用于对相位信息不敏感的音频信号上;FIR数字滤波器的幅频特性精度较之于IIR数字滤波器低,但是线性相位,就是不同频率分量的信号经过fir滤波器后他们的时间差不变,这是很好的性质。
3、实时信号处理FIR数字滤波器是有限的单位响应也有利于对数字信号的处理,便于编程,用于计算的时延也小,这对实时的信号处理很重要。
参考资料来源:百度百科-FIR滤波器
参考资料来源:百度百科-IIR数字滤波器
fir滤波器fpga 与c实现问题
这个应该是和你实现的平台有关的。
FPGA实现FIR时,系数定点化,是因为FPGA正常运算不支持浮点(特殊IP核除外)。
利用C时,也要看你代码运行的平台是什么了,或者项目的要求了,比如在定点的DSP处理器上运行的C代码,需要考虑定点化系数等要求,但是支持浮点的DSP处理器就可以考虑浮点运算等。
PC机上运行的也可以浮点。
您好,我现在做一个基于FPGA的FIR数字滤波器(VHDL实现与仿真),想向您请教
matlab中有个fdatool,根据你的滤波器类型,指标,就可以生成参数了.
生成的参数是带小数的,数字电路无法处理,所以要将其转换为整数,所以乘一个较大的整数,一般都是2的n次幂,根据最大位宽决定.
至于滤波器怎么滤波的,建议你去看课本
本文由 文言宝 整理,转载请保留链接: https://www.wenyanbao.com/html/20230324/158226.html