【发布时间】:2015-02-28 18:23:10
【问题描述】:
我有两个数字 A 和 B,大小都不同,我需要使用 VHDL 将它们相乘。我不知道将它们相乘的确切逻辑。
【问题讨论】:
-
但是 * 运算符不起作用。
-
这就是为什么我写你应该弄清楚使用哪些类型......
标签: vhdl
我有两个数字 A 和 B,大小都不同,我需要使用 VHDL 将它们相乘。我不知道将它们相乘的确切逻辑。
【问题讨论】:
标签: vhdl
如果您尝试将两个std_logic_vector 相乘,那么* 将失败,
因为std_logic_vector 只是std_logic 元素的数组,但不是
具有继承的数字表示。
所以看看
ieee.numeric_stdVHDL
包裹。这定义了假设典型的 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,这样你可以得到更好的答案 未来,避免被否决或关闭答案。
【讨论】: