VHDL中两个连续信号分配(一个带延迟)的工作原理

VHDL中两个连续信号分配(一个带延迟)的工作原理,vhdl,fpga,Vhdl,Fpga,我在一个过程中有这样一段代码: A <= '1'; A <= '0' after 5 sec; 它是否先将A设置为1,然后在5秒后将A设置为0?如果没有,我应该调整什么?否。它会这样做: 我计划在下一个模拟或增量循环中将A设置为“1” 不,再想一想,不要那样做。相反,请计划在5秒内将A设置为“0” 在VHDL中执行信号分配运算符时,它不会立即驱动信号。相反,它计划在未来某个时间对称为事件的信号进行更改。如果未指定延迟,则事件将在下一个模拟或增量循环中执行。如果VHDL遇到另一个对同

我在一个过程中有这样一段代码:

A <= '1';
A <= '0' after 5 sec;
它是否先将A设置为1,然后在5秒后将A设置为0?如果没有,我应该调整什么?

否。它会这样做:

我计划在下一个模拟或增量循环中将A设置为“1”

不,再想一想,不要那样做。相反,请计划在5秒内将A设置为“0”

在VHDL中执行信号分配运算符时,它不会立即驱动信号。相反,它计划在未来某个时间对称为事件的信号进行更改。如果未指定延迟,则事件将在下一个模拟或增量循环中执行。如果VHDL遇到另一个对同一信号进行分配的信号,在它对以前的任何事件进行操作之前,相应的事件通常会被删除并替换为新的事件

这听起来可能很愚蠢,但有很好的理由。将代码替换为:

A <= '1';
wait for 5 sec;
A <= '0';

这段代码在一个简单的过程中工作。但是,如果我想在具有敏感度列表的流程中实现它,那么wait-for不可用。如果我将其更改为带有wait-till的进程,编译器会告诉我wait-for需要一个until语句。有什么办法可以解决这个问题吗?在VHDL中,不能将敏感度列表与任何类型的等待语句结合起来。但是,您可以将灵敏度列表替换为等待信号1、信号2、;因为所有进程都在时间0执行,如果希望它的行为与敏感度列表中的行为完全相同,那么应该将最后一个放在进程中。您可以同时安排这两个事务-注意,在合成中延迟被忽略。