logisim数据选择器_利用Logisim构建小型数字系统(运动码表)
本文主要介绍的是中国大学mooc上“计算机硬件系统设计”课程中的一个实验。首先,我对本课程的课程组深表感谢,开发了这么好的学习资源供学生在线学习。
下面介绍的是这个实验的设计过程。感兴趣的朋友可以前往https://www.icourse163.org/course/HUST-1205809816 亲自尝试!
在学习了数字电路后,大概有了时序电路设计的印象,但只能在纸上画画状态图,解解题,不能很好地运用起来,因此借这次机会好好总结一下。
文章目录
一、功能要求
二、功能部件
三、控制接口定义
四、数据流电路连接
五、控制单元建立★★★
1.状态机
2.状态转换逻辑电路
3.输出函数逻辑电路
六、作品展示
七、其它
1. Moore型和Mealey型电路对比
2.寄存器的功能
一、功能要求
这是本次实验“运动码表”的功能要求,输入由四个功能按键构成,输出是数码管。有了功能要求之后,就可以开始该数字系统的设计了。(备注: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
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.寄存器的功能
一直知道寄存器有存储的功能,却不知道为什么在时序电路中需要用寄存器来作存储(大雾),现在终于明白了,有了时钟节拍,结合寄存器暂存数据,就能使数据在时钟的驱动下,逐步向前流动。另外,用作反馈时就能使次态重新作为下一刻的现态输入到组合逻辑中啦!
logisim数据选择器_利用Logisim构建小型数字系统(运动码表)相关推荐
- 小型数字系统---运动码表
小型数字系统-运动码表 运动码表设计 小型数字系统---运动码表 一,实验目的 二,实验内容 三,实验步骤 四,测试结果 一,实验目的 熟悉数字系统基本特征及设计方法,熟练掌握数字系统设计基本流程,利 ...
- 小型数字系统---运动码表设计
运动码表设计中码表控制器是最难的,所以主要介绍如何设计码表控制器. 我们先给这个时序电路设计状态以及编码 先设计状态转换函数 首先画出状态图: (其中我们让其一到000状态就立马变为001状态,110 ...
- 密码学实验题_03.3_AES实验_利用Sage构建AES的S盒和逆S盒(基于阅读Sage数学库的Python代码)
密码学实验题_03.3_AES实验_利用Sage构建AES的S盒和逆S盒(基于阅读Sage数学库的Python代码) 3. AES实验 3) (思考题)利用Sage构建AES的S盒和逆S盒 ...
- 基于python的系统构建_利用python构建一个简单的推荐系统
摘要: 快利用python构建一个属于你自己的推荐系统吧,手把手教学,够简单够酷炫. 本文将利用python构建一个简单的推荐系统,在此之前读者需要对pandas和numpy等数据分析包有所了解. 什 ...
- python推荐_利用Python构建一个简单的推荐系统
原标题:利用Python构建一个简单的推荐系统 摘要:快利用python构建一个属于你自己的推荐系统吧,手把手教学,够简单够酷炫.在此之前读者需要对pandas和numpy等数据分析包有所了解. 什么 ...
- 利用Mesos构建多任务调度系统
女主宣言 我们发现公司的服务器cpu, memory等资源利用并不充分:如果能够充分利用这些机器上的空闲资源同时又能保证业务服务的正常运行,将会节省不少的机器资源:所以我们研究了Mesos来构建多任务 ...
- ae制作小球轨迹运动_利用Ae制作出自由落地运动小球的详细步骤
各位知道在Ae中如何制作出自由落地运动小球呢?不太会操作的用户可以去下文学习下利用Ae制作出自由落地运动小球的详细步骤. 我们先准备好小球图片素材,背景颜色为黑色.导入素材,新建合成.将素材拖拽的合成 ...
- python携程怎么做数据同步_利用python yielding创建协程将异步编程同步化
转自:http://www.jackyshen.com/2015/05/21/async-operations-in-form-of-sync-programming-with-python-yiel ...
- python写炒股软件_利用 Python 构建自己的股票投资系统
前言 自从上世纪 70 年代废除金本位,完全进入法定货币时代,我们可以明确的感知到,现金是这个时代少有的 100% 确定亏损的资产.国内的物价,相比 10 年前,大致涨了 5 倍左右,相比 30 年前 ...
最新文章
- css超过两行显示为..._使用这些不太常用的CSS属性,布局效率上又提高了一个层次...
- 【2010福建】收稻子 (校BSOJ1114)
- 面向对象知识点之statickeyword的使用
- 2015总结及2016计划
- python迭代法求平方根_1021: 迭代法求平方根
- 运算均值方差_Python数据分析之NumPy(运算篇)
- 三菱880彩铅和uni的区别_冷灰素描纸与彩铅、色粉笔结合,一种复古味道
- C#开源文件实时监控工具TailTailUI
- ChaiNext:市场热情仍在,也需留意高位风险
- java 初始化和清楚_浅谈Java中的初始化和清理
- Android Studio(五):修改Android Studio项目包名
- android自动化测试--appium运行的坑问题及解决方法
- 樊登高效休息法心得400字_超级干货!让你快速恢复精力的高效休息法!!
- iOS获取当前app的名称和版本号
- qt实现简易时钟(Qpaintevent),可以当作桌面摆件
- 根据mac地址查询厂商
- 如何配置EditPlus放大、缩小字体的快捷键
- 微信小程序仿打卡小程序
- Pandas数据处理_分组聚合_透视表交叉表
- fedora17下nvidia双显卡闭源驱动的安装