1

我正在尝试在 Spartan-3E 开发板上编写一个非常简单的程序。我想读取滑动开关并使用滑动开关旁边的 LED 指示哪个开关处于打开位置。

这是我的代码:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;


entity Switch is
   PORT(a,b,c,d: IN std_logic; 
     a_ON,a_Off,b_ON,b_Off,c_ON,c_Off,d_ON,d_Off: OUT std_logic);
end Switch;

architecture Behavioral of Switch is

begin
  PROCESS (a)
  begin
    if a = '1' then
      a_ON <= '1';
    else 
      a_OFF <= '1';
    end if;
 END PROCESS;   
end Behavioral;

这是我的 *.ucf 文件:

NET "a" LOC = "L13" | IOSTANDARD = LVTTL | PULLUP ;
NET "b" LOC = "L14" | IOSTANDARD = LVTTL | PULLUP ;
NET "c" LOC = "H18" | IOSTANDARD = LVTTL | PULLUP ;
NET "d" LOC = "N17" | IOSTANDARD = LVTTL | PULLUP ;

NET "d_OFF" LOC = "F9" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ;
NET "d_ON" LOC = "E9" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ;
NET "c_OFF" LOC = "D11" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ;
NET "c_ON" LOC = "C11" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ;
NET "b_OFF" LOC = "F11" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ;
NET "b_ON" LOC = "E11" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ;
NET "a_OFF" LOC = "E12" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ;
NET "a_ON" LOC = "F12" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ;

这是我得到的错误:

PhysDesignRules:368 - 信号不完整。该信号不由设计中的任何源引脚驱动。

错误:PhysDesignRules:368 - 信号不完整。该信号不由设计中的任何源引脚驱动。

错误:PhysDesignRules:368 - 信号不完整。该信号不由设计中的任何源引脚驱动。

错误:PhysDesignRules:368 - 信号不完整。该信号不由设计中的任何源引脚驱动。

错误:PhysDesignRules:368 - 信号不完整。该信号不由设计中的任何源引脚驱动。

错误:PhysDesignRules:368 - 信号不完整。该信号不由设计中的任何源引脚驱动。

警告:PhysDesignRules:367 - 信号不完整。该信号不驱动设计中的任何负载引脚。

警告:PhysDesignRules:367 - 信号不完整。该信号不驱动设计中的任何负载引脚。

警告:PhysDesignRules:367 - 信号不完整。该信号不驱动设计中的任何负载引脚。

警告:PhysDesignRules:367 - 信号不完整。该信号不驱动设计中的任何负载引脚。

4

1 回答 1

3

您设计中的以下输出端口未连接到任何逻辑或以任何方式驱动:

b_ON,b_Off,c_ON,c_Off,d_ON,d_Off

您至少需要驾驶它们'0'才能通过 DRC。例如:

b_ON <= '0';

如果出于某种原因您真的不想驱动这些信号,您可以将它们设置为 mode inout,并使用以下命令驱动它们'Z'

port (
  b_ON : inout std_logic
);

...

b_ON <= 'Z';
于 2015-08-21T14:08:37.673 回答