我的VHDL程序中的锁存器在哪里?

时间:2015-07-07 15:07:18

标签: vhdl fpga xilinx-ise

我在此代码中有一个涉及我的信号d_reg的锁存器。我是VHDL的新手,我似乎无法找到这个锁存器的原因。我已经为每个in_data案例分配了d_reg值。任何人都可以解释为什么我有一个闩锁,以及如何在将来防止这种情况?

我收到的警告是:

  

警告:Xst:1710 - FF / Latch <d_reg_0>(没有初始值)在块<delay_incrementor>中的常量值为0。在优化过程中将修整此FF / Latch。

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;

entity delay_incrementor is
    Port ( clk,reset: in STD_LOGIC;
           in_data : in  STD_LOGIC_VECTOR (7 downto 0);
           out_data : out  STD_LOGIC_VECTOR (7 downto 0);
           d : out  STD_LOGIC_VECTOR (25 downto 0));
end delay_incrementor;

architecture Behavioral of delay_incrementor is
  signal d_reg,d_next: std_logic_vector (25 downto 0);
begin
  --Register
  process(clk,reset)
  begin
    if reset='1' then
      d_reg <= (others => '0');
    elsif (clk='1' and clk'event) then
      d_reg <= d_next;
    end if;
  end process;

  --Next-State Logic
  d_next <= std_logic_vector(unsigned(d_reg) + "1001100010010110100000000") when in_data = "01010101" else
             std_logic_vector(unsigned(d_reg) + "1001100010010110100000000") when in_data = "01000100" else
             d_reg;
  out_data <= "00010111" when in_data /= "00000000" else
                (others=>'0');

  --Output Logic
  d <= d_reg;
end Behavioral;

1 个答案:

答案 0 :(得分:2)

XST警告1710只是所有内存元素(锁存器,触发器......)的常见警告。

警告提示您的FF具有常量值,因此可能{{1 }}输入或d时钟启用未使用或更改或修剪:)。

发现的锁存警告为XST Warning 737

  

警告:Xst:737 - 找到信号的n位锁存器。