热门标签 | HotTags
当前位置:  开发笔记 > 开放平台 > 正文

基于proteus的状态机设计

基于proteus的状态机设计状态机原理环形与扭环计数器状态机示例——“交通灯”参考资料状态机原理 理论上说,任何一个需要周而复始的执行一系列任务(例如CPU中按顺序从存储

基于proteus的状态机设计

    • 状态机原理
    • 环形与扭环计数器
    • 状态机示例——“交通灯”
  • 参考资料


状态机原理

理论上说,任何一个需要周而复始的执行一系列任务(例如CPU中按顺序从存储器取出指令、再执行指令)的时序系统都可以用状态机(state machine)模型来描述。时序系统的运行周期可以描述为一个预定顺序的时间周期序列,每个周期都对应状态机中一个指定的状态。状态机在每个周期中产生特定的操作,完成相应的任务;同时,状态机由时钟驱动,按照外部输入信号和当前状态的反馈,在下一个周期到来之际进行预定的状态转移。
根据状态数目是否有限,状态机可以分为有限状态机和无限状态机;根据是否有一个公共的时钟控制,状态机可以分为同步状态机和异步状态机。其中,最常用的同步有限状态机又可以分为以下两种类型:Moore状态机Mealy状态机

图1. 同步有限状态机示意图
同步有限状态机示意图
Moore状态机的特征是其输出z(t)与输入x(t)无关,只与当前状态s(t)有关。状态寄存器的当前状态s(t)为现态,当前输入x(t)和现态s(t)共同输入组合逻辑C1后,使状态机进入的下一个状态s(t+1)称为次态。在时钟clk的驱动下,状态机不断进行s(t)→s(t+1)的状态转移。与Moore状态机相比, Meanly状态机主要差异是:其当前输出z(t)不仅与当前输入x(t)有关,而且还与现态s(t)有关。上述状态机的核心是状态转移电路,其主要有以下两种类型:环形计数器和扭环计数器。

环形与扭环计数器

环形计数器是由D触发器构成的移位寄存器加上反馈电路闭环构成,四位环形计数器的电路如下图2所示:移位寄存器的低位触发器输出端接入相邻高位触发器输入端,而反馈电路从最高位触发器的串行输出端接入,其输出则连到最低位触发器的串行输入端。

图2. 环形计数器的时序逻辑电路
环形计数器的时序逻辑电路
环形计数器不能自启动,在开始运行前必须使能信号#START=0,使得环形计数器的四位触发器输出[D3, D2, D1, D0]的状态初始化为0001;然后,在时钟CLK驱动下,四位环形计数输出[D3, D2, D1, D0]按照以下顺序循环转换:0001→0010→0100→1000→0001→…如下图3(左)所示。环形计数器的特征是:n位环形计数器的状态数目N=n,而且其输出[D3, D2, D1, D0]是单热点(one hot)编码,即任何状态下只有一个Dx=1。所以,环形计数器的输出Dx即是状态的节拍信号,标志相应的状态。

图3. 环形计数器和 扭环计数器的状态图
环形和扭环计数器的状态图
扭环计数器的结构同环形计数器基本类似(2位扭环计数器的电路如下图4所示),只是其反馈电路略有差别:扭环计数器的反馈电路是从最高位触发器的串行输出端接入,经过反向后再连到最低位触发器的串行输入端。2位扭环计数器的状态图则如上图(右)所示:扭环计数器的初始状态00,在CLK时钟驱动下,其输出[DB, DA]按照以下顺序转换:00→01→11→10→00→…扭环计数器的优点是具有自启动特性,无须初始化;而且n位扭环计数器的状态数目N=2n,比n位环形计数器的容量高一倍,效率较高。但是扭环计数器的输出不是单热点(one hot)编码,所以其2位触发器输出端须通过2-4译码器74LS139才能转换成状态的节拍信号:S0→S1→S2→S3→S0→…

图4. 扭环计数器的时序逻辑电路
扭环计数器的时序逻辑电路
在上述扭环计数器构成的状态转移电路中,状态机的下一个状态(次态)仅由当前状态(现态)决定。在一些更复杂的时序系统中,状态机的次态不仅与现态有关,而且还与当前输入有关,例如下图5(右)所示的状态图中,当前状态S0时,若输入条件C0=0,状态机保持在状态S0;若输入条件C0=1,则在时钟clk的驱动下,状态机如常进行状态转移:S0→S1。该状态图对应的扭环计数器电路如下图5(左)所示,在反馈电路上增加了基于条件C0的判断逻辑。值得注意的是,条件C0只在状态S0有效,其它状态不起作用。

图5. 条件判断的扭环计数器
条件判断的扭环计数器

状态机示例——“交通灯”

图6所示是一个交通灯系统,展示如何运用状态机原理来设计时序系统。交通灯的状态机总共有T1、T2和T3三个状态,每个状态都有不同的亮灯模式和亮灯持续的时间(以倒计时的形式显示),如下图6(左)所示。该状态机没有输入,其状态转移仅仅取决于当前的状态。在时钟clk(φ)驱动下,状态机按照以下顺序循环转移:T1→T2→T3→T1→…,状态转移时序图如下图6(右)所示。

图6. 交通灯的状态图和状态转移的时序图
在这里插入图片描述
交通灯系统的电路如下图7所示:环形的路口上有南北向的两组红黄绿LED灯和一对数码管(显示倒计时),路口左边是整个系统的核心:时序发生器电路;路口下方是一个由BUS总线连接的计数器电路。在上图6(左)中,状态机在每个状态【Tx】中完成两个操作:LED灯亮和显示倒计时。时序发生器产生节拍{#T1, #T2, #T3},直接控制红黄绿交通灯;而计数器电路负责数码管的倒计时显示。

图7. 交通灯系统电路图
交通灯系统电路图
时序发生器电路如下图8(左)所示:右边的状态转移电路是由两个D触发器组成的2位扭环计数器,其反馈电路增加了限制:若扭环计数器当前状态输出端为01,则下一个状态输出端被强制修改为10,即跳过状态11。因此,扭环计数器输出经过2-4译码器后产生以下节拍序列{#T1, #T2, #T3}:{0,1,1}→{1,0,1}→{1,1,0}→{0,1,1}→…状态图则如下图8(右)所示。状态转移电路左边是一个基于寄存器74LS175的状态寄存器电路。当加载信号#LOAD=0时刻,其下降沿将把节拍序列{#T1, #T2, #T3}锁存,输出信号{R,Y,G}控制红黄绿交通灯:节拍 #T1和#T3分别反向生成信号G(绿灯亮)和R(红灯亮),节拍#T2则反向后和时钟信号CLOCK逻辑生成信号Y(黄灯闪烁亮)。

图8. 交通灯时序发生器电路及其状态图
在这里插入图片描述
值得注意的是,状态转移电路输出的节拍序列{#T1, #T2, #T3}实际上是红黄绿交通灯当前状态【Tx】的次态【Tx+1】(即下一个状态 ),当加载信号#LOAD=0的下降沿时刻,节拍序列{#T1, #T2, #T3}加载到状态寄存器,生成交通灯新状态【Tx+1】。然后,信号#LOAD=1加载完成之际,其上升沿触发右边状态转移电路,刷新节拍序列{#T1, #T2, #T3}为交通灯当前状态【Tx+1】的次态【Tx+2】,等待下一次加载时刻(#LOAD=0)到来。

参考资料

本文的内容节选自作者编撰的教材专著《基于Proteus的计算机系统实验教程——逻辑、组成原理、体系结构、微机接口》(机械工业出版社),更详细的内容可以直接在书中查阅。
读者如有兴趣,可以在 当当网图书, 京东图书,亚马逊上搜索作者姓名赖晓铮即可找到这本著作。
在这里插入图片描述
本书详细描述了在proteus虚拟仿真环境中,从逻辑电路开始,一步一步构造运算器、存储器、控制器,最终用三种CPU体系架构(微程序、硬布线、流水线)实现了一个8位的CPU。并且,这个CPU不仅可以做逻辑、算术运算,拥有循环、分支、堆栈等程序结构,还可以完整实现对8086所有外设的控制,即替代8086完整实现了传统《微机原理》里讲到的所有外设实验。
本书的全部proteus工程文件,PPT,实验视频以及配套的两种形式课程设计(纯汇编、硬件改动)的资料都放在 百度网盘,提取密码:34ad
广州风标为本书配套了实验箱(如下图所示),可以让学生在电脑的proteus虚拟仿真环境中设计CPU或选择已有的8086、8051、ARM等CPU模型,然后通过虚拟总线映射到实验箱的物理总线,控制实验箱面板上的真实外设。有兴趣的读者可以自行联系 广州风标教育技术股份有限公司。
在这里插入图片描述


推荐阅读
  • 在《PHP应用性能优化实战指南:从理论到实践的全面解析》一文中,作者分享了一次实际的PHP应用优化经验。文章回顾了先前进行的一次优化项目,指出即使系统运行时间较长后出现的各种问题和性能瓶颈,通过采用一些通用的优化策略仍然能够有效解决。文中不仅详细阐述了优化的具体步骤和方法,还结合实例分析了优化前后的性能对比,为读者提供了宝贵的参考和借鉴。 ... [详细]
  • 从无到有,构建个人专属的操作系统解决方案
    操作系统(OS)被誉为程序员的三大浪漫之一,常被比喻为计算机的灵魂、大脑、内核和基石,其重要性不言而喻。本文将详细介绍如何从零开始构建个人专属的操作系统解决方案,涵盖从需求分析到系统设计、开发与测试的全过程,帮助读者深入理解操作系统的本质与实现方法。 ... [详细]
  • 如何使用Python高效绘制矩形图形
    本文详细介绍了如何利用Python的Turtle库高效绘制矩形图形,适合初学者快速上手。通过具体示例代码,帮助读者理解Turtle库的基本绘图方法和技巧,同时探讨了在不同应用场景中绘制矩形的实际操作,为后续复杂图形的绘制打下坚实基础。 ... [详细]
  • 掌握PHP框架开发与应用的核心知识点:构建高效PHP框架所需的技术与能力综述
    掌握PHP框架开发与应用的核心知识点对于构建高效PHP框架至关重要。本文综述了开发PHP框架所需的关键技术和能力,包括但不限于对PHP语言的深入理解、设计模式的应用、数据库操作、安全性措施以及性能优化等方面。对于初学者而言,熟悉主流框架如Laravel、Symfony等的实际应用场景,有助于更好地理解和掌握自定义框架开发的精髓。 ... [详细]
  • 通过对计算机系统架构的研究,尤其是控制器CU的功能解析,我对处理器的工作原理有了更深入的理解。原来,机器指令能够被直接识别和执行,是因为其背后有微程序的支持。深入探讨后发现,最基本的不可分割操作实际上是由微指令组成的,这些微指令构成了机器指令的基础,确保了指令的准确执行。 ... [详细]
  • 全面解析:Hadoop技术栈中的Linux操作系统概览
    全面解析:Hadoop技术栈中的Linux操作系统概览 ... [详细]
  • MySQL性能优化与调参指南【数据库管理】
    本文详细探讨了MySQL数据库的性能优化与参数调整技巧,旨在帮助数据库管理员和开发人员提升系统的运行效率。内容涵盖索引优化、查询优化、配置参数调整等方面,结合实际案例进行深入分析,提供实用的操作建议。此外,还介绍了常见的性能监控工具和方法,助力读者全面掌握MySQL性能优化的核心技能。 ... [详细]
  • MySQL:不仅仅是数据库那么简单
    MySQL不仅是一款高效、可靠的数据库管理系统,它还具备丰富的功能和扩展性,支持多种存储引擎,适用于各种应用场景。从简单的网站开发到复杂的企业级应用,MySQL都能提供强大的数据管理和优化能力,满足不同用户的需求。其开源特性也促进了社区的活跃发展,为技术进步提供了持续动力。 ... [详细]
  • 在 Linux 系统中,`/proc` 目录实现了一种特殊的文件系统,称为 proc 文件系统。与传统的文件系统不同,proc 文件系统主要用于提供内核和进程信息的动态视图,通过文件和目录的形式呈现。这些信息包括系统状态、进程细节以及各种内核参数,为系统管理员和开发者提供了强大的诊断和调试工具。此外,proc 文件系统还支持实时读取和修改某些内核参数,增强了系统的灵活性和可配置性。 ... [详细]
  • 本文详细介绍了HDFS的基础知识及其数据读写机制。首先,文章阐述了HDFS的架构,包括其核心组件及其角色和功能。特别地,对NameNode进行了深入解析,指出其主要负责在内存中存储元数据、目录结构以及文件块的映射关系,并通过持久化方案确保数据的可靠性和高可用性。此外,还探讨了DataNode的角色及其在数据存储和读取过程中的关键作用。 ... [详细]
  • MVVM架构~mvc,mvp,mvvm大话开篇
    返回目录百度百科的定义:MVP是从经典的模式MVC演变而来,它们的基本思想有相通的地方:ControllerPresenter负责逻辑的处理,Model提供数据,View负责显示。作为一种新的模 ... [详细]
  • 西北工业大学作为陕西省三所985和211高校之一,虽然在农业和林业领域不如某些顶尖院校,但在航空航天领域的实力尤为突出。该校的计算机科学专业在科研和教学方面也具有显著优势,是考研的理想选择。 ... [详细]
  • 不要急着丢弃旧手机:轻松改装成高效PC游戏性能监控工具
    对于许多PC玩家来说,实时监控游戏过程中的硬件状态是一项常见需求,例如关注游戏帧率、CPU和GPU频率以及温度等关键指标。通常情况下,玩家会借助第三方软件将这些数据展示在屏幕的一角。然而,一种更为创新的方法是利用旧手机改装成高效的性能监控工具,不仅节省成本,还能提供更加便捷和直观的监控体验。通过简单的设置和应用程序安装,旧手机可以变成一个专门的硬件监控设备,实时显示各种重要信息,帮助玩家更好地优化游戏性能。 ... [详细]
  • NVIDIA最新推出的Ampere架构标志着显卡技术的一次重大突破,不仅在性能上实现了显著提升,还在能效比方面进行了深度优化。该架构融合了创新设计与技术改进,为用户带来更加流畅的图形处理体验,同时降低了功耗,提升了计算效率。 ... [详细]
  • HTML5大文件传输技术深度解析与实践分享
    本文深入探讨了HTML5在Web前端开发中实现大文件上传的技术细节与实践方法。通过实例分析,详细讲解了如何利用HTML5的相关特性高效、稳定地处理大文件传输问题,并提供了可供参考的代码示例和解决方案。此外,文章还讨论了常见的技术挑战及优化策略,旨在帮助开发者更好地理解和应用HTML5大文件上传技术。 ... [详细]
author-avatar
夜的泪2502877077
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有