计算机组成原理课程设计 实验四 简单模型机实验
实验7 简单模型机实验 一、实验目的 二、实验原理 三、实验内容及要求 四、实验步骤
一、实验目的 掌握微程序控制器的结构和工作原理。 掌握手动装入与修改程序的方法。 掌握联机装入与修改程序的方法。 掌握整机概念和程序的执行过程。
二、实验原理 1、简单模型机的系统结构 2、简单模型机的指令系统 3、简单模型机的微程序流程图 4、简单模型机的微指令地址分配 5、简单模型机的微代码 6、微代码装入方法 7、程序的机器码装入方法 8、启动程序执行
2、简单模型机的指令系统 (1)IN DR,PORTAR 功能:输入设备(开关)数据送DR,PORTAR为输入设备的端口地址。 11 I7 I6 I5 I4 I3 I2 I1 I0 11 0000 DR PORTAR (2)ADD DR, [ADDR] 功能:(DR)+[ADDR] →DR,结果影响标志;直接寻址,直接地址ADDR在指令第二字节。 I7 I6 I5 I4 I3 I2 I1 I0 11 0001 DR ADDR
2、简单模型机的指令系统 (3)STA [ADDR],DR 功能:DR→[ADDR];直接寻址,DR的内容送主存ADDR地址单元。 11 I7 I6 I5 I4 I3 I2 I1 I0 11 0010 DR ADDR (4)OUT [PORTAR],[ADDR] 功能:[ADDR]→LED;直接寻址,主存ADDR地址单元的内容送输出设备发光管显示。 I7 I6 I5 I4 I3 I2 I1 I0 11 0011 DR ADDR PORTAR
2、简单模型机的指令系统 (5)JMP ADDR 功能:ADDR→PC,程序跳转到主存ADDR地址继续执行。 11 0100 DR ADDR I7 I6 I5 I4 I3 I2 I1 I0 11 0100 DR ADDR
3、简单模型机的微程序流程图
控制台流程图
控制台操作 作用: 控制:开关KB、KA 写内存:手动从开关装入程序和数据→主存中 读内存:手动检查写入的程序和数据是否正确 执行程序:启动程序执行 控制:开关KB、KA 拨CLR开关“1→0→1”后,按START微动开关 KB KA 控制台指令 功能 10 读内存 对内存从0号单元开始连续进行读操作 01 写内存 对内存从0号单元开始连续进行写操作 00、11 启动程序 转入取指令微程序段入口开始执行
4、简单模型机的微指令地址分配 首先确定那些J1#~J5#微指令的下址字段,然后再确定它散转到的微指令的地址。 然后其他顺序执行的微指令就随意安排。 本实验中只涉及J1#和J3#。 “J1#”微指令的下址字段:10H “J3#”微指令的下址字段:08H
4、简单模型机的微指令地址分配 J1#=0时,根据指令的操作码(OP)I7~I4进行散转,产生该条指令的微程序入口地址。散转规则: MA6~MA0 = MA6~MA0 || 010I5I4I3I2 当I7I6≠11时(即指令格式1、2、3的指令) , MA6~MA0 = MA6~MA0 || 000I7I6I5I4
4、简单模型机的微指令地址分配 J3#=0时,根据开关KB、KA状态进行转移;主要用于控制台操作指令。散转规则: MA6~MA0 = MA6~MA0 || 00000KB KA
5、简单模型机的微代码 微地址 微代码 BTO OTB FUNC FS S3 - S0 M Ci N 下址 微指令注释 00H 01C008 000 011 1 000000 0001000 J(3) 01H DC4002 110 111 0000010 PC->AR,PC+1 02H 610003 010 0000011 RAM->IR 03H 00C010 001 0010000 J(1) 04H C10005 0000101 RAM->AR 05H 820001 100 0000001 IN->DR 06H C10007 0000111 07H 410020 0100000 RAM->DA2 08H 000001 NULL 09H DC400C 0001100 0AH C40E0F 001110 0001111 0->AR 0BH 0CH 21000D 0001101 RAM->DA1 0DH C40E0E 0001110
5、简单模型机的微代码 0EH 058109 000 001 011 000001 0001001 DA1->OUT 0FH 微地址 微代码 BTO OTB FUNC FS S3 - S0 M Ci N 下址 微指令注释 0EH 058109 000 001 011 000001 0001001 DA1->OUT 0FH 22001C 100 000000 0011100 IN->DA1 10H 0000000 NULL 1CH DC401D 110 111 1 0011101 PC->AR, PC+1 1DH 04BE0A 111110 0001010 DA1->RAM 20H 300021 0100001 DR->DA1 21H 87E501 100101 0000001 DA1+DA2->DR,CyNCn# 22H C10023 010 0100011 RAM->AR 23H 108001 DR->RAM 24H C10025 0100101 25H 210026 0100110 RAM->DA1
5、简单模型机的微代码 26H DC4027 110 111 000 1 000000 0100111 PC->AR, PC+1 微地址 微代码 BTO OTB FUNC FS S3 - S0 M Ci N 下址 微指令注释 26H DC4027 110 111 000 1 000000 0100111 PC->AR, PC+1 27H C10028 011 0000001 RAM->AR 28H 058101 001 000001 DA1->LED 29H 21002A 010 0101010 RAM->DA1 2AH E44101 RAM->PC 30H DC4004 0000100 PC->AR,PC+1 31H DC4006 0000110 32H DC4022 0100010 33H DC4024 0100100 34H DC4029 0101001
6、微代码装入方法 手动装入:通过24位微代码开关和7位微地址开关 联机装入:通过上位机(虚拟仿真)软件 上位机软件工作方式: 联机主控:可以通过软件来控制和动态显示指令在实验仪上执行过程;上下载程序、微程序 单步程序、单步微程序、连续执行、停止执行 联机从控:软件只用来上下载程序、微程序。 仿真方式:不使用实验仪,所有部件用软件模拟仿真实现。
7、程序的机器码装入方法 手动装入:执行控制台“写内存”操作,通过8位输入开关输入程序和数据 联机装入:通过上位机软件下载到实验仪内存
手动装入程序机器码 执行控制台“写内存”操作,通过8位输入开关输入程序和数据 将编程开关置于“RUN”状态,RUN#/STEP开关置于“STEP”状态。 操作CLR开关,使CLR信号“1→0→1”,程序计数器PC清零,微地址清零。 开关KBKA置为“0 1”,即写内存状态。
手动装入程序机器码 按动启动键START一次,则从控存00H单元开始执行微指令,微地址显示灯显示“0001010”,第二次按动START键,微地址显示灯显示“001111”,此时,将数据开关置为要写入的机器指令代码或数据,再按动START键两次,即完成该条指令的写入,同时PC指向下一个内存单元。继续按动START键,当且仅当微地址显示灯显示“0001111”时,才从开关上置入指令代码,直至所有的程序代码写入完毕。
手动校验程序机器码 执行控制台“读内存”操作,通过输出设备(8位LED显示灯)显示程序和数据代码 将编程开关置于“RUN”状态,RUN#/STEP开关置于“STEP”状态。 操作CLR开关,使CLR信号“1→0→1”,程序计数器PC清零,微地址清零。 开关KB KA置为“1 0”,即读内存状态。
手动校验程序机器码 按动启动键START一次,则从控存00H单元开始执行微指令,微地址显示灯显示“0001001”,第二次按动START键,微地址显示灯显示“0001100”, 第三次按动START键,微地址显示灯显示“0001101”, 第四次按动START键,微地址显示灯显示“0001110”,此时,输出设备(OUTPUT DEVICE)发光管上将显示内存00H号单元的内容,检查是否与写入的数据相同。 继续按动START键,当且仅当微地址显示灯显示“0001001”时,发光管上显示的内容才是内存的数据。每个循环PC会自动增1,由此,可检查后续单元的内容是否正确。
8、启动程序执行 脱机执行:执行控制台“启动程序”操作 联机执行: KB KA=00/11,编程开关(三态)= RUN 单步执行:RUN#/STEP=STEP 连续执行:RUN#/STEP=RUN# CLR信号“1→0→1”,使微地址清零,PC清零,即程序首址为00H 按动START键,单步执行(微指令)或者连续执行。 联机执行: 联机主控:通过软件控制 联机从控:同脱机执行的控制方法
使用上位机软件装入程序和微程序 主控模式下: 打开文件 下装 运行 后缀为.yyy 从上位机装程序和微程序到实验仪 KBKA=11/00,CLR=1-0-1,编程开关=RUN 运行
三、实验内容及要求 1、要求运行以下测试程序,观察程序执行的流程,并检验结果是否正确。 助记符 备注 IN R0,[00H] IN →R0 ADD R0,[10H] R0+[10H] → R0 STA R0,[10H] R0 → [10H] OUT [10H] ,[00H] [10H] → LED JMP 00H 00H→PC
测试程序机器代码 地址 内容 助记符 备注 00H 11000000B ;IN R0,[PORTAR] IN ->R0 01H ;ADD R0,[10H] R0+[10H]-> R0 03H 00010000B ;直接地址10H 04H 11001000B ;STA R0,[10H] R0->[10H] 05H ;直接地址 10H 06H 11001100B ;OUT [10H] ,[PORTAR] [10H]->LED 07H 08H 09H 11010000B ;JMP 00H 00H→PC 0AH ;直接地址00H …… 10H ;和 ;须检验的结果
三、实验内容及要求 2、将程序中的R0更换为R2,应如何修改? 3、若将微程序流程图中的“J1#”散转的微指令下址改为20H,会发生什么情况? 4、将指令系统5条指令的格式修改为格式 1 ,指令散转地址是多少? 5、如果指令OUT的功能修改为以下所示,则如何修改微程序流程图和微代码? I7 I6 I5 I4 I3 I2 I1 I0 (4)OUT [PORTAR],DR 功能:DR→LED; 11 0011 DR PORTAR
四、实验步骤 1、按图连接实验线路,并检查。 2、用串口线连接实验仪和微机。 3、运行上位机软件,选择相应串口,选择“联机主控”工作方式。 4、打开文件“简单模型机的设计与实现.yyy”,并下载。 5、实验仪清零(CLR开关),上位机清零(点击Clr按钮),实验仪KBKA=00/11。 6、单步或者连续运行程序。 7、检查结果是否正确。 8、若结果正确,使用“联机从控”工作方式实验。
连线图