【Logisim】运动码表设计

Logisim实现运动码表设计

目录

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

实验目的

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

实验步骤

1.确定系统输入输出,列出系统的外部控制输入信号,系统的输出信号;
【Logisim】运动码表设计_第2张图片
2.设计码表的功能部件:
【Logisim】运动码表设计_第3张图片
3.构建功能部件输入来源表:
【Logisim】运动码表设计_第4张图片
4.根据功能需求画出系统状态转移图;
【Logisim】运动码表设计_第5张图片
5.设计码表控制器,定义内部、外部控制信号、内部状态信号、状态输出信号。填写状态转换表、输出函数真值表(Excel表),生成状态转换逻辑表达式、输出函数逻辑表达式,构建码表控制器。
6.码表系统联调。

实验原理

1.通过Analysis circuit建立一个四输入七输出的电路,填写真值表的值,自动生成如下图所示电路。该电路把二进制数转化成7段数码管的每一段,即可用于控制7段数码管显示0-9的每个数字。
【Logisim】运动码表设计_第6张图片
【Logisim】运动码表设计_第7张图片
2.利用四个D触发器,构造4位并行加载寄存器。再用四个4位并行加载寄存器构造16位并行加载寄存器。
【Logisim】运动码表设计_第8张图片
【Logisim】运动码表设计_第9张图片
3.在excel中填写真值表,利用自动生成的逻辑表达式,使用Analysis circuit自动生成如图所示的BCD计数器状态转换、BCD计数器输出函数两个电路。
【Logisim】运动码表设计_第10张图片
【Logisim】运动码表设计_第11张图片
将这两个电路封装,再利用四个D触发器,构造4位BCD计数器。
【Logisim】运动码表设计_第12张图片
4.利用四个4位BCD计数器,构建码表计数器。其中,时钟信号控制最低位的BCD计数器,该计数器的Cout再作为时钟控制高一位的BCD计数器;最高位也就是第四个BCD计数器的Cout不用接线。
【Logisim】运动码表设计_第13张图片
5.通过分线器将输入的Din分为16个数,每4位数用一个数码管驱动分出7条控制7段数码管的线。再用一个分线器和电源、接地元件,把一共32个数值合成一个32位数DispInfo。注意这里每条线在分线器中对应的接口,如下图所示,并不是按顺序一一对应的。
【Logisim】运动码表设计_第14张图片
6.对运动码表的各组件进行连接。如图所示。除了码表显示DP、16位寄存器SD和计时器TM以外,还使用了2个二路选择器和一个16位无符号比较器。
【Logisim】运动码表设计_第15张图片
7.参照之前画出的系统状态转移图,在excel中填写状态转换和输出函数的真值表,利用自动生成的逻辑表达式,使用Analysis circuit自动生成如图所示的码表控制器状态转换、码表控制器输出函数两个电路。
【Logisim】运动码表设计_第16张图片
【Logisim】运动码表设计_第17张图片
将这两个电路封装,再利用三个D触发器,构造码表控制器电路。
【Logisim】运动码表设计_第18张图片
以上即为所有步骤。

实验器材

装有Logisim软件的电脑一台。

实验过程与结果

1、实验设计的思想、方法:
②因为D触发器可以保存输入的前一个数据,所以使用D触发器比较原来存储的数据与时钟变化时所输入的新数据。D触发器只能接受1位数据,所以在4位并行加载寄存器电路中,要使用分线器把输入Din的4位数据分成4个1位数据,再使用分线器把输出的4个1位数据合成4位输出Q;16位并行加载寄存器电路中则是16位数据与4位数据之间的转换。因为是同时发生的,所以使用同一个时钟来控制。
③在excel中填写真值表的值,自动生成逻辑表达式,将逻辑表达式填写到Analysis circuit的expressions中并简化,即可得到BCD计数器状态转换、BCD计数器输出函数两个电路。简化后的表达式如下:
【Logisim】运动码表设计_第19张图片
【Logisim】运动码表设计_第20张图片
【Logisim】运动码表设计_第21张图片
【Logisim】运动码表设计_第22张图片
该电路除时钟外无外部输入值。状态转换和输出函数两个封装组件的输入值均是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中填写状态转换和输出函数的真值表。状态转换真值表如下图所示:
【Logisim】运动码表设计_第23张图片
【Logisim】运动码表设计_第24张图片
输出函数真值表如下图所示:
在这里插入图片描述
利用自动生成的逻辑表达式,使用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的数字,构造成功。
【Logisim】运动码表设计_第25张图片
【Logisim】运动码表设计_第26张图片
②在4位并行加载寄存器电路中,设置使能端输入为1,输入Din为0110,时钟上升时,输出Q为0110;输入Din为1011,时钟上升时,输出Q为1011。依次验证0000-1111所有值,可以确定电路构建成功。
【Logisim】运动码表设计_第27张图片
【Logisim】运动码表设计_第28张图片
在16位并行加载寄存器电路中,设置使能端输入为1,随机输入Din值,输出Q的值相等,即可确定电路构建成功。
【Logisim】运动码表设计_第29张图片
【Logisim】运动码表设计_第30张图片
③设置使能端输入为1,时钟上升时,Q的值加1.多次点击CLK,则Q不断递增。图示为Q输出值为2时。
【Logisim】运动码表设计_第31张图片
当Q值为9时,再点击两次CLK完成一个时钟周期,则Cout变为1,Q变为0。再完成一个时钟周期则Cout变为0,Q变为1。设置Rst值为1,即可把整个电路恢复初始状态。可以确定电路构建成功。
【Logisim】运动码表设计_第32张图片
【Logisim】运动码表设计_第33张图片
④设置使能端输入为1,点击CLK不断完成时钟周期,则Q的值不断上升。当Q值为9时,再点击两次CLK完成一个时钟周期,Q值变为10000。注意这里要看二进制的表示,而不能看十进制的。Q值为9用二进制表示为1001,是由最低位BCD计数器的四位数据表示的;下一步应该进位到下一个BCD计数器,也即下一个BCD计数器的四位数据为0001,最低位BCD计数器的四位数据为0000,合起来即为10000。设置Rst值为1,即可把整个电路恢复初始状态。
【Logisim】运动码表设计_第34张图片
【Logisim】运动码表设计_第35张图片
在码表测试器自动电路中,设置时钟为Ticks Enabled,任意设置一个频率(如1kHz可以较快观察到每个数码管的显示数据);也可以通过Ctrl+K分步验证每一个时间值。经观察,该码表测试器可以正确显示00.00-99.99的任意时间数据,并可以不断循环,从99.99再变回00.00。由以上可以确定电路构建成功。
【Logisim】运动码表设计_第36张图片
⑤当输入Din发生变化时,输出DispInfo也会随之发生变化。同时也可以观察后面运动码表中的显示的数值,为00.00即为连接正确。
【Logisim】运动码表设计_第37张图片
【Logisim】运动码表设计_第38张图片
⑥连接好线路后,最好成绩记录显示为9999,其余功能可以等到码表控制器连接完成后一起验证。
⑦完成以上所有操作后,在运动码表电路中,点击Start,运动码表开始计时。
【Logisim】运动码表设计_第39张图片
点击Stop,运动码表暂停计时。此时最好成绩记录为9999。
【Logisim】运动码表设计_第40张图片
点击Store,运动码表的值存储到寄存器SD中,同时最好成绩记录发生改变。
【Logisim】运动码表设计_第41张图片
再点击Start,运动码表再次开始计时。
【Logisim】运动码表设计_第42张图片
点击Stop,运动码表暂停计时。
【Logisim】运动码表设计_第43张图片
点击Store,此时运动码表显示的值比最好成绩记录大,所以运动码表显示最好成绩记录。
【Logisim】运动码表设计_第44张图片
点击Reset,运动码表恢复初始状态。
【Logisim】运动码表设计_第45张图片【Logisim】运动码表设计_第46张图片
通过以上验证,可以确定该运动码表电路完成了实验所需的所有要求。
3.实现:
按照以上序号1-7的顺序,分别先设计各部分的电路并封装,最后再在运动码表电路中构成一个整体。充分理解了每一部分的作用之后,就可以按顺序、分层完成整个电路。
最终运动码表电路如下图所示:
【Logisim】运动码表设计_第47张图片

你可能感兴趣的:(计算机组成原理)