《(精品)VerilogHDL夏宇闻--数字系统设计的核心知识.ppt》由会员分享,可在线阅读,更多相关《(精品)VerilogHDL夏宇闻--数字系统设计的核心知识.ppt(69页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数字系统设计的核心知识数字系统设计的核心知识数字系统设计的核心知识数字系统设计的核心知识 复杂数字系统的构成;复杂数字系统的构成;复杂数字系统的构成;复杂数字系统的构成;基本电路和基本电路和基本电路和基本电路和 VerilogVerilogVerilogVerilog 的的的的对应关系;对应关系;对应关系;对应关系;同步有限状态机在电路中的作用;同步有限状态机在电路中的作用;同步有限状态机在电路中的作用;同步有限状态机在电路中的作用;时钟树与自动综合技术时钟树与自动综合技术时钟树与自动综合技术时钟树与自动综合技术 数字逻辑电路的构成数字逻辑电路的构成数字逻辑电路的构成数字逻辑电路的构成-组合逻
2、辑组合逻辑组合逻辑组合逻辑:输出只是输入逻辑电平的函输出只是输入逻辑电平的函输出只是输入逻辑电平的函输出只是输入逻辑电平的函数(有延时),与电路的原始状态无关数(有延时),与电路的原始状态无关数(有延时),与电路的原始状态无关数(有延时),与电路的原始状态无关。-时序逻辑时序逻辑时序逻辑时序逻辑:输出不只是输入的逻辑电平输出不只是输入的逻辑电平输出不只是输入的逻辑电平输出不只是输入的逻辑电平的函数,还与电路所处的状态有关。的函数,还与电路所处的状态有关。的函数,还与电路所处的状态有关。的函数,还与电路所处的状态有关。同步时序逻辑是在同一时钟跳变节拍的前提下,同步时序逻辑是在同一时钟跳变节拍的前
3、提下,同步时序逻辑是在同一时钟跳变节拍的前提下,同步时序逻辑是在同一时钟跳变节拍的前提下,同步时序逻辑是在同一时钟跳变节拍的前提下,同步时序逻辑是在同一时钟跳变节拍的前提下,如输入条件满足,则进入下一状态,否则仍留如输入条件满足,则进入下一状态,否则仍留如输入条件满足,则进入下一状态,否则仍留如输入条件满足,则进入下一状态,否则仍留如输入条件满足,则进入下一状态,否则仍留如输入条件满足,则进入下一状态,否则仍留在原来的状态的状态机。在原来的状态的状态机。在原来的状态的状态机。在原来的状态的状态机。在原来的状态的状态机。在原来的状态的状态机。数字逻辑电路的构成数字逻辑电路的构成数字逻辑电路的构成
4、数字逻辑电路的构成-组合逻辑组合逻辑组合逻辑组合逻辑:由与、或、非门组成的网络。常用的有:由与、或、非门组成的网络。常用的有:由与、或、非门组成的网络。常用的有:由与、或、非门组成的网络。常用的有:由与、或、非门组成的网络。常用的有:由与、或、非门组成的网络。常用的有:多路器、数据通路开关、加法器、乘法器等,没有记忆功多路器、数据通路开关、加法器、乘法器等,没有记忆功多路器、数据通路开关、加法器、乘法器等,没有记忆功多路器、数据通路开关、加法器、乘法器等,没有记忆功多路器、数据通路开关、加法器、乘法器等,没有记忆功多路器、数据通路开关、加法器、乘法器等,没有记忆功能。能。能。能。能。能。-时序
5、逻辑时序逻辑时序逻辑时序逻辑:由多个触发器和多个组合逻辑块组成的网由多个触发器和多个组合逻辑块组成的网由多个触发器和多个组合逻辑块组成的网由多个触发器和多个组合逻辑块组成的网由多个触发器和多个组合逻辑块组成的网由多个触发器和多个组合逻辑块组成的网络。常用的有:计数器、复杂的数据流动控制逻辑、运算络。常用的有:计数器、复杂的数据流动控制逻辑、运算络。常用的有:计数器、复杂的数据流动控制逻辑、运算络。常用的有:计数器、复杂的数据流动控制逻辑、运算络。常用的有:计数器、复杂的数据流动控制逻辑、运算络。常用的有:计数器、复杂的数据流动控制逻辑、运算控制逻辑、指令分析和操作控制逻辑。同步时序逻辑的设控制
6、逻辑、指令分析和操作控制逻辑。同步时序逻辑的设控制逻辑、指令分析和操作控制逻辑。同步时序逻辑的设控制逻辑、指令分析和操作控制逻辑。同步时序逻辑的设控制逻辑、指令分析和操作控制逻辑。同步时序逻辑的设控制逻辑、指令分析和操作控制逻辑。同步时序逻辑的设计是设计复杂的数字逻辑系统的核心。计是设计复杂的数字逻辑系统的核心。计是设计复杂的数字逻辑系统的核心。计是设计复杂的数字逻辑系统的核心。计是设计复杂的数字逻辑系统的核心。计是设计复杂的数字逻辑系统的核心。-存储器和寄存器存储器和寄存器存储器和寄存器存储器和寄存器:用于暂时存储数据信息。用于暂时存储数据信息。用于暂时存储数据信息。用于暂时存储数据信息。用
7、于暂时存储数据信息。用于暂时存储数据信息。组合逻辑举例之一组合逻辑举例之一组合逻辑举例之一组合逻辑举例之一一个八位数据通路控制器一个八位数据通路控制器一个八位数据通路控制器一个八位数据通路控制器一个八位数据通路控制器一个八位数据通路控制器defineON1b1defineON1b1defineON1b1defineOFF1b0defineOFF1b0defineOFF1b0wirewirewireControlSwitchControlSwitchControlSwitch;wire7:0out,in;wire7:0out,in;wire7:0out,in;assignout=(assigno
8、ut=(assignout=(ControlSwithControlSwithControlSwith=ON)?in:8h00=ON)?in:8h00=ON)?in:8h00in7in7in7ControlSwitchControlSwitchControlSwitchout7out7out7in0in0in0out0out0out0.一个八位数据通路控制器的波形:一个八位数据通路控制器的波形:一个八位数据通路控制器的波形:一个八位数据通路控制器的波形:一个八位数据通路控制器的波形:一个八位数据通路控制器的波形:in 7:0in 7:0开开关关out7:0out7:0tttt3131 0202
9、1515 32326262 8888 02021515 3232 0000 0000in7in7in7ControlSwitchControlSwitchControlSwitchout7out7out7in0in0in0out0out0out0.带寄存器的八位数据通路控制器的波形带寄存器的八位数据通路控制器的波形带寄存器的八位数据通路控制器的波形带寄存器的八位数据通路控制器的波形带寄存器的八位数据通路控制器的波形带寄存器的八位数据通路控制器的波形in7in7ControlSwitchControlSwitchout7out7CLOCKCLOCKDDQ7Q7CLOCKCLOCKin0in0Co
10、ntrolSwitchControlSwitchout0out0DDQ0Q0out7out7out0out0带寄存器的八位数据通路控制器的带寄存器的八位数据通路控制器的带寄存器的八位数据通路控制器的带寄存器的八位数据通路控制器的带寄存器的八位数据通路控制器的带寄存器的八位数据通路控制器的VerilogVerilogVerilog描述描述描述描述描述描述defineON1b1defineON1b1defineON1b1defineOFF1b0defineOFF1b0defineOFF1b0wirewirewireControlSwitchControlSwitchControlSwitch;wi
11、reclockwireclockwireclockwire7:0out,in;wire7:0out,in;wire7:0out,in;always(always(always(posedgeposedgeposedgeclock)clock)clock)if(if(if(ControlSwithControlSwithControlSwith=ON)=ON)=ON)out=in;out=in;out=in;elseelseelseout=out;out=out;out=out;带复位端和使能端的寄存器带复位端和使能端的寄存器带复位端和使能端的寄存器带复位端和使能端的寄存器带复位端和使能端的寄存
12、器带复位端和使能端的寄存器 module module regenaregena(clock,ena,reset,R,Qclock,ena,reset,R,Q););parameter n=8;parameter n=8;input n-1:0 R;input n-1:0 R;input clock,input clock,enaena reset;reset;output n-1:0 Q;output n-1:0 Q;always(always(posedgeposedge clock or clock or negedgenegedge reset)reset)if(!reset)if(!
13、reset)Q=0;Q=0;else if(else if(enaena)Q=R;Q=R;endmoduleendmoduleenaRclockD Q Qreset具有并行置数和使能控制输入的移位寄存器具有并行置数和使能控制输入的移位寄存器具有并行置数和使能控制输入的移位寄存器具有并行置数和使能控制输入的移位寄存器具有并行置数和使能控制输入的移位寄存器具有并行置数和使能控制输入的移位寄存器R1enawclockD Q QresetQ1D QQ0R0load具有并行置数和使能控制输入的移位寄存器具有并行置数和使能控制输入的移位寄存器module module module shiftregs(R
14、,load,ena,w,clock,Q,resetshiftregs(R,load,ena,w,clock,Q,resetshiftregs(R,load,ena,w,clock,Q,reset);););input 3:0 R;input 3:0 R;input 3:0 R;input w,load,input w,load,input w,load,enaenaena,reset,clock;,reset,clock;,reset,clock;output 3:0 Q;output 3:0 Q;output 3:0 Q;regregreg 3:0 Q;3:0 Q;3:0 Q;integer
15、 k;integer k;integer k;always(posedgealways(posedgealways(posedge clock or clock or clock or negedgenegedgenegedge reset)reset)reset)if(!reset)Q=0;if(!reset)Q=0;if(!reset)Q=0;else if(load)Q=R;else if(load)Q=R;else if(load)Q=R;else if(else if(else if(enaenaena)begin Q0=W;)begin Q0=W;)begin Q0=W;for(k
16、=1;k4;k+1)for(k=1;k4;k+1)for(k=1;k4;k+1)Qk=Qk-1;Qk=Qk-1;Qk 7ns 7ns 7ns 7ns总延迟总延迟总延迟总延迟=Max2,3+4+1=8=Max2,3+4+1=8=Max2,3+4+1=8=Max2,3+4+1=8时钟周期必须时钟周期必须时钟周期必须时钟周期必须 4ns 4ns 4ns 4ns总处理数据的吞吐量增加总处理数据的吞吐量增加总处理数据的吞吐量增加总处理数据的吞吐量增加#1#1clock为什么要设计有限状态机?为什么要设计有限状态机?为什么要设计有限状态机?为什么要设计有限状态机?如果能严格以时钟跳变沿为前提,按排好时时序
17、,如果能严格以时钟跳变沿为前提,按排好时时序,如果能严格以时钟跳变沿为前提,按排好时时序,如果能严格以时钟跳变沿为前提,按排好时时序,如果能严格以时钟跳变沿为前提,按排好时时序,如果能严格以时钟跳变沿为前提,按排好时时序,来操作逻辑系统中每一个开关来操作逻辑系统中每一个开关来操作逻辑系统中每一个开关来操作逻辑系统中每一个开关来操作逻辑系统中每一个开关来操作逻辑系统中每一个开关SiSiSiSiSiSi,则系统中数据则系统中数据则系统中数据则系统中数据则系统中数据则系统中数据的流动和处理会按同一时钟节拍有序地进行,可的流动和处理会按同一时钟节拍有序地进行,可的流动和处理会按同一时钟节拍有序地进行,
18、可的流动和处理会按同一时钟节拍有序地进行,可的流动和处理会按同一时钟节拍有序地进行,可的流动和处理会按同一时钟节拍有序地进行,可以控制冒险和竞争现象对逻辑运算的破坏,以控制冒险和竞争现象对逻辑运算的破坏,以控制冒险和竞争现象对逻辑运算的破坏,以控制冒险和竞争现象对逻辑运算的破坏,以控制冒险和竞争现象对逻辑运算的破坏,以控制冒险和竞争现象对逻辑运算的破坏,时延时延时延时延时延时延问题就能有效地加以解决。问题就能有效地加以解决。问题就能有效地加以解决。问题就能有效地加以解决。问题就能有效地加以解决。问题就能有效地加以解决。利用同步有限状态机就能产生复杂的以时钟跳变利用同步有限状态机就能产生复杂的以
19、时钟跳变利用同步有限状态机就能产生复杂的以时钟跳变利用同步有限状态机就能产生复杂的以时钟跳变利用同步有限状态机就能产生复杂的以时钟跳变利用同步有限状态机就能产生复杂的以时钟跳变沿为前提的同步时序逻辑,并提供操作逻辑系统沿为前提的同步时序逻辑,并提供操作逻辑系统沿为前提的同步时序逻辑,并提供操作逻辑系统沿为前提的同步时序逻辑,并提供操作逻辑系统沿为前提的同步时序逻辑,并提供操作逻辑系统沿为前提的同步时序逻辑,并提供操作逻辑系统的开关阵列所需要的复杂控制时序(具有信号互的开关阵列所需要的复杂控制时序(具有信号互的开关阵列所需要的复杂控制时序(具有信号互的开关阵列所需要的复杂控制时序(具有信号互的开
20、关阵列所需要的复杂控制时序(具有信号互的开关阵列所需要的复杂控制时序(具有信号互锁和先后次序等要求的)。锁和先后次序等要求的)。锁和先后次序等要求的)。锁和先后次序等要求的)。锁和先后次序等要求的)。锁和先后次序等要求的)。为什么要设计有限状态机?为什么要设计有限状态机?为什么要设计有限状态机?为什么要设计有限状态机?如果我们能设计这样一个电路:如果我们能设计这样一个电路:如果我们能设计这样一个电路:如果我们能设计这样一个电路:如果我们能设计这样一个电路:如果我们能设计这样一个电路:1 1 1)能记住自己目前所处的状态)能记住自己目前所处的状态)能记住自己目前所处的状态)能记住自己目前所处的状
21、态)能记住自己目前所处的状态)能记住自己目前所处的状态 ;2 2 2)状态的变化只可能在同一个时钟的跳变沿时)状态的变化只可能在同一个时钟的跳变沿时)状态的变化只可能在同一个时钟的跳变沿时)状态的变化只可能在同一个时钟的跳变沿时)状态的变化只可能在同一个时钟的跳变沿时)状态的变化只可能在同一个时钟的跳变沿时刻发生,而不可能发生在任意时刻;刻发生,而不可能发生在任意时刻;刻发生,而不可能发生在任意时刻;刻发生,而不可能发生在任意时刻;刻发生,而不可能发生在任意时刻;刻发生,而不可能发生在任意时刻;3 3 3)在时钟跳变沿时刻,如输入条件满足,则进)在时钟跳变沿时刻,如输入条件满足,则进)在时钟跳
22、变沿时刻,如输入条件满足,则进)在时钟跳变沿时刻,如输入条件满足,则进)在时钟跳变沿时刻,如输入条件满足,则进)在时钟跳变沿时刻,如输入条件满足,则进入下一状态,并记住自己目前所处的状态,否入下一状态,并记住自己目前所处的状态,否入下一状态,并记住自己目前所处的状态,否入下一状态,并记住自己目前所处的状态,否入下一状态,并记住自己目前所处的状态,否入下一状态,并记住自己目前所处的状态,否则仍保留原来的状态;则仍保留原来的状态;则仍保留原来的状态;则仍保留原来的状态;则仍保留原来的状态;则仍保留原来的状态;4 4 4)在进入不同的状态时刻,对系统的开关阵列)在进入不同的状态时刻,对系统的开关阵列
23、)在进入不同的状态时刻,对系统的开关阵列)在进入不同的状态时刻,对系统的开关阵列)在进入不同的状态时刻,对系统的开关阵列)在进入不同的状态时刻,对系统的开关阵列做开启或关闭的操作。做开启或关闭的操作。做开启或关闭的操作。做开启或关闭的操作。做开启或关闭的操作。做开启或关闭的操作。为什么要设计有限状态机?为什么要设计有限状态机?为什么要设计有限状态机?为什么要设计有限状态机?为什么要设计有限状态机?为什么要设计有限状态机?clock 10nsS2开关S1tttSnS3tttS4为什么要设计有限状态机?为什么要设计有限状态机?为什么要设计有限状态机?为什么要设计有限状态机?为什么要设计有限状态机?
24、为什么要设计有限状态机?有了以上电路,我们就不难设计出复杂的控制序列有了以上电路,我们就不难设计出复杂的控制序列有了以上电路,我们就不难设计出复杂的控制序列有了以上电路,我们就不难设计出复杂的控制序列有了以上电路,我们就不难设计出复杂的控制序列有了以上电路,我们就不难设计出复杂的控制序列来操纵数字系统的控制开关阵列。能达到以上要求来操纵数字系统的控制开关阵列。能达到以上要求来操纵数字系统的控制开关阵列。能达到以上要求来操纵数字系统的控制开关阵列。能达到以上要求来操纵数字系统的控制开关阵列。能达到以上要求来操纵数字系统的控制开关阵列。能达到以上要求的电路就是时序和组合电路互相结合的产物:同步的电
25、路就是时序和组合电路互相结合的产物:同步的电路就是时序和组合电路互相结合的产物:同步的电路就是时序和组合电路互相结合的产物:同步的电路就是时序和组合电路互相结合的产物:同步的电路就是时序和组合电路互相结合的产物:同步有限状态机和由状态和时钟共同控制的开关逻辑阵有限状态机和由状态和时钟共同控制的开关逻辑阵有限状态机和由状态和时钟共同控制的开关逻辑阵有限状态机和由状态和时钟共同控制的开关逻辑阵有限状态机和由状态和时钟共同控制的开关逻辑阵有限状态机和由状态和时钟共同控制的开关逻辑阵列。列。列。列。列。列。我们只要掌握有限状态机的基本设计方法,加上对我们只要掌握有限状态机的基本设计方法,加上对我们只要
26、掌握有限状态机的基本设计方法,加上对我们只要掌握有限状态机的基本设计方法,加上对我们只要掌握有限状态机的基本设计方法,加上对我们只要掌握有限状态机的基本设计方法,加上对基本电路的掌握,再加上对数据处理的过程的细致基本电路的掌握,再加上对数据处理的过程的细致基本电路的掌握,再加上对数据处理的过程的细致基本电路的掌握,再加上对数据处理的过程的细致基本电路的掌握,再加上对数据处理的过程的细致基本电路的掌握,再加上对数据处理的过程的细致了解,我们就可以避免由于逻辑器件和布线延迟产了解,我们就可以避免由于逻辑器件和布线延迟产了解,我们就可以避免由于逻辑器件和布线延迟产了解,我们就可以避免由于逻辑器件和布
27、线延迟产了解,我们就可以避免由于逻辑器件和布线延迟产了解,我们就可以避免由于逻辑器件和布线延迟产生的冒险竞争现象所造成的破坏,设计出符合要求生的冒险竞争现象所造成的破坏,设计出符合要求生的冒险竞争现象所造成的破坏,设计出符合要求生的冒险竞争现象所造成的破坏,设计出符合要求生的冒险竞争现象所造成的破坏,设计出符合要求生的冒险竞争现象所造成的破坏,设计出符合要求的复杂数字逻辑系统。的复杂数字逻辑系统。的复杂数字逻辑系统。的复杂数字逻辑系统。的复杂数字逻辑系统。的复杂数字逻辑系统。数字系统的构成示意图数字系统的构成示意图数字系统的构成示意图数字系统的构成示意图同步有限状态机同步有限状态机ena_2e
28、na_2ena_3ena_3ena_nena_nena_nena_1clockclock组合逻辑 1寄存器组组合逻辑 2寄存器组组合逻辑 3寄存器组组合逻辑 N寄存器组input_1input_1 input_2input_2input_ninput_n同步有限状态机的设计同步有限状态机的设计同步有限状态机的设计同步有限状态机的设计什么是有限状态机(什么是有限状态机(什么是有限状态机(什么是有限状态机(FSM FSM FSM FSM)FSMFSMFSMFSM的种类和不同点的种类和不同点的种类和不同点的种类和不同点设计举例设计举例设计举例设计举例什么是有限状态机?什么是有限状态机?什么是有限状态
29、机?什么是有限状态机?-有限状态机是由寄存器组和组合逻辑构成的有限状态机是由寄存器组和组合逻辑构成的有限状态机是由寄存器组和组合逻辑构成的有限状态机是由寄存器组和组合逻辑构成的有限状态机是由寄存器组和组合逻辑构成的有限状态机是由寄存器组和组合逻辑构成的 硬件时序电路硬件时序电路硬件时序电路硬件时序电路硬件时序电路硬件时序电路;-其状态(即由寄存器组的其状态(即由寄存器组的其状态(即由寄存器组的其状态(即由寄存器组的其状态(即由寄存器组的其状态(即由寄存器组的1 1 1 1 1 1和和和和和和0 0 0 0 0 0的组合状态所的组合状态所的组合状态所的组合状态所的组合状态所的组合状态所 构成的有
30、限个状态)只能在构成的有限个状态)只能在构成的有限个状态)只能在构成的有限个状态)只能在构成的有限个状态)只能在构成的有限个状态)只能在同一同一同一同一同一同一时钟跳变沿时钟跳变沿时钟跳变沿时钟跳变沿时钟跳变沿时钟跳变沿 的的的的的的 情况下才能从一个状态转向另一个状态情况下才能从一个状态转向另一个状态情况下才能从一个状态转向另一个状态情况下才能从一个状态转向另一个状态情况下才能从一个状态转向另一个状态情况下才能从一个状态转向另一个状态;-究竟转向哪一状态不但取决于各个输入值究竟转向哪一状态不但取决于各个输入值究竟转向哪一状态不但取决于各个输入值究竟转向哪一状态不但取决于各个输入值究竟转向哪一
31、状态不但取决于各个输入值究竟转向哪一状态不但取决于各个输入值,还取决于当前状态还取决于当前状态还取决于当前状态还取决于当前状态还取决于当前状态还取决于当前状态。-状态状态状态状态状态状态机可用于产生在时钟跳变沿时刻开关的机可用于产生在时钟跳变沿时刻开关的机可用于产生在时钟跳变沿时刻开关的机可用于产生在时钟跳变沿时刻开关的机可用于产生在时钟跳变沿时刻开关的机可用于产生在时钟跳变沿时刻开关的 复杂的控制逻辑,是数字逻辑的控制核心。复杂的控制逻辑,是数字逻辑的控制核心。复杂的控制逻辑,是数字逻辑的控制核心。复杂的控制逻辑,是数字逻辑的控制核心。复杂的控制逻辑,是数字逻辑的控制核心。复杂的控制逻辑,是
32、数字逻辑的控制核心。Mealy Mealy Mealy Mealy 状态机状态机状态机状态机下一个状态下一个状态下一个状态下一个状态下一个状态下一个状态 =F(=F(=F(=F(=F(=F(当前状态,输入信号当前状态,输入信号当前状态,输入信号当前状态,输入信号当前状态,输入信号当前状态,输入信号);输出信号输出信号输出信号输出信号输出信号输出信号 =G(=G(=G(=G(=G(=G(当前状态,输入信号当前状态,输入信号当前状态,输入信号当前状态,输入信号当前状态,输入信号当前状态,输入信号);图1.时钟同步的状态机结构(Mealy 状态机)下一状态下一状态的逻辑的逻辑 F F输出逻辑输出逻辑
33、 G G状态状态寄存器寄存器时钟信号时钟信号时钟信号时钟信号时钟信号时钟信号clkclkclkclkclkclk clk 输入输入输入输入输入输出输出输出输出输出输出当前状态当前状态当前状态当前状态当前状态当前状态激励信号激励信号激励信号激励信号激励信号激励信号Moor Moor Moor Moor 状态机状态机状态机状态机下一个状态下一个状态下一个状态下一个状态下一个状态下一个状态 =F(=F(=F(=F(=F(=F(当前状态,输入信号当前状态,输入信号当前状态,输入信号当前状态,输入信号当前状态,输入信号当前状态,输入信号)输出信号输出信号输出信号输出信号输出信号输出信号 =G(=G(=G
34、(=G(=G(=G(当前状态当前状态当前状态当前状态当前状态当前状态);下一状下一状态的逻态的逻辑辑 F F输出逻辑输出逻辑 G G状态状态寄存器寄存器时钟信号时钟信号时钟信号时钟信号时钟信号时钟信号clkclkclkclkclkclk clkclk 输入输入输入输入输入输入输入输入输出输出输出输出输出输出当前状态当前状态当前状态当前状态当前状态当前状态激励信号激励信号激励信号激励信号激励信号激励信号图2.时钟同步的状态机结构(Moor状态机)带流水线输出的带流水线输出的带流水线输出的带流水线输出的 Mealy Mealy Mealy Mealy 状态机状态机状态机状态机下一个状态下一个状态下
35、一个状态下一个状态下一个状态下一个状态 =F(=F(=F(=F(=F(=F(当前状态,输入信号当前状态,输入信号当前状态,输入信号当前状态,输入信号当前状态,输入信号当前状态,输入信号);输出信号输出信号输出信号输出信号输出信号输出信号 =G(=G(=G(=G(=G(=G(当前状态,输入信号当前状态,输入信号当前状态,输入信号当前状态,输入信号当前状态,输入信号当前状态,输入信号);输出输出输出输出图3 带流水线输出的Mealy 状态机 下一状态下一状态下一状态下一状态的逻辑的逻辑的逻辑的逻辑 F F F F输出输出逻辑逻辑 G G状态状态状态状态寄存器寄存器寄存器寄存器时钟信号时钟信号时钟信
36、号时钟信号时钟信号时钟信号clkclkclkclkclkclk clkclkclkclk 输入输入输入输入输入输入输入输入当前状态当前状态当前状态当前状态激励信号激励信号激励信号激励信号输输输输出出出出流流流流水水水水线线线线寄寄寄寄存器存器存器存器 clkclkclkclk 输入输入输入输入简单的状态机设计举例简单的状态机设计举例简单的状态机设计举例简单的状态机设计举例状态转移图表示状态转移图表示状态转移图表示状态转移图表示RTLRTLRTLRTL级可综合的级可综合的级可综合的级可综合的 VerilogVerilogVerilogVerilog 模块表示模块表示模块表示模块表示有限状态机的图
37、形表示有限状态机的图形表示有限状态机的图形表示有限状态机的图形表示 图形表示:状态、转移、条件和逻辑开关图形表示:状态、转移、条件和逻辑开关图形表示:状态、转移、条件和逻辑开关图形表示:状态、转移、条件和逻辑开关图3.4 状态转移图IdleIdle StartStart Stop Stop Clear Clear A/K1=0A/K1=0 !A!A A/K2=1A/K2=1 !Reset!Reset/K2=0/K2=0 K1=0K1=0!Reset!Reset/K2=0/K2=0 K1=0K1=0 (!Reset|!A!Reset|!A)/K2=0 K1=1/K2=0 K1=1!Reset/K
38、2=0 K1=0!Reset/K2=0 K1=0有限状态机的有限状态机的有限状态机的有限状态机的VerilogVerilogVerilogVerilog描述描述描述描述1.1.定义模块名和输入输出端口;定义模块名和输入输出端口;定义模块名和输入输出端口;定义模块名和输入输出端口;定义模块名和输入输出端口;定义模块名和输入输出端口;2.2.定义输入、输出变量或寄存器;定义输入、输出变量或寄存器;定义输入、输出变量或寄存器;定义输入、输出变量或寄存器;定义输入、输出变量或寄存器;定义输入、输出变量或寄存器;3.3.定义时钟和复位信号;定义时钟和复位信号;定义时钟和复位信号;定义时钟和复位信号;定义
39、时钟和复位信号;定义时钟和复位信号;4.4.定义状态变量和状态寄存器;定义状态变量和状态寄存器;定义状态变量和状态寄存器;定义状态变量和状态寄存器;定义状态变量和状态寄存器;定义状态变量和状态寄存器;5.5.用时钟沿触发的用时钟沿触发的用时钟沿触发的用时钟沿触发的用时钟沿触发的用时钟沿触发的alwaysalwaysalways块表示状态转移过程;块表示状态转移过程;块表示状态转移过程;块表示状态转移过程;块表示状态转移过程;块表示状态转移过程;6.6.在复位信号有效时给状态寄存器赋初始值;在复位信号有效时给状态寄存器赋初始值;在复位信号有效时给状态寄存器赋初始值;在复位信号有效时给状态寄存器赋
40、初始值;在复位信号有效时给状态寄存器赋初始值;在复位信号有效时给状态寄存器赋初始值;7.7.描述状态的转换过程:符合条件,从一个状态到描述状态的转换过程:符合条件,从一个状态到描述状态的转换过程:符合条件,从一个状态到描述状态的转换过程:符合条件,从一个状态到描述状态的转换过程:符合条件,从一个状态到描述状态的转换过程:符合条件,从一个状态到另外一个状态,否则留在原状态;另外一个状态,否则留在原状态;另外一个状态,否则留在原状态;另外一个状态,否则留在原状态;另外一个状态,否则留在原状态;另外一个状态,否则留在原状态;8.8.验证状态转移的正确性,必须完整和全面。验证状态转移的正确性,必须完整
41、和全面。验证状态转移的正确性,必须完整和全面。验证状态转移的正确性,必须完整和全面。验证状态转移的正确性,必须完整和全面。验证状态转移的正确性,必须完整和全面。表示方法之一表示方法之一表示方法之一表示方法之一module module module module fsmfsmfsmfsm(Clock,Reset,A,K2,K1);(Clock,Reset,A,K2,K1);(Clock,Reset,A,K2,K1);(Clock,Reset,A,K2,K1);input Clock,Reset,A;input Clock,Reset,A;input Clock,Reset,A;input Cl
42、ock,Reset,A;/定义时钟、复位和输入信号定义时钟、复位和输入信号定义时钟、复位和输入信号定义时钟、复位和输入信号output K2,K1;output K2,K1;output K2,K1;output K2,K1;/定义输出控制信号的端口定义输出控制信号的端口定义输出控制信号的端口定义输出控制信号的端口regregregreg K2,K1;K2,K1;K2,K1;K2,K1;/定义输出控制信号的寄存器定义输出控制信号的寄存器定义输出控制信号的寄存器定义输出控制信号的寄存器regregregreg 1:0 state;1:0 state;1:0 state;1:0 state;/定义
43、状态寄存器定义状态寄存器定义状态寄存器定义状态寄存器parameter Idle =2parameter Idle =2parameter Idle =2parameter Idle =2b00,Start=2b00,Start=2b00,Start=2b00,Start=2b01,b01,b01,b01,Stop=2 Stop=2 Stop=2 Stop=2b10,Clear=2b10,Clear=2b10,Clear=2b10,Clear=2b11;b11;b11;b11;/定义状态变量参数值定义状态变量参数值定义状态变量参数值定义状态变量参数值 always(always(always(
44、always(posedgeposedgeposedgeposedge Clock)Clock)Clock)Clock)if(!Reset)if(!Reset)if(!Reset)if(!Reset)begin begin begin begin /定义复位后的初始状态和输出值定义复位后的初始状态和输出值定义复位后的初始状态和输出值定义复位后的初始状态和输出值 state=Idle;K2=0;K1=0;state=Idle;K2=0;K1=0;state=Idle;K2=0;K1=0;state=Idle;K2=0;K1=0;end end end end表示方法之一(续)表示方法之一(续)表
45、示方法之一(续)表示方法之一(续)elseelseelseelse case(state)case(state)case(state)case(state)Idle:begin Idle:begin Idle:begin Idle:begin if(A)begin if(A)begin if(A)begin if(A)begin state=Start;state=Start;state=Start;state=Start;K1=0;K1=0;K1=0;K1=0;end end end end else state=Idle;else state=Idle;else state=Idle;el
46、se state=Idle;end end end end Start:begin Start:begin Start:begin Start:begin if(!A)state=Stop;if(!A)state=Stop;if(!A)state=Stop;if(!A)state=Stop;else state=Start;else state=Start;else state=Start;else state=Start;end end end end表示方法之一(续)表示方法之一(续)表示方法之一(续)表示方法之一(续)Stop:begin Stop:begin Stop:begin St
47、op:begin /符合条件进入新状态,否则留在原状态符合条件进入新状态,否则留在原状态符合条件进入新状态,否则留在原状态符合条件进入新状态,否则留在原状态符合条件进入新状态,否则留在原状态符合条件进入新状态,否则留在原状态 if(A)begin if(A)begin if(A)begin if(A)begin state=Clear;state=Clear;state=Clear;state=Clear;K2=1;K2=1;K2=1;K2=1;end end end end else state=Stop;else state=Stop;else state=Stop;else state=
48、Stop;end end end end Clear:begin Clear:begin Clear:begin Clear:begin if(!A)begin if(!A)begin if(!A)begin if(!A)begin state=Idle;state=Idle;state=Idle;state=Idle;K2=0;K1=1;K2=0;K1=1;K2=0;K1=1;K2=0;K1=1;end end end end else state=Clear;else state=Clear;else state=Clear;else state=Clear;end end end end
49、 endcaseendcaseendcaseendcaseendmoduleendmoduleendmoduleendmodule 表示方法之二表示方法之二表示方法之二表示方法之二我们还可以用另一个我们还可以用另一个我们还可以用另一个我们还可以用另一个 VerilogVerilogVerilogVerilog HDL HDL HDL HDL模型来表示同一个有限状态,模型来表示同一个有限状态,模型来表示同一个有限状态,模型来表示同一个有限状态,见下例。(用可综合的见下例。(用可综合的见下例。(用可综合的见下例。(用可综合的VerilogVerilogVerilogVerilog模块设计用独热码表
50、示状态的状态机)模块设计用独热码表示状态的状态机)模块设计用独热码表示状态的状态机)模块设计用独热码表示状态的状态机)module module module module fsmfsmfsmfsm(Clock,Reset,A,K2,K1);(Clock,Reset,A,K2,K1);(Clock,Reset,A,K2,K1);(Clock,Reset,A,K2,K1);input Clock,Reset,A;input Clock,Reset,A;input Clock,Reset,A;input Clock,Reset,A;output K2,K1;output K2,K1;output