信号的声明发生在块语句和结构体内。 块语句:令Me = <I, S, O, s0,δ,λ>为功能块语句部分的状态机,Sd为说明部分声明的信号集。整个功能块(包括说明部分和语句部分)的状态机为Me = <Ie , Se , Oe , s0e ,δe,λe>,Me中对应于Sd中元素的变量在Me中应作为内部变量,而不应该是输出变量。相应地,更新这些局部信号的有效值的操作将在功能块层被转换为状态转换函数。 Me为: 1. Ie = I - {S ![]() 2. Se = S {S ![]() 3. Oe = O - {S ![]() 4. 初始状态s0e是s0加上2中引入变量的初值。 5. δe是 加上新引入的状态变量的转换函数。 6. λe等于 除去在Sd中出现的输出变量的输出函数。 结构体:在结构体中考虑端口和信号。M = <I, S, O, se,δ,λ>为结构体语句部分的状态机,Pin,Pout,Pinout为端口,Sd为说明部分说明的信号集。整个结构体(包括端口,说明部分和语句部分)的状态机为Me = <Ie, Se, Oe, s0e,δe,λe>。 Me为: 1. Ie = I - {S ![]() 2. Se = S ∪ {S ![]() 3. Oe = O - {S ![]() 4. 初始状态s0e是s0加上2中引入变量的初值。 5. δe是δ加上新引入的状态变量的转换函数。 6. 对于一个还没有在状态机M中建立输出变量的端口P(既端口为被赋值,也不是内部元件的输出),输出函数为 λP(Ie,Se)= E,E是P的初始值。 元件例化语句:被例化的元件的状态机可直接复制设计单元的状态机。不过,被例化的元件的局部对象要重新命名。 至此已经得到一个有限状态机模型。但对于同步时序电路来说,还有一些问题需要解决。关键问题是上面的步骤中没有考虑时序赋值与组合赋值的区别。下一节讨论这个问题。 |