图2-9-1
2.9.3.2 设计指令系统
本实验平台内采用的是8位数据总线和8位地址总线方式,在设计指令系统时,应考虑有哪几种类型的指令,哪几种寻址方式和编码方式。 2.9.3.2.1 指令类型:
1、算术/逻辑运算类指令:
如:加法、减法、取反、逻辑运算 ADD A,Ri,SUB A,Ri 2、移位操作类指令:
带进位或不带进位的移位指令。 RRC A,RR A 3、数据传送类指令:
CPU内部寄存器之间数据传递 MOV A,Ri MOV Ri,A 4、程序跳转指令
跳转指令分为无条件跳转指令和有条件跳转指令。可根据寄存器内容为零来标志(ZD)、有无进位来标志(CY),也可根据用户自定义标志。
JMP addr 无条件跳转 JZ addr ZD=0 时跳转 JC addr CY=0 时跳转 JN addr 自定义 5、存储器操作类指令
存储器读/写指令。把内存某单元内容写入寄存器中或把寄存器中的内容写入存储器。如:
LDA addr (addr)->A STA addr (A)->addr
2.9.3.2.2 操作数寻址方式及编码 1、直接地址寻址:
如:双字节指令
LDA addr (addr)->A STA addr (A)->addr
第1字节 第2字节 I7 I6 I5 I4 I3 I2 I1 I0 A7 A6 A5 A4 A3 A2 操作码 操作数地址addr A1
2、寄存器直接寻址:
指令字节中含有寄存器选择码,决定选哪个寄存器进行操作。 如:单字节指令
MOV A,Ri (Ri)->A 单字节 I7 I6 I5 I4 I3 操作码与Ri选择码
I2 I1 I0 如:双字节指令
MOV Ri,#data data->Ri
第1字节 第2字节 I7 I6 I4 I3 I2 I1 I0 D7 D6 D5 D4 D3 D2 D1 D0 操作码及Ri选择码 data
3、寄存器间接寻址
如:单字节指令:
MOV A,@Ri (Ri)->A Ri选择码 I7 I6 I5 I4 I3 操作码
I2 I1 I0
4、立即数寻址
如: MOV A,#data data->A
MOV Ri,#data data->Ri
第1字节 第2字节 I4 I3 I2 I1 I0 D7 D6 D5 D4 D3 D2 D1 D0 操作码及Ri选择码 data I7 I6 I5 2.9.4 设计微程序及其实现方法 在本实验平台的硬件设计中,采用24位微指令,若微指令采用全水平不编码纯控制场的格式,那么至多可有24个微操作控制信号,可由微代码直接实现。如果采用多组编码译码,那么24位微代码通过二进制译码可实现2 n个互斥的微操作控制信号。 由于模型机指令系统规模较小,功能也不太复杂,所以采用全水平不编码纯控制场的微指令格式。在模型机中,用指令操作码的高4位作为核心扩展成8位的微程序入口地址 MD0~MD7,这种方法称为“按操作码散转”(如下表所示)。
MD7 0 MD6 0 MD5 I7 微程序首地址形成 MD4 MD3 I6 I5 MD2 I4 MD1 1 MD0 1 按操作码散转 指令操作码 微程序首地址 I4 MD1、MD0 MD7~MD0 MD7、MD6 I7 I6 I5 0 0 0 0 0 1 003H 0 0 0 0 1 1 007H 0 0 0 1 0 1 00BH 0 0 0 1 1 1 00FH 0 0 1 0 0 1 013H 0 0 1 0 1 1 017H 0 0 1 1 0 1 01BH 0 0 1 1 1 1 01FH 0 1 0 0 0 1 023H 0 1 0 0 1 1 027H 0 1 0 1 0 1 02BH 0 1 0 1 1 1 02FH 0 1 1 0 0 1 033H 0 1 1 0 1 1 037H 0 1 1 1 0 1 03BH 0 1 1 1 1 1 03FH 每条指令由不超过4条的微指令组成,那么可根据下表组成每条微程序的首地址。微指令的运行顺序为下地址确定法,即采用计数增量方法,每条微指令执行过后微地址自动加1,指向下一条微指令地址。例如:确定了一条程序的微程序入口地址为07H,那么当执行完07H这条微指令后微地址加1,指向08H微地址。微地址寄存器由2片74LS161组成,当模型机在停止状态下,微地址被清零。当实验平台开始运行时,微地址从00H开始运行。且00H放置一条取指指令,根据程序开始地址从内存中读出第一条指令。 00 取指微指令 01 02 03 减法指令微程序(1) 04 减法指令微程序(2) 05 06 07 MOV指令微程序(1) 08 MOV指令微程序(2) 09 MOV指令微程序(3) 0A 0B 0C 0D 0E 0D 。。。 。。。
2.9.5 设计实验平台运行中时序安排
由于模型机已经确定了指令系统,微指令采用全水平不编码纯控制场的格式,微程序的入口地址采用操作码散转方式,微地址采用计数增量方式,所以可确定模型机中时序单元中所产生的每一拍的作用。
在本实验中为了让实验者更好地观察实验的各个中间过程中各寄存器的值,由监控单元产生一个PLS-O的信号来控制时序产生(如图2-9-2)。PLS-O信号经过时序单元的处理产生了4个脉冲信号。4个脉冲信号组成一个微周期,为不同的寄存器提供工作脉冲。
图2-9-2
PLS1: 微地址寄存器的工作脉冲,用来设置微程序的首地址及微地址加1。 PLS2: PC 计数器的工作脉冲,根据微指令的控制实现PC 计数器加1和重置PC 计数器(跳转指令)等功能。
PLS3: 把24位微指令打入3片微指令锁存器。
PLS4: 把当前总线上的数据打入微指令选通的寄存器中。
2.9.6 设计指令执行流程 根据模型机整机逻辑图和目前硬件条件来设计指令系统中每条指令的执行流程。在每个系统中,一条指令从内存取出到执行完毕,需要若干个机器周期,任何指令中都必须有一个机器周期作为“取指令周期”,称为公操作周期。而一条指令共需几个机器周期取决于指令在机器内实现的复杂程度。
对于微程序控制的计算机,在设计指令执行流程时,要保证每条微指令所含的微操作的必要性和合理性,还应知道总线IAB,IDB,OAB,ODB仅是传输信息的通路,没有寄存信息的功能,而且必须保证总线传输信息时信息的唯一性。 以下描述取指微指令执行过程:
在模型机处于停机状态时,模型机的微地址寄存器被清零,微指令锁存器输出无效(为高)。在处于停机状态时,脉冲PLS1对微地址寄存器(74LS161)无效,微地址寄存器保持为零。脉冲PLS2对PC 计数器无效,同时PLS2把HALT=1打入启停单元中的运行状态寄存器(74LS74)中,把模型机置为运行状态,使微程序锁存器输出有效。PLS3把微程序存储器00H单元(00H单元存放着取指微指令)中的内容打入微指令锁存器中,并且输出取指微指令。PLS4把从程序存储器中读出的数据打入指令寄存器中。
在模型机处于运行状态时,脉冲PLS1将微地址寄存器(74LS161)加1,脉冲PLS2