西安交通大学组成专题实验报告汇编文档格式.docx
- 文档编号:20039774
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:38
- 大小:988.64KB
西安交通大学组成专题实验报告汇编文档格式.docx
《西安交通大学组成专题实验报告汇编文档格式.docx》由会员分享,可在线阅读,更多相关《西安交通大学组成专题实验报告汇编文档格式.docx(38页珍藏版)》请在冰豆网上搜索。
Func(来自R型指令的func字段)
操作
ALUop1
ALUop2
F5
F4
F3
F2
F1
F0
×
010:
ADD
1
110:
SUB
000:
AND
001:
OR
111:
SLT
5.单周期数据通路的构建
1)构件:
PC、指令存储器、寄存器文件RF和数据存储器;
2)取指令的过程:
PC→IM:
A/RD
3)取源操作数的过程:
IM:
RD→RF:
A1/RD1。
4)立即数的符号扩展的过程:
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型指令
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型指令
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启动时从<
开始执行。
Rf:
主寄存器,存放32个32位字,存储情况见下表(十进制表示,单数行是地址序号,双数行是对应的存储值):
14
13
12
11
10
9
8
9>
12>
7
6
5
4
3
2
16>
19>
20>
21>
22>
23>
15
24>
25>
26>
27>
28>
29>
30>
31>
DM:
数据存储器,存储情况见下表(十进制表示,单数行是地址序号,双数行是对应的存储值):
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:
y:
outSTD_LOGIC_VECTOR(31downto0));
endadd;
architectureBehavioralofaddis
begin
y<
=a+b;
-------将a和b相加赋给y
endBehavioral;
2.Add4//完成PC+1(采用字寻址)的计算//
entityAdd4is
port(pcin:
instd_logic_vector(31downto0);
pcout:
outstd_logic_vector(31downto0));
endAdd4;
architecturebehaveofAdd4is
process(pcin)
begin
pcout<
=pcin+1;
---------pc值的修改
endprocess;
endbehave;
3.ALU//主运算器//
entityaluis
Port(
a1,b1:
inSTD_LOGIC_vector(31downto0);
alucontr:
inSTD_LOGIC_VECTOR(3downto0);
result:
bufferSTD_LOGIC_VECTOR(31downto0);
zero:
outSTD_LOGIC
);
endalu;
architecturebehaveofaluis
--signald1:
integer;
--signalc1,f1:
bit_vector(31downto0);
process(a1,b1,alucontr)
casealucontris
when"
0000"
=>
result<
=a1andb1;
------and与操作
0001"
=a1orb1;
-----or或操作
0010"
=a1+b1;
-----add相加
0011"
=a1xorb1;
-----xor异或
0100"
=a1norb1;
------nor或非操作
0101"
=TO_STDLOGICVECTOR(to_bitvector(a1)sllconv_integer(b1));
------Sll将a1向左移动b1数值位
0110"
=a1-b1;
-----sub减法
1001"
=a1+1;
------inc自增
1010"
=a1-1;
-------dec自减
0111"
----slt比较大小
if(a1<
b1)thenresult<
=x"
00000001"
;
elseresult<
00000000"
endif;
1000"
=TO_STDLOGICVECTOR(to_bitvector(a1)srlconv_integer(b1));
------srl算术右移
whenothers=>
endcase;
if(a1=b1)then--beq判断分支指令是否转移当a1=b1时进行转移
zero<
='
1'
else
0'
4.and_gate//与门,完成分支指令的判定//
entityand_gateis
port(
a,b:
instd_logic;
c:
outstd_logic
);
endand_gate;
architecturedataflowofand_gateis
c<
=aandb;
enddataflow;
5.mux2_1//5位二路选择器,由控制信号选择目的寄存器//
entitymux2_1is
generic(width:
integer:
=5);
Port(d0,d1:
inSTD_LOGIC_VECTOR(width-1downto0);
s:
inSTD_LOGIC;
outSTD_LOGIC_VECTOR(width-1downto0));
endmux2_1;
architectureBehavioralofmux2_1is
=d0whens='
elsed1;
---------s位0选择d0,若s为1选择d1
6.Rf//32个32位寄存器组成的主寄存器,有预存//
entityregfileis
Port(clk:
we3:
------写使能信号
ra1:
inSTD_LOGIC_VECTOR(4downto0);
------源寄存器1的地址
ra2:
-------源寄存器2的地址
wa3:
--------目的寄存器地址
wd3:
-------写入目的寄存器的内容
rd1:
outSTD_LOGIC_VECTOR(31downto0);
--------从源寄存器1中读出的内容
rd2:
-------从源寄存器2中读出的内容
endregfile;
architectureBehavioralofregfileis
--subtyperamtypeisstd_logic_vector(31downto0);
--typememoryisarray(0to31)oframtype;
typeramtypeisarray(31downto0)ofSTD_LOGIC_VECTOR(31DOWNTO0);
SIGNALmem:
ramtype:
=
--signalmem_initial:
memory:
((x"
),(x"
00000002"
00000003"
00000004"
00000005"
00000006"
00000007"
),
(x"
00000008"
00000009"
0000000a"
0000000b"
0000000c"
0000000d"
0000000e"
0000000f"
));
---------预先存入32个寄存器的32位数
process(clk)begin
if(clk'
eventandclk='
)then
if(we3='
)thenmem(CONV_INTEGER(wa3))<
=wd3;
------写使能信号为一,将目的寄存器的内容写入目的寄存器地址所对的单元内
endprocess;
process(ra1,ra2)begin
if(conv_integer(ra1)=0)thenrd1<
elserd1<
=mem(conv_integer(ra1));
------读出源寄存器1中的内容
if(conv_integer(ra2)=0)thenrd2<
elserd2<
=mem(conv_integer(ra2));
----------读出源寄存器2中的内容
7.signext//符号拓展模块,将16位立即数拓展为32位,用于分支指令//
entitysignextis
Port(a:
inSTD_LOGIC_VECTOR(15downto0);
endsignext;
architectureBehavioralofsignextis
Y<
=X"
&
awhena(15)='
elsex"
ffff"
&
a;
-----------16位数扩展为32位,若是正数,前面扩展0,负数则扩展1
8.PC//程序计数器,提供取指令地址//
entitypcis--实体描述
port(pc_in:
instd_logic_vector(31downto0);
clk,reset:
instd_logic;
pc_out:
outstd_logic_vector(31downto0));
endpc;
architecturebehaveofpcis--实体的行为描述
--signalpc_temp:
std_logic_vector(31downto0);
F:
process(clk)
eventandclk='
if(reset='
)then
pc_out<
=pc_in;
endif;
9.IM//指令存储器,已预存17条指令,由PC指出地址//
useIEEE.STD_LOGIC_ARITH.ALL;
entityIMis
--clk,read,write:
address:
--im_in:
im_out:
outstd_logic_vector(31downto0)
endIM;
architecturebehaveofIMis
subtypedwordisstd_logic_vector(31downto0);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西安交通大学 组成 专题 实验 报告 汇编