VHDL模拟时序行为

VHDL模拟时序行为,vhdl,Vhdl,我正试图编写一些VHDL代码,将std_逻辑_向量中的顺序位输入FSM模型。但是,位似乎没有正确更新。为了尝试解决这个问题,我有下面的代码,这里不是从向量中得到一点信息,而是切换信号x(与我得到一点信息的位置相同) clk正如David在评论中指出的,代码运行良好。问题是我不知道std_逻辑_向量中的位顺序。你所说的“…计数和x不同时更新,即在我的时钟信号的上升沿上”是什么意思?从波形来看,正如代码所预期的,计数和x确实在clk的上升沿更新。x,计数在上升沿更新。是的,对不起,我的时钟线混淆了。

我正试图编写一些VHDL代码,将std_逻辑_向量中的顺序位输入FSM模型。但是,位似乎没有正确更新。为了尝试解决这个问题,我有下面的代码,这里不是从向量中得到一点信息,而是切换信号x(与我得到一点信息的位置相同)


clk正如David在评论中指出的,代码运行良好。问题是我不知道std_逻辑_向量中的位顺序。

你所说的“…计数和x不同时更新,即在我的时钟信号的上升沿上”是什么意思?从波形来看,正如代码所预期的,
计数
x
确实在
clk
的上升沿更新。x,计数在上升沿更新。是的,对不起,我的时钟线混淆了。我已经更新了问题,当我尝试从向量中提取位时,它输出了什么。编辑后,代码与波形匹配。当计数为1时,在下一个上升时钟边缘上分配测试(1)。测试(1)为“0”。要让它从MSB(测试的左元素)开始,您需要从7倒计时到0,或者使用互补索引值进行计数(7-count),这相当于3位计数器的反向输出。回答您自己的问题并接受它或关闭该问题。我们有很多僵尸问题。
    clk <= NOT clk after 10 ns;
    process(clk) 
        begin
            if count = 8 then
                assert false report "Simulation ended" severity failure;
            elsif (clk = '1') then
                x <= test1(count);
                count <= count + 1;
            end if;         
    end process;