3.3 VHDL模拟
3.3.3 VHDL模拟算法
下面讨论基于上述进程模型和层次化结构模型的模拟算法。
1. 基于进程的事件驱动算法
进程模型是VHDL描述的基本模型。在纯行为模型中,整个电路的行为用进程的集合来表示。在层次化结构模型中,通过调用,最终是一个纯行为的模块。
进程之间是并行执行的。对进程模型的模拟算法用顺序执行各进程来模拟其并行性。保证并行性的方法是采用与逻辑模拟类似的事件驱动算法。它同样采用基于时间顺序的时间映射的事件驱动方法,所不同的是以进程为驱动对象。
与逻辑模拟算法类似,一个信号的变化形成一个事件。所不同的是:事件不是驱动元件的计算,而是激活进程。被激活的进程在运行之后又产生新的事件,并在遇到等待语句后挂起。每一次处理事件、激活和执行进程组成一个模拟周期。
由于等待语句有可能出现在复合语句和过程调用之中,信号和变量的值都必须按路径分别保存。在进程挂起时需要把当前语句路径都记录下来。在下次激活该进程时沿着这条路径找到相应信号的值,并找到相应的入口语句继续运行。
进程的激活按照等待语句的指定进行。如果是等待时间语句,要设一个时间等待事件,加在事项处理表中。延时等待事件由进程标识、等待时间和等待语句标识三部分组成。在到达等待时间后激活相应进程,并得到入口语句。等待条件语句和等待敏感信号语句则在处理信号事件时判断是否条件成立,若条件成立则激活进程。
等待语句本身作为下次激活时的入口语句。如果进程没有等待语句,则在所有的顺序语句都执行完之后挂起。并将第一条语句作为下次激活时的入口语句。
请读者注意该算法与逻辑模拟算法的共同点与不同点。进程计算的并行性与逻辑元件的并行性的实现基本是相同的。但进程计算比较复杂。其关键一点是进程激活条件比逻辑模拟器中激活元件计算的条件复杂得多。
|