我有两个不同大小的数字A和B,我需要使用VHDL将它们相乘。我不知道乘以它们的确切逻辑。
答案 0 :(得分:8)
如果您尝试将两个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,所以你可以得到更好的答案 未来,避免被投票或关闭答案。