VHDL中两个不同位数的乘法

时间:2015-02-28 08:44:36

标签: vhdl

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

1 个答案:

答案 0 :(得分:8)

如果您尝试将两个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,所以你可以得到更好的答案 未来,避免被投票或关闭答案。