如何将信号值分配给输出端口?

时间:2014-10-01 16:51:59

标签: vhdl xilinx synthesis

我一直在尝试将信号值分配给输出端口。当我模拟设计时,我得到正确的信号输出秒,但是一旦我将信号值分配给输出端口,它就会给我一个警告。此警告粘贴在下方。我已经尝试使用信号和输出保持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;

2 个答案:

答案 0 :(得分:0)

我认为这是因为你的:

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

合成期间忽略初始值

答案 1 :(得分:0)

我同意Serhii Cookie,这也是该工具试图警告你的内容。初始语句不合成²,用于合成的代码的正确版本必须包含具有此效果的复位信号。 所以你正在寻找类似的东西:

    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;

..在您的流程开始时。

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