MIPS架构的cpu设计仿真(武汉大学)——4

本文介绍了在MIPS架构CPU设计仿真的过程中,实现了包括ori, or, andi, and逻辑运算及sll, srl移位指令的功能。通过测试与波形图验证,仿真结果符合预期。文中还反思了设计过程中的问题,如过多使用宏定义、模块设计的分散性、代码重复以及对Verilog硬件描述语言的理解。同时建议遵循官方文档设计指令,避免错误。" 8132625,1360421,虚拟机Linux崩溃后的数据救援指南,"['虚拟机技术', 'Linux系统', '数据恢复', '故障排查', 'VMware工具']
摘要由CSDN通过智能技术生成

版本2.0

实现了对ori,or,andi,and等逻辑运算指令和sll,srl移位指令的支持。

一,测试逻辑运算指令:

ori $1,$0,0x0001 #$1=1
ori $2,$0,0x0002 #$2=2
ori $3,$0,0x0003 #$3=3
#逻辑运算测试
and $4,$1,$3	#测试and(与)指令,预计出现$4=1
or 	$4,$1,$2	#测试or(或)指令,预计出现$4=3
xor $4,$1,$3	#测试xor(异或)指令,预计出现$4=2
andi $4,$1,0x0003 #测试andi指令,预计出现$4=1

对应机器码:

34010001
34020002
34030003
00232024
00222025
00232026
30240003

仿真波形图:


和预计结果完全相同。


一,测试移位运算指令:

ori $1,$0,0x0001 #$1=1
ori $2,$0,0x0002 #$2=2

#移位指令测试
sll $3,$2,1		 #测试sll(左移位)指令,预计出现$3=4(0x0100)
srl $3,$2,1		 #测试srl(右移位)指令,预计出现$3=1(0x0001)

对应机器码:

34010001
34020002
00021840
00021842

仿真波形图:



实现了寄存器前半个周期写,后半个周期读的功能



实现了ex_ex,ex_mem旁路



反思:

1,不该定义那么多宏的。。。。。。。。。。。。。
比如刚开始还真的仿照书本定义了rst_enable,rst_disable,write_enable,read_disable,
等等等等很多使能信号(感觉这在写c++时并没有什么问题,but丫的这sb软件并没有自动补全与语法检查,宏很容易打错,而且很麻烦,还会忘记)。。。。。。。
然后,我重新把绝大部分使能信号用enable_signal~ disable_signal宏代替(其实直接enable~disable更好,但是disable是关键字)。
嗯。。。。。其实觉得大部分使能类的信号都都只有两个结果(true or false),所以应该本身就有良好的自注释作用。。。。。不应该用宏的,但木已成舟,又不想重写。就修修补补吧


2,书上好像流水线的设计把模块分得比较散。。。。

例如下图

 

但我写的时候好像把一些东西全扔一块了。。。。比如多路选择器。。。。。相当于直接通过模块内的分支语句代替了。。。。。

还有我将结构冒险的检测,控制器也全扔id模块里了。。。。。是不是该分开呢???以后再说。


3,找不到未添加ex_ex旁路与mem_ex旁路时的文件了。。。。。只有添加旁路以后的,所有没办法将无旁路时的波形图截图了。So还是上版本控制系统吧。。。。。


4,选择仿真时,老老实实的simulate>>start simulate>>选择要仿真的模块>>去掉enable optimizion>>选择10ns的时间间隔>>ok吧!

软件太坑。。。。。反正只用几天,也不想填坑了。。。。。。


5, 感觉重复的代码好多。。。。。ctrl+c 和ctrl+v用了好多次。。。。。

但是这样在c++,java,python等编程语言中是不对的,很容易导致bug。

但好像verilog是硬件描述语言,和c++,Java等有本质的区别。。。。。不知道符不符合这个规律。
就比如几个段寄存器的实现好像都差不多。。。。感觉用一个段寄存器的(姑且叫做类,用c++的叫法)就可以了。然后再实例化。好迷啊!!!


6,网上找到的mips指令对应的机器码,设计指令时还是按照官方文档来吧。。。。瞎玩容易出事(踩过坑)

Mips指令对应机器码:

      

MIPS 指令集(

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值