目录
常用表
指令格式表:
MOV~INC和HALT为单字长指令,占8位;其余指令为双字节字长,占16位,其中数据D占8位。若内存按字节编址,则单字长指令占一个内存单元,双字节字长占两个内存单元,其中数据D单独占一个内存单元。
数据通路图:
红框内是CPU。
微指令格式表:
微程序流程图:
蓝色数字代表微指令地址,可查微指令表。
微指令表:
每条微指令共24位,可查微指令格式表查各bit位功能。
运算器功能表:
用于查看微指令的S3-S0代表了什么运算功能。
实例
ADD R1,R3
对应机器码为0000 1101,查指令格式表可知其功能为R3+R1->R3。
看微程序流程图,首先是空操作NOP,然后是PC送AR,PC+1,即PC将ADD R1,R3的指令地址送AR,AR再送MEM,随后PC+1。
接着来到MEM->IR,对应的微指令地址为03H。查微指令表,找到微指令
00010 0000 111 000 001 110000
查微指令格式表,高5位中的1是RD,即读MEM命令,在读写控制逻辑电路中模拟:
XMRD有效,则ADD R1,R3指令对应的机器码从MEM中流到数据总线。
再看微指令的A字段和C字段,查微指令格式表,A字段(111)功能为LDIR,C字段(001)功能为P<1>。
查数据通路图,找到LDIR,功能为T3节拍来时把数据总线中的数据送入IR,也就是把ADD R1,R3的机器码(0000 1101)送入IR。
C字段功能P<1>是分支判断,在指令译码电路中模拟:
P<1>低电平有效,I2~I7来自机器码0000 1101的2~7位,输出为SE0~SE4有效,再在D触发器改变微地址电路中模拟:
SE4~SE0来自刚才指令译码电路的输出结果,SE5和中断有关,这里置零即可,uA5~uA0来自微指令的末6位,输出地址为110000,即30H,也就是说下一条微指令地址为30H,微程序流程图中ADD的执行流程也和我们的预期一致。
在微指令表中找到30H对应的微指令:
00000 0000 001 011 000 000100
查微指令格式表,A字段功能为LDA,在数据通路图中找到LDA,功能为T4节拍来时将数据总线上的数据送入寄存器A。
B字段功能为RD_B,在寄存器译码电路中模拟:
RD_B高有效,I0~I3来自机器码0000 1101的0~3位,输出为R1_B有效。
在数据通路图中找到R1_B,功能为T4节拍来时将R1中的数据送入数据总线,再结合字段A的功能,可知该微指令作用为将R1的内容送入寄存器A。
后继地址为000100,即04H,在微指令表中找到对应的微指令:
00000 0000 010 010 000 000101
查微指令格式表,A字段功能为LDB,在数据通路图中找到LDB,即往寄存器B中送数据。
B字段功能为RS_B,在寄存器译码电路中模拟:
RS_B低有效,I0~I3来自机器码0000 1101的0~3位,输出为R3_B有效。
在数据通路图中找到R3_B,功能为T4节拍来时将R3中的数据送入数据总线,再结合字段A的功能,可知该微指令作用为将R3的内容送入寄存器B。
后继地址为000101,即05H,在微指令表中找到对应的微指令:
00000 1001 011 001 000 000001
S3~S0为1001,查运算器功能表可知为加法运算。
查微指令格式表,A字段功能为LDRi,在寄存器译码电路中模拟:
LDRi高有效,I0~I3来自机器码0000 1101的0~3位,输出为LDR1有效。
在数据通路图中找到R3_B,功能为T4节拍来时将数据总线中的数据送入R1。
B字段功能为ALU_B,查数据通路图可知功能为将ALU运算结果送入数据总线,再结合S3~S0和字段A,可知该微指令功能为将寄存器A和寄存器B中数据的和送入R1。
后继地址为000001,由微程序流程图可知又回到了PC送AR,然后PC+1的环节,即开始执行下一条指令,ADD R1,R3指令执行结束。