EDA重点-状态机设计.ppt_第1页
EDA重点-状态机设计.ppt_第2页
EDA重点-状态机设计.ppt_第3页
EDA重点-状态机设计.ppt_第4页
EDA重点-状态机设计.ppt_第5页
免费预览已结束,剩余44页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、EDA技术实用教程,第8章 有限状态机设计,8.1 一般有限状态机的设计,8.1.1 用户自定义数据类型定义语句,TYPE语句用法如下: TYPE 数据类型名 IS 数据类型定义 OF 基本数据类型 ; 或 TYPE 数据类型名 IS 数据类型定义 ;,以下列出了两种不同的定义方式: TYPE st1 IS ARRAY ( 0 TO 15 ) OF STD_LOGIC ; TYPE week IS (sun,mon,tue,wed,thu,fri,sat) ;,8.1 一般有限状态机的设计,8.1.1 用户自定义数据类型定义语句,TYPE m_state IS ( st0,st1,st2,st

2、3,st4,st5 ) ; SIGNAL present_state,next_state : m_state ;,布尔数据类型的定义语句是: TYPE BOOLEAN IS (FALSE,TRUE) ;,TYPE my_logic IS ( 1 ,Z ,U ,0 ) ; SIGNAL s1 : my_logic ; s1 = Z ;,8.1 一般有限状态机的设计,8.1.1 用户自定义数据类型定义语句,子类型SUBTYPE的语句格式如下: SUBTYPE 子类型名 IS 基本数据类型 RANGE 约束范围;,SUBTYPE digits IS INTEGER RANGE 0 to 9 ;,8

3、.1.2 状态机(FSM),(Finite State Machine,FSM),状态机 一个离散数学模型。给定 一个输入集合,根据对输入的接受次序 来决定一个输出集合。(摩尔状态机),状态 系统的基本数学特征。,有限状态机 输入集合和输出集合 都是有限的,并只有有限数目的状态。,输入集合 A,输出集合 X,状态记忆,输出形成,状态迁移,状态机一般结构,CLK,组合逻辑,时序逻辑,同步,当前状态,后续状态,输入,S,a1 , a2 , , an,x1 , x2 , , xn,状态位置,状态名称,转移方向,输入集合 (触发事件),输出集合 (执行动作),状态等待,状态迁移图,nn,a1 , a2

4、 , , an,x1 , x2 , , xn,状态位置,状态名称,转移方向,输入集合 (触发事件),输出集合 (执行动作),状态等待,状态迁移图,S,状态编码,状态机实例 自动门,有一自动门,它可以被锁上,也可以开锁。当门锁上时,某人可以在它的槽中塞进一枚硬币。这样,门就会自动开锁,转变到开锁的状态;人通过后,门就会自动锁上。 我们希望把自动门交给一个简单的 FSM管理。通过对这个简单 FSM 的分析, 了解FSM 的设计过程。,自动门的基本状态,加 锁,开 锁,投币 / 开锁,通过 / 加锁,初始状态, / 加锁,状态机实例,异常处理,通过 / 报警,投币 / 请不要多次投币,加 锁,开 锁

5、,投币 / 开锁,通过 / 加锁,初始状态, / 加锁,状态机实例,无论对连续系统还是离散系统,状态概念无所不在。FSM 提供了一种描述和控制应用逻辑的非常强大的方法,具有规则简单、可读性和可验证性强等特点。,FSM 也是个不错的工具。很多复杂的逻辑都可以用一张图表来表述。,对一个复杂离散系统而言, 使用 FSM 方案几乎无所不能。FSM 在通信协议、图形界面控制和其他很多工程应用中均有其足迹。, 明确对象要求,确定输入和输出集合,合 理分配状态。, 确定状态迁移方向和迁移触发条件,确定 合乎要求的输出集合。, 充分预计各种异常情况,确定异常处理策 略及出口。, 按照实际需求,制定合理的诊断模

6、式。, 完成系统综合。, 系统评价,设计验证。, VHDL综合器易于优化, 易构成性能良好的时序逻辑模块, 结构模式简单、层次分明、易读易懂、易排错, 运行模式类似于CPU,易于进行顺序控制,利用同步时序和全局时钟线可实现高速FSM, 高可靠性,非法状态易控制,为什么要使用状态机?,8.1.3 一般有限状态机的设计,8.1 一般有限状态机的设计,1. 说明部分,2. 主控时序进程,图7-1 一般状态机结构框图工作示意图,ARCHITECTURE .IS TYPE FSM_ST IS (s0,s1,s2,s3); SIGNAL current_state, next_state: FSM_ST;

7、 .,3. 主控组合进程,8.1.3 一般有限状态机的设计,控组合进程的任务是根据外部输入的控制信号(包括来自状态机外部的信号和来自状态机内部其它非主控的组合或时序进程的信号),或(和)当前状态的状态值确定下一状态(next_state)的取向,即next_state的取值内容,以及确定对外输出或对内部其它组合或时序进程输出控制信号的内容。,4. 辅助进程,【例8-1】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY s_machine IS PORT ( clk,reset : IN STD_LOGIC; state_inputs : IN

8、 STD_LOGIC_VECTOR (0 TO 1); comb_outputs : OUT INTEGER RANGE 0 TO 15 ); END s_machine; ARCHITECTURE behv OF s_machine IS TYPE FSM_ST IS (s0, s1, s2, s3); -数据类型定义,状态符号化 SIGNAL current_state, next_state: FSM_ST; -现态和次态定义为新的数据类型 BEGIN REG: PROCESS (reset,clk) BEGIN IF reset = 1 THEN current_state = s0;

9、 -检测异步复位 ELSIF clk=1 AND clkEVENT THEN current_state = next_state; END IF; END PROCESS; COM:PROCESS(current_state, state_Inputs)主控组合进程 接下页,8.1.3 一般有限状态机的设计,BEGIN CASE current_state IS WHEN s0 = comb_outputs comb_outputs comb_outputs comb_outputs = 14; IF state_inputs = 11 THEN next_state = s3; ELSE

10、next_state = s0; END IF; END case; END PROCESS; END behv;,接上页,图8-2 例8-1状态机的工作时序图,8.1.3 一般有限状态机的设计,4. 辅助进程,例8-1 的状态图,8.2 Moore型有限状态机设计,ADC 0809工作时序,8.2.1 三进程有限状态机,ADC0809引脚图与接口电路,IN7IN0模拟量输入通道 ALE地址锁存允许信号。对应ALE上跳沿,A、B、C地址状态送入地址锁存器中。 START转换启动信号。START上升沿时,复位ADC0809;START下降沿时启动芯片,开始进行A/D转换;在A/D转换期间,STA

11、RT应保持 低电平。本信号有时简写为ST. A、B、C地址线。 通道端口选择线,A为低地址,C为高地址,引脚图中为ADDA,ADDB和ADDC。其地址状态与通道对应关系见表9-1。 CLK时钟信号。ADC0809的内部没有时钟电路,所需时钟信号由外界提供,因此有时钟信号引脚。通常使用频率为500KHz的时钟信号 EOC转换结束信号。EOC=0,正在进行转换;EOC=1,转换结束。使用中该状态信号即可作为查询的状态标志,又可作为中断请求信号使用。 D7D0数据输出线。为三态缓冲输出形式,可以和单片机的数据线直接相连。D0为最低位,D7为最高 OE输出允许信号。用于控制三态输出锁存器向单片机输出转

12、换得到的数据。OE=0,输出数据线呈高阻;OE=1,输出转换得到的数据。 Vcc +5V电源。 Vref参考电源参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。其典型值为+5V(Vref(+)=+5V, Vref(-)=-5V).,ADC0809 信号的引脚,8.2 Moore多进程有限状态机,控制ADC0809采样状态图,8.2.1 三进程有限状态机,图8-7 采样状态机结构框图,【例8-2】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY ADCINT IS PORT(D : IN STD_LOGIC_VECTOR(7 DOWN

13、TO 0); -来自0809转换好的8位数据 CLK : IN STD_LOGIC; -状态机工作时钟 EOC : IN STD_LOGIC; -转换状态指示,低电平表示正在转换 ALE : OUT STD_LOGIC; -8个模拟信号通道地址锁存信号 START : OUT STD_LOGIC; -转换开始信号 OE : OUT STD_LOGIC; -数据输出3态控制信号 ADDA : OUT STD_LOGIC; -信号通道最低位控制信号 LOCK0 : OUT STD_LOGIC; -观察数据锁存时钟 Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); -8位数

14、据输出 END ADCINT;,8.2.1 三进程有限状态机,【例8-2】 ARCHITECTURE behav OF ADCINT IS TYPE states IS (st0, st1, st2, st3,st4) ; -定义各状态子类型 SIGNAL current_state, next_state: states :=st0 ; SIGNAL REGL : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL LOCK : STD_LOGIC; - 转换后数据输出锁存时钟信号 BEGIN ADDA = 1;-当ADDA=0,模拟信号进入通道IN0;当ADDA=1,

15、则进入通道IN1 Q = REGL; LOCK0 = LOCK ;,8.2.1 三进程有限状态机,COM: PROCESS(current_state,EOC) BEGIN -规定各状态转换方式 CASE current_state IS WHEN st0=ALEALE ALE ALE ALE next_state = st0; END CASE ; END PROCESS COM ; 接下页,接上页,REG: PROCESS (CLK) BEGIN IF (CLKEVENT AND CLK=1) THEN current_state=next_state; END IF; END PROCE

16、SS REG ;- 由信号current_state将当前状态值带出此进程:REG LATCH1: PROCESS (LOCK) - 此进程中,在LOCK的上升沿,将转换好的数据锁入 BEGIN IF LOCK=1 AND LOCKEVENT THEN REGL = D ; END IF; END PROCESS LATCH1 ; END behav;,接上页,7.2.1 三进程有限状态机,图8-8 ADC0809 采样状态机工作时序,7.2.2 单进程Moore型有限状态机,【例8-4】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MO

17、ORE1 IS PORT (DATAIN :IN STD_LOGIC_VECTOR(1 DOWNTO 0); CLK,RST : IN STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END MOORE1; ARCHITECTURE behav OF MOORE1 IS TYPE ST_TYPE IS (ST0, ST1, ST2, ST3,ST4); SIGNAL C_ST : ST_TYPE ; BEGIN PROCESS(CLK,RST) BEGIN IF RST =1 THEN C_ST = ST0 ; Q= 0000 ; ELSIF

18、CLKEVENT AND CLK=1 THEN 接下页,CASE C_ST IS WHEN ST0 = IF DATAIN =10 THEN C_ST IF DATAIN =11 THEN C_ST IF DATAIN =01 THEN C_ST IF DATAIN =00 THEN C_ST IF DATAIN =11 THEN C_ST C_ST = ST0; END CASE; END IF; END PROCESS; END behav;,接上页,图8-9 例8-4状态机综合后的RTL电路模块图,8.2.2 单进程Moore型有限状态机,8.2.2 单进程Moore型有限状态机,图8-

19、10 例8-4单进程状态机工作时序,7.2.2 单进程Moore型有限状态机,图8-11 对应于例8-4的2进程状态机工作时序图,7.3 Mealy型有限状态机的设计,【例8-5】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MEALY1 IS PORT ( CLK ,DATAIN,RESET : IN STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(4 DOWNTO 0); END MEALY1; ARCHITECTURE behav OF MEALY1 IS TYPE states IS (st0, st1,

20、st2, st3,st4); SIGNAL STX : states ; BEGIN COMREG : PROCESS(CLK,RESET) BEGIN -决定转换状态的进程 IF RESET =1 THEN STX = ST0; ELSIF CLKEVENT AND CLK = 1 THEN,接下页,CASE STX IS WHEN st0 = IF DATAIN = 1 THEN STX IF DATAIN = 0 THEN STX IF DATAIN = 1 THEN STX IF DATAIN = 0 THEN STX IF DATAIN = 1 THEN STX STX IF DAT

21、AIN = 1 THEN Q IF DATAIN = 0 THEN Q IF DATAIN = 1 THEN Q IF DATAIN = 0 THEN Q = 11011 ; ELSE Q=01001 ; END IF ;,WHEN st4= IF DATAIN = 1 THEN Q Q=00000 ; END CASE ; END PROCESS COM1 ; END behav;,接上页,图8-10 例8-5状态机工作时序图,【例8-6】 MEALY2 LIBRARY IEEE; -MEALY FSM USE IEEE.STD_LOGIC_1164.ALL; ENTITY MEALY2 I

22、S PORT ( CLK ,DATAIN,RESET : IN STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(4 DOWNTO 0); END MEALY2; ARCHITECTURE behav OF MEALY2 IS TYPE states IS (st0, st1, st2, st3,st4); SIGNAL STX : states ; SIGNAL Q1 : STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN COMREG : PROCESS(CLK,RESET) -决定转换状态的进程 BEGIN IF RESET =1 THEN ST

23、X IF DATAIN = 1 THEN STX IF DATAIN = 0 THEN STX IF DATAIN = 1 THEN STX IF DATAIN = 0 THEN STX IF DATAIN = 1 THEN STX STX = st0; END CASE ;,接下页,END IF; END PROCESS COMREG ; COM1: PROCESS(STX,DATAIN,CLK) -输出控制信号的进程 VARIABLE Q2 : STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN CASE STX IS WHEN st0 = IF DATAIN = 1

24、THEN Q2 := 10000 ; ELSE Q2 := 01010 ; END IF ; WHEN st1 = IF DATAIN = 0 THEN Q2 := 10111 ; ELSE Q2:=10100 ; END IF ; WHEN st2 = IF DATAIN = 1 THEN Q2 := 10101 ; ELSE Q2:=10011 ; END IF ; WHEN st3= IF DATAIN = 0 THEN Q2 := 11011 ; ELSE Q2:=01001 ; END IF ; WHEN st4= IF DATAIN = 1 THEN Q2 := 11101 ; E

25、LSE Q2:=01101 ; END IF ; WHEN OTHERS = Q2:=00000 ; END CASE ;,接下页,IF CLKEVENT AND CLK = 1 THEN Q1=Q2; END IF; END PROCESS COM1 ; Q = Q1 ; END behav;,接上页,图8-13 例8-6状态机工作时序图,8.4 状态编码,8.4.1 状态位直接输出型编码,表8-1 控制信号状态编码表,每一位的编码值都赋予了实际的控制功能,即: CS = current_state(4) ; A0 = current_state(3) ; RC = current_stat

26、e(2) ; LOCK = current_state(1) 。,【例8-7】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY AD574A IS PORT ( D : IN STD_LOGIC_VECTOR(11 DOWNTO 0); CLK ,STATUS : IN STD_LOGIC; OUT4 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); Q : OUT STD_LOGIC_VECTOR(11 DOWNTO 0) ); END AD574A; ARCHITECTURE behav OF AD574A IS S

27、IGNAL current_state, next_state: STD_LOGIC_VECTOR(4 DOWNTO 0 ); CONSTANT st0 : STD_LOGIC_VECTOR(4 DOWNTO 0) := 11100 ; CONSTANT st1 : STD_LOGIC_VECTOR(4 DOWNTO 0) := 00001 ; CONSTANT st2 : STD_LOGIC_VECTOR(4 DOWNTO 0) := 00000 ; CONSTANT st3 : STD_LOGIC_VECTOR(4 DOWNTO 0) := 00100 ; CONSTANT st4 : S

28、TD_LOGIC_VECTOR(4 DOWNTO 0) := 00110 ; SIGNAL REGL : STD_LOGIC_VECTOR(11 DOWNTO 0); SIGNAL LK : STD_LOGIC; BEGIN COM1: PROCESS(current_state,STATUS) -决定转换状态的进程,接下页,BEGIN CASE current_state IS WHEN st0 = next_state next_state IF (STATUS=1) THEN next_state next_state next_state next_state = st0; END C

29、ASE ; OUT4 = current_state(4 DOWNTO 1); END PROCESS COM1 ; REG: PROCESS (CLK) - 时序进程 BEGIN IF ( CLKEVENT AND CLK=1) THEN current_state = next_state; END IF; END PROCESS REG; LK = current_state(1) ; LATCH1 : PROCESS ( LK ) - 数据锁存器进程 BEGIN IF LK=1 AND LKEVENT THEN REGL = D ;,接下页,END IF; END PROCESS ; Q = REGL; END behav;,接上页,图8-14 例8-7状态机工作时序图,8.4.2 顺序编码,表8-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论