西北工业大学《计算机组成原理实验报告》
计算机组成原理实验报告
时间: 2012.11.26 地点: 实验大楼4楼北 成绩:
班级: xxxxxx 学号: xxxxxx 姓名: xx
班级: xxxxxx 学号: xxxxxxx 姓名: xx
题目: 微程序控制器实验
一、 实验目的:
1. 掌握微程序控制器的组成原理;
2. 掌握微程序的编制、写入,观察微程序的运行过程。
二、 实验内容及要求:
3. 熟悉微指令的编写方式,编码格式,了解机器指令与微指令之间的关联。
4. 设计微指令,以实现从存储器中读出8位二进制数并进行加法计算的功能。
三、 实验步骤、观察与思考:
实验步骤:
1. 连线,将实验电路板上的所需单元用排线连接起来,以实现数据通路。
2. 对微控制器的读写操作
(1) 手动读写:(默认为已实现线路连接)
进行手动读或写,都需要手动给出地址,系统专门安排了一个ADDR单元,作为地址输入。ADDR单元实为一个加减计数器。当开关为“加1”挡时,在T2的下沿计数器进行加1计数;当开关为“减1”挡时,在T2的下沿计数器进行减1计数;当开关置为“置数”挡时,计数器置初值,其作用相当于直通,SA7…SA0的输出值就是二进制开关组的值。
在实验中选择什么挡位,取决于写入数据的地址是否连续,如果是连续地址,选择“加1”或是“减1”挡会方便一些。如果是离散地址,选择“置数”挡会方便一些。
1) 手动对微控制器进行编程(写)。
a. 修改连线,以方便实现手动控制(完成读写操作后恢复);
b. 将MC单元编程开关置为“编程”挡,时序单元状态开关置为“单步”挡,ADDR单元状态开关置为“置数”挡。
c. 使用ADDR单元的低六位SA5…SA0给出微地址MA5…MA0,微地址可以通过MC单元的MA5…MA0微地址灯显示。
d. CON单元SD27…SD20,SD17…SD10,SD07…SD00开关上置24位微代码,待写入值由MC单元的M23…M0 24位LED灯显示。
e. 启动时序电路(按动一次TS按钮),即将微代码写入到EEPROM2816的相应地址对应的单元中。
f. 重复c,d,e三步,将所需写入的微代码写入到2816芯片中(二进制微代码在表一中列出)。
2) 手动对微控制器进行校验(读)。
a. 接线方法和编程一样。
b. 将MC单元编程开关置为“校验”挡,时序单元状态开关置为“单步”挡,ADDR单元状态开关置为“置数”挡。
c. 使用ADDR单元的低六位SA5…SA0给出微地址MA5…MA0,微地址可以通过MC单元的MA5…MA0微地址灯显示。相应地址单元的数据将会被读出,并在MC单元的M23…M0 24位LED灯显示。重复本步,检查2816芯片中相应地址单元的数据是否和所设计的微代码二进制数据相同,如果不同,则说明写入操作失败,应重新写入。
(2) 联机读写。
1) 将微程序写入文件。微指令格式如下:
$M 1F 112233
其中,间隔用四个空格,微指令地址为两位十六进制,伪指令值为六位十六进制,按顺序为高、中、低。
分号为注释符
2) 写入微程序:
用联机软件的“转储装载数据”功能将该格式文件(*.TXT)装载入实验系统。装入过程中,在软件的输出区的“结果”栏会显示装载信息。
3) 校验位程序:
选择联机软件的“转储刷新指令区”可以读出下位机所有的机器指令和微指令,并在指令区显示。检查微控制器相应地址单元的数据是否与设计的微指令相同,如果不同,则说明写入操作失败,应重新写入,可以通过联机软件单独修改某个单元的微指令。
3. 运行微程序
微程序设计:
微指令格式:
23
22
21
20
19
18~15
14~12
11~9
8~6
5~0
M23
M22
WR
RD
IOM
S3~S0
A字段
B字段
C字段
MA5~MA0
加法指令ADD:R0的数据与存储器某个单元的数据相加,结果送到R0。
输入指令IN
输出指令OUT
停机指令HTL
表 1二进制数微代码表
地址
十六进制
高五位
S3-S0
A字段
B字段
C字段
MA5-MA0
00
000001
00000
0000
000
000
000
000001
01
007070
00000
0000
111
000
001
110000
04
006D45
00000
0000
110
110
101
000101
05
106006
00010
0000
110
000
000
000110
06
102007
00010
0000
010
000
000
000111
07
053201
00000
1010
011
001
000
000001
08
106009
00010
0000
110
000
000
001001
09
200401
00100
0000
000
010
000
000001
0A
10600B
00010
0000
110
000
000
001011
0B
103001
00010
0000
011
000
000
000001
30
001404
00000
0000
001
010
000
000100
31
006D48
00000
0000
110
110
101
001000
32
00140C
00000
0000
001
010
000
001100
33
00141C
00000
0000
001
010
000
011100
34
006D4A
00000
0000
110
110
101
001010
35
001420
00000
0000
001
010
000
100000
$M 00 000001 ; NOP
$M 01 006D43 ; PC->AR,PC加1
$M 03 107070 ; MEM->IR, P<1>
ADD:$M 30 001404 ; R0->A 实现相加
$M 04 006D45 ; PC->AR
$M 05 106006 ; MEM->AR
$M 06 102007 ; MEM->B
$M 07 053201 ; A加B->R0
STA:$M 31 006D48 ; PC->AR 实现存数
$M 08 106009 ; MEM->AR
$M 09 200401 ; R0->MEM
LAD:$M 34 006D4A ; PC->AR 实现取数
$M 0A 10600B ; MEM->AR
$M 0B 103001 ; MEM->R0
IN:$M 32 183001 ; IN->R0 实现in->R0
OUT:$M 33 280401 ; R0->OUT 实现R0->out
HTL:$M 35 000035 ; NOP 停机
四、 结论:
我们在本次试验中实现了对存储器读写,首先IN单元输入10011001到MEM(0), IN单元输入10010110到MEM(1),经过CPU对MEM的读取,(地址线手动给出)实现了结果输出结果00101111(FC=1)在OUT单元上显示2F,FC=1
根据我们的设计,我们的微程序对应机器指令如下:
助记符
机器指令码
说明
ADD
0000 0000
R0 + MEM R0
IN
0010 0000
IN R0
OUT
0011 0000
RO OUT
HLT
0101 0000
停机
五、 实验心得:
这次试验中,我们收获颇丰,熟悉了微程序控制器的使用方法,了解了其内部的逻辑结构,以及设计微程序时机器指令与微程序的对应方式,另外,对于微指令格式有了一个更深入的认识。
实验前,我们做了预习工作,但实际操作时,仍有些不当的地方,经两个人的努力,最终攻破许多难关。
4
展开阅读全文