资源描述
实验报告
5 月 10 日 成绩:
姓名
学号
班级
专业
计算机科学与技术
课程名称
《计算机构成原理课程设计》
任课教师
章复嘉
指引教师
章复嘉
机位号
实验序号
5,6,7
实验名称
寄存器堆设计实验,MIPS汇编器与模拟器实验取,指令与译指令
实验时间
第6周~第14周
实验地点
一教225
实验设备号
一、实验程序源代码
实验五
module main(
input [0:0] wea,
input [7:2] addra,
output [31:0] douta,
input Clk,Reset,
input Write_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
);
RAM A1(
.clka(Clk), // input clka
.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
);
four B1(
.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
module RAM(
input clka,
input [0:0] wea,
input [7:2] addra,
input [31:0] dina,
output [31:0] douta
);
RAM_B your_instance_name (
.clka(clka), // input clka
.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'b01101111;
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'b01101111;
#100;
clka=1;
wea=0;
addra=6'b000001;
dina=32'b01101111;
#100;
clka=0;
wea=1;
addra=6'b000001;
dina=32'b01101111;
#100;
clka=1;
wea=1;
addra=6'b000001;
dina=32'b01101111
实验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:
module Inst(clk,rst,Inst_Code,PC_new,PC);
input wire clk,rst;
output wire [31:0] Inst_Code;
output wire[31:0] PC_new;
output reg[31:0] PC;
initial
begin
PC=32'h0000_0000;
end
ROM Inst_ROM(
.addra(PC[7:2]), // input [5 : 0] addra
.clka(clk), // input clka
.douta(Inst_Code) // output [31 : 0] douta
);
assign PC_new=PC+4;
always@( negedge clk or posedge rst)
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,0062,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频繁地与主存互换信息,另一方面外设也较频繁地与主存互换信息,而单端口存储器每次只能接受一种访存者,或是读或是写,这就影响到存储器旳整体工作速度。
六、意见和建议
展开阅读全文