Vhdl 多信号等待 信号a:位:='1';信号b:位:='0';信号c:位:='0'; 开始 过程 变量d:位:='0'; 开始 如果是(a='1')或(b='0'),那么a

Vhdl 多信号等待 信号a:位:='1';信号b:位:='0';信号c:位:='0'; 开始 过程 变量d:位:='0'; 开始 如果是(a='1')或(b='0'),那么a,vhdl,hdl,modelsim,Vhdl,Hdl,Modelsim,我希望您理解这个过程不会正确合成 至于触发一次或两次的过程,这将取决于a或b上的事件是否发生在同一个增量周期中。将报表语句添加到流程中并查找 由于进程通过延迟语句驱动A和B,我希望这两个赋值在相同的增量周期中起作用;时间步的第一个增量,因此我希望它被触发一次 现在,如果您引入了一个新的信号“e”,并将其从进程中驱动,而不是“b”,并添加了信号分配b 等待其中一个信号在增量周期内具有事务 如果两个或全部激活,对模拟器没有影响,它仍然会退出等待。它不会在剩余信号上“保存”当前增量周期中的事务,并将其

我希望您理解这个过程不会正确合成

至于触发一次或两次的过程,这将取决于a或b上的事件是否发生在同一个增量周期中。将报表语句添加到流程中并查找

由于进程通过延迟语句驱动A和B,我希望这两个赋值在相同的增量周期中起作用;时间步的第一个增量,因此我希望它被触发一次

现在,如果您引入了一个新的信号“e”,并将其从进程中驱动,而不是“b”,并添加了信号分配
b
等待其中一个信号在增量周期内具有事务

如果两个或全部激活,对模拟器没有影响,它仍然会退出等待。它不会在剩余信号上“保存”当前增量周期中的事务,并将其向前传输

signal a:bit:='1'; signal b:bit:='0'; signal c:bit:='0';
begin
  process
  variable d:bit:='0';
    begin
    if (a='1')or(b='0') then a <= inertial not d after 1ns;
  else a<=inertial not c after 1.5ns;
    end if;
    d := a and b;
  b <= inertial (b)nand(a or d) after 1ns;          
  wait on a,b,c;end process;
  c <= a and b after 1ns;
end Behavioral;
wait on a,b,c;