VHDL中两个不同位数的乘法

zai*_*nab -1 vhdl

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

Mor*_*mer 10

如果你试图乘以2 std_logic_vector,那么*将失败,因为std_logic_vector它只是一个std_logic元素数组,但没有继承数字表示.

那么看看 ieee.numeric_stdVHDL包.这定义unsignedsigned类型假定数组的典型数字表示,以及这些类型的运算符,包括*.使用此包,您可以:

use ieee.numeric_std.all;
...
c <= std_logic_vector(unsigned(a) * unsigned(b));
Run Code Online (Sandbox Code Playgroud)

请注意,*c'lengthIS a'length + b'length.

顺便说一句.欢迎使用Stack Overflow,请在Stack Overflow 帮助中心花一些时间 ,以便将来获得更好的答案,避免被拒绝或得到答案.

  • 谢谢..那帮助了我.. !! (2认同)