组成原理|educoder+Logisim存储系统实验

第一关:汉字字库存储芯片扩展实验

掌握字扩展和位扩展即可完成第一关内容。
注意在加载ROM中汉字码时,可以复用参考字库中的数据。
对于第二个ROM,将参考字库中的数据均分为4份,分别粘贴到4个12位宽的ROM中。地址标号为0000-1ff0, 2000-2ff0, 3000-3fff0, 4000-4ff0(最后一个其实没有数据了)。
在这里插入图片描述

第二关:MIPS寄存器文件设计

本题只要理解下面的表格逻辑即可画出。
在这里插入图片描述

在这里插入图片描述

第三关:MIPS RAM设计

对于本题,实现一个RAM可以存取4字节、2字节(分为高16位存取和低16位存取)、1字节。

  • 4字节最为简单,不用附加任何条件即可进行。
  • 2字节需要判断是高16位还是低16位存取,只要找到16位中的低8位的地址,就找到了地址。
  • 1字节精准判断哪个RAM可以存取。

本题我想了一个对Din做变形的方法:
将原数据Din做适当变换然后同时输入到四个RAM端,只要用组合逻辑识别不同字节的最低字节地址即可。(对于4字节,最低字节地址就是0~8位的地址;对于2字节,最低字节地址同上;对于1字节,就是本身的地址)

  • 4字节的输入不做任何变换。
  • 2字节的输入,例如:00AB或者AB00;输出为ABAB。
  • 1字节的输入,例如:000A或者00A0或者0A00或者A000,输出为AAAA。

这样做的弊端是:没有完全按照汇编语言中对不同字节数的操作来存储。
好处是:数据的处理可以大大简化。

那么,如何区分是4字节输入、2字节输入还是1字节输入呢?

我将Byte3~Byte0的片选信号组合为4位二进制数。这样:

  • 1111:4字节存储。
  • 0011:低2字节存储。
  • 1100:高2字节存储。
  • 0001/0010/0100/1000:1字节存储。
  • 0000~1111的其他数:无效,补0

针对这样的思路,设计电路各部分如下:
输入转化逻辑:按照上述思路实现。
在这里插入图片描述

片选信号组合逻辑,这部分没有做封装,显得比较乱。
在这里插入图片描述

结果需要再将变形的部分回退到正确结果。通过移位操作实现。
例如:输入AB00,中间转化为ABAB,最后读出为AB00,要转化为00AB。
在这里插入图片描述
全部的电路如下图所示:

在这里插入图片描述

第四关:2路组相联Cache设计

本题需要实现2路组相联Cache。本题可以复用MAX比较器,但我做完才看到有,因此没有用。
自己画一个比较器也挺简单的。
比较器部分:
在这里插入图片描述
字节地址分类:
在这里插入图片描述
命中电路:
在这里插入图片描述
未命中处理电路:
在这里插入图片描述
结果输出电路(这里可以简化):
在这里插入图片描述
Cache槽电路:(注意计数位宽16位,否则卡在educoder命中率94%无法通过)画相同的8个。
在这里插入图片描述
槽电路在视频讲解中已经给出逻辑图,只要实现清零部分的逻辑即可。
以下是原逻辑图:
在这里插入图片描述

全部电路:
在这里插入图片描述
在这里插入图片描述

做完了回顾一下思路也没有那么难,但是做的时候感觉逻辑好多好复杂QAQ。
重点是将大任务划分为几个块,然后分别实现。

  • 14
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值