Hi,各位大侠,请教Xilinx FIR输出数据截位的问题:
(1)用Fdatool设计一个0.5MHz - 4MHz的矩形FIR,通过COE文件导入FIR Compiler,35阶,系数16bit。如下图所示:
(2)AD是12bit,补码输入[-2048, 2047]。FIR Compiler输出数据dout为34bit。为了后续处理方便,想截取12bit。因此将所有系数求绝对值和,再乘以2048,得到最大输出值,落在31bit有符号数范围内。舍掉一个符号位,取dout[29:18],得到12bit滤波输出,进行显示。
(3)把通过滤波和不通过滤波器的数据画成,进行对比。
小信号输入时,没到AD量程,频带中心频率信号,滤波前后波高很接近。左图是通过滤波器输出数据波形,右图是不经过滤波的数据波形:
当增大输入信号时,滤波信号有异常,好像是溢出了:
(4)硬件设计的时候AD 12bit是offset binary输入的,通过将bit[11]取反得到two complement,然后FIR截取的12bit用同样的方法将补码转换为offset binary。
更换系数为1,0,0,0...,相当于不滤波,但是取FIR输出结果34bit的低12bit,即dout[11:0],显示没有问题。
各位大侠,给点建议。