在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 12349|回复: 15

[讨论] 关于CIC滤波器溢出处理

[复制链接]
发表于 2014-6-24 16:35:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
这两天在弄CIC滤波器,在调试自己搭建的CIC滤波器过程中,发现自己搭建的CIC滤波器和mfilter.cicdecim的结果总是不一致。
最后在同事的帮助下找到了问题所在,需要对CIC中间计算结果进行溢出处理,最后才能得到想要的结果。
问题来了,我搭建的CIC滤波器参与运算的数据类型都是double的,我也统计了中间计算结果最大的也就5e18,远远没有达到运算溢出。那为什么还是要对中间运算结果进行类似定点补码运算的溢出处理呢?
而且如果进行溢出处理的阈值设置的太大或者太小也会造成信号严重失真。
比如我给的激励中最大值为0.2086,CIC为5级2倍抽取,那么就CIC的增益来说:运算中的最大值为0.2086*2^5 = 6.6656。
如果我的溢出阈值的绝对值小于6.6656,经过CIC之后的信号就会存在比较明显的失真。
另外当溢出阈值大于2^32以后,经过CIC之后的信号也会渐渐开始失真,越大失真越严重。

有没有哪位大神能解释一下为什么会有这样的现象出现,溢出阈值取多大是最合适的?
 楼主| 发表于 2014-6-24 16:35:56 | 显示全部楼层
在MATLAB板块发了半天没人理,还是只有来这里寻找大神啊
发表于 2014-6-24 23:01:13 | 显示全部楼层
如果你的cic每一级的位宽都能够满足输出最大增益的幅度,内部的溢出处理是完全没有必要的。
参考下这篇文章吧:
http://www.dsprelated.com/showcode/269.php
 楼主| 发表于 2014-6-25 10:11:21 | 显示全部楼层
回复 3# cyqtomb


    我用的matlab做的CIC,matlab内部运算都是双精度浮点的,肯定是不会出现溢出的问题,但是如果不做溢出处理,出来的频谱就完全不对了。但是中间值肯定有超过增益后最大幅度的,难道一定要按照增益最大幅度做溢出处理?
发表于 2014-6-25 12:42:32 | 显示全部楼层
你用matlab的filterbuilder做一个定点的cic看看吧,你就明白了。
发表于 2014-6-25 22:00:15 | 显示全部楼层
大神果然都出自最底层的设计师!
发表于 2014-6-26 23:21:08 | 显示全部楼层
m是不会溢出。
 楼主| 发表于 2014-6-27 10:42:39 | 显示全部楼层
回复 5# cyqtomb


    定点的CIC我也做了的,如果你把位宽设置的很大,也就是溢出阈值设置很大,还是是会出现很严重的失真。
   你前面给的那个链接我也看了,跟我说的这个问题应该没有什么关联,只是关于怎样节省资源的一篇文章。
   可以直接回答一下我提出的问题吗?
 楼主| 发表于 2014-6-27 10:45:13 | 显示全部楼层
回复 7# fascinate_lyd98


    m确实不会溢出,但是就是因为不会溢出反而带来了会导致信号失真,事实上MATLAB里面只提供了定点的CIC函数和模型,并不支持浮点CIC,我是根据CIC的结构自己写的,调试的蛮折腾的,因为单音信号以及单位脉冲信号都没有问题。
发表于 2014-6-30 16:04:10 | 显示全部楼层
本帖最后由 cyqtomb 于 2014-6-30 16:05 编辑

关于你说的失真,我觉得原因出在matlab的浮点数表示上。因为cic滤波器,其本质是与其原型滤波器--矩形窗滤波器(假设是M抽头)具有一样响应的,只不过CIC是其递归实现而已。这就要求积分器部分跟梳状滤波器部分不能有任何的数值误差,才能将以前的样点全部减掉。如果用浮点表示,积分器输出到达一定的大小,其浮点数的尾数应该会有舍入的动作,导致积分器输出有误差。从而导致失真。为什么定点没有问题?因为它利用了二进制补码的特点,积分器最终会有溢出,但是这个溢出,不会导致最终的结果出错,即梳状滤波器的输出是正确的。当然,对积分器的位宽不是没有要求的,积分器的位宽必须大于等于(输入位宽+(用于表示CIC M抽头原型滤波器的增益所需要的位宽))。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-28 22:30 , Processed in 0.027712 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表