2014-10-01 114 views
0

我一直在试图给输出端口分配一个信号值。当我模拟设计时,我得到了适当的信号输出秒数,但只要我将信号值分配到输出端口,它就会给我一个警告。此警告粘贴在下面。我曾尝试使用信号和outport保持std_logic但仍然得到相同的错误。如何将信号值分配给输出端口?

我相信你会有我的答案。

在此先感谢。

FF/Latch在块中具有恒定值0。
该FF/Latch将在优化过程中进行修剪。警告:Xst:1896 - 由于其他FF/Latch修剪,FF/Latch在块中具有恒定值0。
该FF/Latch将在优化过程中进行修剪。警告:Xst:1896 - 由于其他FF/Latch修剪,FF/Latch在块中具有恒定值0。
该FF/Latch将在优化过程中进行修剪。警告:Xst:1896 - 由于其他FF/Latch修剪,FF/Latch在块中具有恒定值0。
该FF/Latch将在优化过程中进行修剪。警告:Xst:1896 - 由于其他FF/Latch修剪,FF/Latch在块中具有恒定值0。
该FF/Latch将在优化过程中进行修剪。警告:Xst:1896 - 由于其他FF/Latch修剪,FF/Latch在块中具有恒定值0。
该FF/Latch将在优化过程中进行修剪。警告:Xst:1896 - 由于其他FF/Latch修剪,FF/Latch在块中具有恒定值0。
该FF/Latch将在优化过程中进行修剪。警告:Xst:1896 - 由于其他FF/Latch修剪,FF/Latch在块中具有恒定值0。
该FF/Latch将在优化过程中进行修剪。

这是我的代码!

library IEEE; 
    use IEEE.STD_LOGIC_1164.ALL; 
    use IEEE.STD_LOGIC_ARITH.ALL; 
    use IEEE.STD_LOGIC_UNSIGNED.ALL; 

    entity clock is 
     port (CLKin: in std_logic; 
       CLKout: out std_logic); 
    end clock; 

    architecture arch of clock is 

     signal counter: integer:=0; 
     signal temp : std_logic := '1'; 

    begin 

     process(CLKin,counter,temp) 
     begin 
     if(CLKin'event and CLKin='1') then 
      counter <=counter+1; 
      if (counter = 50000000) then 
      temp <= NOT temp; 
      counter<=0; 
      CLKout <= temp; 
      end if; 
     end if; 
     end process; 
    end arch; 
+1

您的问题缺乏足够的信息。你能发布你的代码吗,至少? – fru1tbat 2014-10-01 17:00:58

+0

警告表示您的任务将在某处(基本上锁存器正在优化)。 – 2014-10-01 17:21:24

+1

有关具有相同警告的成功问题的示例,请参见[VHDL综合 - FF/Latch常量值](http://stackoverflow.com/questions/16087307/vhdl-synthesis-ff-latch-constant-value)。注意变量的声明(在这种情况下),整数不受约束导致所有的修整。VHDL代码实际上是需要答案的。 – user1155120 2014-10-01 18:19:45

回答

0

我想这是因为你的是happend:

signal counter: integer:=0; 
signal temp : std_logic := '1'; 

合成

0

我同意Serhii Cookie这也是什么工具试图警告你中被忽略的初始值。初始语句不合成2,用于合成的适当版本的代码必须包含具有此效果的复位信号。 所以,你正在寻找的东西,如:

IF reset='0' THEN 
     -- Reset the counter and assign initial values 
     signal counter <= 0; 
     signal temp <= '1'; 
    ELSIF rising_edge(clk) THEN 
     -- do the actual processing 
    END IF; 

..at你的进程的开始。

²即它仅用于模拟和测试目的,因此被大多数合成工具忽略。