找到问题了,滤波器没有问题,是我的采集软件因为按字节读出48位数据后重组时,由于隐式转换限制在了int变量32位的缘故。天啦,一个这么小的问题困扰了我好些天。
谢谢dreamjs……
我的ADC采样频率范围在2~100k可变,所以Input Sampling Frequency设了个0.125M,ADC每采一个点,我就把这个点送给FIR滤波器,然后等待下一个采样……
我要做的滤波器是可重新配置系数的,不是系数配置进了coe文件就不变了,所以必须要量化了才能配置,即便是在coe文件中写成小数,它内部也会自动有个量化的过程,才能做硬件计算吧,再说了……
把Input Sampling Frequency跟Clock Frequency设置成一个频率,这怎么可能,这样一设置光这个滤波器占用DSP48A就需要259个,我的FPGA芯片……
3.matlab滤波结果
相同的滤波器系数,幅频特性如下,与IP配置界面显示相同。滤波器的截止频率为0.6*20k=12k,理论上是吧12k以上的谐波成分给滤掉了。我用的信号都是……
2.采样结果
采样频率20k,信号发生器出来的正弦、方波、三角波频率均为1k,采样点数500,滤波器出来的48位都用全了,没有截位。将采样信号保存下来,用matlab画的时域和频……
我把我的IP配置界面、采集到的滤波结果以及仿真结果贴上来吧。
1.首先是配置界面:
这是不滤波的配置,coe文件写的系数为1,0,0,0...,0
接下来是滤……
我起初也怀疑滤波器系数没有配置进去,后面我直接将滤波器系数写到coe文件中试验,配置界面显示的幅频特性也是正常的,但出来的信号跟之前一样,仍然不对。读写时序都用chipsope观察……