微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 乘法器的结果什么时候需要截位? 怎么截位?

乘法器的结果什么时候需要截位? 怎么截位?

时间:10-02 整理:3721RD 点击:
两个16位有符号数相乘,结果32位,截取18位作为CIC输入,怎么截?使用高18位 ?
我仿真了一种情况是20M DDS sin * 19.5M DDS cos信号,发现符号位与次高位保持一致,要不要保留符号位,从次 次高位往下保留,比如
cic_din = {product[31], product[29:13] }?

用最大的数7fff*7fff= 3FFF0001,是不是足以证明可以舍去次高位啊?

是这样的,正确,要相信自己

16'h8000 * 16'h8000 = 32'h4000_0000;
也就是:
(-32768) * (-32768 ) = 1073741824
最高位是0,次高位是1.



理论上存在这种可能,但在实际应用中,输入信号的幅度到了最小负值肯定已经溢出了,单单为了最小负值多取一位得不偿失,我在设计中都是舍掉次高位的,当然硬件资源很多情况下还是全取也是可以的
舍不舍掉次高位还要看自己的算法设中系统归一化增益或者幅度是否一定小于1,比如说滤波器增益要小于0db,要考虑通带纹波等等


谢谢!我现在采用的策略是乘法器没舍,在最后一级FIR(2抽)中舍了次高位和次次高位后留下了16位,仿真发现了符号位和他们都是一样的。我仿真发现了乘法器舍掉次高位+FIR舍掉次高位 和FIR舍掉次高位和次次高位效果一样。满幅输出5d7。
我的结构是16位有符号乘法器 + CIC(25抽) + FIR (2抽)

再舍一位就溢出了!5d7跟 满幅7ff还是差了不少,5d7是用输入信号DDS 20M 和 中心频率可设的DDS cos19.9M混频 的条件下仿真出来的!

怎么更改设计能让结果更接近满幅输入 满幅输出呢?

作仿真的时候,是可以达到理论最大最小,而工程实现要考虑的因素就太多了,滤波器的纹波,电缆接头传输线的差损,混频器非线性,放大器的压缩点,器件高低温特性等等,模拟部分的幅度变化因素很多,一定要考虑的,到了数字部分确实可以考虑系统的幅度最小损失,也就是尽可能满幅(接近0db增益),这个反而很简单,滤波器增益和平坦度控制好,所有运算中间结果可以多取几位,到最后一级调整系统增益为无限接近并小于1的值就好,如果能确保系统输入幅度小于1,系统增益还可以大于1,方法就是用matlab或者手工算一下,都不麻烦



   谢谢!下午我用板卡和信号源实测一下!

学习了,解了心中的些许疑惑,谢谢

学习下~

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

网站地图

Top