




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 E D A技术与应用第第10章章 VerilogVerilog状态机状态机设计技术设计技术 E D A技术与应用10.1 Verilog状态机的一般形式状态机的一般形式 广义而论,只要涉及触发器的电路,无论电路大小,都广义而论,只要涉及触发器的电路,无论电路大小,都能归结为状态机。能归结为状态机。 有限状态机用来有限状态机用来实现一个数字电路的控制部分实现一个数字电路的控制部分。与。与CPU的功能类似,综合了时序逻辑和组合逻辑电路的功能类似,综合了时序逻辑和组合逻辑电路。 CPU是通过操作指令和硬件操作单元来实现控制功能,是通过操作指令和硬件操作单元来实现控制功能,而有限状态机是而有限状态机
2、是通过状态转移来实现控制功能通过状态转移来实现控制功能。 综合器能从不同表述形态的综合器能从不同表述形态的HDL代码中轻易萃取出状态代码中轻易萃取出状态机,并加以多侧面、多目标和多种形式的优化。机,并加以多侧面、多目标和多种形式的优化。 E D A技术与应用10.1.1 状态机的特点与优势状态机的特点与优势面对同一个设计项目的不同形式的逻辑设计方案中,利用有面对同一个设计项目的不同形式的逻辑设计方案中,利用有限状态机的设计方案来描述和实现将可能是最佳选择。限状态机的设计方案来描述和实现将可能是最佳选择。有限状态机的优越性有限状态机的优越性:(1)高效的顺序控制模型)高效的顺序控制模型(2)容易
3、利用现成的)容易利用现成的EDA工具进行优化设计工具进行优化设计(3)性能稳定)性能稳定(4)高速性能)高速性能(5)高可靠性能)高可靠性能 E D A技术与应用10.1.2 状态机的一般结构状态机的一般结构用用Verilog设计的状态机根据不同的设计的状态机根据不同的分类分类标准可以分为多种不标准可以分为多种不同形式:同形式: 从状态机的信号输出方式上分:从状态机的信号输出方式上分:Mealy型型和和Moore型型状态机状态机 从状态机的结构描述上分:从状态机的结构描述上分:单过程单过程状态机和状态机和多过程多过程状态机状态机 从状态表达方式上分:从状态表达方式上分:符号化符号化状态机和状态
4、机和确定状态编码确定状态编码的状的状态机态机 从状态机编码方式上分:从状态机编码方式上分:顺序编码顺序编码、一位热编码一位热编码或或其他编其他编码方式码方式状态机状态机最一般和最常用的状态机结构中通常包含了最一般和最常用的状态机结构中通常包含了说明部分说明部分、主控主控时序过程时序过程、主控组合过程主控组合过程、辅助过程辅助过程等几个部分等几个部分 E D A技术与应用说明部分说明部分中包含状态转换变量的定义和所有可能状态的说明,中包含状态转换变量的定义和所有可能状态的说明,必要时还要确定每一状态的编码形式,最好是纯抽象的符号必要时还要确定每一状态的编码形式,最好是纯抽象的符号化状态机,即所定
5、义的状态序列和状态转换变量都不涉及具化状态机,即所定义的状态序列和状态转换变量都不涉及具体的数值、编码,甚至数据类型或变量类型。体的数值、编码,甚至数据类型或变量类型。1、状态机说明部分、状态机说明部分parameter2: 0 s0=0, s1=1, s2=2 , s3=3, s4=4;reg 2: 0 current_state, next_state; 状态元素状态元素s0、s1等用关键词等用关键词parameter来定义,各状态元素来定义,各状态元素所取得数值或编码必须写出具体值。所取得数值或编码必须写出具体值。 parameter旁的位宽说明可写可不写旁的位宽说明可写可不写 curr
6、ent_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类型的标识符类型的标识符
7、第二第二句将状态变量句将状态变量current_state、next_state定义为定义为type_user类型类型 E D A技术与应用2、主控时序过程、主控时序过程 主控时序过程主控时序过程指负责状态机运转和在时钟驱动下负责状态指负责状态机运转和在时钟驱动下负责状态转换的过程。转换的过程。 状态机是随外部时钟信号,以同步时序方式工作的,状态状态机是随外部时钟信号,以同步时序方式工作的,状态机中必须包含一个机中必须包含一个对工作时钟敏感对工作时钟敏感的过程,状态机向下一的过程,状态机向下一状态转换的实现仅取决于时钟信号的到来。状态转换的实现仅取决于时钟信号的到来。 当时钟的有效跳变到来时,
8、时序过程只是当时钟的有效跳变到来时,时序过程只是机械地将代表次机械地将代表次态的信号态的信号next_state中的内容送入现态的信号中的内容送入现态的信号current_state中中,而信号,而信号next_state中的内容完全由其他过程根据实际情中的内容完全由其他过程根据实际情况来决定。况来决定。 此时序过程中也可放置一些同步或异步清此时序过程中也可放置一些同步或异步清0或置位方面的控或置位方面的控制信号。制信号。 E D A技术与应用3、主控组合过程、主控组合过程 主控组合过程主控组合过程根据当前状态和外部的信号发出控制信号,根据当前状态和外部的信号发出控制信号,同时确定下一状态的走
9、向。同时确定下一状态的走向。 在时钟的作用下,在时钟的作用下,REG时序过程将次态信号的内容时序过程将次态信号的内容next_state传递传递给现态信号给现态信号current_state COM组合过程通过信号组合过程通过信号current_state中的状态值,进入相应的状态中的状态值,进入相应的状态; 在此状态中根据外部的信号(如在此状态中根据外部的信号(如state_inputs)向内或向外发出控制)向内或向外发出控制信号(如信号(如com_outputs);); 同时根据外部信号(如同时根据外部信号(如state_inputs)向次态信号)向次态信号next_state中赋相中赋相
10、应的状态值,确定下一状态的走向;应的状态值,确定下一状态的走向; 此状态值通过此状态值通过next_state传给传给REG时序过程,直到下一个时钟脉冲时序过程,直到下一个时钟脉冲的到来。的到来。 E D A技术与应用4、辅助过程、辅助过程 辅助过程辅助过程用于配合状态机工作的组合过程或时序过程。例用于配合状态机工作的组合过程或时序过程。例如为了完成某种算法的过程,或为了存储数据的存储过程,如为了完成某种算法的过程,或为了存储数据的存储过程,或用于配合状态机工作的其他时序过程等。或用于配合状态机工作的其他时序过程等。 例例10-1 module FSM_EXP (clk, reset, sta
11、te_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; /定义现态和次态的
12、状态变量定义现态和次态的状态变量 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 co
13、mb_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_inpu
14、ts=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技术与应用状态机的状态转换图状态机的状态转换图状态机的工作时序状态
15、机的工作时序间接了解状态机间接了解状态机内部运行情况内部运行情况利用利用它改变状态它改变状态机变化模式和状机变化模式和状态转变态转变方向方向 E D A技术与应用10.1.3 初始控制与表述初始控制与表述Verilog状态机的相关设置控制:状态机的相关设置控制:(1)打开打开“状态机萃取状态机萃取”开关开关:AssignmentsSettings,在,在category栏,选择栏,选择Analysis & Synthesis Settings,单击旁边的,单击旁边的按钮按钮More Settings,在弹出的对话框下方,在弹出的对话框下方Existing option settings
16、栏单击选中栏单击选中Extract Verilog State Machines。在上方的。在上方的Option的的Setting栏选择栏选择On E D A技术与应用10.1.3 初始控制与表述初始控制与表述Verilog状态机的相关设置控制:状态机的相关设置控制:(2)关于参数定义表述关于参数定义表述:在状态机设计中,用:在状态机设计中,用parameter进进行参数定义(综合器萃取状态机的主要依据),一旦打开行参数定义(综合器萃取状态机的主要依据),一旦打开“状态机萃取状态机萃取”开关,其定义的形式可以十分随意。比如,开关,其定义的形式可以十分随意。比如,可以表述为可以表述为“param
17、eter s0=0, s1=1”,也可以表述为也可以表述为“parameter s0=4b1001, s1=4b0011”,最后状态机被综合的,最后状态机被综合的结果未必按照此表述方式来构建。结果未必按照此表述方式来构建。(3)状态变量定义表述状态变量定义表述:如果已打开:如果已打开“状态机萃取状态机萃取”开关,开关,定义句中位宽定义句中位宽msb: lsb的表述可以比较随意,不必一定与状的表述可以比较随意,不必一定与状态数对应。假设有态数对应。假设有5个状态,定义时个状态,定义时“reg 2: 0 c_st, next_state”中用了位宽中用了位宽2:0,而不是,而不是4:0。一旦打开了
18、一旦打开了“状态机萃取状态机萃取”开关,就可利用开关,就可利用Quartus II的状态的状态图观察器直观了解当前状态图走向,方法是:图观察器直观了解当前状态图走向,方法是:ToolsNetlist Viewers State Machine Viewer E D A技术与应用10.2 Moore型状态机及其设计型状态机及其设计 从从信号输出方式上分,有信号输出方式上分,有Moore型和型和Mealy型两类状态型两类状态机。机。 Mealy型状态机型状态机属于异步输出状态机,它的输出是当前属于异步输出状态机,它的输出是当前状态和所有输入信号的函数,它的输出是在输入变化后状态和所有输入信号的函数
19、,它的输出是在输入变化后立即发生的,不依赖时钟的同步。立即发生的,不依赖时钟的同步。 Moore型状态机型状态机属于同步输出状态机,它的输出仅为当属于同步输出状态机,它的输出仅为当前状态的函数,这类状态机在输入发生变化时必须等待前状态的函数,这类状态机在输入发生变化时必须等待时钟的到来,比时钟的到来,比Mealy机要多等待一个时钟周期。机要多等待一个时钟周期。 例例10-1既属于既属于Mealy型状态机,又属于型状态机,又属于Moore型状态机。型状态机。 E D A技术与应用10.2.1 多过程结构状态机多过程结构状态机ADC0809工作时序和芯片引脚图工作时序和芯片引脚图 START为转换
20、为转换启动控制信号启动控制信号,高电平有效。,高电平有效。 ALE为模拟信号输入选通端口为模拟信号输入选通端口地址锁存信号地址锁存信号,上升沿有效。,上升沿有效。 EOC为为状态信状态信号,号,START有效后,有效后,EOC为低电平,进入为低电平,进入转换状态,转换时间约转换状态,转换时间约100m ms,转换结束后,转换结束后,EOC变为高变为高电平。电平。 OE为为输出允许控输出允许控制,高电平有效。制,高电平有效。 E D A技术与应用控制控制ADC0809采样状态图采样状态图监测监测EOC,低电平,转换,低电平,转换未结束,停留,高电平,未结束,停留,高电平,转换结束,进入转换结束,
21、进入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
22、转换好的转换好的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 s
23、0=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
24、: 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数据
25、口数据口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
26、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,并由此信号将,并由此信号将状态状
27、态变量传输给变量传输给COM组合过程。组合过程。 组合过程组合过程COM:(1)状态译码功能。根据从现态信号状态译码功能。根据从现态信号cs中获得的状态中获得的状态变量,以及来自变量,以及来自0809的状态线信号的状态线信号EOC,决定下一状态的转移方向,决定下一状态的转移方向,即次态的状态变量。即次态的状态变量。(2)采样控制功能。根据采样控制功能。根据cs中的状态变量确定对中的状态变量确定对0809的控制信号的控制信号ALE、START、OE等输出相应控制信号,当采样结等输出相应控制信号,当采样结束后还要通过束后还要通过LOCK向锁存器过程向锁存器过程LATCH发出锁存信号。发出锁存信号。
28、 锁存器辅助过程锁存器辅助过程LATCH:将由:将由0809的的D7.0数据输出口输出的数据输出口输出的8位已位已转换好的数据锁存起来。转换好的数据锁存起来。 E D A技术与应用ADC0809采样状态机工作时序采样状态机工作时序状态状态s0:复位信号后即进入状态:复位信号后即进入状态s0。状态状态s1:第二个时钟上升沿后,状态机进入状态:第二个时钟上升沿后,状态机进入状态s1(即(即cs=s1),),由由START、ALE发出启动采样和地址选通的控制信号。发出启动采样和地址选通的控制信号。状态状态s2:EOC由高电平变为低电平,由高电平变为低电平,0809的的8位数据输出端呈现位数据输出端呈
29、现高阻态高阻态“ZZ”。等待。等待CLK数个时钟周期后,数个时钟周期后,EOC变为高电平,变为高电平,表示转换结束。表示转换结束。状态状态s3:在此状态的输出允许:在此状态的输出允许OE被设置成高电平。此时被设置成高电平。此时8089的的数据输出端数据输出端D7.0即输出已经转换好的数据即输出已经转换好的数据5EH。状态状态s4:LOCK_T发出一个脉冲,其上升沿立即将发出一个脉冲,其上升沿立即将D端口的端口的5E锁锁入入Q和和REGL中。中。由内部由内部LOCK信信号引出的号引出的测试信号测试信号激励按激励按0809控制控制时序人为时序人为设定设定 E D A技术与应用 例例10-3:修改后
30、的:修改后的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/对外控
31、制信号输出对外控制信号输出 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 end
32、case end E D A技术与应用10.2.2 序列检测器及其状态机设计序列检测器及其状态机设计 序列检测器序列检测器用于检测一组或多组由二进制码组成的脉冲序用于检测一组或多组由二进制码组成的脉冲序列信号,当序列检测器连续收到一组串行二进制码后,如列信号,当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出果这组码与检测器中预先设置的码相同,则输出1,否则输,否则输出出0。 这种检测的这种检测的关键关键在于正确码的收到必须是连续的,这就要在于正确码的收到必须是连续的,这就要求检测器必须记住前一次正确码及正确序列,直到连续的求检测器必须记住前一次正确码及正确序
33、列,直到连续的检测中所收到的每一位码都与预置数的对应码相同,任何检测中所收到的每一位码都与预置数的对应码相同,任何一位不相等都将回到初始状态重新开始检测。一位不相等都将回到初始状态重新开始检测。 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;
34、 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 (D
35、IN=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
36、型状态机设计型状态机设计 Mealy型状态机型状态机与与Moore型状态机相比,输出变化要领型状态机相比,输出变化要领先一个周期,即一旦输入信号或状态发生变化,输出信先一个周期,即一旦输入信号或状态发生变化,输出信号即刻发生变化。号即刻发生变化。Mealy机与机与Moore机在设计上基本相机在设计上基本相同,只是同,只是Mealy机的组合过程结构中的输出信号是当前机的组合过程结构中的输出信号是当前状态和当前输入的函数。状态和当前输入的函数。 Mealy机将时序过程与组合过程混合,在同一个过程中机将时序过程与组合过程混合,在同一个过程中决定主控状态译码和主控时序,决定主控状态译码和主控时序, 所
37、以不需要用次态来传所以不需要用次态来传递状态。递状态。 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;
38、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)
39、 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是时序与组合混合型过程,将状态机的主控时序电是时序与组合混合型过程,将状态机的主控时序电路和主控状态译码电路同时用一个
40、过程来表达。路和主控状态译码电路同时用一个过程来表达。 过程过程COM负责根据状态和输入信号给出不同的对外控制信号负责根据状态和输入信号给出不同的对外控制信号输出。输出。双过程双过程Mealy机状态图机状态图 E D A技术与应用双过程双过程Mealy机仿真波形机仿真波形 PST是现态转换情况,是现态转换情况,DIN1控制各状态控制各状态的的转换方式,转换方式,DIN2控制对控制对外控制信号码的输出:当复位后,且外控制信号码的输出:当复位后,且DIN1=0时,一直处于时,一直处于st0状状态,若此时态,若此时DIN2=0,输出码,输出码0AH;当;当DIN1都为都为1时,每一个时钟时,每一个时
41、钟上升沿后,都转入下一状态,直到状态上升沿后,都转入下一状态,直到状态s4,同时根据每一个状态,同时根据每一个状态下的下的DIN2的值输出相应设定的控制码,一直到的值输出相应设定的控制码,一直到DIN1=0才回到初才回到初始状态始状态s0。 输出信号中存在毛刺,为了排除毛刺,可通过选择可能的优化设输出信号中存在毛刺,为了排除毛刺,可通过选择可能的优化设置,也可将输出通过寄存器锁存,滤除毛刺。置,也可将输出通过寄存器锁存,滤除毛刺。毛刺毛刺一旦输入信号一旦输入信号DIN2发生变化,发生变化,Q即刻发生变化(异步)即刻发生变化(异步) E D A技术与应用 例例10-6 :单过程:单过程Mealy
42、机机 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
43、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; el
44、se 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 C
45、LK, 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=
46、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
47、机仿真波形机仿真波形 与双过程序列检测器与双过程序列检测器Moore机相比,单过程机相比,单过程Mealy机的仿真波形在机的仿真波形在SOUT的输出延迟了一个时钟,这种延迟数据具有滤波作用。如的输出延迟了一个时钟,这种延迟数据具有滤波作用。如果果SOUT是一个多位复杂算法的组合逻辑输出,可能会有许多毛是一个多位复杂算法的组合逻辑输出,可能会有许多毛刺,引起不良后果,利用单过程刺,引起不良后果,利用单过程Mealy机形式可以有所改善。机形式可以有所改善。双过程双过程序序列检测器列检测器Moore机仿真波形机仿真波形 E D A技术与应用10.4 状态机图形编辑设计状态机图形编辑设计(1)打开状态
48、机图形编辑窗打开状态机图形编辑窗:在:在Quartus II的工程管理窗的工程管理窗中点击中点击FileNew,选择状态机文件,选择状态机文件State Machine File。(2)打开状态机图形编辑窗后,在)打开状态机图形编辑窗后,在Quartus II的工程管理的工程管理窗中点击窗中点击ToolsState MachineWizard。 E D A技术与应用(3)在)在State Machine Wizard最初的对话框中选择生成一个最初的对话框中选择生成一个新状态机新状态机“Create a new state machine design”,然后在后,然后在后面出来的框中分别选择复
49、位信号控制方式和有效方式,如异面出来的框中分别选择复位信号控制方式和有效方式,如异步和高电平有效:步和高电平有效:Asynchronous和和active-high。 E D A技术与应用(4)在状态机编辑器对话框中设置)在状态机编辑器对话框中设置状态元素状态元素、输入输出信号输入输出信号、状态转换条件状态转换条件等。等。状态元素状态元素输入信号输入信号转换状态条件转换状态条件输出信号输出信号不同状态对应的不同状态对应的输出信号的值输出信号的值 E D A技术与应用(5)完成后存盘,文件后缀是)完成后存盘,文件后缀是.smf。可以从状态机图形编辑。可以从状态机图形编辑器上看到转换图形,还可以利
50、用左侧的工具进行一些修改补器上看到转换图形,还可以利用左侧的工具进行一些修改补充。将这个图形状态机存盘后,可以以此文件作为工程进行充。将这个图形状态机存盘后,可以以此文件作为工程进行设计。设计。状态转换图形状态转换图形 E D A技术与应用(6)也可以将这个图形状态机文件转变成)也可以将这个图形状态机文件转变成HDL代码文件。选代码文件。选择择ToolsGenerate HDL File(HDL文件控制项),在打开的文件控制项),在打开的窗口中,选择需要转变的硬件描述语言项,包括窗口中,选择需要转变的硬件描述语言项,包括VHDL、Verilog HDL或或System Verilog。 E D
51、 A技术与应用10.5 不同编码类型状态机不同编码类型状态机 用用文字符号文字符号定义各状态元素的状态机称为定义各状态元素的状态机称为符号化状态机符号化状态机,其状态元素的具体编码由其状态元素的具体编码由Verilog状态机的综合器根据预设状态机的综合器根据预设的约束来确定。的约束来确定。 可直接将各状态用可直接将各状态用具体的二进制数具体的二进制数来定义,不使用文字符来定义,不使用文字符号,这种编码方式称为号,这种编码方式称为直接编码方式直接编码方式。 E D A技术与应用10.5.1 直接输出型编码直接输出型编码最典型的应用实例就是计数器。计数器本质上是一个主控时最典型的应用实例就是计数器
52、。计数器本质上是一个主控时序过程与一个主控组合过程合二为一的状态机,计数输出就序过程与一个主控组合过程合二为一的状态机,计数输出就是各状态的状态码。是各状态的状态码。决定了计数进决定了计数进制数(或膜制数(或膜n)计数输出是计数输出是此状态机状此状态机状态码输出态码输出若为异步清若为异步清0,则计数器是模则计数器是模m计数器,若计数器,若为同步清为同步清0,则计数器是模则计数器是模m+1计数器计数器 E D A技术与应用状态码直接输出型状态机状态码直接输出型状态机:将状态编码直接输出作为控制信:将状态编码直接输出作为控制信号,即号,即output=state,要求各状态的编码作特殊的安排,以适
53、,要求各状态的编码作特殊的安排,以适应控制对象的要求。应控制对象的要求。状状态态状态编码状态编码STARTALEOELOCKB功能说明功能说明s000000初始态初始态s111000启动转换启动转换s200001若测得若测得EOC=1时,转下时,转下一状态一状态ST3s300100输出转换好的数据输出转换好的数据s400110利用利用LOCK的上升沿江的上升沿江转换好的数据锁存转换好的数据锁存控制控制ADC0809采样状态机的状态编码表采样状态机的状态编码表 E D A技术与应用 例例10-8 :ADC0809采样控制(状态码直接输出型)采样控制(状态码直接输出型) module ADC080
54、9 (D, CLK, ECO, RST, ALE, START, OE, ADDA, Q, LOCK_T); input 7: 0 D; input CLK, RST, EOC; output START, OE, ALE, ADDA, LOCK_T; output 7: 0 Q; parameter s0=5B00000, s1=5B11000, s2=5B00001, s3=5B00100, s4=5B00110; reg 4: 0 cs, SOUT, next_state; reg7: 0 REGL; reg LOCK; always (cs or EOC) begin case (cs
55、) s0 : begin next_state=s1; SOUT=s0; end s1 : begin next_state=s2; SOUT=s1; end s2 : begin SOUT=s2; if (EOC=1b1) next_state=s3; else next_state=s2; end s3 : begin SOUT=s3; next_state=s4; end s4 : begin SOUT=s4; next_state=s0; end default : begin next_state=s0; SOUT=s0; end endcase end always (posedg
56、e CLK or posedge RST) begin /时序过程时序过程 if (RST) cs=s0; else cs=next_state; end always (posedge SOUT1) /寄存器过程寄存器过程 if (SOUT1) REGAL=D; assign ADDA=0; assign Q=REGL; assign LOCK_T=SOUT1; assign OE=SOUT2; assign ALE=SOUT3; assign START=SOUT4;endmodule E D A技术与应用状态机工作时序状态机工作时序状态码直接输出型状态机的优点状态码直接输出型状态机的优点
57、:输出速度快,不大可能出:输出速度快,不大可能出现毛刺现象(因为控制输出信号直接来自构成状态编码的触现毛刺现象(因为控制输出信号直接来自构成状态编码的触发器)。发器)。状态码直接输出型状态机状态码直接输出型状态机的缺点的缺点:程序可读性差,用于状态:程序可读性差,用于状态译码的组合逻辑资源比其他以相同触发器数量构成的状态要译码的组合逻辑资源比其他以相同触发器数量构成的状态要多,而且控制非法状态出现的容错技术要求较高。多,而且控制非法状态出现的容错技术要求较高。 E D A技术与应用10.5.2 用宏定义语句定义状态编码用宏定义语句定义状态编码 例例10-9 :ADC0809采样控制(宏替换语句
58、采样控制(宏替换语句define定定义状态元素)义状态元素) define s0 5B00000define s1 5B11000define s2 5B00001define s3 5B00100define s4 5B00110module ADC0809 (D, CLK, ECO, RST, ALE, START, OE, ADDA, Q, LOCK_T); input 7: 0 D; input CLK, RST, EOC; output START, OE, ALE, ADDA, LOCK_T; output 7: 0 Q;reg 4: 0 cs, SOUT, next_state;
59、 reg7: 0 REGL; reg LOCK; always (cs or EOC) begin case (cs) s0 : begin next_state=s1; SOUT=s0; end s1 : begin next_state=s2; SOUT=s1; end s2 : begin SOUT=s2; if (EOC=1b1) next_state=s3; else next_state=s2; end s3 : begin SOUT=s3; next_state=s4; end s4 : begin SOUT=s4; next_state=s0; end default : be
60、gin next_state=s0; SOUT=s0; end endcase end E D A技术与应用10.5.2 用宏定义语句定义状态编码用宏定义语句定义状态编码 例例10-9 -续续:ADC0809采样控制(宏替换语句采样控制(宏替换语句define定义状态元素)定义状态元素) always (posedge CLK or posedge RST) begin /时序过程时序过程 if (RST) cs=s0; else cs=next_state; end always (posedge SOUT1) /寄存器过程寄存器过程 if (SOUT1) REGAL=D; assign ADDA=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度财产分割与子女教育保障协议:离婚后财产分配及子女培养责任协议
- 2025年跨境电商跨境电商物流运输及清关代理服务合同
- 2025年度电商平台VIP用户服务及全方位营销合作框架合同
- 2025年高标准绿色环保内墙抹灰及整体装修工程分包合同
- 口岸服务中心知识培训课件
- 2025年度甲级写字楼深度清洁及智能化设备升级服务合同
- 2025年生态农业技术研发与推广合作协议
- 2025年SET协议金融区块链支付平台设计与集成服务合同
- 2025年产品性能与消费者满意度市场调研采购合同
- 2025年度企业知识产权数据库在线服务订阅及更新合同
- 著名文学著作列夫托尔斯泰《复活》教育阅读名著鉴赏课件PPT
- 泛微协同办公应用平台解决方案
- (新)部编人教版高中历史中外历史纲要上册《第13课-从明朝建立到清军入关课件》讲解教学课件
- 医药行业专题报告:VCTE技术(福瑞股份子公司)专利概览
- GB/T 42430-2023血液、尿液中乙醇、甲醇、正丙醇、丙酮、异丙醇和正丁醇检验
- 《现代汉语》课件修辞
- 某园区综合运营平台项目建议书
- 创造适合教育(2017年0613)
- 易驱ED3000系列变频器说明书
- 农机行政处罚流程图
- GB∕T 6818-2019 工业用辛醇(2-乙基己醇)
评论
0/150
提交评论