计算机组成原理实验-logisim实现自动售糖机

一.作业内容;

 二.设计分析:

首先我们先确定输入和输出,根据题目的提示很明显可以看出因为每次可以投入10元或者5元硬币,当总钱数达到15元或者超过15元的时候,自动出糖,并且机器不找零,所以可以看出最大的钱数只能是20元,不可能比这还大,所以从0~20我们可以确定出5个状态,为了简洁表示我们用d表示投入10元,用n表示投入5元,最后的是否出糖用c表示,分别用S0到S4表示0~20元。

然后我们开始绘制状态转换图,当S0的时候也就是0元的时候,如果既不投入10元也不投入5元那么依旧是S0,如果投入10元不投入5元,那就转为S2,如果投入5元不投入10元,那就转为S1,以此类推绘画出状态转换图,然后我们开始根据状态转换图撰写状态转换表。

接下来我们采用二进制编码的方式,由于有5种状态,所以二进制编码需要三个数字才能够将他们都表示出来,000表示S0,001表示S1,010表示S2,011表示S3,100表示S4。

对于独热编码,在独热编码中状态编码的每一位表示一种状态,在任何时候只有一个位是热的或真的,由于有5种状态,所以需要5位数字,分别为:S0为00001,S1为00010,S2为00100, S3为01000,S4为10000,这比二进制编码的三位数字要大很多,但是下一位状态和输出的逻辑通常会更简化,需要的门电路也更少。

然后我们就用状态编码重写状态转换表,这里采用二进制编码,接下来写出布尔表达式,可以利用logisim自动生成电路,快速简洁地生成电路图, 然后根据我们用状态编码编写的输出表,写出输出电路,由于要在测试电路中使用Reset信号,所以在编写有限状态机的时候,对于寄存器里面的Reset信号,我们用一个输入引脚来表示,方便测试的时候,用隧道来表示Reset信号,电路信号同理。如图:

三.具体设计

 

状态转换图:

状态转换表:

当前状态

输入

下一状态

S

10

5

S*

S0

0

0

S0

S0

0

1

S1

S0

1

0

S2

S1

0

0

S1

S1

0

1

S2

S1

1

0

S3

S2

0

0

S2

S2

0

1

S3

S2

1

0

S4

S3

0

0

S0

S3

0

1

S1

S3

1

0

S2

S4

0

0

S1

S4

0

1

S2

S4

1

0

S3

状态

二进制编码方式

S0

000

S1

001

S2

010

S3

011

S4

100

用二进制编码重写状态转换表和输出表:

当前状态

输入

下一状态

S(s2, s1, s0)

10

5

S*(s*2, s*1, s*0)

0,0,0

0

0

0,0,0

0,0,0

0

1

0,0,1

0,0,0

1

0

0,1,0

0,0,1

0

0

0,0,1

0,0,1

0

1

0,1,0

0,0,1

1

0

0,1,1

0,1,0

0

0

0,1,0

0,1,0

0

1

0,1,1

0,1,0

1

0

1,0,0

0,1,1

0

0

0,0,0

0,1,1

0

1

0,0,1

0,1,1

1

0

0,1,0

1,0,0

0

0

0,0,1

1,0,0

0

1

0,1,0

1,0,0

1

0

0,1,1

当前状态

输出

S(s2, s1, s0)

C

000

0

001

0

010

0

011

1

100

1

 

写出下一状态和输出的布尔表达式:

 

 

接着就可以进行电路设计了,这里注意,利用logisim自动生成电路,先生成下一状态的电路,然后利用寄存器和隧道就完成了下一状态控制器的设计,然后在当前状态那里进行输出设计:

 封装如下:

 

接下来开始编写测试电路,创新的使用了:输入d和n分别用按钮来表示,点一下即为输入,对于输出的常数,我们用一个计数器和16进制数字表示器来表示,对于剩余的钱数,我们用一个多路选择器,以及16进制数字表示器来表示对多路选择器要额外小心,由于有五种状态,所以多路选择器的选择端位宽要为3,并且0~5的数据以常数表示,测试结果完美。

********************************************************************************************************

风轻轻吹.......

 

 

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
华中科技大学计算机组成原理实验实验报告及alu源文件 1 实验目的  熟悉Logisim软件平台;  掌握运算器基本工作原理;  掌握运算溢出检测的原理和实现方法;  理解有符号数和无符号数运算的区别;  理解基于补码的加/减运算实现原理; 2 实验环境 Logisim是一款数字电路模拟的教育软件,每一位用户都可以通过它来学习如何创建逻辑电路,方便简单。 它是一款基于Java的应用程序,可运行在任何支持JAVA环境的平台,方便学生来学习设计和模仿数字逻辑电路。Logisim中的主要组成部分之一就在于设计并以图示来显示CPU。当然Logisim中还有其他多种组合分析模型来对你进行帮助,如转换电路,表达式,布尔型和真值表等等。同时还可以重新利用小规模的电路来作为大型电路的一部分。 3 实验内容 3.1 Logism实验  学习使用Logism工具栏上的功能  学会使用子电路,并能将子电路放到main电路中使用  学会使用分线器,理解线宽的概念  学会使用隧道,学习使用探测器,了解logisim数据监测方法。 3.2 运算器封装实验  利用logisim平台中现有运算部件构建一个32位运算器,可支持算数加、减、乘、除,逻辑与、或、非、异或运算、逻辑左移、逻辑右移,算术右移运算,支持常用程序状态标志(有符号溢出OF、无符号溢出CF,结果相等Equal),运算器功能以及输入输出引脚见下表,在主电路中详细测试自己封装的运算器。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

76博ding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值