设计增加单周期MIPS指令

实现为单周期MIPS增加可运行指令,以增加“按位与”and指令为例(基于logisim)

主要就只需要对控制器内部做修改,因为主电路各部分是完全具备运行条件的

修改前的控制器内部

在这里插入图片描述

原MIPS电路中已经包含了两种R型指令add和slt,对于是否为R型的判断前面已经有了(即通过判断OP为00时)所以无需修改

在这里插入图片描述

然后就是进行一个进一步是运行R性指令而不是退出的判断操作,只是多了一种情况,所以加个“或”门分支就可以了

在这里插入图片描述

然后呢其实增加一个按位与指令and无非就是改一下func字段的判断条件,改成and对应代码的16进制值做“比较判断”,来进一步确定是做and的R型指令(通过查找文档我们得知那个16进制值为24)

在这里插入图片描述

最后输出ALU_OP前多一个二选一,即and=1时输出相对应的ALU_OP值7,否则进行之前具有的add或slt运算,因而也完全不会影响原本具有的功能。

在这里插入图片描述

然后让我们来测试一下

我写了一段代码,如下:

   /* .asm*/
addi  $1,$0,15   //将1号寄存器的值置为15
and  $3,$0,$1   //使0号寄存器和1号寄存器内值做“按位与”运算,结果放于3号寄存器
and  $4,$1,$1   //使1号寄存器和1号寄存器内值做“按位与”运算,结果放于4号寄存器
addi   $v0,$0,10  //寄存器V0置为10,然后syscall指令程序中断退出       
syscall   
上述代码写为16进制呢,得到:
/* .hex */
2001000f
00211824
00012024
2002000a
0000000c

预期结果:

0000 000f和0000 000f做与运算,故3号寄存器值应为0000 000f
0000 000f和0000 0000做与运算,故4号寄存器值应为0000 0000

测试截图

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值