003
cm
OOEHODOL
TFPF
ODa
003
10护]
d*JUQJU0lO30O:
OL
B
kffi'PJ
(MBO
QQOO
D
0000
3f
0(X10
omo
1
S&7B
3F
ooao
DDOO
1
3F
□ma
DDOO
1
sbte
uuuu
(ILUU
1
56rs
oroi
1
56TS
询8
1
omi
I
4ATS
t.Ys
从微地址可以看出,第一阶段先是取第一条指令(MOV#5678H,R1)
001->002->003->004,再是取源操作数,004->00B->00F->016->006,是立即数寻址
方式,再是取目的操作数,006->018->007,是寄存器寻址方式,最后是执行阶段,
007->044->046->000,将结果mov到寄存器里。
在GRS可以看出由0000变成了5678。
第二阶段先是取第二条指令(ADD#F000,R1)001->002->003->004,再是取源操作数,
004->00B->00F->016->006,是立即数寻址方式,再是取目的操作数,006->018->007,
是寄存器寻址方式,最后是执行阶段,007->048->04F->070->000,是ADD运算,结
parameterDATAWIDTH=16)
(inputwire[DATAWIDTH-1:
0]data_IB,inputwire[DATAWIDTH-1:
0]data_DB,inputwireclk,inputwireDRce_IB,inputwireDRce_DB,inputn_reset,outputreg[DATAWIDTH-1:
0]q);
always@(posedgeclkornegedgen_reset)begin
if(!
n_reset)
q=0;
elseif(DRce_IB)q=data_IB;
elseif(DRce_DB)q=data_DB;
endendmodule
3、顶层模块设计(自己增加的设计部分)
//TR
//TR寄存器的实例化
R#(DATAWIDTH)TR(.q(TR_out),.d(IB),.clk(clock),.ce(TRce),.n_reset(n_reset));buffer#(DATAWIDTH)reg_buffer(.q(IB),.d(TR_out),.oe(TRoe));
//AR
//AR寄存器的实例化
R#(DATAWIDTH)AR(.q(AR_out),.d(IB),.clk(clock),.ce(ARce),.n_reset(n_reset));
buffer#(ADDRWIDTH)AR_AB(.q(AB),.d(AR_out),.oe(ARoe_AB));
buffer#(ADDRWIDTH)AR_IB(.q(IB),.d(AR_out),.oe(ARoe_IB));
//IR
//IR寄存器的实例化
R#(DATAWIDTH)IR(.q(IR_out),.d(IB),.clk(clock),.ce(IRce),.n_reset(n_reset));
//PC
PCPC(.d(IB),.q(PC_out),.n_reset(n_reset),.clk(clock),.ce(PCce),.PCinc(PCinc));
buffer#(DATAWIDTH)PC_buffer(.q(IB),.d(PC_out),.oe(PCoe));
//DR
DR#(DATAWIDTH)
DR(.q(DR_out),.data_IB(IB),.data_DB(DB),.clk(clock),.DRce_IB(DRce_IB),.DRce_DB(DRce_DB),.n_reset(n_reset));
buffer#(DATAWIDTH)DR_DB(.q(DB),.d(DR_out),.oe(DRoe_DB));
buffer#(DATAWIDTH)DR_IB(.q(IB),.d(DR_out),.oe(DRoe_IB));
三、验证
1、
测试内容:
ADD运算
运行数据:
内存地址(H)
机器码(H)
汇编指令
0000
07615678
MOV#5678H,R1
0002
0B61F000
ADD#F000,R1
削配L
0D1oreOLQQMOQEOOFOL6amOtflocnim吨OKODiOCQ「1十ow呃OOF016aosoteOCTU4HOBf
2MOCOO2OOTMOmCLUUD^uqurcflcoflaomaokuBS4G0L0O7umuiuujOUJUuKltrBtlDU.llUJacco:
ooj2maroa?
noaiwmcrnmifMQCOO09gCCSOTOTOLU6SC&0TECOZOO5omai^i:
a54001007(Moceoo
ULCUJO-'J
TCtMHWJ刚刚
心斶叽UJQULn
MLn&m
OTJQ
厂芒TarafzzztR±b±t=tttllldo66b6BEmLIj
1!
卩广F.1&1虫a=『T)3B冃AAG商EE:
DlDIl^rEEoonnu
DC
Fll
-h-一二
-n
S.
370C
0000
omo
nam
OCT
omo
owo
OOLO
ouuo
ocoo
<0000
tm
oao
OOOT
UDUO
oxo
■0000
ooao
ODOO
acco
omo
oino
o^ao
0000
0000
ODXO
IIUCO
ODDO
OLJOO
■UCEU
0000
uaau
uuuu
UUJU
ouuu
oooo
0000
ocao
ODCC
0090
ocoo
acco
ooao
0000
dim
onio
nmn
ooco
OOkiQ
OCQQ
OTOO
QBQ
QDQQ
□ODDCDOD
□□□a
Tf
ODMooaonooooooa
□0TS7S角昶丹TOlfflTBww西
&.bbb-K-fiflurH6&口5G5bb55WJc>55
-u
cc
o
o
-u
til
ootnDOm皿oo