Xilinx模拟器错误或设计错误?

时间:2016-08-10 09:44:09

标签: vhdl xilinx vivado

我在VHDL中有以下代码:

process(RESET_N, CLK)
begin
    if RESET_N = '0' then
        COUNTER <= X"0";
    else  
        if rising_edge(CLK) then
          if EN = '0' then
             COUNTER <= std_logic_vector(to_unsigned(to_integer(unsigned(COUNTER)) + 1, 4));
          end if;
       end if;
    end if;
end process;

有一个不应该发生的转变。我错了吗?

enter image description here

请帮助我Xilinx当然不能!模拟器是Vivado 2016.2。

1 个答案:

答案 0 :(得分:0)

好的,这就是我发现的。事实上,这是我的测试台故障。

Xilinx没有人能够指出这一点。我没有在这里提交的Testbench是错误的。

我设计它的方式(认为没问题)当EN信号变低时,CLK_EN信号被触发。然后CLK_EN信号允许将MAIN_CLK映射到屏幕截图中可以看到的CLK。

所以宁愿这样做

CLK_process :process
begin     
    CLK <= '0'; wait for CLK_period/2;
    CLK <= '1'; wait for CLK_period/2;
end process;

FTDI_CLK    <= CLK when CLK_EN = '1' else 'Z';

你应该这样做:

MAIN_CLK_process :process
begin
    MAIN_CLK<= not MAIN_CLK; wait for CLK_period/2;
end process;

CLK_process :process
begin
    wait for CLK_period/2;
    if CLK_EN = '1' then
        CLK <= not CLK;
    else
        CLK <= '0';
    end if; 
end process;

据我所知,我提供的信息不完整。为此道歉。