VHDL中两个不同位数的乘法
Multiplication of two different bit numbers in VHDL
我有两个不同大小的数字 A 和 B,我需要使用 VHDL 将它们相乘。我不知道将它们相乘的确切逻辑。
如果您尝试将两个 std_logic_vector
相乘,则 *
将失败,
因为 std_logic_vector
只是一个 std_logic
元素的数组,但不是
具有继承的数值表示。
所以看看
ieee.numeric_std
VHDL
包裹。这定义了假设典型的 unsigned
和 signed
类型
数组的数值表示,以及这些类型的运算符,
包括 *
。使用这个包你可以做:
use ieee.numeric_std.all;
...
c <= std_logic_vector(unsigned(a) * unsigned(b));
请注意,对于 *
,c'length
是 a'length + b'length
。
顺便说一句。欢迎来到 Stack Overflow,请花一些时间在 Stack Overflow 上
Help Center,所以你可以在
未来,避免被否决或关闭答案。
我有两个不同大小的数字 A 和 B,我需要使用 VHDL 将它们相乘。我不知道将它们相乘的确切逻辑。
如果您尝试将两个 std_logic_vector
相乘,则 *
将失败,
因为 std_logic_vector
只是一个 std_logic
元素的数组,但不是
具有继承的数值表示。
所以看看
ieee.numeric_std
VHDL
包裹。这定义了假设典型的 unsigned
和 signed
类型
数组的数值表示,以及这些类型的运算符,
包括 *
。使用这个包你可以做:
use ieee.numeric_std.all;
...
c <= std_logic_vector(unsigned(a) * unsigned(b));
请注意,对于 *
,c'length
是 a'length + b'length
。
顺便说一句。欢迎来到 Stack Overflow,请花一些时间在 Stack Overflow 上 Help Center,所以你可以在 未来,避免被否决或关闭答案。