[转载][FPGA]有限状态机FSM学习笔记(二)
1. Mealy和Moore状态机的互换
对于给定的时序逻辑功能,可以用Mealy机实现,也可以用Moore机实现。根据Moore机比Mealy机输出落后一个周期的特性,可以实现两种状态机之间的转换。把Moore机转换为Mealy机的办法为,把次态的输出修改为对应现态的输出,同时合并一些具有等价性能的状态。把Mealy机转换为Moore机的办法是,把当前态的输出修改为对应次态的输出,同时添加一些状态。如图1所示,为把Mealy机状态图转化为Moore机状态图。
图1 Mealy型机转换为Moore型机
如图1所示,把Mealy型机转换为Moore型机,只要把现时输出改变为下一时刻输出。对于状态A,有4个箭头指向它,表示在当前状态下有4个状态可以转换为下一状态的A;同时当前输出均为0,可以把0移入状态A内部,表示在Moore机中状态A的输出为0。同理,可以把0分别移位B/C状态。但对于状态D,有两个箭头指向且具有不同的输出值,需要把状态D分解成两个状态D1和D2(每个状态对应一个输出,当输出不同需要利用不同的状态表示,这即是Moore机具有更多状态的原因),得到完整的Moore机状态模型。
同理,若把上图的Moore机转换为Mealy机,只要把Moore机中下一状态的输出改变成Mealy机中当前状态的输出,由于D1/D2两状态处于A/C两状态之间,且相当于A/C节点之间的一个等效节点,可以把D1/D2两状态合并为一个状态。
2. 小结
Mealy机和Moore机实现的电路是同步时序逻辑电路的两种不同形式,它们之间不存在功能上的差异,并可以相互转换。Moore型电路有稳定的输出序列,而Mealy型电路的输出序列早Moore型电路一个时钟周期产生。在时序设计时,根据实际需要,结合两种电路的特性选择。
对于时序电路中常见的计数器,因计数器状态已经固定不变,无论采用Mealy型还是Moore型电路,复杂度一样。
在时序电路设计中Mealy型和Moore型电路的选择原则是:当要求输出对输入快速响应及希望电路尽量简单时,选择Mealy型电路。当要求时序输出稳定,能接受输出序列晚一个周期,及选择Moore型电路不增加电路复杂性时,适宜选择Moore型电路。
[转载][FPGA]有限状态机FSM学习笔记(二)的更多相关文章
- [原创][FPGA]有限状态机FSM学习笔记(一)
1. 概述--何为有限状态机FSM? 有限状态机-Finite State Machine,简写为FSM,是表示有限个状态及在这些状态之间的转移和动作等行为的数学模型,在计算机领域有着广泛的应用.通常 ...
- [笔记][FPGA]有限状态机FSM学习笔记(三)
0. 简介 在数电FPGA中,FSM是一个重要的部分,藉此可以完成一些复杂算法的硬件实现等.其中有关于FSM的写法按照always块的个数来划分,又分为一段式.两段式.三段式状态机.顾名思义,一段式就 ...
- java之jvm学习笔记二(类装载器的体系结构)
java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...
- NumPy学习笔记 二
NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...
- 学习笔记(二)--->《Java 8编程官方参考教程(第9版).pdf》:第七章到九章学习笔记
注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法者自负一切 ...
- WPF的Binding学习笔记(二)
原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...
- AJax 学习笔记二(onreadystatechange的作用)
AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...
- [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...
- JMX学习笔记(二)-Notification
Notification通知,也可理解为消息,有通知,必然有发送通知的广播,JMX这里采用了一种订阅的方式,类似于观察者模式,注册一个观察者到广播里,当有通知时,广播通过调用观察者,逐一通知. 这里写 ...
随机推荐
- tempfs详解
致因 在平常工作中,我们经常需要查看Linux服务器磁盘挂载使用情况,可以使用df命令,不知大家注意到没有,我们使用此命令除了会查看到系统盘以及数据盘挂载情况,还会看到一个tmpfs也在挂载. [ro ...
- destoon 列表页面增加手动选择排序方式
在mobile/include/mall.inc.php 行60 $order = $MOD['order']; 之前增加 排序方式判断 如果有order参数则$order接受参数,没有就用默认 ...
- Linux任务计划、周期性任务执行
Linux任务计划.周期性任务执行 周期性任务执行: cron 守护进程(crond):服务,不间断地运行于后台 # service crond {start|stop|status|restart} ...
- 《小团团团队》【Alpha】Scrum Meeting 3
项目 内容 课程名 软件工程 作业链接地址 Github地址 团队名称 小团团团队 具体目标 1.掌握软件测试基础技术:2.学习迭代式增量软件开发过程(Scrum) 1.1前言 第三天 时间: 201 ...
- python+selenium面试题
selenium中如何判断元素是否存在? selenium中没有提供原生的方法判断元素是否存在,一般我们可以通过定位元素+异常捕获的方式判断. # 判断元素是否存在 try: dr.find_elem ...
- 排序算法总结 c描述
概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 我们这里说说八大排序就是内部排序. 当n较大, ...
- 面向对象编程(二)封装--构造方法,this关键字,static关键字,方法重载
面向对象三大特点:封装.继承.多态 封装概念 ① 将东西包装在一起,然后以新的完整形式呈现出来: 将方法和字段一起包装到一个单元中,单元以类的形式实现; ② 信息隐藏,隐藏对象的实现细节,不让 ...
- STL之set容器的总结
最近做了很多题型,都是用简单的STL就解决了,深刻的感觉到STL的伟大力量,但是本人在遇到问题的时候还是喜欢用常规的算法去解决问题,脑袋笨没办法,有时候根本想不到用STL去解决一些问题 往往都是砍了网 ...
- 【转】C#学习之用迭代器实现枚举器
http://www.cnblogs.com/zouzf/archive/2012/02/22/2362954.html 本人初学C#,本文仅供个人整理思路用,那里说得不对,请大家多多指教,万分感激! ...
- hibernate缓存详解
hibernate中提供了两级缓存,一级缓存是Session级别的缓存,它属于事务范围的缓存,该级缓存由hibernate管理,应用程序无需干预:二级缓存是SessionFactory级别的缓存,该级 ...