[Logisim 头歌实践教学平台]单周期CPU(24条指令) MIPS单周期CPU设计(24条指令)(HUST)《计算机硬件系统设计》---自己动手画CPU(计算机组成原理实验)

 点击此处获取源代码(一码通关).circ

下载链接icon-default.png?t=N7T8https://afdian.net/a/fries

本代码为原创首发,创作不易,谢谢支持!

实验成品电路图

MIPS流水CPU设计所有实验见该博客:

博客链接

目录

点击此处获取源代码(一码通关).circ

实验成品电路图

实验目的

实验内容

电路框架

电路引脚

调试技巧与常见故障


 

实验目的

学生掌握控制器设计的基本原理,能利用硬布线控制器的设计原理,在 Logisim 平台中设计实现支持24条指令的 MIPS 单周期 CPU。

实验内容

利用运算器实验,存储系统实验中构建的运算器、寄存器文件、存储系统等部件以及 Logisim 中其它功能部件,构建一个32位 MIPS CPU 单周期处理器。数据通路如下图所示:

要求支持24条 MIPS 核心指令,最终设计实现的 MIPS 处理器能运行实验包中的 benchmark.asm。

电路框架

cpu24.circ

注意:可以整体平移引脚框到电路任何位置,但由于电路封装与引脚位置和顺序有关系,所以框内引脚一律不许增删改,哪怕是移动位置调整顺序,改变引脚朝向,也不要在电路中增加额外的引脚,否则测试系统无法测试

电路监控引脚
信号位宽功能描述
PC32当前节拍程序寄存器 PC
IR32当前节拍指令字 IR
RegWrite1寄存器写使能控制信号
RDin32寄存器文件写入端口的数据
MemWrite1存储器写使能控制信号
MDin32存储器写入端口的数据
LedData32LED 显示输出值

待测电路默认封装如下,提交测试前请检查是否一致,如不一致,检查引脚是否修改过,另外可以通过恢复默认封装功能尝试修复。

电路测试

完成设计后,加载 benchmark.hex 程序,测试功能。确认实验完成正确后,可利用文本编辑工具打开 cpu24.circ,将所有文字信息复制粘贴到 Educoder 平台的 cpu24.circ 文件中,再点击评测按钮即可进行本关测试。平台会对你设计的电路进行自动测试,为方便测试,请勿修改子电路封装。

测试输出结果说明

最终输出包括个检测引脚的期望值和实际值,出错时请对比查错。

#信号功能描述
1CLKs时钟计数,表明当前节拍,注意计数为十六进制
2PC当前节拍程序寄存器 PC 的期望值
3IR当前节拍当前指令字 IR 的期望值
4PCerr2 位指错字:左起第一位为 1 表示 PC 出错,第 2 位出错表示 IR 出错
5Werr5 位指错字:从左到右分别表示 LED、RegW、RDin、MemW、MDin 出错的情况,1 表示错误,0 表示正确
6LEDLED 输出的期望值
7RegW寄存器写使能控制信号的期望值
8RDin寄存器文件写入端口的数据的期望值
9MemW存储器写使能控制信号的期望值
10MDin存储器写入端口的数据的期望值
11PCr当前节拍程序寄存器 PC 的实测值
12IRr当前节拍当前指令字 IR 的实测值
13LEDrLED 输出的实测值
14RegWr寄存器写使能控制信号的实测值
15RDinr寄存器文件写入端口的数据的实测值
16MemWr存储器写使能控制信号的实测值
17MDinr存储器写入端口的数据的实测值

由于24条指令的测试程序 benchmark 节拍周期数过多,所以会输出大量信息,Educoder 平台不支持,所以本测试中使用了精简模式,左侧测试用例部分这里仅仅输出表头,如下图所示

右侧实际输出部分仅仅输出表头和错误节拍对应的各监测引脚的标准值,如下图所示

如果未能通过测试,系统会输出待测 CPU 出错的节拍编号,以及当前节拍下各监测引脚的期望值以及出错情况,请根据出错字找出错误,将 CPU 运行到对应节拍下(注意 CLK 值为十六进制)进行比对,并根据指令的功能进行调试。

调试技巧与常见故障

1、检查待测电路引脚框架是否和前面的图一致,调整引脚会引起待测部件封装接口改变,导致测试无法正常进行; 2、检查待测电路子电路外观也就是封装和前面的图是否一致,引脚位置,引脚顺序、引脚数目等,这个不一样肯定不正常; 3、单周期 CPU 所有寄存器包括寄存器文件时钟触发都是上跳沿,请仔细检查,如果有不同会导致一个节拍两个状态,测试系统会判断出错; 4、是否加载指定测测试程序,如果自己汇编程序要检查 mars 内存模式是否设置为 compact mode。

第0拍就出错了,有可能是引脚和最新版本不一致,另外也有可能封装不对,检查下电路封装,恢复为默认封装即可!

下图就是 LED 数据不对,实际上没有接这个引脚。

第5拍出错:应该是 jal 指令,这条指令除了跳转,还要保存返回地址到31号寄存器,出现这个错误多半是没有实现后面的功能。

第7拍出错:应该是寄存器文件时钟触发模式的问题,改成上跳沿就可以解决。

PC 出错原因:如果指错字显示 PC 出错,表示上一个节拍是分支指令,且分支指令跳转不正确。。

出现以上故障,是因为本地 cs3410.jar 和测试平台中的 cs3410.jar 路径不一样导致的。一般建议本地的 jar 文件和 cpu.circ 文件在同一目录下,如果出现这个问题,可以将本地 cs3410.jar 先移动到 cpu.circ 同目录下后,打开 cpu.circ,logisim 会提示找不到 cs3410.jar,重新指向同目录 cs3410.jar,存盘退出,再重新上传电路文本内容,即可解决这个问题。

也可以直接修改平台代码,搜索 cs3410,如下所示:

 
  1. <lib desc="jar#6.CPU设计实验/cs3410.jar#edu.cornell.cs3410.Components" name="7">

将上面的绝对路径删除,改成如下形式即可:

 
  1. <lib desc="jar#cs3410.jar#edu.cornell.cs3410.Components" name="7">

开始你的闯关任务吧,升级打怪中....

  • 13
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值