团队成员: 以凝(个人 limper.styrene.03@icloud.com)
标量处理器,顺序执行
实现的指令 89条:
自陷指令12条:
a. 不包括立即数6条:teq,tge,tgeu,tlt,tltu,tne
b. 包含立即数6条:teqi,tgei,tgeiu,tlti,tltiu,tnei
系统调用:syscall(这里解释一下,RoLa不区分用户模式和内核模式,所以没有使用Status寄存器的UM字段,所有操作没有限制,但是这里还是实现了syscall)
异常返回指令:eret
相关接口
src/RoLa: 各个模块的源码文件
src/Flash:Flash控制器
src/GPIO:GPIO控制器
src/SDRAM:SDRAM控制器(相应的实例化的配置信息有待调整)
src/wb_conmax:总线
sim : 存放了开发阶段的项目仿真文件
img : 含有开发信息的图片
pdf : MIPS参考资料
tools/mips-4.3 : 编译工具链
tools/compile : 编译指令文件夹,其中有一个makefile负责将汇编代码转成机器码。里面的大多数文件不重要,你需要关注你的.data文件。使用方法是:
make clean
清空其他无关文件make
或者make all
,即可。注意clean会清除你的.s文件,执行之前请想清楚.s还要不要。关于编译链工具的使用说明:本编译链工具可以运行在linux下,(mac貌似不行,我没有运行成功在mac上)ubuntu 64位下可以兼容32位程序的运行,但是必须要有32位基础库的支持才行。请依次运行以下指令。
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
sudo apt install lib32z1
另外本项目还附赠了支持win的编译链工具。同在tools文件夹下。(2022.12.9:win下的编译链工具貌似有点问题,和Bin2Mem不太兼容,请审慎。如果不想费脑细胞的话请无脑使用项目自带的编译链工具在linux下运行)
源码中有一个小小的可执行文件Bin2Mem.exe,这个可执行文件只能linux下运行。由于我开发RoLa的时候涉及到Win,Mac和Linux三种环境,所以为了解决不兼容问题,编写一个py脚本用于读取bin转化成hex/data文件。源码在Bin2Mem文件夹下。
处理器的名字,RoLa,来源一个歌曲 Round & Laundry 《卡罗尔与星期二》
,各取了两个单词的前两个字母。 计划写这个课设的时候,网易云心动模式播放了这个,然后一时兴起给了这个名字
最后谈谈个人写这个课设的感悟,大学四年第一次一个人不组队写课设。整个项目看我提交commit message就可以看出开发时候的自由和洒脱。收货分两方面谈,第一点从项目角度出发,个人开发的好处就是可以全权揽在手里,整个项目写完之后至少不会有任何外界因素造成的遗憾;第二点从心得和收货的角度上讲,这个处理器的开发流程给我有不小的收货,软件到硬件,终于做到或者勉强做到了通透的感觉。整个实践下来,一开始还是比较顺利的,因为一开始代码量小,bug比较好查,但是越到后期,功能越加越多,代码越来越冗杂沉重,bug确确实实是越来越难查了。必须硬着头皮给它找出来,可能是顶层模块的接口没有露出来,可能是宏定义没及时更新,甚至可能是组合逻辑写成了时序逻辑(体现在敏感信号不小心把*写成posedge clk,这个查了两天)总而言之,仿真之后波形不对就回去再查再改,形成了一套井然有序的流程:Mac上写代码-推送-Linux拉取编译-推送-Win拉取仿真-打回Mac修bug-Win拉取再仿真,直至仿真波形正确。
自己动手写CPU - 雷思磊 (本项目原型是书中OpenMIPS)
Minsys 开发指南 (本次课设指导说明)
AssemblyLanguageProgDoc
The MIPS32$^{TM}$ Instruction Set - MIPS_Vol2.pdf
The MIPS32$^{TM}$ Privileged Resource Architecture - MIPS_Vol3.pdf
from飞书:个人开发文档
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。