VHDL写警告

VHDL写警告,vhdl,Vhdl,1.8位乘法器 IEEE库; 使用IEEE.STD_LOGIC_1164.ALL; 使用ieee.std_logic_arith.all; 使用ieee.std_logic_unsigned.all; 实体M8是 端口(M1:标准逻辑向量(7到0); M2:标准逻辑向量(7到0); Mout:out标准逻辑向量(15到0) ); 端M8; m8is的体系结构 开始 过程(M1,M2) 变量A1:std_逻辑_向量(17到0); 开始 A1(17向下至0):=“0000000000”和M1(7向

1.8位乘法器

IEEE库;
使用IEEE.STD_LOGIC_1164.ALL;
使用ieee.std_logic_arith.all;
使用ieee.std_logic_unsigned.all;
实体M8是
端口(M1:标准逻辑向量(7到0);
M2:标准逻辑向量(7到0);
Mout:out标准逻辑向量(15到0)
);
端M8;
m8is的体系结构
开始
过程(M1,M2)
变量A1:std_逻辑_向量(17到0);
开始
A1(17向下至0):=“0000000000”和M1(7向下至0);
对于1到9循环中的N
如果A1(0)='1',则
A1(17至9):=A1(17至9)+“0”+M2(7至0);
如果结束;
A1(17向下至0):=“0”和A1(17向下至1);
端环;

Mout正如jeff所指出的,你有一种非常模糊的方法来实现乘数。很可能合成工具对此感到困惑

而不是

use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
D<="00000000000000000000000000000000";

use ieee.numeric_std.all; 
而不是

std_logic_vector(n-1 downto 0) 
使用

然后你可以用*乘以

离题,但不是

use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
D<="00000000000000000000000000000000";

DSo问题是什么?此外,如果您想编写乘法器,最简单的方法是为您的操作数和结果类型指定有符号的,然后简单地编写
x使用代码示例,而不是Javascript/HTML/CSS片段来包含您的VHDL代码。你有具体的问题吗?见,并考虑采取。你的警告没有证据。