作业帮 > 综合 > 作业

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

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/24 23:00:52
请教些关于FIR滤波器的FPGA实现中遇到的一些问题:
1、在用matlab的fdatool设计滤波器生成系数时,里面的滤波器采样频率Fs是只要满足奈奎斯特定理就行了吗?譬如,我用40MHz采样速率的AD采集5MHz频率的数据,经FIR滤波,这里的Fs怎么确定,是40MHz,还是大于10MHz就行了?
2、我采集的数据都是正数,而fda生成的系数有负的,对这负系数采用什么编码方法啊?
3、最后的数据需要截位,一般截哪些位啊?
暂时就这些问题,不甚感激!
就是第一个问题里的FIR数字滤波器的时钟频率和采样频率Fs有关吗?时钟频率要求等于Fs还是任意设置?
1、理论上大于10m就ok了,但是实际中肯定要留有余量的,40m可以,主要看你的主频能做到多少了.
2、不管是正数还是负数,在FPGA中最好都用补码表示.
3、截位当然是截断最低的位,高位截断了数据就错了.
还有问题就是你这样做肯定只能用并行的方法来做了,因为你用大于10m的采样频率,如果你用10阶的FIR滤波器,同时需要9个乘法器,不知道你的数据是多少位的,也不知道你的FIR是多少阶的,如果位数宽,且阶数多的话,你的FPGA可能没有这么多的乘法器,
还有不知道FPGA里面的乘法器是不是补码乘法器,如果不是的话,你的数据表示方法如果用补码的话,乘法之前要求原码,乘法器之后还要再求补码,可能得不偿失,这样的话可以考虑用原
码表示整数和负数.
关于补充:你的第一个问题没有提到时钟频率啊.
如果你的时钟频率比采样频率高很多的话,就可以用串行的方法来做,这样的话需要很高的时钟频率,但是省资源(乘法器和加法器),如果你没有很高的时钟,只能串行做,这种方法适用于时钟频率等于或者略大于时钟频率.
再问: 现在我的数据是10位的,具体用几阶的FIR还没确定(关于阶数一般怎么确定啊,我看fdatool里有这个参数设置,一种是自己确定,一种自动生成最低阶数)。 还有就是我补充的问题,FIR的时钟频率和采样频率Fs是否有关啊?
再答: 10位的数据可能误差比较大,但是应该可以,我们做的IIR是数据32位,系数是26位。 阶数的确定我遇到过两种方法:1、根据你的设计要求确定,有的要求里面明确提出了要用几阶的,仔细看一下spec,说不定有说明.2、如果没有的话,就要根据你需要得到的信噪比来决定了,可以选择自动生成最低阶数,然后填入你的信噪比,就是阻带通带衰减值填一下,根据自己的要求填,让工具算出你的阶数,然后把算出的系数转化成二进制就行了。 补充的问题我回答过了,看回复要仔细点。