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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4450|回复: 12

[求助] 求助,关于数字下变频ddc中fir滤波器的FPGA实现

[复制链接]
发表于 2013-3-3 18:37:31 | 显示全部楼层 |阅读模式

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

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

x
在用verilog写的时候,由于fir滤波器有的结构需要乘累加,在做其中加法运算的时候,为了防止溢出,是不断扩展加法器的位宽?还是用的固定位宽?或者用其他方法来控制溢出?希望做过相关课题的大神指点一下,先谢过了~
 楼主| 发表于 2013-3-3 21:25:15 | 显示全部楼层
自己顶一下。。。
 楼主| 发表于 2013-3-3 23:36:05 | 显示全部楼层
再顶顶。。。
发表于 2013-3-4 16:55:10 | 显示全部楼层
需要定义Round和Overflow的规则,通常在运算过程中扩展一定的位宽,在结果处再得到实际所需精度的输出。
发表于 2013-3-4 18:00:33 | 显示全部楼层
同意LS,相加就要扩展一位,在最后再截取相应长底,如高几位、低几位砍掉,值溢出就取正的最大数、负的最小数,小数位四舍五入,注意正负号。
 楼主| 发表于 2013-3-4 23:15:30 | 显示全部楼层
回复 4# beforeabc

      谢谢耐心回复哈,我想了下,还是有些不懂,你说的那个Overflow我理解的是在一定位宽下,正负数的溢出,然后用控制电路去控制,不知道对不,那个Round就不理解了,只是在matlab的时候用过;
      运算过程中扩展一定位宽这个怎么确定啊?我想把那个系数弄成可变的,写到ram中,阶数也想设计成可变的,阶数低了还好说,但是
在阶数太高的时候,累加位宽就不知道该怎么办了。
      最后截取的位宽当然是越宽越好,一定的精度这里就不知道怎么取舍了。
      还望再指点下,谢谢哈
 楼主| 发表于 2013-3-4 23:32:43 | 显示全部楼层
回复 5# eaglelsb


     非常感谢解答哈,我看了你们两位的回复,考虑了下,我理解的是在一定位宽下,正负数的溢出,然后用控制电路去控制,不知道对不,还有就是中间的位宽在滤波器阶数较高的时候怎么处理,我看有的论文上说到128阶的,但是是用DA算法做的,但是如果滤波系数可变的话,那样就不够灵活了,所以就想问下,在阶数较高的时候用直接型结构或者转置型,中间系数位宽怎么处理。谢谢哈
发表于 2013-3-5 12:49:22 | 显示全部楼层
回复 7# 狂奔~蜗牛


   系数位宽根据你自己的算法需要决定啊,比如你用matlab算出一组系数,决定好多少位,verilog就用多少位,它只是把算法翻译成电路而已。比如用16位,那就都用16位了。
你想系统可变,这个也不难,比如有两组系数,你可以放在RAM或寄存器里,甚至可以调试中手动输出,设置成select方式,到时直接切换下就好,最好位宽都一致,这样实现难度就小些。
发表于 2013-3-5 13:02:33 | 显示全部楼层
回复 6# 狂奔~蜗牛


主要还是看算法本身是怎么做的。如果都是自己写的算法,就看加法的个数进行扩展,比如两个数相加就最高位扩展一位,3个或者4个数相加就最高位扩展2位,5-8个数相加就扩展3位。以此类推,简单的说,加数的个数以2为底取对数,就是应该扩展的位数。
 楼主| 发表于 2013-5-24 00:40:00 | 显示全部楼层
回复 9# xiaoxiaofeifan

呵呵,谢谢你的回答哈,之前还想着加一个数扩一位呢,看了你的回复之后,恍然大悟,四个同样位宽的数相加才需扩2位,8个同样位宽的数相加需扩3位。。。这个好像用加法树来理解更好一些
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-5-9 01:59 , Processed in 0.031261 second(s), 9 queries , Gzip On, Redis On.

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