微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微波和射频技术 > RFIC设计学习交流 > 求助关于CIC滤波器的输出字长问题

求助关于CIC滤波器的输出字长问题

时间:10-02 整理:3721RD 点击:
设计了一个3阶256倍抽取的CIC滤波器,根据CIC的字长公式,Bout=Bin-1+3*log256=1-1+3*8=24位。
也就是说中间各级的运算结果字长采用24bit的话可以保证最终输出的精度吧?
现在问题是,我的ADC是16bit精度的,所以数字滤波器的最终输出应该是16位的,那么怎么从CIC的24bit输出得到最终的16bit的ADC输出呢?
ADI有一款芯片的手册中有相关的verilog代码,它是将CIC的24位输出直接截掉低8位得到最终的16位输出,但是我用这种方法尝试的结果是最终输出的精度只有14位,而直接拿24位的数据结果处理的话可以得到比较理想的精度(>=16bit)
求大神指导!

ADI的最后的代码如下:
always @ (posedge word_clk) begin
DATA[15] <= diff3[23];
DATA[14] <= diff3[22];
DATA[13] <= diff3[21];
DATA[12] <= diff3[20];
DATA[11] <= diff3[19];
DATA[10] <= diff3[18];
DATA[9] <= diff3[17];
DATA[8] <= diff3[16];
DATA[7] <= diff3[15];
DATA[6] <= diff3[14];
DATA[5] <= diff3[13];
DATA[4] <= diff3[12];
DATA[3] <= diff3[11];
DATA[2] <= diff3[10];
DATA[1] <= diff3[9];
DATA[0] <= diff3[8];
end
endmodule
其中diff3是第三个差分器的输出,是24位的

你16bit数据最后是怎么处理得出的14bit精度?

作FFT频谱分析啊

看了相关资料,这个truncation error好像是无法避免的?
那对于2阶的SDM,岂不是说3阶CIC无法完成滤波的功能?求大神解惑

你描述的现象不合理啊,直接截取高位和量化是一个性质,怎么能导致有效位下降这么多呢?

我也觉得很奇怪啊
实际上我需要做一个2阶SDM,过采样暂定512,在SIMULINK中搭完一个基本模型后仿真,对脉冲密度流作FFT可以得到103dB的精度。
然后设计了一个3阶的CIC,直接512抽取,中间寄存器的字长取的是27位。将SIMULINK仿真得到的PDM作为CIC的输入,得到27位的输出结果Yout1,截取高16位作为Yout2
然后对Yout1和Yout2分别作FFT,Yout1的结果是105dB,而Yout2的结果只有90dB
就是上面这个样子,有什么原理性的错误么?
因为最终是想要一个16bit的结果,所以27位不能全保留,应该就是保留高16位吧。

顶一顶

问题解决了吗?

顶一下 同问


问题解决了吗,我最近也遇到同样问题,请问如何评估最终CIC输出数据的位宽,我cic中间字长33bit,我需要将输出位宽降到24bit以下,但目前还不清楚具体怎么确定这个位宽,请大神答疑解惑,不甚感激

请问一个问题,三阶CIC滤波器是指CIC滤波器的级数为3级么?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top