为啥 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 产品位宽有一个额外的位?的主要内容,如果未能解决你的问题,请参考以下文章