1、计算机组成原理课程设计实验报告计算机组成原理课程设计实验报告 李伟26号2008-12-24目录一、实验目的1二、实验设备1三、实验原理11. 微程序控制电路12、微指令格式13、五条机器指令14、微程序流程图1四、实验步骤11、连接实验线路12、观察微程序控制器的工作原理:13、根据指令系统编写程序14、运行程序1五、心得体会1一、试验目标1. 掌握微程序控制器组成原理2. 掌握微程序编制、写入,观察微程序运行3. 在“微程序控制器组成和微程序设计试验”基础上,将第一部分中各单元组成系统,结构一台基础模型计算机。4. 依据定义五条机器指令,编写对应微程序,并运行,形成整机概念二、试验设备ZY
2、15Comp12BB计算机组成原理教学试验系统一台,排线若干Pc机一台三、试验原理试验所用时序电路原理能够参考时序试验。因为时序电路内部线路已经连好(时序电路CLR已接到试验板中下方CLR清零开关上),所以只需将时序电路和方波信号源连接即可。1. 微程序控制电路微程序控制器组成见图1-13。其中控制存放器采取3片2816 E2PR0M,含有掉电保护功效。微命令寄存器18位,用两片8D触发器(74LS273)和一片4D(74LS175)触发器组成。微地址寄存器6位,用三片上升沿触发双D触发器(74LS74)组成,它们带有清“0”端和置“1”端。在不进行判别测试情况下,T2时刻打入微地址寄存器内容
3、即为下一条微指令地址。当T4时刻进行判别测试时,转移逻辑满足条件后输出负脉冲经过强置端将某一触发器设置为“1”状态,完成地址修改。在该试验电路中,在CONTROL UNIT有一个编程开关SP06,它含有三种状态:WRITE(编程)、READ(校验)、RUN(运行)。当处于“编程状态”时,试验者可依据微地址和微指令格式将微指令二进制代码写入到控制存放器2816中。当处于“校验状态”时,能够对写入控制存放器中二进制代码进行验证,从而能够判定写入二进制代码是否正确。当处于“运行状态”时,只要给出微程序入口微地址,则可依据微程序步骤图自动实施微程序。图中微地址寄存器输出端增加了一组三态门74LS245
4、,目标是隔离触发器输出,增加抗干扰能力,并用来驱动微地址显示灯。2、微指令格式微指令字长24位,其控制位次序以下:其中uA5一uA0为6位后续微地址,A、B、P为三个译码字段,分别由三个控制位译码出多位。P字段中Pl一P4是四个测试字位。其功效是依据机器指令及对应微代码进行译码,使微程序转入对应微地址入口,从而实现微程序次序、分支、循环运行。AR为算术运算是否影响进位及判零标志控制位,其为零有效。B字段中RS_G、RD_G、RI_G分别为源寄存器选通信号、目标寄存器选通信号及变址寄存器选通信号,其功效是依据机器指令来进行三个工作寄存器R0、R1及R2选通译码控制器试验原理图3、五条机器指令其指
5、令格式以下:助记符机器指令码说明IN00000000XXXX XXXX输入,“INPUT”设备中开关状态R0ADD addr00010000 XXXX XXXX二进制加法,R0addrR0STA addr00100000XXXX XXXX存数,R0addrOUT addr00110000XXXX XXXX输出,addrBUSJMP addr01000000XXXX XXXX 无条件转移,addrPC机器指令码前4位为操作码。其中IN为单字长,其它为双字长指令,XXXXXXXX为addr对应二进制地址码为了向RAM中装入程序和数据,检验写入是否正确,并能开启程序实施,还必需设计三个控制台操作微程
6、序 存放器读操作(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,当确定“取指令”微指令时,该微指令判别测试字
7、段为P1测试。因为“取指令”微指令是全部微程序全部使用公用微指令,所以P1测试结果出现多路分支。本机用指令寄存器高4位(I7I4操作码)作为测试条件,出现5路分支,占用5个固定微地址单元控制台操作为P4测试,它以控制台开关SWB、SWA作为测试条件,出现了3路分支,占用3个固定微地址单元。当分支微地址单元固定后,剩下其它地方就能够一条微指令占用一个微地址单元随意填写当全部微程序设计完成后,应将每条微指令代码化,表2-2即为将图2-2微程序步骤图按微指令格式转化而成“二进制微代码表”本系统有两种外部I/O设备,一个是二进制数码开关,作为输入设备(INPUT);另一个是两位十六进制数LED数码管,
8、作为输出设备(OUTPUT UNIT)。在输入时,二进制开关数据直接经过三态门送到总线上。只要开关状态不变,输入信息也不变。输出时,将输出数据送到数据总线上,当写信号(WE)有效时,将数据打入输出锁存器,驱动数码块显示微程序步骤图表2-2 二进制代码表微地址S3CNRD M17M16ABPuA5uA0000 0 0 0 0 001 10 0 00 0 01 0 00 1 0 0 0 0010 0 0 0 0 001 11 1 01 1 01 1 00 0 0 0 1 0020 0 0 0 0 000 11 0 00 0 00 0 10 0 1 0 0 0030 0 0 0 0 000 11 1
9、 00 0 00 0 00 0 0 1 0 0040 0 0 0 0 000 10 1 10 0 00 0 00 0 0 1 0 1050 0 0 0 0 001 10 1 00 0 10 0 00 0 0 1 1 0061 0 0 1 0 101 10 0 11 0 10 0 00 0 0 0 0 1070 0 0 0 0 000 11 1 00 0 00 0 00 0 1 1 0 1100 0 0 0 0 000 10 0 10 0 00 0 00 0 0 0 0 1110 0 0 0 0 001 11 1 01 1 01 1 00 0 0 0 1 1120 0 0 0 0 001 11
10、1 01 1 01 1 00 0 0 1 1 1130 0 0 0 0 001 11 1 01 1 01 1 00 0 1 1 1 0140 0 0 0 0 001 11 1 01 1 01 1 00 1 0 1 1 0150 0 0 0 0 010 10 0 00 0 10 0 00 0 0 0 0 1160 0 0 0 0 000 11 1 00 0 00 0 00 0 1 1 1 1170 0 0 0 0 000 10 1 00 0 00 0 00 1 0 1 0 1200 0 0 0 0 001 11 1 01 1 01 1 00 1 0 0 1 0210 0 0 0 0 001 11
11、 1 01 1 01 1 00 1 0 1 0 0220 0 0 0 0 000 10 1 00 0 00 0 00 1 0 1 1 1230 0 0 0 0 001 10 0 00 0 00 0 00 0 0 0 0 1240 0 0 0 0 000 10 1 00 0 00 0 00 1 1 0 0 1250 0 0 0 0 111 10 0 01 0 10 0 00 0 0 0 0 1260 0 0 0 0 000 11 0 10 0 01 1 00 0 0 0 0 1270 0 0 0 0 111 10 0 01 0 10 0 00 1 0 0 0 0300 0 0 0 0 110 1
12、0 0 01 0 10 0 00 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二进制模拟开关设置微地址UA5UAD. 在MICRO CONTROL单元开关SM24SM01上设置微代码,24位开关对应24位显
13、示灯,开关量为“1”时灯亮,开关量为“0”时灯灭E. 开启时序电路(按动CONTROL UNIT “START” 触动开关),立即微代码写入到E2PR0M 28C16对应地址对应单元中F. 反复CE步骤,将表1-5微代码写入28C162) 校验A. 将CONTROL UNIT编程开关SP06设置为READ(校验)状态B. 将试验板“SIGNAL UNIT”中“SP03”开关设置为“STEP”状态,“SP04”开关设置为“RUN”状态C. 用SWITCH UNIT二进制开关设置要检验微地址UA5UA0D. 按动CONTROL UNIT“START” 触动开关,开启时序电路,读出微代码,观察MIC
14、RO CONTROL单元显示灯LM24LM01状态(灯亮为“1”,灭为“0”),检验读出微代码是否和写入相同。假如不一样,则将开关置于“WRITE”编程状态,重新实施(1)即可3) 单步运行A. 将CONTROL UNIT编程开关SP06置于“RUN(运行)”状态B. 将试验板“SIGNAL UNIT”中“SP03”开关设置为“STEP”状态,“SP04”开关设置为“RUN”状态C. 操作SWITCH UNITCLR开关,使CLR信号状态依次为101,将微地址寄存器74LS74(1)74LS74(3)清零,从而明确本机运行入口微地址为000000(二进制)D. 按动CONTROL UNIT “
15、START”触动开关,开启时序电路,则每按动一次“START”键,读出一条微指令后停机,此时试验台上微地址显示灯和微命令显示灯将显示所读出一条指令注:在目前条件下,将“MICRO CONTROL”单元SE6SE1接至“SWITCH”中UA5UA0对应二进制开关上,可经过强置端SE6SE1人为设置分支地址。首先将SE6SE1对应二进制开关设置为“1”,当需要人为设置分支地址时,将需要改变某个或多个二进制开关设置“0”,对应微地址位即被强置为“1”,从而改变下一条微指令地址。(二进制开关设置为“0”,对应微地址位将被强置为“1”)4) 连续运行A. 将CONTROL UNIT编程开关SP06设置为
16、“RUN(运行)”状态B. 将试验板SIGNAL UNIT中开关“SP03”、“SP04”设置为“RUN”状态C. 使SWITCH UNITCLR信号状态依次为101,此时微地址寄存器清“0”,从而给出取指微指令入口地址为000000(二进制)D. 开启时序电路,即按一下CONTROL UNIT “START”键,则可连续读出微指令,并根据微指令存放器(28C16)中微程序连续运行E. 假如要退出连续运行状态,可将SIGNAL UNIT中SP04开关拨动到“STOP”位置3、依据指令系统编写程序参考程序一:本程序从输入设备(数码开关)取入数据,保留在内存单元08,然后从08单元送到输出设备(L
17、ED数码管)进行显示。然后程序停止(请试验者考虑:怎样修改程序,使程序不停从输入设备取出数据,送到输出设备显示。每次循环过程中,能够使输入设备数据改变,考察输出显示结果)设计机器指令程序以下(机器码和地址为十六进制数据)地址内 容助记符说 明0000IN输入开关数据R00120STA08HR0080208地址0330OUT08H08H BUS0408地址0540JMP00H00HPC0600跳转地址参考程序二:本程序从输入设备(数码开关)读入数据,和0A单元数据相加,然后送到输出设备(LED数码管)进行显示。本程序不停地循环运行,在运行中可改变输入开关(INPUT)值,观察输出显示改变设计机器
18、指令程序以下(机器码和地址为十六进制数据)地址内容助记符说明0000IN输入开关数据R0,采集数据0110ADD0AHR00AHR0,输入数据和指定数据相加020A地址0320STA0BHR00B040B地址0530OUT0BH0BH BUS,输出显示060B地址0740JMP00H00HPC0800跳转地址0A01加数,可自定0B求和结果保留在0B单元1. 按图2-3连接试验线路(图中箭头表示需要接线地方,接总线和控制信号时要注意高低位一一对应,可用彩排线颜色来进行区分)图2-3 基础模型机试验接线图2. 写程序方法一:联机读/写程序方法二:手动写入1) 先将机器指令对应微代码正确地写入28
19、C16中,因为在试验1.7微程序控制器组成和微程序设计试验中已将微代码写入E2PR0M芯片中,对照表2-5校验正确后就可使用2) 使用控制台WRITE和READ微程序进行机器指令程序装入和检验,其操作以下:A. 使SIGNAL UNIT单元SP03为“STEP”状态,SP04为“RUN”状态,CONTROLUNIT开关SP05处于“NORM”状态,开关SP06处于“RUN” 状态B. 拨动SWITCH单元总清开关CLR(101),微地址寄存器清零,程序计数器清零。然后使SWITCH单元SWB、SWA开关设置为“01”,按动一次CONTROLUNIT触动开关START,微地址显示灯显示“0100
20、01”,再按动一次START,微地址灯显示“010100”,此时数据开关内容置为要写入机器指令,按动两次START键后,即完成该条指令写入。若仔细阅读WRITE步骤,就不难发觉,机器指令首地址总清后为零,以后每个循环PC会自动加1。所以,每次按动START,只有在微地址灯显示“010100”时,才设置内容,直到全部机器指令写完C. 校验。拨动SWITCH单元总清开关CLR(101),微地址清零。PC程序计数器清零,然后使SWITCH单元开关SWB、SWA为“00”,按动CONTROL UNIT触动开关START,微地址灯将显示“010000”,再按START,微地址灯显示为“010010”,第
21、三次按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(10
22、1),微地址清零,程序计数器清零,程序首址为00HC. 单步运行微指令,每按动一次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(101),微地址及程序计数器清零,然后按动CONTROL UNITSTART触动开关,系统连续运行程序,稍后将SIGNAL UNIT中SP04拨至“STOP”时,系统停机停机后,可检验运行结果是否正确。假如运行结果保留在RAM某一个单元中,则能够使用手动写入中校验方法将其读出