首页 百科知识 5.3.1显式进程

5.3.1显式进程

时间:2022-10-15 百科知识 版权反馈
【摘要】:WAIT语句是一种特殊的顺序执行语句,位于进程的顺序语句块内。通常,由敏感信号列表控制的显式进程,可以等价转换为由WAIT ON 语句控制的显式进程。如例5-3所示,两个程序完全等价。在编译调试中,例5-5的进程中3个WAIT 语句都会出现编译错误,说明有敏感信号列表的显式进程不允许出现WAIT 语句。

5.3.1 显式进程

显式进程是以“PROCESS”为关键字的进程。在显式进程的“BEGIN”和“END”之间,有一个由一条或多条执行语句组成的顺序语句块,需要注意的是,只有简单信号赋值语句和顺序描述语句可以出现在显式进程中。

进程的执行需要满足一定的条件,通常称之为激活条件,只有满足了进程的激活条件,进程才会进入被启动、执行,依照显式进程被激活的方式,可分为:敏感信号列表控制的显式进程和WAIT语句控制的显式进程。

(1)敏感信号列表控制的显式进程

敏感信号列表控制的显式进程的语法格式为:

img125

PROCESS是进程语句的关键字,PROCESS前可以加进程标号,也可以没有标号,但如果加了进程标号,则在进程结束处以“END PROCESS 进程标号;”结尾。

进程内部“说明”部分是可选部分,用于定义本进程内所需要的局部量,如数据类型、子程序和变量等,在此说明区说明的局部量,仅在当前进程内有效。“BEGIN”和“END PROCESS”之间,是进程的执行语句组成的顺序语句块。

“敏感信号列表”也称敏感表,可由一个或多个信号组成,各信号间以“,”号分隔。

在仿真中,这种进程在初始化阶段会自动执行一遍,即顺序语句块内的语句先按照从上至下顺序执行一遍,然后,进入挂起等待状态,直至列表中的任意一个信号有事件发生,即发生任意变化,此时,进程被再次激活,进程中的语句将从上到下逐句执行一遍,当最后一条语句执行完毕后,再次进入等待挂起状态,直到下一次敏感表中的信号有事件发生,如此循环往复。如例5-2所示。

【例5-2】带敏感信号表的显式进程

img126

上面例子中,进程的敏感信号为a和b,初始化阶段,会无条件顺序执行一次“y<=a AND b”和“z<=a XOR b;”,随后,当且仅当“a”、“b”中任意一个发生变化时,才会激活进程,顺序执行“y<=a AND b”和“z<=a XOR b”的操作。

(2)WAIT语句控制的显式进程

除了使用敏感信号列表建立显式进程的激活条件外,还可以采用WAIT语句来建立激活条件。

WAIT语句是一种特殊的顺序执行语句,位于进程的顺序语句块内。在仿真中,这种进程在初始化阶段也会自动执行一次,其顺序语句块内的语句顺序执行,一旦遇到WAIT语句,进程就挂起等待,直到满足该WAIT语句的激活条件时,进程才被激活并从该WAIT语句后的下一句开始顺序执行下去,如执行到过程语句中的最后一个语句,则返回到顺序语句块的第一句重复顺序执行,直到再次遇到WAIT语句。所以在初始化以后,进程语句始终处在“等待——激活——等待”的循环中。

WAIT语句有4种应用形式:信号等待WAIT ON、条件等待WAIT UNTIL、时间等待WAIT FOR和无限等待WAIT。

信号等待WAIT ON

信号等待WAIT ON语句的语法格式如下:

img127

在这种方式中,“WAIT ON”是关键字,其后的〈信号列表〉与敏感信号列表的作用一样。信号列表中列出的是能激活进程的敏感信号,有多个敏感信号时用“,”分隔,当任意一个敏感信号发生变化时,将激活该WAIT语句所在的进程。

通常,由敏感信号列表控制的显式进程,可以等价转换为由WAIT ON 语句控制的显式进程。如例5-3所示,两个程序完全等价。

注意,在例5-3中的WAIT ON语句在PROCESS顺序语句块的最后,这是因为,在初始化阶段,进程顺序语句块内的语句要先执行一遍,若将WAIT ON语句放在语句块的开头,则执行到“WAIT ON a,b,c;”语句时,进程就被挂起了,其后的语句未被执行;若将WAIT ON语句放在顺序语句块的最后,则进程在执行了一遍“tmp:=a AND b;”和“y<=tmp OR c;”后,才执行“WAIT ON a,b,c;”语句,进程被挂起。显然,由WAIT ON语句控制的显式进程,只有当WAIT ON语句出现在顺序语句块最后时,才能等价转换为由敏感信号列表控制的显式进程。

【例5-3】由WAIT ON 语句控制的显式进程

img128

条件等待WAIT UNTIL

条件等待WAIT UNTIL语句的语法格式如下:

img129

这种方式中,“wait until”是关键字,其后的“条件表达式”表示进程激活的条件,一旦条件表达式值为“真”时,则激活进程。如:

img130

时间等待WAIT FOR

时间等待WAIT FOR语句的语法格式如下:

img131

这种方式中,“WAIT FOR”是关键字,其后的“时间表达式”限定激活进程的时间间隔,一旦到达限定的间隔时间,便激活进程。如:

img132

无限等待WAIT

无限等待WAIT语句的语法格式如下:

img133

“WAIT”是关键字,这种方式中,没有给出激活条件,意味着无限期等待,执行此语句后,进程将被无限期挂起,不再被激活。

“WAIT ON”、“WAIT UNTIL”、“WAIT FOR”和“WAIT”这几种WAIT语句使用非常灵活,而且可以组合在一起使用,如:

img134

在WAIT语句控制的显式进程可以有多个WAIT 语句。如例5-4所示。

【例5-4】有多个WAIT 语句的显式进程

img135

在使用显式进程时,需要注意在一个进程里只能采用敏感信号列表控制激活条件,或者,采用WAIT语句控制激活条件,两者不能混用。如例5-5所示的例子就是错误的。

【例5-5】进程敏感表与WAIT语句的错误混用

img136

img137

在编译调试中,例5-5的进程中3个WAIT 语句都会出现编译错误,说明有敏感信号列表的显式进程不允许出现WAIT 语句。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈