杭电计组实验5 6 7章老师不插板实验报告.docx
《杭电计组实验5 6 7章老师不插板实验报告.docx》由会员分享,可在线阅读,更多相关《杭电计组实验5 6 7章老师不插板实验报告.docx(12页珍藏版)》请在冰豆网上搜索。
杭电计组实验567章老师不插板实验报告
实验报告
2016年5月10日成绩:
姓名
学号
班级
专业
计算机科学与技术
课程名称
《计算机组成原理课程设计》
任课老师
章复嘉
指导老师
章复嘉
机位号
实验序号
5,6,7
实验名称
寄存器堆设计实验,MIPS汇编器与模拟器实验取,指令与译指令
实验时间
第6周~第14周
实验地点
一教225
实验设备号
一、实验程序源代码
实验五
modulemain(
input[0:
0]wea,
input[7:
2]addra,
output[31:
0]douta,
inputClk,Reset,
inputWrite_Reg,
input[4:
0]W_Addr,
input[31:
0]W_Data,
input[4:
0]R_Addr_A,R_Addr_B,
output[31:
0]R_Data_A,R_Data_B
);
RAMA1(
.clka(Clk),//inputclka
.wea(wea),//input[0:
0]wea
.addra(addra[7:
2]),//input[5:
0]addra
.dina(R_Data_A),//input[31:
0]dina
.douta(douta)//output[31:
0]douta
);
fourB1(
.Clk(Clk),
.Reset(Reset),
.Write_Reg(Write_Reg),
.W_Addr(W_Addr),
.W_Data(W_Data),
.R_Addr_A(R_Addr_A),
.R_Addr_B(R_Addr_B),
.R_Data_A(R_Data_A),
.R_Data_B(R_Data_B)
);
endmodule
moduleRAM(
inputclka,
input[0:
0]wea,
input[7:
2]addra,
input[31:
0]dina,
output[31:
0]douta
);
RAM_Byour_instance_name(
.clka(clka),//inputclka
.wea(wea),//input[0:
0]wea
.addra(addra[7:
2]),//input[5:
0]addra
.dina(dina),//input[31:
0]dina
.douta(douta)//output[31:
0]douta
);
endmodule
#100;
Reset=0;
Clk=0;
#100;
W_Addr=5'b11011;
W_Data=32'b11111111110001111111111101101111;
Clk=0;
#50;
Clk=1;
#100;
R_Addr_A=5'b11011;
R_Addr_B=0;
Clk=0;
Write_Reg=0;
#100;
R_Addr_A=5'b11011;
Write_Reg=0;
Clk=0;
W_Addr=0;
W_Data=0;
#10;
Clk=0;
wea=1;
addra=8'b00110100;
#10;
Clk=1;
#100;
wea=0;
addra=8'b00110100;
#100;
Clk=0;
#10;
Clk=1;
B
#100;
clka=0;
wea=0;
addra=6'b000001;
dina=32'b11111111110001111111111101101111;
#100;
clka=1;
wea=0;
addra=6'b000001;
dina=32'b11111111110001111111111101101111;
#100;
clka=0;
wea=1;
addra=6'b000001;
dina=32'b11111111110001111111111101101111;
#100;
clka=1;
wea=1;
addra=6'b000001;
dina=32'b11111111110001111111111101101111
实验6
nor$1,$0,$0;#$1=FFFF_FFFF
sltu$2,$0,$1;#$2=0,000_0001
add$3,$2,$2;#$3=0000_0002
add$4,$3,$2;#$4=0000_0003
add$5,$4,$3;#$5=0000_0005
add$6,$5,$3;#$6=0000_0007
sllv$7,$6,$2;#$7=0000_000E
add$9,$5,$6;#$9=0000_000C
sllv$8,$6,$9;#$8=0000_7000
xor$9,$1,$8;#$9=FFFF_8FFF
add$10,$9,$1;#$10=FFFF_8FFE
sub$11,$8,$7;#$11=0000_6FF2
sub$12,$7,$8;#$12=FFFF_900E
add$13,$9,$12;#$13=FFFF_200D
or$14,$9,$12;#$14=FFFF_9FFF
or$15,$6,$7;#$15=0000_000F
nor$16,$5,$7;#$16=FFFF_FFF0
add$17,$7,$3;#$17=0000_0010
sllv$18,$8,$17;#$18=7000_0000
sllv$19,$3,$17;#$19=0002_0000
sllv$20,$19,$7;#$20=8000_0000
sub$21,$1,$20;#$21=7FFF_FFFF
or$22,$18,$21;#$22=7FFF_FFFF
add$23,$20,$22;#$23=FFFF_FFFF
sub$24,$18,$19;#$24=6FFE_0000
sub$25,$19,$18;#$25=9002_0000
xor$26,$1,$18;#$26=8FFF_FFFF
sltu$27,$22,$20;#$27=0000_0001
sltu$28,$26,$20;#$28=0000_0000
sub$29,$22,$2;#$29=7FFF_FFFE
add$30,$20,$2;#$30=8000_0001
add$31,$11,$26;#$31=9000_6FF1
实验7:
moduleInst(clk,rst,Inst_Code,PC_new,PC);
inputwireclk,rst;
outputwire[31:
0]Inst_Code;
outputwire[31:
0]PC_new;
outputreg[31:
0]PC;
initial
begin
PC=32'h0000_0000;
end
ROMInst_ROM(
.addra(PC[7:
2]),//input[5:
0]addra
.clka(clk),//inputclka
.douta(Inst_Code)//output[31:
0]douta
);
assignPC_new=PC+4;
always@(negedgeclkorposedgerst)
begin
if(rst)
PC=32'h0000_0000;
else
PC={24'h000000,PC_new[7:
0]};
end
endmodule
Inst_ROM文件:
memory_initialization_radix=16;
memory_initialization_vector=00000827,0001102b,00421820,00622020,00832820,00a33020,00463804,00a64820,01264004,00284826,01215020,01075822,00e86022,012c6820,012c7025,00c77825,00a78027,00e38820,02289004,02239804,00f3a004,0034a822,0255b025,0296b820,0253c022,0272c822,0032d026,02d4d82b,0354e02b,02c2e822,0282f020,017af820;
二、仿真波形
实验五
实验六
实验七:
三、电路图
实验5
实验7
四、引脚配置(约束文件)
五、思考与探索
实验5:
(3)设计实现一个ROM,常规存储器是单端口存储器,每次只接收一个地址,访问一个存储单元,从中读取或写入一个字节或字。
主存储器是信息交换的中心,一方面CPU频繁地与主存交换信息,另一方面外设也较频繁地与主存交换信息,而单端口存储器每次只能接受一个访存者,或是读或是写,这就影响到存储器的整体工作速度。
六、意见和建议