信号<n1 <1> _IBUF>不完整</n1 <1>

时间:2010-11-02 22:18:57

标签: vhdl

我正在尝试编写VHDL模块,但我遇到了一些输入问题,这是我的代码:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
--use ieee.std_logic_arith.all;
use ieee.std_logic_signed.all;


entity binary_add is
    port( n1 : in std_logic_vector(3 downto 0);
    n2 : in std_logic_vector(3 downto 0);
    segments : out std_logic_vector(7 downto 0);
    DNout : out std_logic_vector(3 downto 0));

end binary_add;

architecture Behavioral of binary_add is
begin

DNout <= "1110";

process(n1, n2)

variable x: integer;


begin

x:= conv_integer(n1(3)&n1(2)&n1(1)&n1(0)) + conv_integer(n2(3)&n2(2)&n2(1)&n2(0));

if(x = "0") then

segments <= "10000001";

elsif(x = "1") then

segments <= "11001111";

else

segments <= "00000000";

end if;

end process;

end Behavioral;

我收到了这些错误:

WARNING:PhysDesignRules:367 - The signal <n1<1>_IBUF> is incomplete. The signal
   does not drive any load pins in the design.
WARNING:PhysDesignRules:367 - The signal <n1<2>_IBUF> is incomplete. The signal
   does not drive any load pins in the design.
WARNING:PhysDesignRules:367 - The signal <n1<3>_IBUF> is incomplete. The signal
   does not drive any load pins in the design.
WARNING:PhysDesignRules:367 - The signal <n2<1>_IBUF> is incomplete. The signal
   does not drive any load pins in the design.
WARNING:PhysDesignRules:367 - The signal <n2<2>_IBUF> is incomplete. The signal
   does not drive any load pins in the design.
WARNING:PhysDesignRules:367 - The signal <n2<3>_IBUF> is incomplete. The signal
   does not drive any load pins in the design.
WARNING:Par:288 - The signal n1<1>_IBUF has no load.  PAR will not attempt to route this signal.
WARNING:Par:288 - The signal n1<2>_IBUF has no load.  PAR will not attempt to route this signal.
WARNING:Par:288 - The signal n1<3>_IBUF has no load.  PAR will not attempt to route this signal.
WARNING:Par:288 - The signal n2<1>_IBUF has no load.  PAR will not attempt to route this signal.
WARNING:Par:288 - The signal n2<2>_IBUF has no load.  PAR will not attempt to route this signal.
WARNING:Par:288 - The signal n2<3>_IBUF has no load.  PAR will not attempt to route this signal.
WARNING:Par:283 - There are 6 loadless signals in this design. This design will cause Bitgen to issue DRC warnings.

错误看起来很复杂,但实际上它说,我认为,无法路由我的n1和n2信号的其他3个输入。我不知道为什么会这样,但我想要做的就是将n1和n2有符号数字的总和显示为7段显示。如果有人能帮助我弄清楚这个问题,我会非常感激。

1 个答案:

答案 0 :(得分:3)

首先:不要使用std_logic_arithstd_logic_signed - 我written about why not。 第二:你已经创建了一个异步过程,这在FPGA中并不是很好的做法,它是以同步方式设计使用的(并且工具希望你使用)。创建时钟输入并使用它。您可以异步执行此操作,但在您确实知道您正在做什么之前,请避免它。一旦你真正知道自己在做什么,你很可能也会避免它,因为你明白它会是多么令人讨厌:)

我的端口为signed类型和use ieee.numeric_stdd.all;。甚至在输入端口上使用integer类型。如果这是顶级块,您需要放置一个包装器,在最外面的引脚上取std_logic_vectors,将它们转换为整数并将它们输入到您在上面编写的块中:

n1 <= to_integer(signed(n1_pins));

然后你需要做这样的事情......

architecture Behavioral of binary_add is
begin
DNout <= "1110";
process(clk)
  variable x: integer;
begin
  x:= n1+n2;
  case x
    when 0 => segments <= "10000001";
    when 1 => segments <= "11001111";

或创建一个常量数组以将整数转换为7段并执行

segments <= int_to_7seg(x);