等待语句用来控制顺序执行的进程或子程序的执行或挂起(Suspension)。在进程中(包括过程中),当执行到WAIT语句时,运行程序将被挂起,直到满足此语句设置的结束挂起条件后,将重新开始执行进程或过程中的程序。但VHDL规定,已列出敏感量的进程中不能使用任何形式的WAIT语句。WAIT语句的语句格式有以下4种:
单独的WAIT,未设置停止挂起条件的表达式,表示无限等待。
WAITON信号表称为敏感信号等待语句,在信号表中列出的信号是等待语句的敏感信号。当处于等待状态时,敏感信号的任何变化(如从0~1或从1~0的变化)将结束挂起,再次启动进程。
WAIT UNTIL条件表达式称为条件等待语句,该语句将把进程挂起,直到条件表达式中所含信号发生了改变,并且条件表达式为真时,进程才能脱离挂起状态,恢复执行WAIT语句之后的语句。
例4.19中的两种表达方式是等效的。
例4.19
(1)WAIT UNTIL结构(www.xing528.com)
(2)WAITON结构
由以上脱离挂起状态、重新启动进程的两个条件可知,例4.19结束挂起所需满足的条件,实际上是一个信号的上跳沿。因为当满足所有条件后en为1,可推知en一定是由0变化来的。因此,上例中进程的启动条件是en出现一个上跳沿。
一般情况下,只有WAIT UNTIL格式的等待语句可以被综合器接受(其余语句格式只能在VHDL仿真器中使用)。WAIT UNTIL语句有以下3种表达方式:
如果设CLOCK为时钟信号输入端,以下4条WAIT语句所设的进程启动条件都是时钟上跳沿,所以,它们对应的硬件结构是一样的。
WAITFOR时间表达式为超时语句,在此语句中定义了一个时间段,从执行到当前WAIT语句开始,在此时间段内,进程处于挂起状态,当超过这一时间段后,进程自动恢复执行。由于此语句不可综合,在此不做讨论。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。