第5讲-有限状态机教学文稿

上传人:youn****329 文档编号:129996623 上传时间:2020-04-24 格式:PPT 页数:45 大小:481.50KB
返回 下载 相关 举报
第5讲-有限状态机教学文稿_第1页
第1页 / 共45页
第5讲-有限状态机教学文稿_第2页
第2页 / 共45页
第5讲-有限状态机教学文稿_第3页
第3页 / 共45页
第5讲-有限状态机教学文稿_第4页
第4页 / 共45页
第5讲-有限状态机教学文稿_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《第5讲-有限状态机教学文稿》由会员分享,可在线阅读,更多相关《第5讲-有限状态机教学文稿(45页珍藏版)》请在金锄头文库上搜索。

1、有限状态机FiniteStateMachine 例 计数器设计 设计一电路 包含基4计数器 和译码输出模块 计数器的输出 Present value 从0到3循环 当计数值为2时 译码输出 DataOut 为 1 否则输出 0 00 0 01 0 10 1 11 0 扩展一个输入端din 当din 1时计数器递增计数 当din 0时计数器递减计数 再将计数器修改成一个状态转换器 状态为S0 S1 S2 S3 每个状态的取值根据具体情况而定 比如S0 00 S1 11 S3 01 S4 10 再将计数器修改成一个状态转换器 状态为S0 S1 S2 S3 每个状态的取值根据具体情况而定 比如S0

2、00 S1 11 S3 01 S4 10 现在我们得到了一个比较通用的时序电路 这种电路统称为状态机 StateMachine 有限状态机概述 数字系统控制部分的每一个控制态可以看作一种状态 与每一个控制态相关的转换条件指定了当前状态的下一个状态和输出 根据有限状态机的输出与当前状态与当前输入的关系 可以分成Moore型和Mealy型两种类型的有限状态机 Moore状态机和Mealy状态机 Moore状态机的输出只与当前状态有关 Moore状态机和Mealy状态机 Mealy状态机的输出与当前状态机及当前输入信号有关 状态机的表示方法 状态转换表算法流程图状态转换图 这是最流行的表示方法 状态

3、转换图 状态1 状态4 状态2 状态3 入 出 入 出 入 出 入 出 出 Mealy 条件控制定序 直接控制定序 用VHDL描述状态机的组成 一个用来描述有限状态机功能的VHDL语言程序中应该包含以下几个内容 1 至少包括一个状态信号 它们用来指定有限状态机的状态 2 状态转移指定和输出指定 它们对应于控制单元中与每个控制步有关的转移条件 3 时钟信号 它一般是用来进行同步的 4 同步或异步复位信号 状态机的VHDL描述方式 1 单进程描述方式 单进程描述方式就是指在VHDL语言程序的结构体中 使用一个进程语句来描述有限状态机中的次态逻辑 状态寄存器和输出逻辑 2 双进程描述方式 一个进程语

4、句用来描述有限状态机中次态逻辑 状态寄存器和输出逻辑中的任何两个 另外一个进程则用来描述有限状态机剩余的功能 3 三进程描述方式 一个进程用来描述有限状态机中的次态逻辑 一个进程用来描述有限状态机中的状态寄存器 另外一个进程用来描述有限状态机中的输出逻辑 状态机的VHDL描述方式 存储控制器 设计一个存储控制器 它的具体要求为 1 存储控制器能够根据微处理器的读周期或者写周期 分别对存储器输出写使能信号we和读使能信号oe 2 存储控制器的输入信号有3个 微处理器的准备就绪信号ready 微处理器的读写信号read write和时钟信号clk 存储控制器 列出当前状态和输出值的关系 建立状态转

5、换表 列出次态和转换条件 利用VHDL语言进行状态机描述所有状态均可以表达为CASE WHEN结构中的一条语句 状态的转移通过if then else语句实现 CASEpresent stateISWHENidle 输出量 IFELSEENDIF 有些状态的转换中 在条件满足时 转换到下一个状态 否则保持原来的状态不变 这种情况对应着IF THEN ELSE的两个分支 在这种情况下 ELSE分支并不是必需的 但是缺少ELSE分支 会导致额外的存储器 状态转换 状态描述的步骤 对每一个状态建立一项CASE语句的分支WHEN状态名 确定输出变量通过IF THEN ELSE语句指定相应的次态 例ca

6、sepresent stateis CASE分支whenidle oe 0 we 0 确定输出变量if ready 1 then 确定次态next state decision elsenext state idle endif 例 三进程描述方式1 ARCHITECTUREfsmOFmemory enableISTYPEstate typeIS idle decision read write SIGNALpresent state next state state type BEGINnextstate logic PROCESS present state ready read writ

7、e BEGINCASEpresent stateISWHENidle IF ready 1 THENnext state decision ELSEnext state idle ENDIF ENDCASE ENDPROCESSnextstate logic 例 三进程描述方式2 state register PROCESS clk BEGINIF RISING EDGE clk THENpresent state next state ENDIF ENDPROCESSstate registe 例 三进程描述方式3 output logic PROCESS present state BEG

8、INCASEWHENidle wewewewe 1 oe 0 ENDCASE ENDPROCESSoutput logic 任务1 空调控制器 任务1 空调控制器 任务1 空调控制器 状态转换表 选做 状态机的应用设计 例子 设计一个二进制序列检测器 当检测到10110序列时 就输出1 一个时钟周期的脉冲 其他情况下输出0 规定检测到一次之后 检测器复位到最初始的状态 重新从头检测 如下所示 输入 01101101101100 输出 00000001000001 状态转换图设计 Moore 1 0 1 1 0 S0 0 S1 0 S2 0 S3 0 S4 0 S5 1 Reset 1 1 0

9、0 1 1 0 1 0 0 1 0 1 0 1 1 0 s1 s2 s3 s4 s5 s0 问题1 如何保证状态机在初始时状态为s0 问题2 在状态机跑飞 即脱离有效状态 s0 s5 时 如何使状态机能恢复工作 Sx 0 波形 波形如下图所示 问题 如果需要将输出脉冲往前推一个时钟周期 该如何修改设计 1 0 1 1 0 1 0 1 1 0 s1 s2 s3 s4 s5 s0 输入 时钟 输出 当前状态 发现当前状态为s4 并且输入为0时 输出为1 状态转换图设计 Mealy S0 S1 S2 S3 S4 S5 Reset 1 0 0 1 1 0 1 0 0 1 0 1 sX 0 0 0 0

10、0 0 0 0 0 1 0 0 1 0 1 1 0 1 0 1 1 0 s1 s2 s3 s4 s5 s0 0 0 1 s0 状态机的代码实现 状态定义ArchitecturertlofSynis 其他信号定义 TypeSynFsmStateis s0 s1 s2 s3 s4 s5 SignalSynCst SynNst SynFsmState Begin 结构体 Endrtl 状态机的代码实现 状态寄存器进程描述 状态寄存器 输出译码 下一状态译码 当前状态 输出 下一状态 输入 时钟clk 状态寄存器进程描述 Process clk Reset Beginif Reset 1 thenSy

11、nCst S0 初始状态 elsif clk eventandclk 1 thenSynCst SynNst 状态转换 endif Endprocess 状态机的代码实现 状态转换进程描述 状态寄存器 输出译码 下一状态译码 当前状态 输出 下一状态 输入 时钟clk 状态转换进程描述 Process SynCst din BegincaseSynCstiswhens0 whens1 whens5 Endcase Endprocess if din 1 thenSynNst s1 elseSynNst s0 endif whenothers SynNst s0 状态机的代码实现 输出进程描述

12、状态寄存器 输出译码 下一状态译码 当前状态 输出 下一状态 输入 时钟clk 输出进程描述 Process SynCst BegincaseSynCstiswhens0 whens1 whens5 whenothers Endcase Endprocess Moore Mealy Dout 0 Dout 0 Dout 0 if din 1 thenelseendif din 任务2 交通灯控制器 模拟显示十字路口两个方向的交通通行情况 两个方向均用红 黄 绿灯指示实际状态 用LED同时显示两个方向状态的时间 时间计数方式为倒计数方式 技术参数为绿 红 50秒 黄 红 5秒 红 绿 30秒和红

13、 黄 5秒 方法 有限状态机 状态机 采用双进程描述方式次态逻辑和输出逻辑放在一个进程中实现 状态寄存器在另一个进程中实现 从一个状态转换到另外一个状态 需要经过一段时间 这段时间的结束将导致次态变成现态 关于计数器 设置东西 南北两个计数器计数器的初值在状态转换时设置计数器采用倒计数方式计数结束 EOC 信号将触发状态寄存器进程的执行计数的结果将被显示出来 状态转换的条件 计数器值为0 使得EOC 1 由于有两个计数器 因此有四 三 种情况 分别对应状态转换的情况 程序组成 结构体有三个进程状态转换和输出状态寄存器计数器及译码 计数器 状态寄存器 次态逻辑和输出 计数初值 CLK 计数值 EOC 次态 现态 红绿灯显示

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号