状态机程序设计.ppt
《状态机程序设计.ppt》由会员分享,可在线阅读,更多相关《状态机程序设计.ppt(38页珍藏版)》请在三一文库上搜索。
1、第6章 状态机程序设计,6.1有限状态机引论 6.1.1有限状态机概念 在一个复杂的控制系统中,可以将控制过程分为几步或几个状态,在每个状态下,控制系统的动作简单明确。我们只要根据系统的要实现的功能,画出状态转换图及每个状态下的动作或输出函数,即可实现有效控制。这种控制方式在数字系统中称为状态机,实际上就是控制系统理论中比较重要的步进控制。,例:AD574转换控制器,控制逻辑:,操作时序,状态转换图,要求控制器在现场信号作用下自动进行状态转换,并根据当前状态发出相应控制信号以控制现场。状态机就是完成这一目的。有限状态机及其设计技术是实用数字系统设计中的重要组成部分,是实现高效率高可靠逻辑控制的
2、重要途径。,6.1.2 状态机的优点,无论与基于VHDL的其他设计方案相比,还是与可完成相似功能的CPU相比,状态机都有其难以超越的优越性,它主要表现在以下几方面: 1、控制灵活、方便:状态机的工作方式是根据控制信号按照预先设定的状态顺序运行的,因此状态机在其运行方式上类似于控制灵活和方便的CPU。 2、结构简单,便于设计:设计方案相对固定 3、易构成性能良好的同步时序逻辑模块,避免竞争冒险现象。 4、运行速度比CPU要高出三至四个数量级。 5、可靠性:状态机由纯硬件电路构成;由非法状态跳出,只要2、3个时钟周期,所耗时间短,6.1.3 状态机的分类,1)从状态机的信号输出方式上分有Mealy
3、型和Moore型两种状态机。 Mealy属于异步输出状态机。其输出是当前状态和所有输入信号的函数,它的输出是在输入变化后立即发生的,不依赖时钟的同步。 Moore属于同步输出状态机,其输出则仅为当前状态的函数,这类状态机在输入发生变化还必须等待时钟的到来,时钟使状态发生变化时才导致输出的变化,所以比Mealy机要多等待一个时钟周期。 2)从程序结构上分,有单进程状态机和多进程状态机。 3)从编码方式上分有顺序编码状态机、一位热码编码状态机或其他编码方式状态机。,6.2 典型状态机设计,典型状态机设计由状态信号定义、准备下一状态进程、状态切换进程、输出进程等四部分构成。 【例6-1】用FPGA/
4、CPLD控制AD574进行12位A/D转换,并将转换结果保存在Q0Q11中,分析:12位A/D转换,12位结果输出,X12/8接高电平,A0接低电平;2个片选信号用1个CE,CS接低电平。,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY AD574 IS PORT( D:IN STD_LOGIC_VECTOR(11 DOWNTO 0); Q:OUT STD_LOGIC_VECTOR(11 DOWNTO 0); CLK,STATUS:IN STD_LOGIC; CE,RC: OUT STD_LOGIC); END AD574; ARCHITEC
5、TURE behav OF AD574 IS TYPE states IS (s0,sl,s2,s3,s4,s5); SIGNAL c_st,n_st:states; SIGNAL LOCK:STD_LOGIC; BEGIN,1、状态信号定义:采用枚举数据类型定义系统中有哪些状态,并定义当前状态信号、下一状态信号。一般放在结构体的ARCHITECTURE和BEGIN之间。 在数字系统中,每一状态对应一个二进制数,称状态编码。如AD574控制有5个状态,可用3位二进制表示:(000、001、010、011、100)。 但设计者在状态机的设计中,为了更利于阅读、编译和VHDL综合器的优化,往往将表
6、征每一状态的二进制数组用文字符号来代表,即所谓状态符号化。如(s0,sl,s2,s3,s4,s5),或者(READY,START,WAIT_H, WAIT_L ,READ, LOCK)等更直观的符号表示。,PROCESS(c_st,STATUS) -准备下一状态 BEGIN -实现状态图连接 CASE c_st IS WHEN s0=n_stn_stIF(STATUS=1) THEN n_st IF(STATUS=1) THEN n_stn_stn_stn_st=s0; END CASE; END PROCESS;,2、准备下一状态进程:,根据外部输入的控制信号,和当前状态的状态值确定下一状态
7、(next state)的取向,即next state的取值内容。 相当于用VHDL语言实现状态转换图的连接。 常用CASE语句。 进程敏感表为当前状态和状态机的输入信号。,-状态切换进程,PROCESS (CLK) BEGIN IF(CLKEVENT AND CLK=1) THEN c_st=n_st; END IF; END PROCESS;,3、状态切换进程:,负责状态机运转和在时钟驱动下负责状态转换的进程。 此进程只是机械地将代表次态的信号next_state中的内容送入现态的信号current中。 当然此进程中也可以放置一些同步或异步清零或置位方面的控制信号。,PROCESS(c_s
8、t) -输出控制信号的进程 BEGIN CASE c_st IS WHEN s0=CECECECECECECE=0;RC=0; LOCK=0; END CASE; END PROCESS;,4、输出进程:,根据当前状态和输入,送出控制信号。,PROCESS(LOCK) -数据保存 BEGIN IF LOCK=1AND LOCKEVENT THEN Q12=D; END IF; END PROCESS; END behav;,从例6-1可观察到,准备下一状态进程与输出进程结构类似,可合并为一个进程。,【例6-2】用FPGA/CPLD控制AD574进行12位A/D转换,并将转换结果保存在Q0Q11
9、中。采用二进程状态机。,PROCESS(c_st,STATUS) -准备下一状态 BEGIN CASE c_st IS WHEN s0=n_stn_stIF(STATUS=1) THEN n_st IF(STATUS=1) THEN n_stn_stn_stn_st=s0; CE=0;RC=0;LOCK=0; END CASE; END PROCESS;,【例6-3】ADC0809,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY AD0809 IS PORT(D:IN STD_LOGIC_VECTORY(7 DOWNTO 0); ALE,ST
10、ART,OE:OUT STD_LOGIC; CLK,EOC: IN STD_LOGIC; LED7:OUT STD_LOGIC_VECTORY(6 DOWNTO 0); SEL:BUFFER INTEGER RANGE(2 DOWNTO 0) END ENTITY;,ARCHITECTURE BODY OF AD0809 IS TYPE STATES IS (S0,S1,S2,S3,S4,S5); SIGNAL C_ST,N_ST:STATES; SIGNAL D8; STD_LOGIC_VECTORY(7 DOWNTO 0); SIGNAL D4; STD_LOGIC_VECTORY(3 D
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 状态机 程序设计
链接地址:https://www.31doc.com/p-2750947.html