计组实验-添加指令

需要添加的指令:

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,以及运行学号,可以在别人电脑上跑,我的却不行,所以待续。
另外,参考了萍水间人的文章,大家都可以去观摩!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335