利用Logisim构建小型数字系统(运动码表)

本文主要介绍的是中国大学mooc上“计算机硬件系统设计”课程中的一个实验。首先,我对本课程的课程组深表感谢,开发了这么好的学习资源供学生在线学习。
下面介绍的是这个实验的设计过程。感兴趣的朋友可以前往https://www.icourse163.org/course/HUST-1205809816 亲自尝试!

在学习了数字电路后,大概有了时序电路设计的印象,但只能在纸上画画状态图,解解题,不能很好地运用起来,因此借这次机会好好总结一下。

一、功能要求

运动码表功能要求
这是本次实验“运动码表”的功能要求,输入由四个功能按键构成,输出是数码管。有了功能要求之后,就可以开始该数字系统的设计了。(备注:Store键要求记录当前码表值,若已有记录,则和当前待记录的值作对比,然后显示相对较小的值)

二、功能部件

首先对功能进行拆解,得到所需的电路部件,如下表

功能部件
Start 计时计数器
Store 记录16位寄存器
Store 记录值比较数据比较器、数据选择器MUX
数码管显示数码管驱动

三、控制接口定义

这里包括输入输出接口和内部控制接口的定义。

输入为Start、Stop、Store、Reset四个接口
输出为控制4个数码管的32个接口
内部控制接口有 ”计数器使能“、“计数器复位”、“16位寄存器使能”、“数据选择器选择端”等

四、数据流电路连接

数字系统设计中需要重点关注的是“数据流”和“控制流”两部分,即解决“数据是如何进行传递的”和“如何控制数据在合适的条件下进行传递”两大问题。

这是,首先关注”数据流“,可以画表来梳理数据的流向,然后逐步进行电路部件的连接。

部件输入来源备注
16位寄存器计数器计数值 or 系统复位后的值“9999”需另加数据选择器
比较器计数器计数值 和 寄存器中存储的值
数码管驱动计数器计数值 or 寄存器中存储的值需另加数据选择器

有了数据流向的认识后,进行部件连线就不会无从下手了。

将部件连接起来后,最后接上各个控制接口即可。

五、控制单元建立★★★

控制单元,用于对“系统输入控制”、“系统内部控制”和“系统输出控制”进行封装。清楚了电路的数据流向后,便可以建立控制单元来控制各个部件在“什么条件下”进行传递了。

这里便用到了数电中“时序电路设计”的知识,时序电路中的组合逻辑部分,可拆分为“状态转换电路”和“输出转换电路”两部分

在数字电路中,数据传递便是“0”和“1”的传递。与C语言编程不同,C语言可以定义不同变量并对它们赋值,然后后续对这些变量进行操作,而对应在数字电路设计中,我们便需要把这些一个个变量(电路状态)和控制信号,转换成二进制编码,然后利用“组合逻辑”来对这些编码进行操作、转化。

1.状态机

对该系统允许的状态进行编码,如下表

状态编码
复位状态(清零+更新存储)000
计数状态001
停止状态010
存储状态(更新寄存器存储并显示)011
停止状态(不更新寄存器存储,直接显示旧的存储值)100
清零状态(为了实现“按计数键重新从0计数”功能而引人的中间态)101

有了状态编码后,就到画状态图FSM了,想想状态在不同情况下会发生怎样的改变?

状态图FSM中 ↓ 第一幅图有误,按start键后 为000–>001而非000–>110
FSM1
FSM2

2.状态转换逻辑电路

以上分别对应000到100五种状态随按键输入的变化,依照这个FSM,就可以写真值表,得到逻辑表达式,构建“状态转换电路”来实现状态的转换了。

下图为状态转换逻辑电路的局部
控制器状态转换电路局部

3.输出函数逻辑电路

如果说“状态转换电路”将“按键输入”与“系统状态”联系在一起的话,那么“输出函数电路”就是从“系统状态”到“内/外部控制输出”的过程(Moore型电路)。因此,我们需要找出“系统各个状态”与“内/外部控制输出”的关系,从而实现各部件的控制。

如下表

状态编码控制信号产生
复位状态(清零+更新存储)000计数器复位(TM-Reset=1,SD-SEL=0)
计数状态001计数器使能(…)
停止状态010计数器失能(…)、打开数据选择器
存储状态(更新寄存器存储并显示)011
停止状态(不更新寄存器存储,直接显示旧的存储值)100

偷懒了hh,表格没有写全,关键核心在于清楚不同状态下,控制器要控制什么,从而产生对应的控制信号(0或1),填写真值表得到逻辑表达式,然后自动生成对应电路,如下图。
输出函数电路组成

六、作品展示

运动码表
在这里插入图片描述

七、其它

1. Moore型和Mealey型电路对比

相信大家都知道Moore型和Mealey型电路的定义,前者的输出仅与现态有关,而后者的输出与现态、输入都有关系,但是真正在设计数字系统时,它们的区别又是什么呢?

笔者认为Moore型电路相对来说,抗干扰性更高,因为在一个时钟周期内的任意时刻都可能发生变化,而Moore型电路则能很好地避免输入噪声对输出的影响。

同时,在进行设计时,Moore型电路的设计思路相对清晰,能分别进行“状态转换”和“输出函数”的逻辑电路设计。

2.寄存器的功能

一直知道寄存器有存储的功能,却不知道为什么在时序电路中需要用寄存器来作存储(大雾),现在终于明白了,有了时钟节拍,结合寄存器暂存数据,就能使数据在时钟的驱动下,逐步向前流动。另外,用作反馈时就能使次态重新作为下一刻的现态输入到组合逻辑中啦!

  • 22
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 29
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值