美文网首页
计组实验-添加指令

计组实验-添加指令

作者: 持之以蘅 | 来源:发表于2019-03-30 23:39 被阅读0次

需要添加的指令:

sll /srl/sllv/ srlv/bne/ nor /jr/ jalr/andi/ lui/ slti/

bne 不相等则分支 I型

bne rs, rt, label1 形式为6 5 5 16(offeset)

func[5:0]:000101


image.png

指令译码

由于bne指令要跳转,所以要修改npc

image.png

用到ALU计算

image.png

用Mars添加bne,检测

image.png

观察波形图信号量pc npc

image.png

pc=18,npc=44,说明bne指令添加成功

sll & srl & sllv & srlv

在此说明一下,shamt是在A端口,imm是在B端口,(我们原本的ALUsrc注释中,ALU A应该是B)
所以需要添加一个多路选择器,来选择rs和shamt

sll 逻辑左移 R型 funct 000000

sll rd, rt, shamt rd =rt << shamt 655556形式

srl 逻辑右移 R型 funct 000010

srl rd, rt, shamt rd =rt >> shamt 655556形式

sllv 逻辑左移变量 R型 funct 000100

srllv rd, rt, rs rd =rt << rs 655556

srlv 逻辑右移变量 R型 funct 000110

srlv rd, rt, rs rd =rt >> rs 65556

添加译码

image.png

由于ALU中没有移位,所以要扩展ALU

image.png
image.png

增添多路选择器

加一个信号对多路选择器进行选择(判断选择rs还是shamt)

image.png

接着绑定信号

image.png

增添信号

image.png

补充shamt信号

image.png

补充ALU A 信号

image.png

定义shamt的格式

前27位为0,取6到10位指令(至于为什么这样子取,还未明白)


image.png

补充多路选择器

image.png

修改ALU的输入端口

image.png

仿真运行

sllv和srlv 在原来的基础上只需要修改译码和操作数

image.png

运行成功后,如下


image.png

slti 小于立即数则置位 I型 001010

slti rt, rs, imm
65516

指令译码

寄存器写

ALUOp和slt一样

仿真运行

image.png

nor 异或 R型 funct100111

nor rd, rs, rt 0 rs rt rd 0 0x27(6 5 5 5 5 6)
rd = ~(rs|rt)

扩充ALU

image.png
image.png

添加译码

image.png

修改ALUOp的控制

image.png

添加nor指令

image.png

仿真运行

观察ALUA/B/C端口的情况


image.png

A=c, B=4,C=fffffff3,结果正确,添加指令成功

lui 立即数高16位放进一个寄存器 I型 funct001111

lui rt, imm RT={imm,16'b0}
6 5 5 16
需要16位立即数符号扩展,再左移16位

译码

image.png

ALU扩展

image.png

写寄存器

image.png

写回rt寄存器

image.png

ALU运算,来自一个立即数

image.png

符号扩展

image.png

ALUOp修改

image.png

仿真运行

image.png

jr & jalr

jr 寄存器跳转 R型 001000

jr rs(无条件跳转到由寄存器rs指定的指令) 0 rs 0 8(6 5 15 6)
pc=GPR[rs]

指令译码

image.png

修改npc

image.png 修改定义 修改npc定义

添加指令

image.png

仿真运行

jr指令来到上升沿,调用成功


image.png

jalr 跳转并链接到寄存器 R型 001001

jalr rs rd 0 rs 0 rd 0 9(6 5 5 5 5 6)
pc=GPR[rs]; GPR[rd]=pc+4

指令译码

image.png

需要写寄存器

image.png 选择寄存器

选择需要写的数据-来自PC

image.png

对NPC选择

image.png

添加指令

image.png

运行仿真

image.png

观察波形图有jalr的跳跃信号

andi 立即数与 I型 op:001100

andi rt rs imm oxc rs rt imm(6 5 5 16)

添加译码

image.png

需符号扩展

image.png

需写寄存器

image.png

需对ALU进行选择

image.png

对ALU端口选择

image.png

运行仿真

观察ALUOp的值为3,添加指令成功


image.png

运行学号

01510008
8421码译码之后:
0000 0001 0101 0001 0000 0000 0000 1000

最后想说明一下,做完,我简直要爆炸,仿真运行,底下的框出不来数据,只能看波形图,中间认认真真地添完了指令,却在仿真运行的时候出现了error loading design,以及运行学号,可以在别人电脑上跑,我的却不行,所以待续。
另外,参考了萍水间人的文章,大家都可以去观摩!

相关文章

  • 计组实验添加指令

    惭愧惭愧, 之前一直不知道计组实验究竟是在干嘛, 所以基本没花时间。今天用了大概两个小时左右将基本的流程都看明白了...

  • 计组实验-添加指令

    需要添加的指令: sll /srl/sllv/ srlv/bne/ nor /jr/ jalr/andi/ lu...

  • 计组实验测试指令

    bne指令测试 添加BNE指令, 这是最开始原始指令结果 然后添加测试文件 可以看到指令这次成功的实现了跳转!! ...

  • 2017-11-14 11周二

    上午上了计组和网络,下午上了VHDL和计组实验,面对VHDL,我真的无话可说,觉得难,尤其是实验箱的操作,自己没学...

  • 实验三【2021OS】

    实验三:Linux用户与用户组管理 单个、批量添加(删除用户)。添加、删除用户组。 添加用户 单个添加 选项:-c...

  • uos 用户和组

    1、实验-添加用户命令 例: 2、实验-删除用户 3、实验-更改用户信息 4、实验-检查用户身份 5、实验-组管理...

  • 计组实验课堂笔记

    2-4译码器 always语句硬件描述语言天生就是并发的?若干个小的电路模块是并发执行的实现一个基本的电路单元。@...

  • Mac 命令行可用指令的组成

    系统自带指令 本地添加指令 用户添加的PATH下的指令 如添加的Anaconda的bin内目录下的ipython指令

  • 2022-06-08 iPhone快捷指令自动切换壁纸

    打开快捷指令软件 点击右上角+号,添加一个快捷指令 可以给这个快捷指令设置一个名称 点击添加操作,快捷指令这里可以...

  • (一)Jmeter创建简单的请求

    1、打开Jmeter:下载好Jmeter后,双击bin目录下的jmeter.bat文件 2、添加线程组:在“测试计...

网友评论

      本文标题:计组实验-添加指令

      本文链接:https://www.haomeiwen.com/subject/lzyxbqtx.html