Logisim实现运动码表设计

目录

  • Logisim实现运动码表设计
    • 实验目的
    • 实验步骤
    • 实验原理
    • 实验器材
    • 实验过程与结果

实验目的

了解数字系统的设计流程,学会从需求分析、到设计功能部件、构建数据通路、构建控制单元、最后系统联调的设计方法,设计一个简单的小型数字系统。需要实现的码表的功能如下:
1.启动:开始计时;
2.暂停:停止计时,显示当前计时数据;
3.存储:若当前计时数据小于系统记录,则更新系统记录,将当前计时数据存储为系统记录(系统记录初始化为99.99),并显示系统记录;若当前计时数据大于系统记录,则直接显示系统记录。
4.复位:码表归零,系统记录初始化。

实验步骤

1.确定系统输入输出,列出系统的外部控制输入信号,系统的输出信号;

2.设计码表的功能部件:

3.构建功能部件输入来源表:

4.根据功能需求画出系统状态转移图;

5.设计码表控制器,定义内部、外部控制信号、内部状态信号、状态输出信号。填写状态转换表、输出函数真值表(Excel表),生成状态转换逻辑表达式、输出函数逻辑表达式,构建码表控制器。
6.码表系统联调。

实验原理

1.通过Analysis circuit建立一个四输入七输出的电路,填写真值表的值,自动生成如下图所示电路。该电路把二进制数转化成7段数码管的每一段,即可用于控制7段数码管显示0-9的每个数字。


2.利用四个D触发器,构造4位并行加载寄存器。再用四个4位并行加载寄存器构造16位并行加载寄存器。


3.在excel中填写真值表,利用自动生成的逻辑表达式,使用Analysis circuit自动生成如图所示的BCD计数器状态转换、BCD计数器输出函数两个电路。


将这两个电路封装,再利用四个D触发器,构造4位BCD计数器。

4.利用四个4位BCD计数器,构建码表计数器。其中,时钟信号控制最低位的BCD计数器,该计数器的Cout再作为时钟控制高一位的BCD计数器;最高位也就是第四个BCD计数器的Cout不用接线。

5.通过分线器将输入的Din分为16个数,每4位数用一个数码管驱动分出7条控制7段数码管的线。再用一个分线器和电源、接地元件,把一共32个数值合成一个32位数DispInfo。注意这里每条线在分线器中对应的接口,如下图所示,并不是按顺序一一对应的。

6.对运动码表的各组件进行连接。如图所示。除了码表显示DP、16位寄存器SD和计时器TM以外,还使用了2个二路选择器和一个16位无符号比较器。

7.参照之前画出的系统状态转移图,在excel中填写状态转换和输出函数的真值表,利用自动生成的逻辑表达式,使用Analysis circuit自动生成如图所示的码表控制器状态转换、码表控制器输出函数两个电路。


将这两个电路封装,再利用三个D触发器,构造码表控制器电路。

以上即为所有步骤。

实验器材

装有Logisim软件的电脑一台。

实验过程与结果

1、实验设计的思想、方法:
②因为D触发器可以保存输入的前一个数据,所以使用D触发器比较原来存储的数据与时钟变化时所输入的新数据。D触发器只能接受1位数据,所以在4位并行加载寄存器电路中,要使用分线器把输入Din的4位数据分成4个1位数据,再使用分线器把输出的4个1位数据合成4位输出Q;16位并行加载寄存器电路中则是16位数据与4位数据之间的转换。因为是同时发生的,所以使用同一个时钟来控制。
③在excel中填写真值表的值,自动生成逻辑表达式,将逻辑表达式填写到Analysis circuit的expressions中并简化,即可得到BCD计数器状态转换、BCD计数器输出函数两个电路。简化后的表达式如下:




该电路除时钟外无外部输入值。状态转换和输出函数两个封装组件的输入值均是D触发器的输出值,状态转换的输出值再作为D触发器的输入值。初始时D触发器输出值为0,也即初始输入为0。
④时钟信号控制最低位的BCD计数器,该计数器的Cout再作为时钟控制高一位的BCD计数器;最高位也就是第四个BCD计数器的Cout不用接线。从而可以在低位BCD计数器的值达到最大值9时,下一个BCD计数器加1表示进位,原BCD计数器再从0开始计时。因为每个BCD计数器只能控制4位数据,所以要将最终结果用一个分线器合成一个16位数据来表示时钟值。
⑤参考后面控制运动码表中7段数码管的连线,可以确定每个接口应该对应哪条线。只有00.00中间位的小数点是亮的,所以该处接一个电源,其余三个接口直接接地。一共有7×4+4=32位,合成输出值DispInfo。
⑥初始状态时要保证16位寄存器SD中储存的数据无穷大,即设为9999。第一次Store的时候比较9999与计时器TM中值的大小,此时用SD-SEL来决定,把小的那个值传入寄存器SD中。以后每次Store都要比较寄存器SD中的值与当前计时器TM中值的大小,通过16位无符号比较器来完成,取小的那一个存入寄存器SD中,并输入码表显示DP,从而显示在码表上同时修改NewRecord的值,此时用DP-SEL来决定。
⑦参照之前画出的系统状态转移图,在excel中填写状态转换和输出函数的真值表。状态转换真值表如下图所示:


输出函数真值表如下图所示:

利用自动生成的逻辑表达式,使用Analysis circuit简化后自动生成码表控制器状态转换、码表控制器输出函数两个电路。
Excel自动生成的逻辑表达式如下:
状态转换:
N2:
S2&S1&S0&Store&Reset&NewRecord+S2&S1&S0&Start&Stop&Store&Reset+S2&S1&S0&Store&Reset&NewRecord
N1:
S2&S1&S0&Stop+S2&S1&S0&Start&Stop&Store&Reset+S2&S1&S0&Store&Reset&NewRecord+S2&S1&S0&Stop&Reset+S2&S1&S0&Start&Stop&Store&Reset+S2&S1&S0&Stop&Reset+S2&S1&S0&Store&Reset&NewRecord+S2&S1&S0&Store&Reset&NewRecord
N0:
S2&S1&S0&Start+S2&S1&S0&Start+S2&S1&S0&Start&Stop&Store&Reset+S2&S1&S0&Start&Reset+S2&S1&S0&Store&Reset&NewRecord+S2&S1&S0&Start&Stop&Store&Reset+S2&S1&S0&Start&Reset+S2&S1&S0&Stop&Reset+S2&S1&S0&Start&Reset+S2&S1&S0&Store&Reset&NewRecord+S2&S1&S0&Store&Reset&NewRecord
输出函数:
SDSel:~S2&S1&S0
SDEN:S2&S1&S0+S2&S1&S0
DPSEL:S2&S1&S0+S2&S1&S0+S2&S1&S0+S2&S1&S0
TMEN:S2&S1&S0+S2&S1&S0
TMReset:S2&S1&~S0
系统的外部控制输入信号分别为Start,Stop,Store,Reset,通过按钮连接;其余每个参数代表的含义前面已经有过描述。
在码表控制器电路中,状态转换的5个输入分别是来自于外部的start,stop,store,reset和NewRecord,剩下3个输入为3个D触发器的输出值。而状态转换的3个输出又分别输入3个D触发器。3个D触发器的输出值还同时输入输出函数的引脚,从而产生5个控制元件的值。

2.如何验证你设计的电路正确性?
①经数码管驱动测试电路的测试,7段数码管可以显示0-9的数字,构造成功。


②在4位并行加载寄存器电路中,设置使能端输入为1,输入Din为0110,时钟上升时,输出Q为0110;输入Din为1011,时钟上升时,输出Q为1011。依次验证0000-1111所有值,可以确定电路构建成功。


在16位并行加载寄存器电路中,设置使能端输入为1,随机输入Din值,输出Q的值相等,即可确定电路构建成功。


③设置使能端输入为1,时钟上升时,Q的值加1.多次点击CLK,则Q不断递增。图示为Q输出值为2时。

当Q值为9时,再点击两次CLK完成一个时钟周期,则Cout变为1,Q变为0。再完成一个时钟周期则Cout变为0,Q变为1。设置Rst值为1,即可把整个电路恢复初始状态。可以确定电路构建成功。


④设置使能端输入为1,点击CLK不断完成时钟周期,则Q的值不断上升。当Q值为9时,再点击两次CLK完成一个时钟周期,Q值变为10000。注意这里要看二进制的表示,而不能看十进制的。Q值为9用二进制表示为1001,是由最低位BCD计数器的四位数据表示的;下一步应该进位到下一个BCD计数器,也即下一个BCD计数器的四位数据为0001,最低位BCD计数器的四位数据为0000,合起来即为10000。设置Rst值为1,即可把整个电路恢复初始状态。


在码表测试器自动电路中,设置时钟为Ticks Enabled,任意设置一个频率(如1kHz可以较快观察到每个数码管的显示数据);也可以通过Ctrl+K分步验证每一个时间值。经观察,该码表测试器可以正确显示00.00-99.99的任意时间数据,并可以不断循环,从99.99再变回00.00。由以上可以确定电路构建成功。

⑤当输入Din发生变化时,输出DispInfo也会随之发生变化。同时也可以观察后面运动码表中的显示的数值,为00.00即为连接正确。


⑥连接好线路后,最好成绩记录显示为9999,其余功能可以等到码表控制器连接完成后一起验证。
⑦完成以上所有操作后,在运动码表电路中,点击Start,运动码表开始计时。

点击Stop,运动码表暂停计时。此时最好成绩记录为9999。

点击Store,运动码表的值存储到寄存器SD中,同时最好成绩记录发生改变。

再点击Start,运动码表再次开始计时。

点击Stop,运动码表暂停计时。

点击Store,此时运动码表显示的值比最好成绩记录大,所以运动码表显示最好成绩记录。

点击Reset,运动码表恢复初始状态。

通过以上验证,可以确定该运动码表电路完成了实验所需的所有要求。
3.实现:
按照以上序号1-7的顺序,分别先设计各部分的电路并封装,最后再在运动码表电路中构成一个整体。充分理解了每一部分的作用之后,就可以按顺序、分层完成整个电路。
最终运动码表电路如下图所示:

【Logisim】运动码表设计相关推荐

  1. 基于logisim的运动码表设计

    运动码表属于一个小型的数字系统,既然是基于logisim的设计,自然是全部用原理图方式实现的.我觉得虽然业界HDL的设计方式很常见,但是基于原理图的设计经过这个项目以后我认为算是一个基本功,基于原理图 ...

  2. 小型数字系统---运动码表设计

    运动码表设计中码表控制器是最难的,所以主要介绍如何设计码表控制器. 我们先给这个时序电路设计状态以及编码 先设计状态转换函数 首先画出状态图: (其中我们让其一到000状态就立马变为001状态,110 ...

  3. 小型数字系统---运动码表

    小型数字系统-运动码表 运动码表设计 小型数字系统---运动码表 一,实验目的 二,实验内容 三,实验步骤 四,测试结果 一,实验目的 熟悉数字系统基本特征及设计方法,熟练掌握数字系统设计基本流程,利 ...

  4. logisim数据选择器_利用Logisim构建小型数字系统(运动码表)

    本文主要介绍的是中国大学mooc上"计算机硬件系统设计"课程中的一个实验.首先,我对本课程的课程组深表感谢,开发了这么好的学习资源供学生在线学习. 下面介绍的是这个实验的设计过程. ...

  5. logosim运动码表控制单元详解(含状态转换excel表)

    本文对谭志虎老师慕课<计算机硬件系统设计>之第二部分"数字逻辑基础实验"下的小型数字系统设计之运动码表的控制单元进行讲解. 一.设计控制器状态转换电路 根据运动码表的功 ...

  6. 基于51单片机自行车码表设计

    [毕设课设]基于51单片机自行车码表设计 ​效果图 Proteus仿真: 功能简介: 文件内容: 程序框架: 网盘链接: ​效果图 更多内容请关注@WENJIE电子科技 ​ 基于51单片机proteu ...

  7. 8155与单片机c语言设计,51单片机课程设计报告-基于8155的8LED显示电子码表设计.doc...

    51单片机课程设计报告 --基于8155的8LED显示电子码表设计 实验目的 本次课程设计是基于51单片机在理论课程的基础上,通过电路设计.理论计算.实际编程.调试.测试.分析查找故障,解决在实际设计 ...

  8. 【计算机毕业设计】即动运动网站设计

    一.系统截图(需要演示视频可以私聊) 摘  要 随着科学技术的飞速发展,社会的方方面面.各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,即动运动网站设计当然也不能排除在外.即动运动 ...

  9. HTML5期末大作业:运动网站设计——古瑜伽网站(28页) HTML+CSS+JavaScript

    HTML5期末大作业:运动网站设计--古瑜伽网站(28页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常见网页设计作业题材 ...

最新文章

  1. ★Kali信息收集~★6.Dmitry:汇总收集
  2. 研一寒假02-指针_new分配内存_使用new来创建动态数组_使用动态数组_使用delete来释放new分配的内存...
  3. 10-排序6 Sort with Swap(0, i) (25 分)
  4. window-运行perl脚本(搭建health-check环境)
  5. EnterpriseDb公司的Postgres Enterprise Manager 安装图解
  6. win7开机启动项设置_怎么个性化设置win7系统开机登录画面【详细介绍】
  7. itest听力答案2020_2020高中英语听力训练测试与答案
  8. win7计算机硬盘加密码,win7系统怎么加密电脑硬盘 win7系统加密电脑硬盘的快速操作方法...
  9. 连续值特征分桶区间设置
  10. redis manager desktop下载、安装、连接redis教程(官网)
  11. BZOJ #3653. 谈笑风生
  12. 安卓手机如何更改开机 关机 动画
  13. 创建一个动态空间存储未知大小的二维数组
  14. 谷歌、百度、必应的搜索技巧
  15. 关于SQL的一点学习
  16. 记录每天背的单词,准备考研。(3月15日)
  17. 2020年10月中国编程语言排行榜
  18. JNI ---- JNA
  19. 04-如何挑选最牛的货币基金
  20. php swfupload中文文件名,php – 如何为SWFUpload设置上传的文件文件夹?

热门文章

  1. autojump一键直达目录在某些linux版本上失效的问题
  2. 【备战秋招】每日一题:2022年清华大学(深圳)保研夏令营机试题-第一题-树上计数
  3. 第二十四章 CentOS 系统配置工具: setup
  4. Stable Diffusion攻略集(Stable Diffusion官方文档、kaggle notebook、webui资源帖)
  5. React 项目搭建与部署,搭建Node服务器
  6. 计算机985湖南大学考研失利经验
  7. Python和C语言先学哪个好?
  8. [NCTF2019]babyRSA1
  9. C语言结合gnuplot绘制sinc函数波形
  10. 电脑怎么压缩mp4视频文件?mp4视频文件太大怎么变小?