代码之家  ›  专栏  ›  技术社区  ›  Koli

如何使用VHDL在组合逻辑中并发执行语句?

  •  1
  • Koli  · 技术社区  · 8 年前

    我想知道如何使用VHDL在组合逻辑中并发执行信号分配语句?例如,对于以下代码,这三条语句应该同时运行。我所怀疑的是,当我运行模拟时,“y”输出信号是如何立即改变的,尽管如果同时运行语句,“y”将看不到“wire1”和“wire2”的效果(仅当语句执行多次时)。

    entity test1 is port (a, b, c, d : in bit; y : out bit);
    end entity test1;
    ------------------------------------------------------
    architecture basic of test1 is
    signal wire1, wire2 : bit;
    begin
        wire1 <= a and b;
        wire2 <= c and d;
        y <= wire1 and wire2;
    end architecture basic;
    
    1 回复  |  直到 8 年前
        1
  •  3
  •   PaulR    8 年前

    由于VHDL用于模拟数字电路,因此其工作方式必须与实际电路类似,在实际电路中(在模拟中通常忽略一个小延迟之后),电路会连续跟踪其输入。

    我假设您想知道实现是如何实现这种行为的:

    模拟器将跟踪哪个信号取决于哪个其他符号,并在其中一个输入改变时重新计算表达式。

    那么什么时候 a 变化, wire1 将更新,并反过来触发更新 y . 只要有必要进行组合更新,这种情况就会持续下去。因此,在模拟中,更新确实井然有序,尽管没有经过模拟时间。此类更新之间的“时间”通常称为“增量周期”。