3.4.2 并行(Concurrent)描述语句
进程语句是最具VHDL语言特色的语句。因为它提供了一种用算法(顺序语句)描述硬件行为的方法。进程实际上是用顺序语句描述的一种进行过程,也就是说进程用于描述顺序事件。PROCESS语句结构包含了一个代表着设计实体中部分逻辑行为的、独立的顺序语句描述的进程。一个结构体中可以有多个并行运行的进程结构,而每一个进程的内部结构却是由一系列顺序语句来构成。 需要注意的是,PROCESS结构中的顺序语句,及其所谓的顺序执行过程只是相对于计算机中的软件行为仿真的模拟过程而言的,这个过程与硬件结构中实现的对应的逻辑行为是不相同的。PROCESS结构中既可以有时序逻辑的描述,也可以有组合逻辑的描述,它们都可以用顺序语句来表达。然而,硬件中的组合逻辑具有最典型的并行逻辑功能,而硬件中的时序逻辑也并非都是以下顺序方式工作的。 1.PROCESS语句格式 PROCESS语句格式: [进程标号:]PROCESS[(敏感信号参数表)][IS] [进程说明部分] BEGIN 顺序描述语句 END PROCESS[进程标号]; 顺序描述语句部分是一段顺序执行的语句,描述该进程的行为。PROCESS中规定了每个进程语句在它的某个敏感信号(由敏感信号参量表列出)的值改变时都必须立即完成某一功能行为。这个行为由进程顺序语句定义,行为的结果可以赋给信号,并通过信号被其他的PROCESS或BLOCK读取或赋值。当进程中定义的任一敏感信号发生更新时,由顺序语句定义的行为就要重复执行依次,当进程中最后一个语句执行完成后,执行过程将返回到第一个语句,以等待下一次敏感信号变化,如此循环往复以致无限。但当遇到WAIT语句时,执行过程将被有条件地终止,即所谓地挂起(Suspention)。 一个结构体中可含有多个PROCESS结构,每一PROCESS结构对应其敏感信号参数表中定义地任一敏感参量地变化,每个进程可以在任何时刻被激活或者称为启动。而所有被激活地进程都是并行运行地,这就是为什么PROCESS结构本身是并行语句地道理。 2.进程设计要点 进程的设计需要注意以下几方面的问题: (1)虽然同一结构体中的进程之间是并行运行的,但同一进程中逻辑描述语句则是顺序运行的,因而在进程中只能设置顺序语句。 (2)进程的激活必须由敏感信号表中定义的任一敏感信号的变化来启动,否则必须有一个显式的WAIT语句来激活。这就是说,进程既可以由敏感信号的变化来启动,也可以由满足条件的WAIT语句来激活;反之,在遇到不满足条件的WAIT语句后,进程将被挂起。因此,进程中必须定义显式或隐式的敏感信号。如果一个进程对一个信号集合总是敏感的,那么,我们可以使用敏感表来指定进程的敏感信号。但是,在一个使用了敏感表的进程(或者由该进程所调用的子程序)中不能含有任何等待语句。 (3)结构体中多个进程指所有能并行同步运行,一个很重要的原因是进程之间的通信式通过传递信号和共享变量来实现的。所以相对与结构体来说,信号具有全局特性,它是进程间进行并行联系的重要途径。因此,在任一进程的进程说明部分不允许定义信号。 (4)进程式重要的建模工具。进程结构不但为综合器所支持,而且进程的建模方式将直接影响仿真和综合结果。需要注意的是综合后对应与进程的硬件结构,对进程中的所有可读入信号都是敏感的,而在VHDL行为仿真中并非如此,除非将所有的读入信号列为敏感信号。
(1) 用进程实现组合逻辑
(2) 用进程实现时序逻辑
时序电路(计数器)仿真结果:
驱动信号 定义:给一个信号赋值,即为该信号创建一个驱动器(驱动信号)。多个进程或并发语句给同一个信号赋值,则该信号为多信号源驱动。 例: a_out <= a when enable_a else ‘Z’ ; b_out <= b when enable_b else ‘Z’ ; process ( a_out) begin sig <= a_out ; end process ;
process ( b_out ) begin sig <= b_out ; end process ;
|
|||