计算机组成原理模型机实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六计算机系统综合设计与实现
一、实验目的
1、深入理解计算机系统工作的基本原理,建立整机概念。
2、融会贯通计算机组成原理课程的容,通过知识的综合运用,加深对计算机系统各模块的工作原理及相互联系的认识。
3、培养科学研究的独立工作能力,取得工程设计与组装调试的实践经验。
二、实验要求
1、将已经设计的运算器、存储器和控制器连接,构建完整的计算机系统;
2、编写一段可以实现一定功能的指令程序,进行计算机整机系统功能的验证。
3、所有任务要求功能仿真和必要的验证。实验完成后,一周提交实验报告。
三、实验设备
PC机+ QuartusⅡ10.0 + FPGA(DE2-115)+TEC-8实验箱
四、计算机系统(TEC-8)综合逻辑框图
硬连线控制器控制信号切换电路ALU A端口B端口C Z R0 R1 R2 R3 IR PC AR 双端口RAM DBUS
五、实验任务
1、将实验二的运算器、实验三的存储器和实验五的控制器连接,构建完整的计算机系统;
2、计算机整机系统功能测试,进行功能仿真和时序仿真并在DE2-115上验证。
(1)根据指令系统,编写一段可以实现一定功能的程序,要求:
有一个合理的运算功能和逻辑关系;
指令数量:不少于8条;
指令类型:停机、跳转、RR、读存、写存、算术和逻辑运算;
(2)将指令程序手工汇编成二进制代码;
(3)理论上设置寄存器的初值,并计算程序执行后的结果;
(4)将指令程序的二进制代码存入存储器RAM中;
(5)将需要的运算数据初值存入寄存器R0-R3中;
(6)进行程序连续运行的功能仿真和时序仿真,将仿真运算结果与理论计算结果进行比较。
六、实验步骤
实验电路图
子模块
(1)tri_74244
module tri_74244 (en,Din,Dout );
input en ;
wire en ;
input [7:0] Din;
wire [7:0] Din ;
output [7:0] Dout ;
reg [7:0] Dout ;
always (en or Din)
begin
if (en)
Dout<= Din ;
else
Dout <= 8'bzzzzzzzz;
end
endmodule
`timescale 1 ps/ 1 ps
module tri_74244_vlg_tst();
reg eachvec;
reg [7:0] Din;
reg en;
wire [7:0] Dout;
tri74244.vt
`timescale 1 ps/ 1 ps
module tri_74244_vlg_tst();
reg eachvec;
reg [7:0] Din;
reg en;
wire [7:0] Dout;
tri_74244 i1 (
.Din(Din),
.Dout(Dout),
.en(en)
);
integer i;
initial begin i=0;
Din=8'b00000000;
en=0;
en=1;
#40 en=1;
end
initial
begin for(i=0;i<10;i=i+1)
begin
#10 Din=i;
end
end endmodule
tri74244功能仿真
(2)ALU
ALU.bdf
modolue_74181
使用quartus库中的74181模块转换为verilog文件即可de2_4
de2_4.v
module de2_4(en,in,out);
input [2:1] in ;
input en;
output [4:1] out ;
reg [4:1] out ;
always (en or in)
if (en)
case (in)
2'b00:out=4'b0001;
2'b01:out=4'b0010;
2'b10:out=4'b0100;
2'b11:out=4'b1000;
default:out=4'b0000;
endcase
else out=4'b0000;
endmodule
de2_4.vt
`timescale 1 ns/ 1 ps
module de2_4_vlg_tst();
reg eachvec;
reg en;
reg [2:1] in; wire [4:1] out;
de2_4 i1 (
.en(en),
.in(in),
.out(out)
);
initial begin en=0;
end
initial begin # 10 en=1;
end
initial begin # 5 in=2'b00;
#15 in=2'b01;
#15 in=2'b10;
#15 in=2'b11;
#40 $finish;
end
initial