杭电计组实验实现R型指令的CPU设计实验.docx

上传人:b****6 文档编号:16022786 上传时间:2023-07-10 格式:DOCX 页数:11 大小:52.13KB
下载 相关 举报
杭电计组实验实现R型指令的CPU设计实验.docx_第1页
第1页 / 共11页
杭电计组实验实现R型指令的CPU设计实验.docx_第2页
第2页 / 共11页
杭电计组实验实现R型指令的CPU设计实验.docx_第3页
第3页 / 共11页
杭电计组实验实现R型指令的CPU设计实验.docx_第4页
第4页 / 共11页
杭电计组实验实现R型指令的CPU设计实验.docx_第5页
第5页 / 共11页
杭电计组实验实现R型指令的CPU设计实验.docx_第6页
第6页 / 共11页
杭电计组实验实现R型指令的CPU设计实验.docx_第7页
第7页 / 共11页
杭电计组实验实现R型指令的CPU设计实验.docx_第8页
第8页 / 共11页
杭电计组实验实现R型指令的CPU设计实验.docx_第9页
第9页 / 共11页
杭电计组实验实现R型指令的CPU设计实验.docx_第10页
第10页 / 共11页
杭电计组实验实现R型指令的CPU设计实验.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

杭电计组实验实现R型指令的CPU设计实验.docx

《杭电计组实验实现R型指令的CPU设计实验.docx》由会员分享,可在线阅读,更多相关《杭电计组实验实现R型指令的CPU设计实验.docx(11页珍藏版)》请在冰点文库上搜索。

杭电计组实验实现R型指令的CPU设计实验.docx

杭电计组实验实现R型指令的CPU设计实验

杭电计组实验-实现R型指令的

CPU设计实验

作者:

日期:

 

实验报告

姓名

阳光男

学号

16041321

班级

16052317

专业

计算机科学与技术

课程名称

《计算机组成原理与系统结构试验》

任课老师

张翔老师

指导老

张翔老师

机位号

实验序号

8

实验名称

《实验八实现R型指令的CPU设计实验》

实验时间

2018/5/25

实验地

八、、

1教225

实验设备号

个人电脑

一、实验程序源代码

顶层LED测试模块:

moduleTop_LED(clk,rst,SW,LED);

inputclk,rst;

input[2:

0]SW;

outputreg[7:

0]LED;

wireZF,OF;

wire[31:

0]ALU_F;

top_R_cputest_cpu(rst,clk,ZF,OF,ALU_F);always@(*)

begin

case(SW)

3'b000:

LED=ALU_F[7:

0];

3'b001:

LED=ALU_F[15:

8];

3'b010:

LED=ALU_F[23:

16];

3'b011:

LED=ALU_F[31:

24];

3'b100:

beginLED[7:

2]=0;LED[1]=0F;LED[0]=ZF;enddefault:

LED=0;

endcase

end

2018年_6_月1日

成绩:

endmodule

顶层R型CPU模块:

moduletop_R_cpu(inputrst,inputclk,outputZF,outputOF,output[31:

0]F);regwrite_reg;

wire[31:

0]lnst_code;

wire[31:

0]R_Data_A;

wire[31:

0]R_Data_B;

reg[2:

0]ALU_OP;

pcpc_connect(clk,rst,Inst_code);

Register_fileR_connect(Inst_code[25:

21],lnst_code[20:

16],

Inst_code[15:

11],write_reg,F,~clk,rst,R_Data_A,R_Data_B);

ALUALU_connect(R_Data_A,R_Data_B,F,ALU_OPOF);

always@(*)

begin

write_reg=0;

ALU_OP=0;

if(Inst_code[31:

26]==0)

begin

case(Inst_code[5:

0])

6'b100000:

ALU_OP=3'b100;

6'b100010:

ALU_OP=3'b101;

6'b100100:

ALU_OP=3'b000;

6'b100101:

ALU_OP=3'b001;

6'b100110:

ALU_OP=3'b010;

6'b100111:

ALU_OP=3'b011;

6'b101011:

ALU_OP=3'b110;

6'b000100:

ALU_OP=3'b111;

endcase

write_reg=1;

end

end

endmodule

PC取指令模块:

modulepc(inputclk,inputrst,output[31:

0]lnst_code);reg[31:

0]PC;

wire[31:

0]PC_new;

initial

PC<=32'h00000000;

Inst_ROMInst_ROM1(

.clka(clk),

.addra(PC[7:

2]),

.douta(Inst_code)

);

assignPC_new二{24'h000000,PC_new[7:

0]};always@(negedgeclkorposedgerst)begin

if(rst)

PC=32'h00000000;

elsePC=PC_new;

end

endmodule

寄存器堆模块:

module

B);

Register_file(R_Addr_A,R_Addr_B,W_Addr,Write_Reg,W_Data,Clk,Reset,R_Data_A,R_Datainput[4:

0]R_Addr_A;

input[4:

0]R_Addr_B;

input[4:

0]W_Addr;

inputWrite_Reg;

input[31:

0]W_Data;

inputClk;

inputReset;

output[31:

0]R_Data_A;

output[31:

0]R_Data_B;

reg[31:

0]REG_Files[0:

31];

initial//仿真过程中的初始化

begin

for(i=0;iv=31;i二i+1)

REG_Files[i]=O;

end

assignR_Data_A=REG_Files[R_Addr_A];assignR_Data_B=REG_Files[R_Addr_B];always@(posedgeClkorposedgeReset)begin

if(Reset)

for(i=0;i<=31;i=i+1)

REG_Files[i]=O;

else

if(Write_Reg&&W_Addr!

=0)

REG_Files[W_Addr]=W_Data;

end

endmodule

ALU算术逻辑运算单元模块:

moduleALU(A,B,F,ALU_QZF,OF);

input[31:

0]A,B;

input[2:

0]ALU_OP;

outputregZF,OF;

outputreg[31:

0]F;

regC32;

always@(*)

begin

OF=1'b0;

C32=1'b0;

case(ALU_OP)

3'b000:

F=A&B;

3'b001:

F=A|B;

3'b010:

F=AAB;

3'bO11:

F=~(A^B);

3'b100:

begin{C32,F}=A+B;OF=A[31]AB[31]AF[31]AC32;end

3'b101:

begin{C32,F}二A-B;OF二A[31]AB[31]AF[31FC32;end3'b110:

if(A

F=1;

else

F=0;

3'b111:

F=B<

endcase

if(F==0)

ZF=1;

else

ZF=0;

end

endmodule

测试代码:

moduletest;

//Inputs

regrst;

regclk;

//Outputs

wireZF;

wireOF;

wire[31:

0]F;

//InstantiatetheUnitUnderTest(UUT)top_R_cpuuut(

.rst(rst),

.clk(clk),

•ZF(ZF),

.OF(OF),

•F(F)

);

initialbegin

//InitializeInputs

rst=0;

clk=0;

//Wait100nsforglobalresettofinish

#100;

clk=1;

//Addstimulushereforeverbegin

#50;clk=~clk;

end

endendmodule

二、仿真波形

构:

三、电路图

顶层电路模块

SW(2:

0}

toppled

LED(7:

0)

elk

ret

Top_LED

Top_LED

顶层电路内部结

 

四、引脚配置(约束文件)

NET"LED[7]"LOC:

=T11;

NET"LED[6]"LOC:

=R11;

NET"LED[5]"LOC:

=N11;

NET"LED[4]"LOC=

=M11;

NET"LED[3]"LOC:

=V15;

NET"LED[2]"LOC:

=U15;

NET"LED[1]"LOC:

=V16;

NET"LED[0]"LOC:

=U16;

NET"SW[2]"LOC

=V9;

NET"SW[1]"LOC

=T9;

NET"SW[0]"LOC:

=T10;

NET"clk"LOC=

C9;

NET"rst"LOC=

C4;

五、思考与探索

(1)

R型指令CPU实验结果记录表

序号

指令

执行结果

标志

结论

1

0000827

FFFFFFFF

0

0

正确

2

0001102b

0000_0001

0

0

正确

3

00421820

0000_0002

0

0

正确

4

00622020

0000_0003

0

0

正确

5

00832820

0000_0005

0

0

正确

6

00a33020

0000_0007

0

0

正确

7

00463804

0000_000E

0

0

正确

8

00a64820

0000_000C

0

0

正确

9

01264004

0000_7000

0

0

正确

10

00284826

FFFF_8FFF

0

0

正确

11

01215020

FFFF_8FFE

0

0

正确

12

01075822

0000_6FF2

0

0

正确

13

00e86022

FFFF_900E

0

0

正确

14

012c6824

FFFF_800E

0

0

正确

15

012c7025

FFFF_9FFF

0

0

正确

16

00c77825

0000_FFFF

正确

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2