为啥 Xilinx 乘法器 IP 产品位宽有一个额外的位?

Posted

技术标签:

【中文标题】为啥 Xilinx 乘法器 IP 产品位宽有一个额外的位?【英文标题】:Why does Xilinx's Multiplier IP product bitwidth have an extra bit?为什么 Xilinx 乘法器 IP 产品位宽有一个额外的位? 【发布时间】:2022-01-09 06:17:41 【问题描述】:

Xilinx 的复数乘法器 IP 文档 (PG104) 对输入和输出位宽设置有这样的说法:

输出宽度:选择输出产品实部和虚部的宽度 成分。这些值会自动初始化以提供全精度 设置 A 和 B 操作数宽度时的乘积。 复合体的自然宽度 乘法是输入宽度的总和加一。 如果输出宽度设置为 小于这个自然宽度,最低有效位被截断或四舍五入,如 由下一个 GUI 字段选择。

(斜体是我的。)所以如果我将一个 8 位数字乘以另一个 8 位数字,它希望全精度输出是一个 17 位数字。输入和输出假定为有符号整数。

8位能表示的最大有符号数是-128(0x80)。 128*128=16384 或 0x4000,即 15 位。添加一个符号位,我们就可以安全地使用 16 位输出了。

最大的正数是 127 (0x3F)。 127*127=16129 或 0x3F01。同样,16 位是安全的。

我错过了什么?为什么他们坚持要多加一点?

【问题讨论】:

【参考方案1】:

这是一个复数乘法。这是两个乘法之和。

pr = ar x br - ai x bi

pi = ar x bi + ai x br

总和加上额外的位。

【讨论】:

以上是关于为啥 Xilinx 乘法器 IP 产品位宽有一个额外的位?的主要内容,如果未能解决你的问题,请参考以下文章

Xilinx Vivado的使用详细介绍:使用IP核

ise中某个ip核数据手册在哪查看

关于fpga的除法

Verilog中的浮点乘法问题

明德扬至简设计法设计的IP核加法器

明德扬至简设计法设计的IP核加法器