资源描述
计算机组成原理课程设计实验报告
21
2020年4月19日
文档仅供参考,不当之处,请联系改正。
计算机组成原理
课程设计实验报告
计科0610
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 UNIT的CLR开关,使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 UNIT的CLR信号状态依次为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 UNIT的START触动开关,即单步运行一条微指令。对照微程序流程图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 UNIT的START触动开关,系统连续运行程序,稍后将SIGNAL UNIT中的SP04拨至“STOP”时,系统停机
停机后,可检查运行结果是否正确。如果运行结果保存在RAM的某一个单元中,则能够使用手动写入中的校验方法将其读出
展开阅读全文