实验七基本模型机的设计与实现一实验目的(1) 在掌握部件单元电路实验的基础上,进一步将其组成系统,构造一台基本模型计算机。
(2) 为其定义五条机器指令,并编写相应的微程序,具体上机调试掌握整机概念二实验设备TDN—CM++计算机组成原理教学实验系统一台,排线若干。
三实验内容1) 实验原理部件实验过程中,各部件单元的控制信号是人为模拟产生的,而本次实验将能在微程序控制下自动产生各部件单元控制信号,实现特定指令的功能。
这里,计算机数据通路的控制将由微程序控制器来完成,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期全部由微指令组成的序列来完成,即一条机器指令对应一个微程序。
本实验采用五条机器指令:IN(输入),ADD(二进制加法),STA(存数),OUT(输出),JMP(无条件转移)。
其指令格式如下(前4位为操作码):助记符机器指令码说明IN 00000000 “INPUT DEVICE”中的开关状态→R0ADD addr 0001 0000 ××××××××R0+[addr] →R0STA addr 0010 0000 ××××××××R0 →[addr]OUT addr 0011 0000 ××××××××[addr] →LEDJMP addr 0100 0000 ××××××××addr →PC其中::IN为单字长(8位),其余为双字长指令,××××××××为addr对应的二进制地址码。
为了向RAM中装入程序和数据,检查写入是否正确,并能启动程序执行,还必须设计三个控制台操作微程序。
* 存储器读操作(KRD):拨动总清开关CLR后,控制台开关SWB、SWA为“0 0”时,按START微动开关,可对RAM连续手动读操作。
* 存储器写操作(KWE):拨动总清开关CLR后,控制台开关SWB、SWA置为“0 1”时,按START微动开关可对RAM进行连续手动写入。
* 启动程序:拨动总清开关CLR后,控制台开关SWB、SWA置为“1 1”时,按START 微动开关,即可转入到第01号“取址”微指令,启动程序运行。
上述三条控制台指令用两个开关SWB,SWA的状态来设置,其定义如表4所示。
表4 控制台的开关设置SWB SWA 控制台指令0 0 1 011读内存(KRD)写内存(KWE)启动程序(RP)根据以上要求,可设计数据通路框图,如图19所示。
微指令定义如表4所示。
系统涉及到的微程序流程如图21所示。
当拟定“取指”微指令时,该微指令的判别测试字段为P(1)测试。
由于“取指”微指令是所有微程序都使用的公用微指令,因此P(1) 的测试结果出现多路分支。
本机用指令寄存器的前4位(IR7一IR4)作为测试条件,出现5路分支,占用5个固定微地址单元。
控制台操作为P(4)测试,它以控制台开关SWB,SWA作为测试条件,出现了3路分支,占用3个固定微地址单元。
当分支微地址单元固定后,剩下的其他地方就可以一条微指令占用控存一个微地址单元随意填写。
注意:微程序流程图上的单元地址为8进制。
当全部微程序设计完毕后,应将每条微指令代码化,表5即为将图21的微程序流程图按微指令格式转化而成的“二进制微代码表”。
图19 数据通路框图下面介绍指令寄存器(IR):指令寄存器用来保存当前正在执行的一条指令。
当执行一条指令时,先把它从内存取到缓冲寄存器中,然后再传送至指令寄存器。
指令划分为操作码和地址码字段,由二进制数构成,为了执行任何给定的指令,必须对操作码进行测试[P(1)],通过节拍脉冲T4的控制以便识别所要求的操作。
“指令译码器”(实验板上标有“INS DECODE”的芯片)根据指令中的操作码译码强置微控器单元的微地址,使下一条微指令指向相应的微程序首地址。
本系统有两种外部I/O设备,一种是二进制代码开关,它作为输入设备(INPUT DEVICE):另一种是数码块,它作为输出设备(OUTPUT DEVICE)。
例如:输入时,二进制开关数据直接经过三态门送到总线上,只要开关状态不变,输入的信息也不变。
输出时,将输出数据送到数据总线上,当写信号(W/R)有效时,将数据打入输出锁存器,驱动数码块显示。
本实验设计机器指令程序如下:地址(二进制) 内容(二进制) 助记符说明0000 0000 0000 0000 IN R0 “INPUT DEVICE”→R00000 0001 0001 0000 ADD [0AH],R0 R0+[0AH] →R00000 0010 0000 10100000 0011 0010 0000 STA R0,[0BH] R0→[0BH]0000 0100 0000 10110000 0101 0011 0000 OUT [0BH] [0BH] →LED0000 0110 0000 10110000 0111 0100 0000 JMP 00H 00H→PC0000 1000 0000 00000000 10010000 1010 0000 0001 自定0000 1011 求和结果四实验步骤(1) 按图20连接实验线路。
图20 基本模型机实验接线图(2) 写程序方法一:手动写入①先将机器指令对应的微代码正确地写入2816中,由于在微程序控制实验中已将微代码写入E2PROM芯片中,对照表5校验正确后就可使用。
②使用控制台KWE和KRD微程序进行机器指令程序的装入和检查。
A.使编程开关处于“RUN",STEP为“STEP”状态,STOP为“RUN”状态。
B.拨动总清开关CLR(0→1),微地址寄存器清零,程序计数器清零。
然后使控制台SWB,SWA 开关置为“01”,按动一次启动开关START ,微地址显示灯显示“010001”,再按动一次START ,微地址灯显示“010100"。
此时,数据开关的内容置为要写入的机器指令,按动两次START 键后,即完成该条指令的写入。
若仔细阅读KE 的流程,就不难发现,机器指令的首地址总清后为零,以后每个循环PC 会自动加1,所以,每次按动START ,只有在微地址灯显示“010100”时,才设置内容,直到所有机器指令写完。
C .写完程序后须进行校验。
拨动总清开关CLR(0→1)后,微地址清零。
PC 程序计数器清零,然后使控制台开关SWB ,SWA 为“00”,按动启动START ,微地址灯将显示“010000”;再按START ,微地址灯显示为“010010";第3次按START ,微地址灯显示为“010111”,再按START 后,此时输出单元的数码管显示为该首地址中的内容。
不断按动START ,以后每个循环PC 会自动加1,可检查后续单元内容。
每次在微地址灯显示为“010000”时,是将当前地址中的机器指令写入到输出设备中显示。
方法二:联机读/写程序按照规定格式,将机器指令及表5微指令二进制表编辑成十六进制的如下格式文件。
微指令格式中的微指令代码为将表5中的24位微代码按从左到右分成3个8位,将此3个8位二进制代码化为相应的十六进制数即可。
程序$P4000 $P4110 $P420A $P4320 $P440B $P4530 $P460B $P4740 $P4800 $P4A01 微程序 $M00018110 $M0901ED83 $M1200A017 $M0101ED82 $M0A0IED87 $M13018001 $M0200C048 $M0B01ED8E $M14002018 $M0300E004 $M0C01ED96 $M15070A01 $M0400B005 $N0D028201 $M1600D181 $M0501A206 $M0E00E00F $M17070A10 $M06959A01 $M0F00A015 $M18068A11 $M0700E00D$M1001ED92 $M18068A11$M08001001$M1101ED94用联机软件的传送文件功能(F4)将该格式文件传入实验系统即可,(3) 运行程序(A) 单步运行程序①使编程开关处于“RUN ”状态,STEP 为“STEP ”状态,STOP 为“RUN ”状态。
②拨动总清开关CLR(0→1),微地址清零,程序计数器清零。
程序首址为00H 。
③单步运行一条微指令,每按动一次START 键,即单步运行一条微指令。
对照微程序机器指令格式说明:$P ××××机器指令代码十六进制地址微指令格式说明:$M ××××××微指令代码十六进制地址流程图,观察微地址显示灯是否和流程一致。
④当运行结束后,可检查存数单元(0BH)中的结果是否和理论值一致。
(B) 连续运行程序①使“STATE UNIT”中的STEP开关置为“EXEC”状态。
STOP开关置为“RUN”状态。
②拨动CLR开关,清微地址及程序计数器,然后按动START,系统连续运行程序,稍后将STOP拨至“STOP”时,系统停机。
③停机后,可检查存数单元(0BH)结果是否正确。