收藏 分销(赏)

第10章-Verilog状态机设计技术.ppt

上传人:1587****927 文档编号:1711629 上传时间:2024-05-08 格式:PPT 页数:69 大小:1.75MB 下载积分:14 金币
下载 相关 举报
第10章-Verilog状态机设计技术.ppt_第1页
第1页 / 共69页
第10章-Verilog状态机设计技术.ppt_第2页
第2页 / 共69页


点击查看更多>>
资源描述
E D A技术与应用第第10章章 VerilogVerilog状态机状态机设计技术设计技术 E D A技术与应用10.1 Verilog状态机的一般形式状态机的一般形式广义而论,只要涉及触发器的电路,无论电路大小,都广义而论,只要涉及触发器的电路,无论电路大小,都能归结为状态机。能归结为状态机。有限状态机用来实现一个数字电路的控制部分。与有限状态机用来实现一个数字电路的控制部分。与CPU的功能类似,综合了时序逻辑和组合逻辑电路的功能类似,综合了时序逻辑和组合逻辑电路。CPU是通过操作指令和硬件操作单元来实现控制功能,是通过操作指令和硬件操作单元来实现控制功能,而有限状态机是通过状态转移来实现控制功能。而有限状态机是通过状态转移来实现控制功能。综合器能从不同表述形态的综合器能从不同表述形态的HDL代码中轻易萃取出状态代码中轻易萃取出状态机,并加以多侧面、多目标和多种形式的优化。机,并加以多侧面、多目标和多种形式的优化。E D A技术与应用10.1.1 状态机的特点与优势状态机的特点与优势面对同一个设计项目的不同形式的逻辑设计方案中,利用有面对同一个设计项目的不同形式的逻辑设计方案中,利用有限状态机的设计方案来描述和实现将可能是最佳选择。限状态机的设计方案来描述和实现将可能是最佳选择。有限状态机的优越性:有限状态机的优越性:(1)高效的顺序控制模型)高效的顺序控制模型(2)容易利用现成的)容易利用现成的EDA工具进行优化设计工具进行优化设计(3)性能稳定)性能稳定(4)高速性能)高速性能(5)高可靠性能)高可靠性能 E D A技术与应用10.1.2 状态机的一般结构状态机的一般结构用用Verilog设计的状态机根据不同的分类标准可以分为多种不设计的状态机根据不同的分类标准可以分为多种不同形式:同形式:从状态机的信号输出方式上分:从状态机的信号输出方式上分:Mealy型和型和Moore型状态机型状态机从状态机的结构描述上分:单过程状态机和多过程状态机从状态机的结构描述上分:单过程状态机和多过程状态机从状态表达方式上分:符号化状态机和确定状态编码的状从状态表达方式上分:符号化状态机和确定状态编码的状态机态机从状态机编码方式上分:顺序编码、一位热编码或其他编从状态机编码方式上分:顺序编码、一位热编码或其他编码方式状态机码方式状态机最一般和最常用的状态机结构中通常包含了说明部分、最一般和最常用的状态机结构中通常包含了说明部分、主控主控时序过程时序过程、主控组合过程主控组合过程、辅助过程辅助过程等几个部分等几个部分 E D A技术与应用说明部分中包含状态转换变量的定义和所有可能状态的说明,说明部分中包含状态转换变量的定义和所有可能状态的说明,必要时还要确定每一状态的编码形式,最好是纯抽象的符号必要时还要确定每一状态的编码形式,最好是纯抽象的符号化状态机,即所定义的状态序列和状态转换变量都不涉及具化状态机,即所定义的状态序列和状态转换变量都不涉及具体的数值、编码,甚至数据类型或变量类型。体的数值、编码,甚至数据类型或变量类型。1、状态机说明部分、状态机说明部分parameter2:0 s0=0,s1=1,s2=2,s3=3,s4=4;reg 2:0 current_state,next_state;状态元素状态元素s0、s1等用关键词等用关键词parameter来定义,各状态元素来定义,各状态元素所取得数值或编码必须写出具体值。所取得数值或编码必须写出具体值。parameter旁的位宽说明可写可不写旁的位宽说明可写可不写current_state是是现态变量现态变量和和next_state是次态变量是次态变量 E D A技术与应用2005版本的版本的System Verilog1、状态机说明部分、状态机说明部分typedef enum s0,s1,s2,s3,s4 type_user;type_user current_state,next_state;typedef是用户数据类型自定义语句关键词是用户数据类型自定义语句关键词enum是定义枚举类型关键词是定义枚举类型关键词type_user是用户定义状态元素是用户定义状态元素s0、s1、s2、s3、s4为为type_user类型的标识符类型的标识符第二第二句将状态变量句将状态变量current_state、next_state定义为定义为type_user类型类型 E D A技术与应用2、主控时序过程、主控时序过程主控时序过程指负责状态机运转和在时钟驱动下负责状态主控时序过程指负责状态机运转和在时钟驱动下负责状态转换的过程。转换的过程。状态机是随外部时钟信号,以同步时序方式工作的,状态状态机是随外部时钟信号,以同步时序方式工作的,状态机中必须包含一个对工作时钟敏感的过程,状态机向下一机中必须包含一个对工作时钟敏感的过程,状态机向下一状态转换的实现仅取决于时钟信号的到来。状态转换的实现仅取决于时钟信号的到来。当时钟的有效跳变到来时,时序过程只是机械地将代表次当时钟的有效跳变到来时,时序过程只是机械地将代表次态的信号态的信号next_state中的内容送入现态的信号中的内容送入现态的信号current_state中,而信号中,而信号next_state中的内容完全由其他过程根据实际情中的内容完全由其他过程根据实际情况来决定。况来决定。此时序过程中也可放置一些同步或异步清此时序过程中也可放置一些同步或异步清0或置位方面的控或置位方面的控制信号。制信号。E D A技术与应用3、主控组合过程、主控组合过程主控组合过程根据当前状态和外部的信号发出控制信号,主控组合过程根据当前状态和外部的信号发出控制信号,同时确定下一状态的走向。同时确定下一状态的走向。在时钟的作用下,在时钟的作用下,REG时序过程将次态信号的内容时序过程将次态信号的内容next_state传递传递给现态信号给现态信号current_stateCOM组合过程通过信号组合过程通过信号current_state中的状态值,进入相应的状态中的状态值,进入相应的状态;在此状态中根据外部的信号(如在此状态中根据外部的信号(如state_inputs)向内或向外发出控制)向内或向外发出控制信号(如信号(如com_outputs););同时根据外部信号(如同时根据外部信号(如state_inputs)向次态信号)向次态信号next_state中赋相中赋相应的状态值,确定下一状态的走向;应的状态值,确定下一状态的走向;此状态值通过此状态值通过next_state传给传给REG时序过程,直到下一个时钟脉冲时序过程,直到下一个时钟脉冲的到来。的到来。E D A技术与应用4、辅助过程、辅助过程辅助过程用于配合状态机工作的组合过程或时序过程。例辅助过程用于配合状态机工作的组合过程或时序过程。例如为了完成某种算法的过程,或为了存储数据的存储过程,如为了完成某种算法的过程,或为了存储数据的存储过程,或用于配合状态机工作的其他时序过程等。或用于配合状态机工作的其他时序过程等。例例10-1 module FSM_EXP(clk,reset,state_inputs,comb_outputs);input clk;/状态机工作时钟状态机工作时钟 input reset;/状态机复位控制状态机复位控制 input 0:1 state_inputs;/来自外部的状态机控制信号来自外部的状态机控制信号 output 3:0 comb_outputs;/状态机对外部发出的控制信号输出状态机对外部发出的控制信号输出 reg 3:0 comb_outputs;parameter s0=0,s1=1,s2=2,s3=3,s4=4;/定义状态参数定义状态参数 reg 4:0 c_st,next_state;/定义现态和次态的状态变量定义现态和次态的状态变量 always (posedge clk or negedge reset)begin/主控时序过程主控时序过程 if(!reset)c_st=s0;/复位有效时,下一状态进入初态复位有效时,下一状态进入初态s0 else c_st=next_state;end E D A技术与应用例例10-1-续续 always (c_st or state_inputs)begin/主控组合过程主控组合过程 case(c_st)/为了在仿真波形中容易看清为了在仿真波形中容易看清,将将current_state简写为简写为c_st s0:begin comb_outputs=5;/进入状态进入状态s0时,输出控制码时,输出控制码5if(state_inputs=2b00)next_state=s0;/条件满足条件满足,回初态回初态s0else next_state=s1;end/条件不满足,到下一状态条件不满足,到下一状态s1 s1:begin comb_outputs=8;/进入状态进入状态s1时,输出控制码时,输出控制码8if(state_inputs=2b01)next_state=s1;else next_state=s2;end s2:begin comb_outputs=12;if(state_inputs=2b10)next_state=s0;else next_state=s3;end s3:begin comb_outputs=14;if(state_inputs=2b11)next_state=s3;else next_state=s4;end s4:begin comb_outputs=9;next_state=s0;end default:next_state=s0;/现现态若未出现以上各态,返回初态态若未出现以上各态,返回初态s0 endcase endendmodule E D A技术与应用状态机的状态转换图状态机的状态转换图状态机的工作时序状态机的工作时序间接了解状态机间接了解状态机内部运行情况内部运行情况利用利用它改变状态它改变状态机变化模式和状机变化模式和状态转变态转变方向方向 E D A技术与应用10.1.3 初始控制与表述初始控制与表述Verilog状态机的相关设置控制:状态机的相关设置控制:(1)打开)打开“状态机萃取状态机萃取”开关:开关:AssignmentsSettings,在,在category栏,选择栏,选择Analysis&Synthesis Settings,单击旁边的,单击旁边的按钮按钮More Settings,在弹出的对话框下方,在弹出的对话框下方Existing option settings栏单击选中栏单击选中Extract Verilog State Machines。在上方的。在上方的Option的的Setting栏选择栏选择On E D A技术与应用10.1.3 初始控制与表述初始控制与表述Verilog状态机的相关设置控制:状态机的相关设置控制:(2)关于参数定义表述:在状态机设计中,用)关于参数定义表述:在状态机设计中,用parameter进进行参数定义(综合器萃取状态机的主要依据),一旦打开行参数定义(综合器萃取状态机的主要依据),一旦打开“状态机萃取状态机萃取”开关,其定义的形式可以十分随意。比如,可开关,其定义的形式可以十分随意。比如,可以表述为以表述为“parameter s0=0,s1=1”,也可以表述为也可以表述为“parameter s0=4b1001,s1=4b0011”,最后状态机被综合的,最后状态机被综合的结果未必按照此表述方式来构建。结果未必按照此表述方式来构建。(3)状态变量定义表述:如果已打开)状态变量定义表述:如果已打开“状态机萃取状态机萃取”开关,开关,定义句中位宽定义句中位宽msb:lsb的表述可以比较随意,不必一定与状的表述可以比较随意,不必一定与状态数对应。假设有态数对应。假设有5个状态,定义时个状态,定义时“reg 2:0 c_st,next_state”中用了位宽中用了位宽2:0,而不是,而不是4:0。一旦打开了一旦打开了“状态机萃取状态机萃取”开关,就可利用开关,就可利用Quartus II的状态的状态图观察器直观了解当前状态图走向,方法是:图观察器直观了解当前状态图走向,方法是:ToolsNetlist Viewers State Machine Viewer E D A技术与应用10.2 Moore型状态机及其设计型状态机及其设计从从信号输出方式上分,有信号输出方式上分,有Moore型和型和Mealy型两类状态型两类状态机。机。Mealy型状态机属于异步输出状态机,它的输出是当前型状态机属于异步输出状态机,它的输出是当前状态和所有输入信号的函数,它的输出是在输入变化后状态和所有输入信号的函数,它的输出是在输入变化后立即发生的,不依赖时钟的同步。立即发生的,不依赖时钟的同步。Moore型状态机属于同步输出状态机,它的输出仅为当型状态机属于同步输出状态机,它的输出仅为当前状态的函数,这类状态机在输入发生变化时必须等待前状态的函数,这类状态机在输入发生变化时必须等待时钟的到来,比时钟的到来,比Mealy机要多等待一个时钟周期。机要多等待一个时钟周期。例例10-1既属于既属于Mealy型状态机,又属于型状态机,又属于Moore型状态机。型状态机。E D A技术与应用10.2.1 多过程结构状态机多过程结构状态机ADC0809工作时序和芯片引脚图工作时序和芯片引脚图START为转换启动控制信号,高电平有效。为转换启动控制信号,高电平有效。ALE为模拟信号输入选通端口地址锁存信号,上升沿有效。为模拟信号输入选通端口地址锁存信号,上升沿有效。EOC为状态信号,为状态信号,START有效后,有效后,EOC为低电平,进入为低电平,进入转换状态,转换时间约转换状态,转换时间约100m ms,转换结束后,转换结束后,EOC变为高变为高电平。电平。OE为输出允许控制,高电平有效。为输出允许控制,高电平有效。E D A技术与应用控制控制ADC0809采样状态图采样状态图监测监测EOC,低电平,转换,低电平,转换未结束,停留,高电平,未结束,停留,高电平,转换结束,进入转换结束,进入st3状态机向状态机向0809发出发出OE信号信号(高电平),允许输出,(高电平),允许输出,同时作为数据稳定周期,同时作为数据稳定周期,以便下一个状态中向锁存以便下一个状态中向锁存器锁入可靠的数据。器锁入可靠的数据。状态机向状态机向0809发出发出LOCK信号(上升沿),将信号(上升沿),将0809输出的数据进行锁存。输出的数据进行锁存。E D A技术与应用例例10-2:ADC0809采样控制采样控制 module ADC0809(D,CLK,EOC,RST,ALE,START,OE,ADDA,Q,LOCK_T);input 7:0 D;/来自来自0809转换好的转换好的8位数据位数据 input CLK,RST;/状态状态机工作时钟和系统复位控制机工作时钟和系统复位控制 input EOC;/转换状态指示,低电平表示正在转换转换状态指示,低电平表示正在转换 output ALE;/8个模拟信号通道地址锁存信号个模拟信号通道地址锁存信号 output START,OE;/转换启动信号和数据输出三态控制信号转换启动信号和数据输出三态控制信号 output ADDA,LOCK_T;/信号通道控制信号和锁存测试信号信号通道控制信号和锁存测试信号 output 7:0 Q;reg ALE,START,OE;parameter s0=0,s1=1,s2=2,s3=3,s4=4;/定义各状态子类型定义各状态子类型 reg4:0 cs,next_state;/为了便于仿真显示,现态名简写为为了便于仿真显示,现态名简写为cs reg7:0 REGL;reg LOCK;/转换后数据输出锁存时钟信号转换后数据输出锁存时钟信号 always (cs or EOC)begin/主控组合过程,规定各状态转换方式主控组合过程,规定各状态转换方式 case(cs)s0:begin ALE=0;START=0;OE=0;LOCK=0;next_state=s1;end/0809初始化初始化 s1:begin ALE=1;START=1;OE=0;LOCK=0;next_state=s2;end/启动采样信号启动采样信号START E D A技术与应用例例10-2-续续:ADC0809采样控制采样控制 s2:begin ALE=0;START=0;OE=0;LOCK=0;if(EOC=1b1)next_state=s3;/EOC=0表明转换结束表明转换结束else next_state=s2;end/转换未结束,继续等待转换未结束,继续等待s3:begin ALE=0;START=0;OE=1;LOCK=0;/开启开启OE,打开打开 AD数据口数据口next_state=s4;end/下一状态无条件转向下一状态无条件转向s4 s4:begin ALE=0;START=0;OE=1;LOCK=1;/开启数据锁存信号开启数据锁存信号next_state=s0;enddefault:begin ALE=0;START=0;OE=0;LOCK=0;next_state=s0;end endcase end always (posedge CLK or posedge RST)begin/时序过程时序过程 if(RST)cs=s0;else cs=next_state;end always (posedge LOCK)if(LOCK)REGL=D;/在在LOCK上升沿上升沿 将转换好的数据锁入将转换好的数据锁入 assign ADDA=0;assign Q=REGL;/选择模拟信号进入通道选择模拟信号进入通道IN0 assign LOCK_T=LOCK;/将测试信号输出将测试信号输出endmodule E D A技术与应用采样状态机采样状态机结构框图结构框图程序中包含三个过程结构:程序中包含三个过程结构:时序过程时序过程REG:在:在CLK的驱动下,不断将的驱动下,不断将next_state中的内容(状态中的内容(状态元素)赋给现态元素)赋给现态cs,并由此信号将,并由此信号将状态状态变量传输给变量传输给COM组合过程。组合过程。组合过程组合过程COM:(1)状态译码功能。根据从现态信号状态译码功能。根据从现态信号cs中获得的状态中获得的状态变量,以及来自变量,以及来自0809的状态线信号的状态线信号EOC,决定下一状态的转移方向,决定下一状态的转移方向,即次态的状态变量。即次态的状态变量。(2)采样控制功能。根据采样控制功能。根据cs中的状态变量确定对中的状态变量确定对0809的控制信号的控制信号ALE、START、OE等输出相应控制信号,当采样结等输出相应控制信号,当采样结束后还要通过束后还要通过LOCK向锁存器过程向锁存器过程LATCH发出锁存信号。发出锁存信号。锁存器辅助过程锁存器辅助过程LATCH:将由:将由0809的的D7.0数据输出口输出的数据输出口输出的8位已位已转换好的数据锁存起来。转换好的数据锁存起来。E D A技术与应用ADC0809采样状态机工作时序采样状态机工作时序状态状态s0:复位信号后即进入状态:复位信号后即进入状态s0。状态状态s1:第二个时钟上升沿后,状态机进入状态:第二个时钟上升沿后,状态机进入状态s1(即(即cs=s1),),由由START、ALE发出启动采样和地址选通的控制信号。发出启动采样和地址选通的控制信号。状态状态s2:EOC由高电平变为低电平,由高电平变为低电平,0809的的8位数据输出端呈现位数据输出端呈现高阻态高阻态“ZZ”。等待。等待CLK数个时钟周期后,数个时钟周期后,EOC变为高电平,变为高电平,表示转换结束。表示转换结束。状态状态s3:在此状态的输出允许:在此状态的输出允许OE被设置成高电平。此时被设置成高电平。此时8089的的数据输出端数据输出端D7.0即输出已经转换好的数据即输出已经转换好的数据5EH。状态状态s4:LOCK_T发出一个脉冲,其上升沿立即将发出一个脉冲,其上升沿立即将D端口的端口的5E锁锁入入Q和和REGL中。中。由内部由内部LOCK信信号引出的号引出的测试信号测试信号激励按激励按0809控制控制时序人为时序人为设定设定 E D A技术与应用例例10-3:修改后的:修改后的ADC0809采样控制采样控制 /将组合过程将组合过程COM拆分为两个拆分为两个部分部分 always (cs or EOC)begin/状态译码和状态转换状态译码和状态转换 case(cs)s0:next_state=s1;s1:next_state=s2;s2:if(EOC=1b1)next_state=s3;else next_state=s2;s3:next_state=s4;s4:next_state=s0;default:next_state=s0;endcase end always (cs or EOC)begin/对外控制信号输出对外控制信号输出 case(cs)s0:begin ALE=0;START=0;OE=0;LOCK=0;ends1:begin ALE=1;START=1;OE=0;LOCK=0;end s2:begin ALE=0;START=0;OE=0;LOCK=0;end s3:begin ALE=0;START=0;OE=1;LOCK=0;end s4:begin ALE=0;START=0;OE=1;LOCK=1;end default:begin ALE=0;START=0;OE=0;LOCK=0;end endcase end E D A技术与应用10.2.2 序列检测器及其状态机设计序列检测器及其状态机设计序列检测器用于检测一组或多组由二进制码组成的脉冲序序列检测器用于检测一组或多组由二进制码组成的脉冲序列信号,当序列检测器连续收到一组串行二进制码后,如列信号,当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出果这组码与检测器中预先设置的码相同,则输出1,否则输,否则输出出0。这种检测的关键在于正确码的收到必须是连续的,这就要这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次正确码及正确序列,直到连续的求检测器必须记住前一次正确码及正确序列,直到连续的检测中所收到的每一位码都与预置数的对应码相同,任何检测中所收到的每一位码都与预置数的对应码相同,任何一位不相等都将回到初始状态重新开始检测。一位不相等都将回到初始状态重新开始检测。E D A技术与应用例例10-4:8位序列数位序列数11010011的序列检测器的序列检测器 module SCHK(input CLK,DIN,RST,output SOUT);parameter s0=40,s1=41,s2=42,s3=43,s4=44,s5=45,s6=46,s7=47,s8=48;/设定设定9个状态参数个状态参数 reg 8:0 ST,NST;always (posedge CLK or posedge RST)begin if(RST)ST=s0;else ST=NST;end always (ST or DIN)begin/11010011串行输入,高位在前串行输入,高位在前 case(ST)s0:if(DIN=1b1)NST=s1;else NST=s0;s1:if(DIN=1b1)NST=s2;else NST=s0;s2:if(DIN=1b0)NST=s3;else NST=s0;s3:if(DIN=1b1)NST=s4;else NST=s0;s4:if(DIN=1b0)NST=s5;else NST=s0;s5:if(DIN=1b0)NST=s6;else NST=s0;s6:if(DIN=1b1)NST=s7;else NST=s0;s7:if(DIN=1b1)NST=s8;else NST=s0;s8:if(DIN=1b0)NST=s3;else NST=s0;default:NST=s0;endcase end assign SOUT=(ST=s8);endmodule测出的数据测出的数据110恰好与原恰好与原序列数的头三位相同序列数的头三位相同 E D A技术与应用10.3 Mealy型状态机设计型状态机设计Mealy型状态机与型状态机与Moore型状态机相比,输出变化要领型状态机相比,输出变化要领先一个周期,即一旦输入信号或状态发生变化,输出信先一个周期,即一旦输入信号或状态发生变化,输出信号即刻发生变化。号即刻发生变化。Mealy机与机与Moore机在设计上基本相机在设计上基本相同,只是同,只是Mealy机的组合过程结构中的输出信号是当前机的组合过程结构中的输出信号是当前状态和当前输入的函数。状态和当前输入的函数。Mealy机将时序过程与组合过程混合,在同一个过程中机将时序过程与组合过程混合,在同一个过程中决定主控状态译码和主控时序,决定主控状态译码和主控时序,所以不需要用次态来传所以不需要用次态来传递状态。递状态。E D A技术与应用例例10-5:双过程:双过程Mealy机机 module MEALY1(input CLK,DIN1,DIN2,RST,output reg 4:0 Q);reg 4:0 PST;parameter st0=0,st1=1,st2=2,st3=3,st4=4;always (posedge CLK or posedge RST)begin:REG if(RST)PST=st0;else begincase(PST)st0:if(DIN1=1b1)PST=st1;else PST=st0;st1:if(DIN1=1b1)PST=st2;else PST=st1;st2:if(DIN1=1b1)PST=st3;else PST=st2;st3:if(DIN1=1b1)PST=st4;else PST=st3;st4:if(DIN1=1b0)PST=st0;else PST=st4;default:PST=st0;endcase end endAlways (PST of DIN2)begin:COM/输出控制信号的过程输出控制信号的过程 case(PST)st0:if(DIN2=1b1)Q=5H10;else Q=5H0A;st1:if(DIN2=1b0)Q=5H17;else Q=5H14;st2:if(DIN2=1b1)Q=5H15;else Q=5H13;st3:if(DIN2=1b0)Q=5H1B;else Q=5H09;st4:if(DIN2=1b1)Q=5H1D;else Q=5H0D;default:Q=5b00000;endcase endendmodule E D A技术与应用过程过程REG是时序与组合混合型过程,将状态机的主控时序电路是时序与组合混合型过程,将状态机的主控时序电路和主控状态译码电路同时用一个过程来表达。和主控状态译码电路同时用一个过程来表达。过程过程COM负责根据状态和输入信号给出不同的对外控制信号负责根据状态和输入信号给出不同的对外控制信号输出。输出。双过程双过程Mealy机状态图机状态图 E D A技术与应用双过程双过程Mealy机仿真波形机仿真波形PST是现态转换情况,是现态转换情况,DIN1控制各状态控制各状态的的转换方式,转换方式,DIN2控制对控制对外控制信号码的输出:当复位后,且外控制信号码的输出:当复位后,且DIN1=0时,一直处于时,一直处于st0状态状态,若此时,若此时DIN2=0,输出码,输出码0AH;当;当DIN1都为都为1时,每一个时钟上时,每一个时钟上升沿后,都转入下一状态,直到状态升沿后,都转入下一状态,直到状态s4,同时根据每一个状态下,同时根据每一个状态下的的DIN2的值输出相应设定的控制码,一直到的值输出相应设定的控制码,一直到DIN1=0才回到初始才回到初始状态状态s0。输出信号中存在毛刺,为了排除毛刺,可通过选择可能的优化设输出信号中存在毛刺,为了排除毛刺,可通过选择可能的优化设置,也可将输出通过寄存器锁存,滤除毛刺。置,也可将输出通过寄存器锁存,滤除毛刺。毛刺毛刺一旦输入信号一旦输入信号DIN2发生变化,发生变化,Q即刻发生变化(异步)即刻发生变化(异步)E D A技术与应用例例10-6:单过程:单过程Mealy机机 module MEALY2(input CLK,DIN1,DIN2,RST,output reg 4:0 Q);reg 4:0 PST;parameter st0=0,st1=1,st2=2,st3=3,st4=4;always (posedge CLK or posedge RST)begin:REG if(RST)PST=st0;else begincase(PST)st0:begin if(DIN2=1b1)Q=5H10;else Q=5H0A;if(DIN1=1b1)PST=st1;else PST=st0;end st1:begin if(DIN2=1b0)Q=5H17;else Q=5H14;if(DIN1=1b1)PST=st2;else PST=st1;end st2:begin if(DIN2=1b1)Q=5H15;else Q=5H13;if(DIN1=1b1)PST=st3;else PST=st2;end st3:begin if(DIN2=1b0)Q=5H1B;else Q=5H09;if(DIN1=1b1)PST=st4;else PST=st3;end st4:begin if(DIN2=1b1)Q=5H1D;else Q=5H0D;if(DIN1=1b0)PST=st0;else PST=st4;default:begin PST=st0;Q=5b00000;endendcase end endendmodule E D A技术与应用单过程单过程Mealy机仿真波形机仿真波形单过程单过程Mealy机状态图(与双过程相同)机状态图(与双过程相同)输入信号输入信号DIN2发生变化,要等时钟上升沿后发生变化,要等时钟上升沿后Q才才发生变化(同步)发生变化(同步)E D A技术与应用例例10-7:单过程序列检测器:单过程序列检测器Mealy机机 module SCHK(input CLK,DIN,RST,output SOUT);parameter s0=0,s1=1,s2=2,s3=3,s4=4,s5=5,s6=6,s7=7,s8=8;reg 8:0 ST;always (posedge CLK)begin SOUT=0;if(RST)ST=s0;else begincase(ST)s0:if(DIN=1b1)ST=s1;else ST=s0;s1:if(DIN=1b1)ST=s2;else ST=s0;s2:if(DIN=1b0)ST=s3;else ST=s0;s3:if(DIN=1b1)ST=s4;else ST=s0;s4:if(DIN=1b0)ST=s5;else ST=s0;s5:if(DIN=1b0)ST=s6;else ST=s0;s6:if(DIN=1b1)ST=s7;else ST=s0;s7:if(DIN=1b1)ST=s8;else ST=s0;s8:begin SOUT=1;if(DIN=1b0)ST=s3;else ST=s0;end default:ST=s0;endcase end endendmodule E D A技术与应用单过程单过程序序列检测器列检测器Mealy机仿真波形机仿真波形与双过程序列检测器与双过程序列检测器Moore机相比,单过程机相比,单过程Mealy机的仿真波形在机的仿真波形在SOUT的输出延迟了一个时钟,这种延迟数据具有滤波作用。如的输出延迟了一个时钟,这种延迟数据具有滤波作用。如果果SOUT是一个多位复杂算法的组合逻辑输出,可能会有许多毛是一个多位复杂算法的组合逻辑输出,可能会有许多毛刺,引起不良后果,利用单过程刺,引起不良后果,利用单过程Mealy机形式可以有所改善。机形式可以有所改善。双过程双过程序序列检测器列检测器Moore机仿真波形机仿真波形 E D A技术与应用10.4 状态机图形编辑设计状态机图形编辑设计(1)打开状态机图形编辑窗:在)打开状态机图形编辑窗:在Quartus II的工程管理窗中的工程管理窗中点击点击FileNew,选择状态机文件,选择状态机文件State Machine File。(2)打开状态机图形编辑窗后,在)打开状态机图形编辑窗后,在Quartus II的工程管理窗的工程管理窗中点击中点击ToolsState MachineWizard。E D A技术与应用(3)在)在State Machine Wizard最初的对话框中选择生成一个最初的对话框中选择生成一个新状态机新状态机“Create a new state machine design”,然后在后面,然后在后面出来的框中分别选择复位信号控制方式和有效方式,如异步出来的框中分别选择复位信号控制方式和有效方式,如异步和高电平有效:和高电平有效:Asynchronous和和active-high。E D A技术与应用(4)在状态机编辑器对话框中设置状态元素、输入输出信号、)在状态机编辑器对话框中设置状态元素、输入输出信号、状态转换条件等。状态转换条件等。状态元素状态元素输入信号输入信号转换状态条件转换状态条件输出信号输出信号不同状态对应的不同状态对应的输出信号的值输出信号的值 E D A技术与应用(5)完成后存盘,文件后缀是)完成后存盘,文件后缀是.smf。可以从状态机图形编辑。可以从状态机图形编辑器上看到转换图形,还可以利用左侧的工具进行一些修改补器上看到转换图形,还可以利用左侧的工具进行一些修改补充。将这个图形状态机存盘后,可以以此文件作为工程进行充。将这个图形状态机存盘后,可以以此文件作为工程进行设计。设计。状态转换图形状态转换图形 E D A技术与应用(6)也可以将这个图形状态机文件转变成)也可以将这个图形状态机文件转变成HDL代码文件。选代码文件。选择择ToolsGenerate HDL File(HDL文件控制项),在打开的文件控制项),在打开的窗口中,选择需要转变的硬件描述语言项,包括窗口中,选择需要转变的硬件描述语言项,包括VHDL、Verilog HDL或或System Verilog。E D A技术与应用10.5 不同编码类型状态机不同编码类型状态机用文字符号定义各状态元素的状态机称为符号化状态机,用文字符号定义各状态元素的状态机称为符号化状态机,其状态元素的具体编码由其状态元素的具体编码由Verilog状态机的综合器根据预设状态机的综合器根据预设的约束来确定。的约束来确定。可直接将各状态用具体的二进制数来定义,不使用文字符可直接将各状态用具体的二进制数来定义,不使用文字符号,这种编码方式称为直接编码方式。号,这种编码方式称为直接编码方式。E D A技术与应用10.5.1 直接输出型编码直接输出型编码最典型的应用实例就是计数器。计数器本质上是一个主控时最典型的应用实例就是计数器。计数器本质上是一个主控时序过程与一个主控组合过程合二为一的状态机,计数输出就序过程与一个主控组合过程合二为一的状态机,计数输出就是各状态的状态码。是各状态的状态码。决定了计数进决定了计数进制数(或膜制数(或膜n)计数输出是计数输出是此状态机状此状态机状态码输出态码输出若为异步清若为异步清0,则计数器是,则计数器是模模m计数器,计数器,若为同步清若为同步清0,则计数器是,则计数器是模模m+1计数器计数器 E D A技术与应用状态码直接输出型状态机:将状态编码直接输出作为控制信状态码直接输出型状态机:将状态编码直接输出作为控制信号,即号,即output=state,要求各状态的编码作特殊的安排,以适,要求各状态的编
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服