计算机结果与组成实验报告5文档格式.docx
《计算机结果与组成实验报告5文档格式.docx》由会员分享,可在线阅读,更多相关《计算机结果与组成实验报告5文档格式.docx(46页珍藏版)》请在冰豆网上搜索。
序号
实验项目名称
学时
成绩
指导教师
预习
操作
结果
1
部件实验
12
2
一位数乘法程序实验
16
3
二位数乘法程序实验
8
4
5
6
7
9
10
11
13
14
15
17
18
总计
学分:
1.5
36
大连理工大学实验报告
软件学院专业:
软件工程班级:
实验时间:
1-3周实验室:
计算机组成硬件实验室实验台:
22_
指导教师签字:
成绩:
计算机部件实验
——存储器和总线传输实验
一.实验目的
1.了解总线的作用及数据传输的原理;
2.了解总线在计算机中的作用;
3.通过交换两个寄存器中的数据来了解寄存器和内存RAM,寄存器和寄存器之间数据的交换过程。
二.实验要求
将两个需要交换的数据分别写入373和374中进行储存,再使用RAM作为第三方介质来交换这两个数据。
三.实验原理
如在图
(1)中RAM采用XC2S150内部的RAM组件,它为512×
8,有10位地址(A9~A0),8位数据,四根控制线:
CLK—时钟(MCLK),在有跳变时才执行。
行写入或改变读出内容;
EN—允许MEN(S15,1有效);
WE写入MWR(S16,1有效);
RST复位(不用)。
由于该RAM的输出不为三态,故加入MOE(S23,1有效)作为三态控制。
DB为数据总线,接CI(7—0)。
244为三态门,用于从开关(S7-S0)输入数据到总线上,OE(S13,1有效)三态输出允许,373为三态输出的透明锁存器,GT(S11,1有效)为三态输出允许,374为带三态输出的寄存器,CK,(s10,打入脉冲)为时钟,OE(S9,1有效)三态输出允许。
377为8位寄存器,CK为时钟,EN(S8,1有效)时钟允许,377输出接8个LED(L7-L0)。
图
(1)
流程图如下:
四.实验步骤
实验准备阶段:
下载busv1.bit文件到XC2S150中,用VHDL硬件描述语言将所有
总线实验所需的实验器械的接口及内部逻辑原理描述并编译,然后烧录至
FD-MCES的FPGA芯片中,形成整个系统。
点击桌面的IMPACT,然后选择
configureDevices,选下一步,SlaveSerialMo,之后点击完成,选BUSV1.BIT,
打开该文件。
右击生成的CPU图标,再右击Programming,执行Programming
操作进行下载,烧制下载成功后提示ProgrammingSucceeded,下载完成。
实验执行阶段:
(1)拨10101000送244
拨S13,拨S0,S2,S4,此时指示灯S0,S2,S4亮
(2)将244中的内容送373中
拨S11(使373的锁存允许)并将S0,S2,S4,S11,S13拨回,并拨S12
观察指示灯S0,S2,S4是否亮,如是则数据已存入373中,拨回S12。
(3)拨10101010送374中
拨S13,拨S0,S2,S4,S6,相应的指示灯亮。
拨S10,并拨下
S13,S0,S2,S4,S6,S10,拨S9,则相应的指示灯亮,拨回S9。
(4)373中的内容送到RAM中
拨S12,S15,S16,拨回S12,S15。
(5)将374中的内容送到373中
拨S9,S11,拨回S9,S11。
(6)把RAM的数据传送到374中
拨S23,S10,拨回S23,S10
(7)分别观测373和374中的内容,确认数据是否已交换
拨S12,如指示灯S0,S2,S4,S6亮,则10101010已存入373中,
拨S8,则377中的相应指示灯亮;
拨回S12,S8。
拨S9,如指示灯S0,S2,S4亮,则10101000已存入374中,
拨回S9,S8。
(8)此实验全部结束。
五、实验结果与分析
373和374中的数据交换。
(在373中对应的指示灯S0,S2,S4,S6亮,374中对应的指示灯S0,S2,S4亮)。
结果与预想的相同,完成了总线及寄存器数据的传输。
六、实验体会及建议
发现问题及解决方法:
(1)在刚开始做实验时,用RAM时没有将始能端一直打开,导致在373中读到的数据还是373中的,没能将374的数据交换过来.后来在老师的帮助下,发现了这一问题,得已解决.
(2)在做实验时,没有保持上拨开关和下拨开关的逆序,导致结果没出来,后来老师在讲解时,意识到了这一问题,将其解决了.
实验体会:
通过本次实验,我了解了FD-MCES试验箱上存储器上信号的控
制以及总线的作用,让我更加深刻地了解到数据传输的原理。
在实验过程中要求一定的动手能力.
实验建议:
在进行这次实验之前,老师详细地给我们讲解实验步骤,原理以
及怎样正确的使用控制信号。
但我希望还是老师能稍微点播一下,
然后由学生自己揣摩,自己去实践,去发现问题,解决问题,这样才能对
问题有更深的了解.对以后的发展有较大的帮助.
4-5周实验室:
计算机组成硬件实验实验台:
22
8位微程序控制计算机预习报告
------------流程设计
一、微程序控制计算机的工作原理:
微程序:
在常用逻辑控制器中,我们已经知道:
每条指令实际上是分解成一系列微操作序列。
因而指令的执行过程实际上就是相当于该条指令的微操作序列的执行过程。
如果我们把同一节拍内要执行的微操作作为一条“微指令”,则一条机器指令可看作由若干条微指令组成。
而与一条机器指令相对应的微指令组成的微指令序列就叫“微程序”。
微命令和微操作:
从微操作的角度出发,可以将计算机分成两大部分:
控制部分和执行部分。
例如控制器即控制部分,而运算器存储器及输入输出设备等相对于控制器而言即执行部分。
所谓微命令,即使有上述部分控制部分向执行部分发出最基本的控制信号。
而微操作即是上述执行部分收到微命令后所执行的最基本的操作。
微指令:
微指令就是若干微命令的组合。
通常将要在同一节拍内置行为操作所对应的微命令组合在一条微指令中。
二.实验流程图:
(1位乘)
三.实验流程图:
(2位乘)
6-8周实验室:
计算机组成硬件实验室实验台:
8位微程序控制计算机设计实验
----一位,二位乘的汇编实现
一.实验目的
了解微程序控制计算机的基本工作原理及实验方法,了解指令系统和CPU结构,掌握微程序控制方法及程序设计的方法.
二.实验要求
1.建立指令集文件及微程序文件
2.编写一位乘法和二位乘法程序并调试生成最终结果
三.实验原理图
五.实验步骤(流程图)
六.一位乘实现方法(ASM)及注释
ORG0
STRT:
JKBSTRT;
判断键盘是否有键按下
LDA8001H
MOVR7,A;
将A中数据放入R7中
L1:
JKBL1
MOVR6,A
MOVA,#4
STA8002H;
将4写入8002里面
L2:
JPBL2;
判断打印机是否打印完
MOVA,#0AH
STA8002H
L3:
JPBL3
MOVA,#10H
ADDA,R7;
将R7,和A中数据进行累加
L4:
JPBL4
MOVA,#9;
将9写入8002里面
L5:
JPBL5
MOVA,#0AH;
将A写入8002里面
L6:
JPBL6
ADDA,R6;
将R6,和A中数据进行累加
STA8002H
L7:
JPBL7
MOVA,#3;
将3写入8002里面
L8:
JPBL8
L9:
MOVA,#0
MOVR5,A;
将R5置0
MOVR4,A
MOVA,#01H
MOVR0,A
MOVA,#10
MOVR1,A;
将A中数据放入R1中
L10:
MOVA,R6
SUBA,R0;
将R6和R0中数据进行相减
JCL11;
不满足条件就跳到L11
MOVA,R5
ADDA,R7;
将R5和R7中数据进行累加
MOVR5,A
JMPL10
L11:
SUBA,R1;
将R5和R1数据进行相减
JCL12;
满足继续进行,不满足跳到L12
MOVA,R4
ADDA,R0;
将R0和A中数据进行累加
MOVR4,A
JMPL11
L12:
MOVA,R4;
将R4数据放入A中
将R0和R4中数据进行累加
JCL13
JMPL14
L13:
;
判断有没有十位
JPBL13
ADDA,R5;
将R5和A中数据进行累加
JMPOVER
L14:
用来打印个位
JPBL14
L15:
用来打印十位
JPBL15
ADDA,R4
OVER:
JMPSTRT;
跳到开头重新开始
七.一位乘实现方法(LST文件)
10000ORG0
20000STRT:
30000600000JKBSTRT
40003408001LDA8001H
500060FMOVR7,A
60007L1:
70007600007JKBL1
8000A408001LDA8001H
9000D0EMOVR6,A
10000E3004MOVA,#4
110010488002STA8002H
120013L2:
130013680013JPBL2
140016300AMOVA,#0AH
150018488002STA8002H
16001BL3:
17001B68001BJPBL3
18001E3010MOVA,#10H
19002027ADDA,R7
200021488002STA8002H
210024L4:
220024680024JPBL4
2300273009MOVA,#9
240029488002STA8002H
25002CL5:
26002C68002CJPBL5
27002F300AMOVA,#0AH
280031488002STA8002H
290034L6:
300034680034JPBL6
3100373010MOVA,#10H
32003926ADDA,R6
33003A488002STA8002H
34003DL7:
35003D68003DJPBL7
3600403003MOVA,#3
370042488002STA8002H
380045L8:
390045680045JPBL8
400048300AMOVA,#0AH
41004A488002STA8002H
42004DL9:
43004D3000MOVA,#0
44004F0DMOVR5,A
4500500CMOVR4,A
4600513001MOVA,#01H
47005308MOVR0,A
480054300AMOVA,#10
49005609MOVR1,A
500057L10:
51005706MOVA,R6
52005828SUBA,R0
5300590EMOVR6,A
54005A500063JCL11
55005D05MOVA,R5
56005E27ADDA,R7
57005F0DMOVR5,A
580060580057JMPL10
590063L11:
60006305MOVA,R5
61006429SUBA,R1
62006550006FJCL12
6300680DMOVR5,A
64006904MOVA,R4
65006A20ADDA,R0
66006B0CMOVR4,A
67006C580063JMPL11
68006FL12:
69006F04MOVA,R4
70007028SUBA,R0
710071500077JCL13
720074580083JMPL14
730077L13:
740077680077JPBL13
75007A3010MOVA,#10H
76007C25ADDA,R5
77007D488002STA8002H
780080580093JMPOVER
790083L14:
800083680083JPBL14
81008605MOVA,R5
820087488002STA8002H
83008AL15:
84008A68008AJPBL15
85008D3010MOVA,#10H
86008F24ADDA,R4
870090488002STA8002H
880093OVER:
890093580000JMPSTRT
八.二位乘实现方法(ASM)及注释
JKBSTRT;
STA8002H;
将4写入8002里面
JPBL2;
判断打印机是否打印完
MOVA,#0AH
JPBL3
JPBL4
ADDA,R6;
JPBL9
MOVA,R5
JPBL10
JPBL11
MOVA,#0AH
JPBL12
MOVA,#0AH
将r1,r2,r3清零
MOVR0,A
MOVR1,A
MOVR2,A
MOVR3,A
乘数低位乘被乘数
SUBA,R0
JCL15
MOVA,R3
ADDA,R7
MOVA,R2
ADDA,R6
JMPL14
将R5存1,用来提高速度
MOVR5,#01H
MOVR0,#0
L16:
乘数高位乘被乘数
MOVA,R4
SUBA,R5
JCL17
MOVA,R2
MOVA,R1
JMPL16
L17:
MOVR4,#10
MOVA,R3
SUBA,R4
JCL18
ADDA,R5
JMPL17
L18:
MOVA,R2;
R2循环减10,R1循环加1
SUBA,R4
JCL19
JMPL18
L19:
;
R1循环减10,R0循环加1
JCL20
MOVA,R0
JMPL19
L20:
JCL21;
在没有千位情况下判断百位
JMPL29
L21:
在有千位情况下的处理程序
JCL22;
在没有百位情况下判断十位
JMPL26;
在有百位情况下的处理程序
L22:
JCL23;
没有十位输出个位
JMPL24
L23:
有十位的处理程序
JPBL23;
仅打印个位并换行
ADDA,R3
JMPOUT
L24:
;
重新开始程序
JPBL24;
十位处理程序
L25:
JPBL25
ADD