1、下一状态组合逻辑当前状态时序逻辑输出逻辑同步寄存输出输入下一状态 当前状态输出组合逻辑下一状态输出时钟状态机设计的三种方法 (Verilog)1. “一段式”特点:将当前状态向量和输出向量用同一时序 always 块进行描述。缺点:代码冗长,不易修改和调试,可维护性较差且占用资源多;通过 case 语句对输出向量的赋值应是下一个状态的输出,这点容易出错;状态向量和输出向量都是由寄存器逻辑实现,面积较大;不能实现异步 mealy 有限状态机。优点:寄存器输出,输出向量不会产生毛刺。2. “两段式”特点:(第一段)一个时序 always 块给当前状态向量赋值, (第二段)一个组合always 块给
2、下一个状态向量和输出向量赋值。缺点:(1)组合逻辑输出会使输出向量产生毛刺;(2)从速度角度而言,由于这种状态机的输出向量必须由状态向量经译码得到,因此加大了从状态向量到输出向量的延时。(3)从综合角度而言,组合输出消耗了一部分时钟周期,即增加了由它驱动的下一个模块的输入延时。下一状态组合逻辑当前状态时序逻辑输出时序逻辑寄存器输出当前状态下一状态时钟输入3. “三段式 ”特点:两个时序 always 块,分别产生当前状态向量和输出向量,再用一个组合逻辑always 块产生下一个状态向量。代码主要包含以下三部分:1 状态转移部分(时序逻辑)2 状态转移条件部分(即产生下个状态向量的模块,组合逻辑)3 输出逻辑部分(时序逻辑)下一状态组合逻辑当前状态时序逻辑输出组合逻辑输出时钟输入下一状态 当前状态