前面已经说明,同步时序电路有限状态机S2-FSM与一般FSM的最大区别在于前者的TF和OF隐含了一个同步时钟。在我们得到同步电路的FSM后,需要采取一系列的化简操作,将FSM化简得到最终的目标模型S2-FSM。化简操作包括:
1. 从输入变量集合I中删去同步时钟。
2. 删除组合赋值:
3. 删除状态转换函数及输出函数中显式出现的同步时钟变量。
同步时序电路的模型是基于时钟周期的,前面我们规定电路描述必须有一个全局时钟,这样电路描述中的所有行为(即赋值)都可以分为两类:一类是与全局时钟相关的赋值,我们称它为时序赋值;另一类是与全局时钟无关的赋值,我们称它为组合赋值。在同步电路的有限状态机中,组合赋值不应该作为独立的状态迁移函数,而是应该包含在其它状态迁移函数中。下面给出化简状态机模型中的组合赋值的算法。
在我们上面建立状态机的过程中,已经在生成子模型的过程中,将对象(信号或变量)赋值表达式标记为两类:与时钟相关和与时钟无关。之所以将组合赋值的化简在整个有限状态机模型生成后进行,一方面是因为一些信号的赋值和引用是在不同进程中进行的,只有这个电路的有限状态机建立后,我们才能对它们进行操作;另一方面是因为这时已得到赋值表达式的BDD表示,对BDD的操作比对VHDL的中间数据格式的操作要方便有效得多。
设Set_E是赋值表达式的集合,Ei ∈ Set_E是对象 Oi 赋值表达式,组合赋值化简的算法如下。
{
对于所有的Ei ∈ Set_E {
如果Ei与全局时钟无关,并且Oi不是输出信号 {
遍历Set_E,将其中所有的Oi对象用Ei代替,
从Set_E中删除Ei;
}
}
整理Set_E;
}
至此,关于状态转换函数的所有的赋值都是时序赋值。
|