仪器社区

请教些关于FIR滤波器的FPGA实现中遇到的一些问题:

向华群 2011-06-15
1、在用matlab的fdatool设计滤波器生成系数时,里面的滤波器采样频率Fs是只要满足奈奎斯特定理就行了吗?譬如,我用40MHz采样速率的AD采集5MHz频率的数据,经FIR滤波,这里的Fs怎么确定,是40MHz,还是大于10MHz就行了? 2、我采集的数据都是正数,而fda生成的... 1、在用matlab的fdatool设计滤波器生成系数时,里面的滤波器采样频率Fs是只要满足奈奎斯特定理就行了吗?譬如,我用40MHz采样速率的AD采集5MHz频率的数据,经FIR滤波,这里的Fs怎么确定,是40MHz,还是大于10MHz就行了? 2、我采集的数据都是正数,而fda生成的系数有负的,对这负系数采用什么编码方法啊? 3、Z后的数据需要截位,一般截哪些位啊? 暂时就这些问题,望高手帮忙解决下,不甚感激!
评论
全部评论
盼╃字JUN团
1、理论上大于10m就ok了,但是实际中肯定要留有余量的,40m可以,主要看你的主频能做到多少了。
2、不管是正数还是负数,在FPGA中Z好都用补码表示。
3、截位当然是截断Z低的位,高位截断了数据就错了。
还有问题就是你这样做肯定只能用并行的方法来做了,因为你用大于10m的采样频率,如果你用10阶的FIR滤波器,同时需要9个乘法器,不知道你的数据是多少位的,也不知道你的FIR是多少阶的,如果位数宽,且阶数多的话,你的FPGA可能没有这么多的乘法器,
还有不知道FPGA里面的乘法器是不是补码乘法器,如果不是的话,你的数据表示方法如果用补码的话,乘法之前要求原码,乘法器之后还要再求补码,可能得不偿失,这样的话可以考虑用原
码表示整数和负数。
关于补充:你的diyi个问题没有提到时钟频率啊。
如果你的时钟频率比采样频率高很多的话,就可以用串行的方法来做,这样的话需要很高的时钟频率,但是省资源(乘法器和加法器),如果你没有很高的时钟,只能串行做,这种方法适用于时钟频率等于或者略大于时钟频率。
9 0 2011-06-16 0条评论 回复
64852yy
首先,分清FIR的设计与实现是2阶段;关系很紧密,但是还是有些概念不能混同的。
实际的AD采样如果是直接送到滤波器接口上,就直接将Fs设置为40MHz;若有下采样或其他处理导致实际“数据率”是其他的值,就应该设定其他值的。既问题又回来了,先确定需要处理什么样的数据,得到什么样的效果;再确定FIR的参数;这阶段的ZD是FIR理论。

而实现阶段,数据是正数、截位等就需要找一下相关的资料了。
简单点说:
1. 40MHz采集5MHz频率的数据可以不失真,信号能较好还原;可以直接进入FIR处理;既Fs=40MHz;
2. 采集的数据都是正数可能是AD有编码处理,如偏置、强行改了符号位等;如果信号是有符号数,需要处理回来的;建议对数据进行去偏置处理
3. 滤波器需要量化吧?看你量化的位宽和插损怎么样,输出信号强度怎么样了;我们一般原则是输入的信号Z大时,输出没有溢出;输出很小时,精度尽量高;建议使用MATLAB先仿真一下;还是有些工作或细节需要注意的
1 0 2011-06-16 0条评论 回复
kmwk0228
1、设计滤波器时,应根据实际的采样率进行设计;同样的截止频率,不同的采样率下设计出来的滤波器系数是不同的,换句话说,同样的滤波器系统用在不同采样率下,其截止频率是不一样的;(更进一步地说,设计数字滤波器时,更关心的是归一化频率,归一化截止频率*Fs/2=截止频率)
2、一般A/D的输入是隔直的(即输入信号进入采样保持电路时不含直流,一般都是电容耦合/变压器耦合),一般A/D的输出都是补码的;补码的好处是便于进行运算;
3、数据截位是指丢掉低有效位的数据
6 0 2011-06-16 0条评论 回复
您可能感兴趣的社区主题
加载中...
发布 评论