首页 > 其他 > 详细

Verilog hdl 实现单周期cpu

时间:2019-07-02 00:13:38      阅读:150      评论:0      收藏:0      [点我收藏+]

参考计组实验测试指令 - 简书,添加了一些细节。

1.添加 bne指令

修改 ctrl.v

技术分享图片
 

 

技术分享图片
 

 

技术分享图片
 

之后修改mipstestloopjal_sim.asm,mars dump 为 bnetest.dat

 

技术分享图片
 

修改sccomp_tb

 

技术分享图片
 

modelsim编译,模拟。信号添加sccomp_tb: u_ctrl -> i_bne ,npc,  pc

 

技术分享图片
 

可见i_bne控制信号为1时,npc变为44。添加bne成功

2.添加jr指令

先看其格式。

 

技术分享图片
 

R型指令。

故在ctrl.v如下修改。

技术分享图片
 

ctrl.v又两处修改

 

技术分享图片
 

然后在NPC.v修改。注意添加参数和input

 

技术分享图片
 

 

技术分享图片
 
技术分享图片
 

=RD1的原因可见sccpu.v

 

技术分享图片
 

在ctrl_encode_def 定义NPC_JR

技术分享图片
 

在sccpu.v添加参数  .RD1

技术分享图片
 

然后写测试程序

$ra先赋值为4.这样应该会不断循环。

导出测试

技术分享图片
 

勿忘修改sccomp_tb

 

技术分享图片
 

波形图可见PC从1c变到设定的4。添加成功

 

技术分享图片
 

3.添加JALR

 

技术分享图片
 

ctrl.v

 

技术分享图片
 

 

技术分享图片
 

 

技术分享图片
 

 

技术分享图片
 
技术分享图片
 

JALR指令格式为 jalr rs

无条件跳转到由寄存器rs指定的指令,并将下一条指令的地址保存到寄存器$ra中

测试代码

 

技术分享图片
 

可见从14跳到4,

技术分享图片
 

并且$ra 记录 18

 

技术分享图片
 

4.添加NOR指令

 

技术分享图片
 

 

技术分享图片
 

 

技术分享图片
 

在alu.v中

 

技术分享图片
 

测试代码

技术分享图片
 

波形:

 

技术分享图片
 

寄存器:

技术分享图片
 

5.添加sll & sra & srl指令

注意这里做了扩展

技术分享图片
 

注意同时修改了input ALUOp的宽度

技术分享图片
 

然后在ctrl.v中

写寄存器

注意只改了RegWrite,下面的RD没改

技术分享图片
 
技术分享图片
 

添加输出

 

技术分享图片
 
技术分享图片
 

 

技术分享图片
 
技术分享图片
 

在sccpu.v中

技术分享图片
 

 

技术分享图片
 
技术分享图片
 

 

技术分享图片
 

 

技术分享图片
 

测试代码:

 

技术分享图片
 

波形:可以看到ALUop对应 sll,srl,sra的1000,1001,1010

 

技术分享图片
 

寄存器值:

 

技术分享图片
 

6.sllv和srlv

 

这里sllv使用的是rs低五位 自己动手写CPU之第五阶段(3)——MIPS指令集中的逻辑、移位与空指令 - yxwkaifa - 博客园

sllv $t1,$t2,$t3。

则t1值为t2左移t3的低五位

但是这里不太懂,没搞明白是怎么实现的逻辑左右移,位数可变

这里犯了一次错误。复制粘贴后忘了改数字了

技术分享图片
 

 

技术分享图片
 
技术分享图片
 

 

技术分享图片
 

 

技术分享图片
 

 

技术分享图片
 

测试代码:

 

技术分享图片
 

波形:

 

技术分享图片
 

寄存器变化

 

技术分享图片
 

7.stli指令

小于则置一

 

技术分享图片
 

 

技术分享图片
 

 

技术分享图片
 

 

技术分享图片
 

测试代码:

 

技术分享图片
 

波形:

 

技术分享图片
 

寄存器值:

 

技术分享图片
 

8.lui指令

取高十六位

技术分享图片
 

 

技术分享图片
 

 

技术分享图片
 
技术分享图片
 

 

技术分享图片
 

 

技术分享图片
 
技术分享图片
 

测试代码:

技术分享图片
 

波形图:

 

技术分享图片
 

寄存器值:

 

技术分享图片
 

9.andi指令

 

技术分享图片
 

 

技术分享图片
 

别忘了RT

技术分享图片
 
技术分享图片
 

aluop同and

技术分享图片
 

测试代码:

 

技术分享图片
 

波形图:

 

技术分享图片
 

寄存器:

 

技术分享图片
 

以上。nice!

学号后八位排序

01510029

lui 0x0151

ori 0x0029

 

技术分享图片
 

记得改sccomp_tb

 

技术分享图片
 

跑完看result.txt

 

技术分享图片
 

大概是完成了排序。

Verilog hdl 实现单周期cpu

原文:https://www.cnblogs.com/lqerio/p/11117623.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!