VHDL中两个不同位数的乘法

Multiplication of two different bit numbers in VHDL

我有两个不同大小的数字 A 和 B,我需要使用 VHDL 将它们相乘。我不知道将它们相乘的确切逻辑。

如果您尝试将两个 std_logic_vector 相乘,则 * 将失败, 因为 std_logic_vector 只是一个 std_logic 元素的数组,但不是 具有继承的数值表示。

所以看看 ieee.numeric_std VHDL 包裹。这定义了假设典型的 unsignedsigned 类型 数组的数值表示,以及这些类型的运算符, 包括 *。使用这个包你可以做:

use ieee.numeric_std.all;
...
c <= std_logic_vector(unsigned(a) * unsigned(b));

请注意,对于 *c'lengtha'length + b'length

顺便说一句。欢迎来到 Stack Overflow,请花一些时间在 Stack Overflow 上 Help Center,所以你可以在 未来,避免被否决或关闭答案。