[华中科技计组实验]logisim完成8指令单周期MIPS CPU
自己动手画cpu系列 建设中ing 仅供参考!在这首推华中科技大学计算机组成原理实验课mooc连接初衷:在mooc上看见了本课觉得超赞,本人已完成了课中所有的实验,在做实验的过程中有时候实验会没有思路或者有些bug会浪费很多时间,目前呢也没找到完整的答案,所以做了份自己的答案给大家困惑的时候一份参考(大神请忽视,我自己也就一弱鸡),也就给大家卡壳的时候能有个找灵感的地方,请先独立思考,切勿抄袭。m
自己动手画cpu系列 建设中ing 仅供参考!
在这首推华中科技大学计算机组成原理实验课mooc连接
初衷:在mooc上看见了本课觉得超赞,本人已完成了课中所有的实验,在做实验的过程中有时候实验会没有思路或者有些bug会浪费很多时间,目前呢也没找到完整的答案,所以做了份自己的答案给大家困惑的时候一份参考(大神请忽视,我自己也就一弱鸡),也就给大家卡壳的时候能有个找灵感的地方,请先独立思考,切勿抄袭。
tips:每个部分都是先贴答案再写思路
-
- 数字逻辑基础
-
- 数据表示实验
-
- 运算器设计
-
- 存储器设计
-
- MIPS CPU
-
- MIPS CPU必备基础知识
-
- 8指令单周期MIPS32 CPU
-
- 8指令多周期(微指令)MIPS32 CPU
-
- 8指令多周期(硬布线)MIPS32 CPU
-
- 24条指令5级流水MIPS32 CPU
主电路图如下
控制器如下
这个是早期编写的了,可以看出控制器比较简陋,我感觉最优方法还是参照24指令的单周期控制器,就是老师给出的那个,由译码器构成而不是由比较器构成,比较器损耗太大了
因为是mipscpu部分第一个实验啰嗦一下,说一下各个控制信号
首先是regdist信号,它的作用是区分R型和J型指令的,一般来说regdist==1是R型信号因为R型指令写成汇编形式寄存器分配op rd,rs,rt是写到rd里的所以W#应是rd地址。
Sign Extend实际上就是个16->32的位扩展器,因为无论是alu还是pc都需要32位数据,特别说明在本实验后面不用左移两位,pc也不是+4而是+1因为logisim中都是按字寻址而不是按字节
AlUSrc:区分是加立即数还是寄存器数,实际上还是R和非R的区分,因为在本实验R型alusrc==0,代表R型指令加寄存器数其余加的是立即数
MemtoReg:==0代表寄存器堆中要存的是寄存器数之间的运算即R型,==1代表是lw取数据存储器中的数据
单周期还是挺基础的最好把这个仔细做做,对后面的实验很有帮助。
更多推荐
所有评论(0)