资源描述
计算机组成原理课程设计实验报告
计算机组成原理课程设计实验报告
李伟
26号
2008-12-24
目录
一、实验目的 1
二、实验设备 1
三、实验原理 1
1. 微程序控制电路 1
2、微指令格式 1
3、五条机器指令 1
4、微程序流程图 1
四、实验步骤 1
1、连接实验线路 1
2、观察微程序控制器的工作原理: 1
3、根据指令系统编写程序 1
4、运行程序 1
五、心得体会 1
一、试验目标
1. 掌握微程序控制器组成原理
2. 掌握微程序编制、写入,观察微程序运行
3. 在“微程序控制器组成和微程序设计试验”基础上,将第一部分中各单元组成系统,结构一台基础模型计算机。
4. 依据定义五条机器指令,编写对应微程序,并运行,形成整机概念
二、试验设备
ZY15Comp12BB计算机组成原理教学试验系统一台,排线若干
Pc机一台
三、试验原理
试验所用时序电路原理能够参考时序试验。因为时序电路内部线路已经连好(时序电路CLR已接到试验板中下方CLR清零开关上),所以只需将时序电路和方波信号源连接即可。
1. 微程序控制电路
微程序控制器组成见图1-13。其中控制存放器采取3片2816 E2PR0M,含有掉电保护功效。微命令寄存器18位,用两片8D触发器(74LS273)和一片4D(74LS175)触发器组成。微地址寄存器6位,用三片上升沿触发双D触发器(74LS74)组成,它们带有清“0”端和置“1”端。在不进行判别测试情况下,T2时刻打入微地址寄存器内容即为下一条微指令地址。当T4时刻进行判别测试时,转移逻辑满足条件后输出负脉冲经过强置端将某一触发器设置为“1”状态,完成地址修改。
在该试验电路中,在CONTROL UNIT有一个编程开关SP06,它含有三种状态:WRITE(编程)、READ(校验)、RUN(运行)。当处于“编程状态”时,试验者可依据微地址和微指令格式将微指令二进制代码写入到控制存放器2816中。当处于“校验状态”时,能够对写入控制存放器中二进制代码进行验证,从而能够判定写入二进制代码是否正确。当处于“运行状态”时,只要给出微程序入口微地址,则可依据微程序步骤图自动实施微程序。图中微地址寄存器输出端增加了一组三态门74LS245,目标是隔离触发器输出,增加抗干扰能力,并用来驱动微地址显示灯。
2、微指令格式
微指令字长24位,其控制位次序以下:
其中uA5一uA0为6位后续微地址,A、B、P为三个译码字段,分别由三个控制位译码出多位。P字段中Pl一P4是四个测试字位。其功效是依据机器指令及对应微代码进行译码,使微程序转入对应微地址入口,从而实现微程序次序、分支、循环运行。AR为算术运算是否影响进位及判零标志控制位,其为零有效。B字段中RS_G、RD_G、RI_G分别为源寄存器选通信号、目标寄存器选通信号及变址寄存器选通信号,其功效是依据机器指令来进行三个工作寄存器R0、R1及R2选通译码
控制器试验原理图
3、五条机器指令
其指令格式以下:
助记符
机器指令码
说明
IN
00000000XXXX XXXX
输入,“INPUT”设备中开关状态→R0
ADD addr
00010000 XXXX XXXX
二进制加法,R0+[addr]→R0
STA addr
00100000XXXX XXXX
存数,R0→[addr]
OUT addr
00110000XXXX XXXX
输出,[addr]→BUS
JMP addr
01000000XXXX XXXX
无条件转移,addr→PC
机器指令码前4位为操作码。其中IN为单字长,其它为双字长指令,XXXXXXXX为addr对应二进制地址码
为了向RAM中装入程序和数据,检验写入是否正确,并能开启程序实施,还必需设计三个控制台操作微程序
Ø 存放器读操作(READ):拨动总清开关CLR后,控制台开关SWB、SWA为“00”时,按START微动开关,可对RAM连续手动读操作
Ø 存放器写操作(WRITE):拨动总清开关CLR后,控制台开关SWB、SWA设置为“01”时,按START微动开关可对RAM进行连续手动写入
Ø 开启程序(RUN):拨动总清开关CLR后,控制台开关SWB、SWA设置为“11”时,按START微动开关,即可转入到第01号“取址”微指令,开启程序运行
上述三条控制台指令用两个开关SWB、SWA状态来设置,其定义以下:
数据通路框图
4、微程序步骤图
系统包含到微程序步骤见图2-2,当确定“取指令”微指令时,该微指令判别测试字段为P1测试。因为“取指令”微指令是全部微程序全部使用公用微指令,所以P1测试结果出现多路分支。本机用指令寄存器高4位(I7—I4操作码)作为测试条件,出现5路分支,占用5个固定微地址单元
控制台操作为P4测试,它以控制台开关SWB、SWA作为测试条件,出现了3路分支,占用3个固定微地址单元。当分支微地址单元固定后,剩下其它地方就能够一条微指令占用一个微地址单元随意填写
当全部微程序设计完成后,应将每条微指令代码化,表2-2即为将图2-2微程序步骤图按微指令格式转化而成“二进制微代码表”
本系统有两种外部I/O设备,一个是二进制数码开关,作为输入设备(INPUT);另一个是两位十六进制数LED数码管,作为输出设备(OUTPUT UNIT)。在输入时,二进制开关数据直接经过三态门送到总线上。只要开关状态不变,输入信息也不变。输出时,将输出数据送到数据总线上,当写信号(WE)有效时,将数据打入输出锁存器,驱动数码块显示
微程序步骤图
表2-2 二进制代码表
微地址
S3~CN
RD
M17M16
A
B
P
uA5~uA0
00
0 0 0 0 0 0
0
1 1
0 0 0
0 0 0
1 0 0
0 1 0 0 0 0
01
0 0 0 0 0 0
0
1 1
1 1 0
1 1 0
1 1 0
0 0 0 0 1 0
02
0 0 0 0 0 0
0
0 1
1 0 0
0 0 0
0 0 1
0 0 1 0 0 0
03
0 0 0 0 0 0
0
0 1
1 1 0
0 0 0
0 0 0
0 0 0 1 0 0
04
0 0 0 0 0 0
0
0 1
0 1 1
0 0 0
0 0 0
0 0 0 1 0 1
05
0 0 0 0 0 0
0
1 1
0 1 0
0 0 1
0 0 0
0 0 0 1 1 0
06
1 0 0 1 0 1
0
1 1
0 0 1
1 0 1
0 0 0
0 0 0 0 0 1
07
0 0 0 0 0 0
0
0 1
1 1 0
0 0 0
0 0 0
0 0 1 1 0 1
10
0 0 0 0 0 0
0
0 1
0 0 1
0 0 0
0 0 0
0 0 0 0 0 1
11
0 0 0 0 0 0
0
1 1
1 1 0
1 1 0
1 1 0
0 0 0 0 1 1
12
0 0 0 0 0 0
0
1 1
1 1 0
1 1 0
1 1 0
0 0 0 1 1 1
13
0 0 0 0 0 0
0
1 1
1 1 0
1 1 0
1 1 0
0 0 1 1 1 0
14
0 0 0 0 0 0
0
1 1
1 1 0
1 1 0
1 1 0
0 1 0 1 1 0
15
0 0 0 0 0 0
1
0 1
0 0 0
0 0 1
0 0 0
0 0 0 0 0 1
16
0 0 0 0 0 0
0
0 1
1 1 0
0 0 0
0 0 0
0 0 1 1 1 1
17
0 0 0 0 0 0
0
0 1
0 1 0
0 0 0
0 0 0
0 1 0 1 0 1
20
0 0 0 0 0 0
0
1 1
1 1 0
1 1 0
1 1 0
0 1 0 0 1 0
21
0 0 0 0 0 0
0
1 1
1 1 0
1 1 0
1 1 0
0 1 0 1 0 0
22
0 0 0 0 0 0
0
0 1
0 1 0
0 0 0
0 0 0
0 1 0 1 1 1
23
0 0 0 0 0 0
0
1 1
0 0 0
0 0 0
0 0 0
0 0 0 0 0 1
24
0 0 0 0 0 0
0
0 1
0 1 0
0 0 0
0 0 0
0 1 1 0 0 1
25
0 0 0 0 0 1
1
1 1
0 0 0
1 0 1
0 0 0
0 0 0 0 0 1
26
0 0 0 0 0 0
0
0 1
1 0 1
0 0 0
1 1 0
0 0 0 0 0 1
27
0 0 0 0 0 1
1
1 1
0 0 0
1 0 1
0 0 0
0 1 0 0 0 0
30
0 0 0 0 0 1
1
0 1
0 0 0
1 0 1
0 0 0
0 1 0 0 0 1
四、试验步骤
1、连接试验线路
按图1-15连接试验线路,仔细检验无误后接通电源。(图中箭头表示需要接线地方,接控制信号时要注意各信号一一对应,可用彩排线颜色来进行区分)
2、观察微程序控制器工作原理:
1) 编程
A. 将CONTROL UNIT编程开关SP06设置为WRITE(编程)状态
B. 将试验板上“SIGNAL UNIT”中“SP03”设置为“STEP”,“SP04”设置为“RUN”状态
C. 用SWITCH UNIT二进制模拟开关设置微地址UA5—UA
D. 在MICRO CONTROL单元开关SM24—SM01上设置微代码,24位开关对应24位显示灯,开关量为“1”时灯亮,开关量为“0”时灯灭
E. 开启时序电路(按动CONTROL UNIT “START” 触动开关),立即微代码写入到E2PR0M 28C16对应地址对应单元中
F. 反复C—E步骤,将表1-5微代码写入28C16
2) 校验
A. 将CONTROL UNIT编程开关SP06设置为READ(校验)状态
B. 将试验板“SIGNAL UNIT”中“SP03”开关设置为“STEP”状态,“SP04”开关设置为“RUN”状态
C. 用SWITCH UNIT二进制开关设置要检验微地址UA5—UA0
D. 按动CONTROL UNIT“START” 触动开关,开启时序电路,读出微代码,观察MICRO CONTROL单元显示灯LM24-LM01状态(灯亮为“1”,灭为“0”),检验读出微代码是否和写入相同。假如不一样,则将开关置于“WRITE”编程状态,重新实施(1)即可
3) 单步运行
A. 将CONTROL UNIT编程开关SP06置于“RUN(运行)”状态
B. 将试验板“SIGNAL UNIT”中“SP03”开关设置为“STEP”状态,“SP04”开关设置为“RUN”状态
C. 操作SWITCH UNITCLR开关,使CLR信号状态依次为1→0→1,将微地址寄存器74LS74(1)—74LS74(3)清零,从而明确本机运行入口微地址为000000(二进制)
D. 按动CONTROL UNIT “START”触动开关,开启时序电路,则每按动一次“START”键,读出一条微指令后停机,此时试验台上微地址显示灯和微命令显示灯将显示所读出一条指令
注:在目前条件下,将“MICRO CONTROL”单元SE6—SE1接至“SWITCH”中UA5-UA0对应二进制开关上,可经过强置端SE6—SE1人为设置分支地址。首先将SE6—SE1对应二进制开关设置为“1”,当需要人为设置分支地址时,将需要改变某个或多个二进制开关设置“0”,对应微地址位即被强置为“1”,从而改变下一条微指令地址。(二进制开关设置为“0”,对应微地址位将被强置为“1”)
4) 连续运行
A. 将CONTROL UNIT编程开关SP06设置为“RUN(运行)”状态
B. 将试验板SIGNAL UNIT中开关“SP03”、“SP04”设置为“RUN”状态
C. 使SWITCH UNITCLR信号状态依次为1→0→1,此时微地址寄存器清“0”,从而给出取指微指令入口地址为000000(二进制)
D. 开启时序电路,即按一下CONTROL UNIT “START”键,则可连续读出微指令,并根据微指令存放器(28C16)中微程序连续运行
E. 假如要退出连续运行状态,可将SIGNAL UNIT中SP04开关拨动到“STOP”位置
3、依据指令系统编写程序
参考程序一:
本程序从输入设备(数码开关)取入数据,保留在内存单元08,然后从08单元送到输出设备(LED数码管)进行显示。然后程序停止(请试验者考虑:怎样修改程序,使程序不停从输入设备取出数据,送到输出设备显示。每次循环过程中,能够使输入设备数据改变,考察输出显示结果)
设计机器指令程序以下(机器码和地址为十六进制数据)
地址
内 容
助记符
说 明
00
00
IN
输入开关数据→R0
01
20
STA[08H]
R0→[08]
02
08
地址
03
30
OUT[08H]
[08H] →BUS
04
08
地址
05
40
JMP[00H]
00H→PC
06
00
跳转地址
参考程序二:
本程序从输入设备(数码开关)读入数据,和0A单元数据相加,然后送到输出设备(LED数码管)进行显示。本程序不停地循环运行,在运行中可改变输入开关(INPUT)值,观察输出显示改变
设计机器指令程序以下(机器码和地址为十六进制数据)
地址
内容
助记符
说明
00
00
IN
输入开关数据→R0,采集数据
01
10
ADD[0AH]
R0+[0AH]→R0,输入数据和指定数据相加
02
0A
地址
03
20
STA[0BH]
R0→[0B]
04
0B
地址
05
30
OUT[0BH]
[0BH] →BUS,输出显示
06
0B
地址
07
40
JMP[00H]
00H→PC
08
00
跳转地址
0A
01
加数,可自定
0B
求和结果保留在0B单元
1. 按图2-3连接试验线路(图中箭头表示需要接线地方,接总线和控制信号时要注意高低位一一对应,可用彩排线颜色来进行区分)
图2-3 基础模型机试验接线图
2. 写程序
方法一:联机读/写程序
方法二:手动写入
1) 先将机器指令对应微代码正确地写入28C16中,因为在试验1.7微程序控制器组成和微程序设计试验中已将微代码写入E2PR0M芯片中,对照表2-5校验正确后就可使用
2) 使用控制台WRITE和READ微程序进行机器指令程序装入和检验,其操作以下:
A. 使SIGNAL UNIT单元SP03为“STEP”状态,SP04为“RUN”状态,CONTROLUNIT开关SP05处于“NORM”状态,开关SP06处于“RUN” 状态
B. 拨动SWITCH单元总清开关CLR(1à0à1),微地址寄存器清零,程序计数器清零。然后使SWITCH单元SWB、SWA开关设置为“01”,按动一次CONTROLUNIT触动开关START,微地址显示灯显示“010001”,再按动一次START,微地址灯显示“010100”,此时数据开关内容置为要写入机器指令,按动两次START键后,即完成该条指令写入。若仔细阅读WRITE步骤,就不难发觉,机器指令首地址总清后为零,以后每个循环PC会自动加1。所以,每次按动START,只有在微地址灯显示“010100”时,才设置内容,直到全部机器指令写完
C. 校验。拨动SWITCH单元总清开关CLR(1à0à1),微地址清零。PC程序计数器清零,然后使SWITCH单元开关SWB、SWA为“00”,按动CONTROL UNIT触动开关START,微地址灯将显示“010000”,再按START,微地址灯显示为“010010”,第三次按START,微地址灯显示为“010111”,再按START后,此时OUTPUT单元数码管显示为该首地址中内容。不停按动START,以后每个循环PC会自动加1,可检验后续单元内容。每次在微地址灯显示为“010000”时,是将目前地址中机器指令写入到输出设备中显示
4、运行程序
方法一:联机运行程序
方法二:手动运行程序
1) 单步运行程序
A. 使CONTROL UNIT开关SP05处于“NORM”状态, SP06处于“RUN”状态,SIGNAL UNIT中SP03为“STEP”状态,SP04为“RUN”状态,SWITCH单元开关SWB、SWA为“11”
B. 拨动SWITCH单元总清开关CLR(1à0à1),微地址清零,程序计数器清零,程序首址为00H
C. 单步运行微指令,每按动一次CONTROL UNITSTART触动开关,即单步运行一条微指令。对照微程序步骤图2-2,观察微地址显示灯MA5-MA0是否和步骤一致
D. 当运行结束后,可检验运行结果是否和理论值一致。假如运行结果保留在RAM某一个单元中,则能够使用手动写入中校验方法将其读出
2) 连续运行程序
A. 使CONTROL UNIT开关SP05处于“NORM”状态, SP06处于“RUN”状态,SIGNAL UNIT中SP03为“RUN”状态,SP04为“RUN”状态,SWITCH单元开关SWB、SWA为“11”
B. 拨动SWITCH单元总清开关CLR(1à0à1),微地址及程序计数器清零,然后按动CONTROL UNITSTART触动开关,系统连续运行程序,稍后将SIGNAL UNIT中SP04拨至“STOP”时,系统停机
停机后,可检验运行结果是否正确。假如运行结果保留在RAM某一个单元中,则能够使用手动写入中校验方法将其读出
展开阅读全文