1、理论上大于10m就ok了,但是实际中肯定要留有余量的,40m可以,主要看你的主频能做到多少了。
2、不管是正数还是负数,在FPGA中最好都用补码表示。
3、截位当然是截断最低的位,高位截断了数据就错了。
还有问题就是你这样做肯定只能用并行的方法来做了,因为你用大于10m的采样频率,如果你用10阶的FIR滤波器,同时需要9个乘法器,不知道你的数据是多少位的,也不知道你的FIR是多少阶的,如果位数宽,且阶数多的话,你的FPGA可能没有这么多的乘法器,
还有不知道FPGA里面的乘法器是不是补码乘法器,如果不是的话,你的数据表示方法如果用补码的话,乘法之前要求原码,乘法器之后还要再求补码,可能得不偿失,这样的话可以考虑用原
码表示整数和负数。
关于补充:你的第一个问题没有提到时钟频率啊。
如果你的时钟频率比采样频率高很多的话,就可以用串行的方法来做,这样的话需要很高的时钟频率,但是省资源(乘法器和加法器),如果你没有很高的时钟,只能串行做,这种方法适用于时钟频率等于或者略大于时钟频率。
首先,分清FIR的设计与实现是2阶段;关系很紧密,但是还是有些概念不能混同的。
实际的AD采样如果是直接送到滤波器接口上,就直接将Fs设置为40MHz;若有下采样或其他处理导致实际“数据率”是其他的值,就应该设定其他值的。既问题又回来了,先确定需要处理什么样的数据,得到什么样的效果;再确定FIR的参数;这阶段的重点是FIR理论。
而实现阶段,数据是正数、截位等就需要找一下相关的资料了。
简单点说:
1. 40MHz采集5MHz频率的数据可以不失真,信号能较好还原;可以直接进入FIR处理;既Fs=40MHz;
2. 采集的数据都是正数可能是AD有编码处理,如偏置、强行改了符号位等;如果信号是有符号数,需要处理回来的;建议对数据进行去偏置处理
3. 滤波器需要量化吧?看你量化的位宽和插损怎么样,输出信号强度怎么样了;我们一般原则是输入的信号最大时,输出没有溢出;输出很小时,精度尽量高;建议使用MATLAB先仿真一下;还是有些工作或细节需要注意的
1、设计滤波器时,应根据实际的采样率进行设计;同样的截止频率,不同的采样率下设计出来的滤波器系数是不同的,换句话说,同样的滤波器系统用在不同采样率下,其截止频率是不一样的;(更进一步地说,设计数字滤波器时,更关心的是归一化频率,归一化截止频率*Fs/2=截止频率)
2、一般A/D的输入是隔直的(即输入信号进入采样保持电路时不含直流,一般都是电容耦合/变压器耦合),一般A/D的输出都是补码的;补码的好处是便于进行运算;
3、数据截位是指丢掉低有效位的数据