![2023年MIPS单周期CPU实验报告_第1页](http://file4.renrendoc.com/view/3a4d3fb0914a6b5561077c5af6ae6c33/3a4d3fb0914a6b5561077c5af6ae6c331.gif)
![2023年MIPS单周期CPU实验报告_第2页](http://file4.renrendoc.com/view/3a4d3fb0914a6b5561077c5af6ae6c33/3a4d3fb0914a6b5561077c5af6ae6c332.gif)
![2023年MIPS单周期CPU实验报告_第3页](http://file4.renrendoc.com/view/3a4d3fb0914a6b5561077c5af6ae6c33/3a4d3fb0914a6b5561077c5af6ae6c333.gif)
![2023年MIPS单周期CPU实验报告_第4页](http://file4.renrendoc.com/view/3a4d3fb0914a6b5561077c5af6ae6c33/3a4d3fb0914a6b5561077c5af6ae6c334.gif)
![2023年MIPS单周期CPU实验报告_第5页](http://file4.renrendoc.com/view/3a4d3fb0914a6b5561077c5af6ae6c33/3a4d3fb0914a6b5561077c5af6ae6c335.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
勤中"孽
《计算机组成原理实验》
实验报告
(实验二)
学院名称:
专业(班级):
学生姓名:
学号:
时间:2023年11月25日
成绩:
实验二:单周期CPU设计与实现
一.实验目的
(1)掌握单周期CPU数据通路图的构成、原理及其设计方法;
(2)掌握单周期CPU的实现方法,代码实现方法;
(3)结识和掌握指令与CPU的关系;
(4)掌握测试单周期CPU的方法;
(5)掌握单周期CPU的实现方法。
二.实验内容
设计一个单周期的MIPSCPU,使其能实现下列指令:
==>算术运算指令
(l)addrd,rs,rt(说明:以助记符表达,是汇编指令;以代码表达,是机器指令)
000000rs(5位)rt(5位)rd(5位)reserved
功能:rd-rs+rt。reserved为预留部分,即未用,一般填“0”„
(2)addirt,rs,immediate
000001rs(5位)rt(5位)immediate(16位)
功能:rt-rs+(sign—extend)immediate;immediate符号扩展再参与“加"
运算。
(3)subrd,rs,rt
000010rs(5位)rt(5位)rd(5位)reserved
功能:rdrs-rt
==>逻辑运算指令
(4)orirt,rs,immediate
010000rs(5位)rt(5位)immediate(16位)
功能:rt-<-rs|(zero-extend)immediate;immediate做"0"扩展再参与"或"
运算.
(5)andrd,rs,rt
010001rs(5位)rt(5位)rd(5位)reserved
功能:rd-rs&rt;逻辑与运算。
(6)orrd,rs,rt
010010rs(5位)rt(5位)rd(5位)reserved
功能:rd-rs|rt;逻辑或运算。
==>移位指令
(7)sllrd,rt,sa
0110OO未用rt(5位)rd(5位)sareserve
d
功能:rd<—rt<<(zero-extend)sa,左移sa位,(zero-extend)sa
==>比较指令
(8)sitrd,rs,rt带符号数
011100rs(5位)rt(5位)rd(5位)reserved
功能:if(rs<rt)rd=lelserd=0,具体请看表2ALU运算功能表,
带符号
==>存储器读/写指令
(9)swrt,immediate(rs)写存储器
100110rs(5位)rt(5位)immediate(16位)
功能:memory[rs+(sign-extendJimmediate]-*-rt;immediate符号扩展再
相加。即将rt寄存器的内容保存到rs寄存器内容和立即数符号扩展后的数相加作为地址
的内存单元中。
(10)lwrt,immediate(rs)读存储器
100111rs(5位)rt(5位)immediate(16位)
功能:rt«-memory[rs+(sign-extend)immediate];immediate符号扩展
再相加。
即读取rs寄存器内容和立即数符号扩展后的数相加作为地址的内存单元中的数,然后
保存到rt寄存器中。
==>分支指令
(11)beqrs,rt,immediate
110000rs(5位)rt(5位)immediate(16位)
功能:if(rs=rt)pc+pc+4+(sign—extend)immediate<<2elsep
c—pc+4
特别说明:immediate是从PC+4地址开始和转移到的指令之间指令条数。immed
iate符号扩展之后左移2位再相加。为什么要左移2位?由于跳转到的指令地址肯定是4
的倍数(每条指令占4个字节),最低两位是“00”,因此将immediate放进指令码中的
时候,是右移了2位的,也就是以上说的“指令之间指令条数”。
12)bners,rt,immediate
110001rs(5位)rt(5位)immediate
功能:if(rs!=rt)pc―pc+4+(sign-extend)immediate<<2elsep
c-pc+4
特别说明:与beq不同点是,不等时转移,相等时顺序执行。
(13)bgtzrs,immediate
110010rs(5位)oooooimmediate
功能:if(rs>0)pc—pc+4+(sign—extend)immediate<<2elsepc—p
c+4
==>跳转指令
(14)jaddr
111OO0addr[27..2]
==>停机指令
(15)halt
11111i00(26位)
功能:停机;不改变PC的值,PC保持不变。
三.实验原理
1.时间周期:
单周期CPU指的是一条指令的执行在一个时钟周期内完毕,然后开始下一条指令的执
行,即一条指令用一个时钟周期完毕。电平从低到高变化的瞬间称为时钟上升沿,两个相邻
时钟上升沿之间的时间间隔称为一个时钟周期。时钟周期一般也称振荡周期(假如晶振的输出
没有通过度频就直接作为CPU的工作时钟,则时钟周期就等于振荡周期。若振荡周期经二分频后形成时
钟脉冲信号作为CPU的工作时钟,这样,时钟周期就是振荡周期的两倍。)
CPU在解决指令时,一般需要通过以下几个环节:
(1)取指令(IF):根据程序计数器PC中的指令地址,从存储器中取出一条指令,同
时,PC根据指令字长度自动递增产生下一条指令所需要的指令地址,但碰到“地址转移”指
令时,则控制器把“转移地址”送入PC,当然得到的“地址”需要做些变换才送入PC。
(2)指令译码(ID):对取指令操作中得到的指令进行分析并译码,拟定这条指
令需要完毕的操作,从而产生相应的操作控制信号,用于驱动执行状态中的各种操作。
(3)指令执行(EXE):根据指令译码得到的操作控制信号,具体地执行指令动作,
然后转移到结果写回状态。
(4)存储器访问(MEM):所有需要访问存储器的操作都将在这个环节中执行,该环节
给出存储器的数据地址,把数据写入到存储器中数据地址所指定的存储单元或者从存储器中
得到数据地址单元中的数据。
(5)结果写回(WB):指令执行的结果或者访问存储器中得到的数据写回相应的目的寄
存器中。
单周期CPU,是在一个时钟周期内完毕这五个阶段的解决。
图1单周期CPU指令处理过程
对于不同的指令,需要执行的环节是不同的,其中取字指令(lw)需要执行所有五个
环节。因此,CPU的时间周期由取字指令决定。
2.指令类型:
MIPS的三种指令类型:
R类型:
312625212016151110650
oprsrtrdsafunct
6位5位5位5位5位6位
I类型:
312625212016150
oprsrtimmediate
6位5位5位16位
J类型:
3126250
opaddress
6位26位
其中,
op:为操作码;
rs:只读。为第1个源操作数寄存器,寄存器地址(编号)是00000~11111,00~1F;
rt:可读可写。为第2个源操作数寄存器,或目的操作数寄存器,寄存器地址(同上);
rd:只写。为目的操作数寄存器,寄存器地址(同上);
sa:为位移量(shiftamt),移位指令用于指定移多少位;
funet:为功能码,在寄存器类型指令中(R类型)用来指定指令的功能与操作码配合使
用;
immediate:为16位立即数,用作无符号的逻辑操作数、有符号的算术操作数、数
据加载(Load)/数据保存(Store)指令的数据地址字节偏移量和分支指令中相对程序计数
器(PC)的有符号偏移量;
address:为地址。
在本CPU设计中,由于指令的类型较少,所以所有指令均由操作码(op)拟定。在R型
指令中,功能码(funct)为0OOOOOo
3.控制线路图与数据通路:
InsMemRW
Control^LUSrc6
Unit
、S-
660
6在
TRegWre
EI5VWE
rs
RWReadReg1
lAddr
ReadReg2
IDataOutReadDatal
IDataln
WriteReg
Ins.MEM
►1RegisterFile
ReadData2
WriteData
16[15..O]
ExtSel
1.28]addr127_2],0,0
上图为CPU的数据通路和必要的控制线路图,其中Ins.Mem为指令存储器,D
ata.Mem为数据存储器。访问存储器时,先给出内存地址,然后由读或写信号控制操作。
对于寄存器组,先给出寄存器地址,读操作时,输出端就直接输出相应数据;而在写操作时,
在WE使能信号为1,在时钟边沿触发将数据写入寄存器。
4.控制信号:
控制信号的作用
控制信号名状态“o”状态“1”
Reset初始化PC为0PC接受新地址
PCWrePC不更改,相关指令:haItPC更改,相关指令:除指令ha1t外
来自寄存器堆data1输出湘关指来自移位数sa,同时,进行(zero-ex
令:add、sub、addi、or、and、tend)sa,即{{27
ALUSrcA
ori、beq、bne、bgtz>sit、s关指令:sll
w、Iw
ALUSrcB来自寄存器堆data2输出,相关指来自sign或zero扩展的立即数相关
令:add、sub、or、and、s11、s指令:addi、ori、sw、Iw
It、beq、bne>bgtz
DBDataSrc来自ALU运算结果的输出,相关指来自数据存储器(DataMEM)的输
令:add、addi%sub、ori、or、出,相关指令:Iw
and>s1t>sll
RegWre无写寄存器组寄存器,相关指令:寄存器组写使能,相关指令:add、
beq>bne、bgtz、sw>halt、jaddi>sub>ori>or>and、sit、
s11>Iw
InsMemRW写指令存储器读指令存储器(Ins.Data)
/RD读数据存储器,相关指令:1W输出高阻态
/WR写数据存储器,相关指令:SW无操作
RegDst写寄存器组寄存器的地址,来自rt写寄存器组寄存器的地址,来自rd字
字段,相关指令:addi、ori.Iw段,相关指令:add、sub、and、
or、slt>sll
ExtSel(zero-extend)immediate(0(sign—extend)immediate
扩展),相关指令:ori(符号扩展)
,相关指令:addi、sw>1w>bn
e、bne>bgtz
00:pc<—pc+4,相关指令:add、addi、sub、or、ori、and>si
t、
sll、sw、Iw、beq(zero=0)>bne(zero=1)>bgtz(sign=l,^cz
ero=1);
PCSrc[l..O]
01:pc<-pc+4+(sign-extendJimmediate,相关指令:beq(zero=1)、
bne(zero=0)、bgtz(sign=0,zero=0);
10:pc<-{(pc+4)[31..28],addr[27..2],0,0},相关指令:j;
11沫用
ALUOp[2..0]ALU8种运算功能选择(000-111),看功能表
ALU功能表
ALUOp功能描述
[2..0]
000Y=A+B加
001Y=A-B减
010Y=B«AB左移A位
011Y=AVB或
100Y=AAB与
比较A与B
101Y=(A<B)?1:0
不带符号
if(A<B&&(A[31]==B[31]))
Y=1;
比较A与B
110elseif(A[31]&&!B[31)Y=
带符号
1;
elseY=0;
111Y=A©B异或
附:本CPU的指令集并未用到ALU的所有功能。
5.重要模块接口说明:
。InstructionMemory:指令存储器,
address,指令存储器地址输入端口
Dataln,指令存储器数据输入端口(指令代码输入端口)
DataOut,指令存储器数据输出端口(指令代码输出端口)
InsMemRW,指令存储器读写控制信号,为。写,为1读
DataMemory:数据存储器,
address,数据存储器地址输入端口
DataOut,数据存储器数据输出端口
/RD,数据存储器读控制信号,为0读
/WR,数据存储器写控制信号,为0写
RegisterFile:寄存器组
ReadRegl,rs寄存器地址输入端口
ReadReg2,rt寄存器地址输入端口
WriteReg,将数据写入的寄存器端口,其地址来源rt或rd字段
WriteData,写入寄存器的数据输入端口
ReadDatal,rs寄存器数据输出端口
ReadData2,rt寄存器数据输出端口
WE,写使能信号,为1时,在时钟边沿触发写入
RST,寄存器清零信号,为0时寄存器清零
ALU:算术逻辑单元
result,ALU运算结果
zero,运算结果标志,结果为0,贝!]zero=1;否贝!]zero=0
。sign,运算结果标志,结果最高位为。,则sign=O,正数;否则,sign=l,负数
四.实验器材
电脑一台,Xi1inxVivado软件一套,Basys3板一块。
五.实验过程与结果
1.各个指令相应的控制信号
指令PcALUSALUSrcDBDataSReInsMemRDWRRegDstExtSel
WrercABrcgWreRW
Add100011111X
Ad1010111101
di
Sub100011111X
Ori1010111100
And100011111X
Or100011111X
S11110011111X
S1t100011111X
Sw101X0110X1
Lw1011110101
Beq100X0111X1
Bne100X0111X1
Bgtz100X0111X1
J1XXX0111XX
Hal0XXX0111XX
t
控制信号ALUOp
Add000
Addi000
Sub001
Ori011
And100
Or011
Sil010
Sit110
Sw000
Lwooo
Beq001
Bne001
Bgtz101
J010
HaltXXX
除异或运算(111)外,ALU所有功能均被使用。
PCSrc指令
00add、addi>sub、or、ori、and、sit、s11、sw、1w、beq(zero=0)、
bne(zero=1)>bgtz(sign=1,或zero=l)
01beq(zero=1)>bne(zero=0)>bgtz(sign=0,zero=0)
10j
2.重要模块代码及仿真
(1)控制单元(contro1unit)
Veri1og代码:
1.modu1econtroIUnit(
2.input[5:0]opcode,
3.inputzero,
4.inputsign,
5.outputregPCWre,
6.outputregALUSrcA,
7.outputregALUSrcB,
8.outputregDBDataSrc,
9.outputregRegWre^
10.outputregInsMemRW,
11.outputregRD,
12.outputregWR,
13.outputregRegDst,
14.outputregExtSel,
15.outputreg[1:0]PCSrc,
16.outputreg[2:0]ALUOp
17.);
18.initialbegin
19.RD=1;
20.WR=1;
21.RegWre=0;
22.InsMemRW=0;
23.end
24.a1ways@(opcode)begin
25.case(opcode)
26.6'b000000:begin//add
27.PCWre=1;
28.ALUSrcA=0;
29.ALUSrcB=0;
30.DBDataSrc=0;
31.RegWre=1;
32.InsMemRW=1;
33.RD=1;
34.WR=1;
35.RegDst=1;
36.ALUOp=3'b000;
37.end
38.6Zb000001:begin//addi
39.PCWre=1;
40.ALUSrcA=0;
41.ALUSrcB=1;
42.DBDataSrC=0;
43.RegWre=1;
44.InsMemRW=1;
45.RD=1;
46.WR=1:
47.RegDst=0;
48.ExtSe1=1;
49.ALUOp=3'b000;
50.end
51.6'b000010:begin//sub
52.PCWre=1;
53.ALUSrcA=0;
54.ALUSrcB=0;
55.DBDataSrc=0;
56.RegWre=1;
57.InsMemRW=1;
58.RD=1;
59.WR=1;
60.RegDst=1;
61.ALUOp=3'b001;
62.end
63.6'b010000:begin//ori
64.PCWre=1;
65.ALUSrcA=0;
66.ALUSrcB=1;
67.DBDataSrc=0;
68.RegWre=1;
69.InsMemRW=1;
70.RD=1;
71.WR=1;
72.RegDst=0:
73.ExtSel=0;
74.ALUOp=3'b011;
75.end
76.6'b01000l:begin//and
77.PCWre=1;
78.ALUSrcA=0;
79.ALUSrcB=0;
80.DBDataSrc=0;
81.RegWre=1;
82.InsMemRW=1;
83.RD=1;
84.WR=1;
85.RegDst=1;
86.ALUOp=3'bl00;
87.end
88.6'b010010:begin//or
89.PCWre=1;
90.ALUSrcA=0;
91.ALUSrcB=0;
92.DBDataSrc=0;
93.RegWre=1;
94.InsMemRW=1:
95.RD=1;
96.WR=1;
97.RegDst=1;
98.ALUOp=3'b011;
99.end
100.6'b011000:begin//si1
101.PCWre=1;
102.ALUSrcA=1;
103.ALUSrcB=0;
104.DBDataSrc=0;
105.RegWre=1;
106.InsMemRW=1;
107.RD=1;
108.WR=1;
109.RegDst=1;
110.ALUOp=3'b010;
111.end
112.6'b011100:begin//sit
113.PCWre=1;
114.ALUSrcA=0;
115.ALUSrcB=0;
116.DBDataSrc=0;
117.RegWre=1;
118.InsMemRW=1;
119.RD=1;
120.WR=1;
121.RegDst=1;
122.ALUOp=3'bll0;
123.end
124.6,b100110:begin//sw
125.PCWre=1;
126.ALUSrcA=0;
127.ALUSrcB=1;
128.RegWre=0;
129.InsMemRW=1;
130.RD=1;
131.WR=0;
132.ExtSel=1;
133.ALUOp=3'b000;
134.end
135.6'bl00111:begin//lw
136.PCWre=1;
137.ALUSrcA=0;
138.ALUSrcB=1;
139.DBDataSrc=1;
140.RegWre=1;
141.InsMemRW=1;
142.RD=0;
143.HR=1;
144.RegDst=0;
145.ExtSel=1;
146.ALUOp=3'b000;
147.end
148.6'bll0000:begin//beq
149.PCWre=1;
150.ALUSrcA=0;
151.ALUSrcB=0;
152.RegWre=0;
153.InsMemRW=1;
154.RD=1;
155.WR=1;
156.ExtSe1=1;
157.ALUOp=3'b0O1;
158.end
159.6'b11000l:begin//bne
160.PCWre=1;
161.ALUSrcA=0;
162.ALUSrcB=0;
163.RegWre=0;
164.InsMemRW=1;
165.RD=1;
166.WR=1;
167.ExtSei=1;
168.ALUOp=3'bO01;
169.end
170.6'b110010:begin
171.PCWre=1;
172.ALUSrcA=0;
173.ALUSrcB=0;
174.RegWre=0;
175.InsMemRW=1;
176.RD=1;
177.WR=1;
178.ExtSel=1;
179.ALUOp=3'b001;
180.end
181.6'b111000:begin//j
182.PCWre=1;
183.RegWre=0;
184.InsMemRW=1;
185.RD=1;
186.WR=1;
187.ALUOp=3zb010;
188.end
189.6'bllllll:begin//halt
190.PCWre=1;
191.RegWre=0;
192.InsMemRW=1;
193.RD=1;
194.WR=1;
195.end
196.default:begin
197.RD=1;
198.WR=1;
199.RegWre=0;
200.InsMemRW=0;
201.end
202.endcase
203.end
204.always@(opcodeorzeroorsign)begin
205.if(opcode==6'bll1000)//j
206.PCSrc=2'b10;
207.elseif(opcode[5:3]==3'bllO)begin
208.if(opcode[2:0]==3'b000)begin
209.if(zero==1)
210.PCSrc=2'b01;
211.e1se
212.PCSrc=2'b00;
213.end
214.elseif(opcode[2:0]==3'b001)begin
215.if(zero==0)
216.PCSrc=2'b01;
217.else
218.PCSrc=2'b00:
219.end
220.elsebegin
221.if(zero==0&&sign==0)
222.PCSrc=2,b01;
223.e1se
224.PCSrc=2'b00;
225.end
226.end
227.elsebegin
228.PCSrc=2rb00:
229.end
230.end
231.endmodu1e
仿真截图:
HemeValue
B■opcode[5:0]3£
Ubzero1
Ssipi0
1
&ALDSrcA0
■ALOSrcB0
玷DBDataSrc1
0
■InsMoaRT1
&即1
3YR1
,RagDzt0
/ExtSal1
■RBPCSrc(l:O)0
■ReALO0p'2:O]2
(2)程序计数器(PC)
Verilog代码:
1.modu1ePC(
2.inputelk,
3.input[31:0]PCin,
4.inputPCWre,
5.inputReset,
6.outputreg[31:0]PCout
7.);
8.initialbegin
9.PCout<=0;
10.end
11.always@(posedgecIk)begin
12.if(Reset==0)begin
13.PCout<=0;
14.end
15.elseif(PCWre==0)begin
16.PCout<=PCout;
17.end
18.elsebegin
19.PCout<=PCin;
20.end
21.end
22.endmodule
仿真械图:
(3)程序存储器(instructionmemory)
Veri1og代码:
1.modulelMemory(
2.inputInsMemRW,
3.input[31:0]address,
4.outputreg[31:0]DataOut
5.);
6.reg[7:0]mem[0:127];
7.initia1begin
8.DataOut=32'bllll11_0000000_0000000_0000000_00000;
9.$readmcmb("C:/Users/ACER/Desktop/—p/project_l/rom_dat
a.coe'\mem);
10.end
11.always@(addressorInsMemRW)begin
12.if(InsMemRW==1)begin
13.DataOut[31:24]<=mem[address];
14.DataOut[23:16]<=mem[address+1];
15.DataOut[15:8]<=mem[address+2];
16.Data0ut[7:0]<=mem[address+3];
17.end
18.end
19.endmodule
仿真截图:
lineVdue
|100as]
1°严i-1一"图唱.............1悭野…1……|P止,,1…|件型…1,,…1
9InsMeaRX1!1
flmaddress[31:0]00000004:Ciiijuocui(00000004_)LVUOjjijinonto'Jr■ijioomi1i.―ooooc。必
fonodiiiicjIooood
000000011
[0041180013
□•,■儿MH显暨卡■0401000840020002)E08622800)I:446220001r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 无锡江苏无锡市惠山区人民法院招聘编外人员3人笔试历年参考题库附带答案详解
- 2025至2031年中国铝制滑轮行业投资前景及策略咨询研究报告
- 2025至2031年中国蜂胶粉行业投资前景及策略咨询研究报告
- 2025至2031年中国移动通讯运维分析集中管理平台行业投资前景及策略咨询研究报告
- 2025至2031年中国巧克力涂层糖行业投资前景及策略咨询研究报告
- 2025至2031年中国多功能联合训练器行业投资前景及策略咨询研究报告
- 2025年发泡专用酚醛树脂项目可行性研究报告
- 2025至2031年中国2U电子节能灯行业投资前景及策略咨询研究报告
- 2025至2030年高效去污粉项目投资价值分析报告
- 2025至2030年中国锥密封焊接式管接头数据监测研究报告
- GB/T 16475-1996变形铝及铝合金状态代号
- GB 4706.20-2004家用和类似用途电器的安全滚筒式干衣机的特殊要求
- 无纸化会议系统解决方案
- 佛教空性与缘起课件
- 上海铁路局劳动安全“八防”考试题库(含答案)
- 《愿望的实现》教学设计
- 效率提升和品质改善方案
- 中山大学抬头信纸中山大学横式便笺纸推荐信模板a
- 义务教育学科作业设计与管理指南
- 《汽车发展史》PPT课件(PPT 75页)
- 常暗之厢(7规则-简体修正)
评论
0/150
提交评论