请教些关于FIR滤波器的FPGA实现中遇到的一些问题:1、在用matlab的fdatool设计滤波器

发布时间:2021-02-26 00:57:24

请教些关于FIR滤波器的FPGA实现中遇到的一些问题:1、在用matlab的fdatool设计滤波器生成系数时,里面的滤波器采样频率Fs是只要满足奈奎斯特定理就行了吗?譬如,我用40MHz采样速率的AD采集5MHz频率的数据,经FIR滤波,这里的Fs怎么确定,是40MHz,还是大于10MHz就行了?2、我采集的数据都是正数,而fda生成的系数有负的,对这负系数采用什么编码方法啊?3、最后的数据需要

网友回答

1、理论上大于10m就ok了,但是实际中肯定要留有余量的,40m可以,主要看你的主频能做到多少了.
2、不管是正数还是负数,在FPGA中最好都用补码表示.
3、截位当然是截断最低的位,高位截断了数据就错了.
还有问题就是你这样做肯定只能用并行的方法来做了,因为你用大于10m的采样频率,如果你用10阶的FIR滤波器,同时需要9个乘法器,不知道你的数据是多少位的,也不知道你的FIR是多少阶的,如果位数宽,且阶数多的话,你的FPGA可能没有这么多的乘法器,
还有不知道FPGA里面的乘法器是不是补码乘法器,如果不是的话,你的数据表示方法如果用补码的话,乘法之前要求原码,乘法器之后还要再求补码,可能得不偿失,这样的话可以考虑用原
码表示整数和负数.
关于补充:你的第一个问题没有提到时钟频率啊.
如果你的时钟频率比采样频率高很多的话,就可以用串行的方法来做,这样的话需要很高的时钟频率,但是省资源(乘法器和加法器),如果你没有很高的时钟,只能串行做,这种方法适用于时钟频率等于或者略大于时钟频率.
以上问题属网友观点,不代表本站立场,仅供参考!