EDA技术与应用中国地质大学通信工程系数字系统中状态机的设计EDA技术与应用中国地质大学通信工程系回忆计数器设计•设计一电路,包含基4计数器,和译码输出模块。计数器的输出(Present_value)从0到3循环;当计数值为2时,译码输出(DataOut)为“1”,否则输出“0”。Regs+1ClkPresent_valueQ(n)Next_valueQ(n+1)译码DataOutZ(n)EDA技术与应用中国地质大学通信工程系Regs+1ClkPresent_valueQ(n)Next_valueQ(n+1)译码DataOutZ(n)00/001/010/111/0EDA技术与应用中国地质大学通信工程系Regs+/-1ClkPresent_valueQ(n)Next_valueQ(n+1)译码DataOutZ(n)00/001/010/111/0扩展一个输入端din,当din=1时计数器递增计数;当din=0时计数器递减计数。dinDin=1Din=1Din=1Din=1Din=0Din=0Din=0Din=0EDA技术与应用中国地质大学通信工程系Regs+/-1ClkPresent_valueQ(n)Next_valueQ(n+1)译码DataOutZ(n)再将计数器修改成一个状态转换器,状态为S0,S1,S2,S3。每个状态的取值根据具体情况而定。比如S0=00,S1=11,S3=01,S4=10。dinDin=1Din=1Din=1Din=100/001/010/111/0Din=0Din=0Din=0Din=0EDA技术与应用中国地质大学通信工程系Regs译码ClkPresent_valueQ(n)Next_valueQ(n+1)译码DataOutZ(n)再将计数器修改成一个状态转换器,状态为S0,S1,S2,S3。每个状态的取值根据具体情况而定。比如S0=00,S1=11,S3=01,S4=10。dinDin=1Din=1Din=1Din=1S0/0S1/0S2/1S3/0Din=0Din=0Din=0Din=0EDA技术与应用中国地质大学通信工程系Regs译码ClkPresent_stateQ(n)Next_stateQ(n+1)译码DataOutZ(n)dinDin=1Din=1Din=1Din=1S0/0S1/0S2/1S3/0Din=0Din=0Din=0Din=0现在我们得到了一个比较通用的时序电路,这种电路统称为状态机(StateMachine)。EDA技术与应用中国地质大学通信工程系状态机的分类:NS组合逻辑电路CS寄存器OL组合逻辑电路DINCPRDMoore状态机内部结构图DOUTDOUTNS组合逻辑电路CS寄存器OL组合逻辑电路DINCPRDMealy状态机的内部结构图moore型和mealy型EDA技术与应用中国地质大学通信工程系状态机的表示方法1方法一:状态转换表输入当前状态下一状态输出0000001010000000…………EDA技术与应用中国地质大学通信工程系状态机的表示方法2方法二:算法流程图方法与软件程序的流程图类似状态转换表和算法流程图都不适合复杂系统的设计状态机的表示方法3方法三:状态转换图这是最流行的表示方法状态1状态4状态2状态3入/出入入入/出/出/出Moore条件控制定序直接控制定序状态机的表示方法3方法三:状态转换图这是最流行的表示方法状态1状态4状态2状态3入/出入入入/出/出/出/出Mealy条件控制定序直接控制定序EDA技术与应用中国地质大学通信工程系为什么要使用状态机一般有限状态机的设计有限状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点。状态机的结构模式相对简单。状态机容易构成性能良好的同步时序逻辑模块。状态机的VHDL表述丰富多样。在高速运算和控制方面,状态机更有其巨大的优势。就可靠性而言,状态机的优势也是十分明显的。EDA技术与应用中国地质大学通信工程系有限状态机的VHDL设计用户自定义数据类型定义语句TYPE语句用法如下:TYPE数据类型名IS数据类型定义OF基本数据类型;或TYPE数据类型名IS数据类型定义;以下列出了两种不同的定义方式:TYPEmyarrayISARRAY(0TO15)OFSTD_LOGIC;TYPEweekIS(sun,mon,tue,wed,thu,fri,sat);EDA技术与应用中国地质大学通信工程系有限状态机的VHDL设计用户自定义数据类型定义语句TYPEm_stateIS(st0,st1,st2,st3,st4,st5);SIGNALpresent_state,next_state:m_state;EDA技术与应用中国地质大学通信工程系一般有限状态机的设计实现有限状态机的VHDL设计1.说明部分2.主控时序进程comb_outputsstate_inputsresetclkFSM:s_machineCOMnext_statecurrent_statePROCESSREGPROCESS一般状态机结构框图工作示意图ARCHITECTURE...ISTYPEFSM_STIS(s0,s1,s2,s3);SIGNALcurrent_state,next_state:FSM_ST;...主控时序进程主控组合进程EDA技术与应用中国地质大学通信工程系3.主控组合进程一般有限状态机的设计实现主控组合进程的任务是根据外部输入的控制信号(包括来自状态机外部的信号和来自状态机内部其它非主控的组合或时序进程的信号),或(和)当前状态的状态值确定下一状态(next_state)的取向,即next_state的取值内容,以及确定对外输出或对内部其它组合或时序进程输出控制信号的内容。4.辅助进程EDA技术与应用中国地质大学通信工程系LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYs_machineISPORT(clk,reset:INSTD_LOGIC;state_inputs:INSTD_LOGIC_VECTOR(0TO1);comb_outputs:OUTINTEGERRANGE0TO15);ENDs_machine;ARCHITECTUREbehvOFs_machineISTYPEFSM_STIS(s0,s1,s2,s3);SIGNALcurrent_state,next_state:FSM_ST;BEGINREG:PROCESS(reset,clk)BEGINIFreset='1'THENcurrent_state=s0;ELSIFclk='1'ANDclk'EVENTTHENcurrent_state=next_state;ENDIF;ENDPROCESS;COM:PROCESS(current_state,state_Inputs)有限状态机的VHDL设计实例EDA技术与应用中国地质大学通信工程系BEGINCASEcurrent_stateISWHENs0=comb_outputs=5;IFstate_inputs=00THENnext_state=s0;ELSEnext_state=s1;ENDIF;WHENs1=comb_outputs=8;IFstate_inputs=00THENnext_state=s1;ELSEnext_state=s2;ENDIF;WHENs2=comb_outputs=12;IFstate_inputs=11THENnext_state=s0;ELSEnext_state=s3;ENDIF;WHENs3=comb_outputs=14;IFstate_inputs=11THENnext_state=s3;ELSEnext_state=s0;ENDIF;ENDcase;ENDPROCESS;ENDbehv;接上页思考:moore?ormealy?EDA技术与应用中国地质大学通信工程系状态机的工作时序图一般有限状态机的设计状态机的应用设计例子:设计一个二进制序列检测器,当检测到10110序列时,就输出1(一个时钟周期的脉冲)。其他情况下输出0。规定检测到一次之后,检测器复位到最初始的状态,重新从头检测。如下所示:输入:01101101101100输出:00000001000001状态转换图设计(Moore)10110S0/0S1/0S2/0S3/0S4/0S5/1Reset11001101001010110s1s2s3s4s5s0问题1:如何保证状态机在初始时状态为s0?问题2:在状态机跑飞,即脱离有效状态(s0—s5)时,如何使状态机能恢复工作Sx/0波形•波形如下图所示问题:如果需要将输出脉冲往前推一个时钟周期,该如何修改设计?1011010110s1s2s3s4s5s0输入时钟输出当前状态发现当当前壮态为s4,并且输入为0时,输出为1。状态转换图设计(Mealy)S0S1S2S3S4S5Reset100110100101sX/0/0/0/0/0/0/0/0/0/1/0/01011010110s1s2s3s4s5s0/00/1s0EDA技术与应用中国地质大学通信工程系练习:用状态机设计序列检测器(1101001)在通信系统中可以有什么用途?EDA技术与应用中国地质大学通信工程系EDA技术与应用中国地质大学通信工程系VHDL综合器易于优化易构成性能良好的时序逻辑模块结构模式简单、层次分明、易读易懂、易排错运行模式类似于CPU,易于进行顺序控制利用同步时序和全局时钟线可实现高速FSM高可靠性,非法状态易控制EDA技术与应用中国地质大学通信工程系EDA技术与应用中国地质大学通信工程系AD574控制方法•现在我们来讨论AD574A的CE、12/n8、nCS、R/nC和A0对其工作状态的控制过程。在CE=1、nCS=0同时满足时,AD574A才会正常工作,•在AD574处于工作状态时,当R/nC=0时A/D转换,当R/nC=1时进行数据读出。12/n8和A0端用来控制启动转换的方式和数据输出格式。•A0=0时,启动的是按完整12位数据方式进行的。当A0=1时,按8位A/D转换方式进行。•当R/nC=1,也即当AD574A处于数据状态时,A0和12/n8控制数据输出状态的格式。当12/n8=1时,数据以12位并行输出,当12/n8=0时,数据以8位分两次输出。而当A0=0时,输出转换数据的高8位,A0=1时输出A/D转换数据的低4位,这四位占一个字节的高半字节,低半字节补零。其控制逻辑真值表见表1。EDA技术与应用中国地质大学通信工程系Moore型有限状态机的设计三进程有限状态机CEnCSR/nC12/n8A0工作状态0XXXX禁止X1XXX禁止100X0启动12位转换100X1启动8位转换1011X12位并行输出有效10100高8位并行输出有效10101低4位加上尾随4个0有效AD574逻辑控制真值表(X表示任意)EDA技术与应用中国地质大学通信工程系三进程有限状态机AD574工作时序STATUS:AD574芯片的一个输出引脚,标志芯片的忙或闲的状态,在转换进行时,它为高电平,转换结束时变低电平。EDA技术与应用中国地质大学通信工程系8051与AD574的接口电路EDA技术与应用中国地质大学通信工程系三进程有限状态机AD574工作时序EDA技术与应用中国地质大学通信工程系三进程有限状态机采样状态机结构框图EDA技术与应用中国地质大学通信工程系LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYAD574ISPORT(D:INSTD_LOGIC_VECTOR(11DOWNTO0);CLK,STATUS:INSTD_LOGIC;--状态机时钟CLK,AD574状态信号STATUSLOCK0:OUTSTD_LOGIC;--内部锁存信号LOCK的测试信号CS,A0,RC,K12X8:OUTSTD_LOGIC;--AD574控制信号Q:OUTSTD_LOGIC_VECTOR