西安交通大学组成专题实验报告.docx
- 文档编号:1268736
- 上传时间:2022-10-19
- 格式:DOCX
- 页数:42
- 大小:1.47MB
西安交通大学组成专题实验报告.docx
《西安交通大学组成专题实验报告.docx》由会员分享,可在线阅读,更多相关《西安交通大学组成专题实验报告.docx(42页珍藏版)》请在冰豆网上搜索。
计算机组织与结构专题实验报告
MIPS单周期处理器的设计
学生姓名赵荣建
专业班级计算机45班
学号2140505119
指导教师姜欣宁
完成日期2017-05-09
一.实验目的
根据所学的CPU组成原理,自主设计一个MIPS32位的单周期处理器。
二.设计方案
参照计算机组成原理教材上的MIPS32位处理器的工作原理。
1.构建数据通路
取指令
IF
指令译码
ID
指令执行
EXE
存储器访问
MEM
结果写回
WB
取指周期:
a.从指令寄存器PC输出端得到地址
b.送地址到指令存储器IM地址端A
c.从指令存储器IM的数据端RD得到指令
d.计算下地址:
通过运算器,PC+4形成下地址,送回到PC。
2..MIPS寄存器集:
定义了32个32位的寄存器
3.MIPS三种指令格式:
R-类型、I-类型和J-类型
R-类型格式:
*所有指令操作吗OP都是0;特定操作由funct决定。
*机器语言指令中,字段分配格式如上图;前两个寄存器rs、rt
是源寄存器,rd是目的寄存器。
而在汇编语言格式中,第一个
寄存器是目的寄存器。
如:
add$t0,$s4,$s5#[rd]=[rs]+[rt],[t0]=[s4]+[s5];
I-类型格式:
*指令含4个字段;op,rs,rt和imm
*有两个寄存器操作数和一个16位立即数操作数,
一些指令中,rt也可作为源寄存器。
J-类型格式:
*有一个26位立即数操作数,扩展后形成目的地址。
4.算逻单元ALU的设计
ALU工作原理图
*两级控制:
通过系统控制器(Control)
和运算器控制器(ALUControl)产生
ALU的控制信号:
ALUoper
*ALU控制信号对照表:
ALUop
Func(来自R型指令的func字段)
操作
ALUop1
ALUop2
F5
F4
F3
F2
F1
F0
0
0
×
×
×
×
×
×
010:
ADD
0
1
×
×
×
×
×
×
110:
SUB
1
×
×
×
0
0
0
0
010:
ADD
1
×
×
×
0
0
1
0
110:
SUB
1
×
×
×
0
1
0
0
000:
AND
1
×
×
×
0
1
0
1
001:
OR
1
×
×
×
1
0
1
0
111:
SLT
5.单周期数据通路的构建
1)构件:
PC、指令存储器、寄存器文件RF和数据存储器;
2)取指令的过程:
PC→IM:
A/RD
3)取源操作数的过程:
IM:
RD→RF:
A1/RD1。
4)立即数的符号扩展的过程:
IM:
RD(Instr:
15:
0)→SignExtend(15:
0→Signimm31:
0);
其中Signimm15:
0=Instr15:
0,Signimm31:
16=Instr15
5)存储器地址计算:
6)向寄存器文件写入数据
RegWrite信号被置成1,写入过程在时钟周期最后的时钟上升沿完成。
7)形成PC的下地址
指令占4个字节,字编址。
6.单周期控制器的构建
控制单元基于指令中的opcode字段(31:
26)、funct字段(5:
0)产生控制信号;主译码的真值表。
见下图:
7.完整的单周期MIPS处理器
三.设计过程
1.指令集设计
R型指令
指令序号
指令
译码结果(B)
存储指令(H)
<0>
add$s0,$s1,$s2
00000010001100101000000000100000
02328020
<1>
sub$t0,$t1,$t2
00000001001010100100000000100010
012a4022
<2>
and$s3,$s4,$s5
00000010100101011001100000100100
02959824
<3>
or$s0,$s6,$s7
00000010110101111000000000100101
02d78025
<4>
xor$t3,$t4,$t5
00000001100011010101100000100110
018d5826
<5>
slt$t7,$t5,$t6
00000001101011100111100000101010
01ae782a
<6>
nor$t7,$t5,$t6
00000001101011100111100000100111
01ae7827
<13>
srl$t0,$s1,$t5
00000010001011010100000000000010
022d4002
<14>
sll$t0,$s1,$t2
00000010001010100100000000000000
022a4000
<17>
inc$t0,$t6
00000001110000000100000000000011
01c04003
<18>
dec$t0,$t5
00000001101000000100000000000100
01a04004
I型指令
指令序号
指令
译码结果(B)
存储指令(H)
<7>
lw$s0,1($t1)
10001101001100000000000000000001
8d300001
<8>
sw$t1,1($t1)
10101101001010010000000000000001
ad290001
<10>
addi$t0,$t1,1
00100001001010000000000000000001
21280001
<11>
beq$t1,$t1,1
00010001001010010000000000000001
11290001
J型指令
指令序号
指令
译码结果(B)
存储指令(H)
<15>
J17
00001000000000000000000000010001
08000011
2.MIPS32位单周期处理器结构设计
CPU设计结构图如下:
信号说明:
a1:
pc中的指令的地址送往IM去寻找指令
a2:
pc产生的下一条指令的地址
a3:
pc中指令的地址加4
a4:
取pc中指令的地址加4后的高六位
b1:
取J型指令的低26位
b2:
操作码字段高六位
b3:
第一个源操作数的寄存器地址,R型的21-25位,I型的21-25位
b4:
第二个源操作数的寄存器地址,R型的16-20位,I型指令的目的寄存器地址,16-20位
b5:
R型指令的目的寄存器地址,11-15位
b6:
I型指令的立即数,0-15位
b7:
R型指令的低六位,0-5位
b8:
b4和b5经二路选择器二选一
b20:
从IM中取出来的指令内容
c1:
I型指令将16位立即数扩展成32位
c2:
存入目的寄存器的内容
c3:
从源寄存器1中取出的内容
c4:
从源寄存器2中取出的内容
c5:
c1和c4二选一
c6:
ALU计算出的结果,也是读DM的地址
c7:
从DM中取出的内容
c8、c9:
针对不同类型的指令对进行pc值的修正的选择
d1:
功能选择信号
e类信号:
主操作控制信号,主要是各部件的读写控制信号
核心模块说明:
IM:
按序号存放指令(共17条,其中lw指令执行了两次),在CPU启动时从<0>开始执行。
Rf:
主寄存器,存放32个32位字,存储情况见下表(十进制表示,单数行是地址序号,双数行是对应的存储值):
<0>
<1>
<2>
<3>
<4>
<5>
<6>
<7>
0
14
13
12
11
10
9
8
<8>
<9>
<10>
<11>
<12>
<13>
<14>
<15>
7
6
5
4
3
2
1
0
<16>
<17>
<18>
<19>
<20>
<21>
<22>
<23>
15
14
13
12
11
10
9
8
<24>
<25>
<26>
<27>
<28>
<29>
<30>
<31>
7
6
5
4
3
2
1
0
DM:
数据存储器,存储情况见下表(十进制表示,单数行是地址序号,双数行是对应的存储值):
<0>
<1>
<2>
<3>
<4>
<5>
<6>
<7>
8
7
6
5
4
3
2
1
<8>
<9>
<10>
<11>
<12>
<13>
<14>
<15>
8
7
6
5
4
3
2
1
<16>
<17>
<18>
<19>
<20>
<21>
<22>
<23>
8
7
6
5
4
3
2
1
<24>
<25>
<26>
<27>
<28>
<29>
<30>
<31>
8
7
6
5
4
3
2
1
tRf:
测试模块,用于输出指令执行结果以检验是否正确;
IRf:
测试模块,用于输出当前执行的指令,与tRf搭配使用。
四.代码分析
1.Add//完成分支指令的目标地址计算//
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entityaddis
Port(a:
inSTD_LOGIC_VECTOR(31downto0);
b:
inSTD_LOGIC_VECTOR(31downto0);
y:
outSTD_LOGIC_VECTOR(31downto0));
endadd;
architectureBehavioralofaddis
begin
y<=a+b;-------将a和b相加赋给y
endBehavioral;
2.Add4//完成PC+1(采用字寻址)的计算//
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entityAdd4is
port(pcin:
instd_logic_vector(31downto0);
pcout:
outstd_logic_vector(31downto0));
endAdd4;
architecturebehaveofAdd4is
begin
process(pcin)
begin
pcout<=pcin+1;---------pc值的修改
endproces
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西安交通大学 组成 专题 实验 报告