bne指令测试
添加BNE指令,
这是最开始原始指令结果
然后添加测试文件
可以看到指令这次成功的实现了跳转!!
文件名。。。是.dat的后缀
然后
显然是没有成功的
为什么呢?
因为BNE需要一个比较的零信号, 然后我就忘记添加了
看一下仿真的波形和寄存器的值吧
在这之前需要添加测试的文件
通过Mars 去dump一个十六进制的指令文件
我不是特别清楚修改了源文件之后是不是需要重新编译, 不过最好还是退出仿真然后重新编译吧。
然后我们添加测试的信号
由于是跳转指令, 就看一下控制信号和PC NPC这几个信号吧
修改成十六进制方便查看
然后我们看到在PC = 18的时候bne的控制信号为1
这时候发生跳转, NPC的值被置为44
在transscript的输出窗口也可以看到PC的变化
jr指令实现
jr指令是R类型的指令, 实现读取寄存器的值然后进行跳转。
调用了一条jal指令, 返回地址被压入了 $ra寄存器中
写到这里我终于知道自己出现什么问题了。
因为指令在译码的时候出错了。
看到这里指令的信号来到了上升沿。
所以成功了。
测试JALR指令
指令译码
需要写寄存器
需要选择写哪些寄存器
需要选择写的数据

本文详细记录了RISC-V处理器中多种指令的实现和测试过程,包括bne、jr、JALR、NOR、sll/sra/srl、sllv/srlv等。通过添加和修改指令,观察波形和寄存器变化,逐步解决遇到的问题,最终成功实现了所有指令的正确执行。在测试过程中,还涉及到了多路选择器的选择和ALU的扩展。
最低0.47元/天 解锁文章
991

被折叠的 条评论
为什么被折叠?



