【发布时间】:2014-08-23 09:18:12
【问题描述】:
我正在尝试编写一些 VHDL 代码,这些代码只是将 std_logic_vector 中的顺序位提供给 FSM 模型。但是,这些位似乎没有正确更新。为了解决这个问题,我使用了以下代码,我没有从向量中获取一点点,而是切换信号 x(我会得到一点点的同一个地方)。
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;
编辑: 看来我很困惑。我已经把它放回到试图一点一点地从向量中取出。这是输出。我会认为当 count 为 1 时,x 将采用 test1(1) 的值,即 1。
【问题讨论】:
-
“...... count 和 x 没有同时更新,即在我的时钟信号的上升沿上”是什么意思。 ?从波形来看,正如代码所预期的那样,
count和x确实在clk的上升沿更新。 -
x,count 是在上升沿更新。
-
是的,抱歉,我弄乱了我的时钟线。当我尝试从向量中取出位时,我已经用它输出的内容更新了问题。
-
后期编辑,代码匹配波形。当 count 为 1 x 时,在下一个时钟上升沿分配 test(1)。测试(1)是'0'。要让它从 MSB(测试的左元素)开始,您需要从 7 倒数到 0 或使用互补索引值来计数(7 - 计数),这相当于 3 位计数器的反转输出。
-
回答您自己的问题并接受或关闭问题。我们有很多僵尸问题。
标签: vhdl