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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3353|回复: 5

关于CIC滤波器溢出处理

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

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

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

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 13:41:22 | 显示全部楼层
以前都没怎么弄过这方面的,新手一枚,跪求指导啊...
 楼主| 发表于 2014-6-24 15:01:24 | 显示全部楼层
难道没有人遇到过这样的问题,还是你们在设计CIC的时候都是做了溢出处理的,你们做溢出处理的依据有是什么呢?
发表于 2014-6-25 16:02:22 | 显示全部楼层
回复 3# 挂在天边的鱼

你好  CIC 最好使用int类型做仿真计算最大的增益  (D*M)^N
中间的位宽需要限制在Bin+[LOG2((D*M)^N)]
 楼主| 发表于 2014-7-3 13:46:53 | 显示全部楼层
回复 4# qsj8362234


   为什么不能用双精度的进行仿真呢,CIC滤波器并没有说明一定要进行截位,就目前的5级CIC的结构来说,肯定不可能溢出..那为什么会失真呢?
发表于 2014-7-5 13:43:49 | 显示全部楼层
回复 5# 挂在天边的鱼


   浮点可以用的,你自己debug下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2025-3-12 18:47 , Processed in 0.027768 second(s), 7 queries , Gzip On, Redis On.

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