16 位乘法器 vhdl 代码合成错误

问题描述

我想写一个16bit * 16bit的乘法代码。这是我的代码:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity mul is
   port
   (
      A,B: IN INTEGER RANGE -32768 TO 32767;

      C: OUT INTEGER RANGE -2147483648 TO +2147483647
   );
end mul;

architecture Behavioral of mul is
begin

   C <= A * B;

end behavioral;

但是当我尝试在 xilinx isim 上合成代码时,我收到此错误:

ERROR:Bitgen:342 - 此设计包含具有位置 (LOC) 的引脚 非用户分配或非用户分配的 I/O 标准 (IOSTANDARD)。 这可能会导致 I/O 争用或与电路板电源不兼容或 连接影响性能、信号完整性或在极端情况下 导致设备或其连接的组件损坏。到 防止此错误,强烈建议指定所有引脚位置和 I/O 标准,以避免潜在的争用或冲突,并允许适当的 比特流创建。将此错误降级为警告并允许比特流 使用未指定的 I/O 位置或标准创建,您可以应用 跟随 bitgen 开关:-g UnconstrainedPins:Allow ERROR:Bitgen:157 - Bitgen 将因上述错误而终止。

解决方法

实体中定义的所有端口都应具有使用 ucf 文件定义的引脚分配。如果您缺少 ucf 文件,该工具将继续自行放置引脚。错误消息中明确说明了这一点。

NET"A(0)"                LOC ="AB16"       | IOSTANDARD ="LVTTL";
NET"A(1)"                LOC ="AB16"       | IOSTANDARD ="LVTTL";
...

在您的示例中,A 和 B 的宽度是 16 位,C 是 32 位。因此,您需要为所有这些分配正确的引脚位置和 IO 标准。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...