(3) 左右移位时,最高、最低位的移位输入信号设计
最高位的移位入出信号是RAM15和Q15, 最底位的移位入出信号是RAM0和Q0 ,它们都是由双向三态逻辑门电路实现的。在左移操作时,
RAM0和Q0可以作为输入端接收输入信号, 右移操作时, RAM15和Q15可以作为输入端接收输入信号。这些输入信号可以有O、C值(进位标志触发器)、Q15、/F15、RAM0、F15异或OVR,
Cy(ALU的进位输出)。从教学计算机的指令执行需要,可以按左、右移位区分出4种情况, 故用2位移位输入控制码SSH和左右移位命令加以区分,
具体规定如表2.18所示。
表2.18
最高、最低位的移位输入信号的形成逻辑

注: 表中的X表示不必处理、不必过问该位的取值;
当通用寄存器本身移位时, Q寄存器不受影响;
乘除运算要求实现通用寄存器与Q寄存器联合移位;没有Q寄存器单独移位功能。
本节(1)、(2)、(3)说明的功能是用两片小规模现场可编程器件GAL20V8实现的。该器件由与阵列和或阵列两级逻辑线路组成,最多有8个输出引脚,可以有12个或更多个输入引脚,能实现组合逻辑的输出,也能实现触发器逻辑输出。
教学计算机用1片GAL20V8(图纸上记为GAL1)实现状态标志寄存器,即本节的(1)中说明的功能,是触发器逻辑输出;它的逻辑表达式是依据表2.16给出的真值表直接写出来的,详细内容给出在表2.19中。表2.19中的B34、B33、B32是表2.16中的三位SST。
教学计算机用另1片GAL20V8(图纸上记为GAL3)提供最低位的进位输入信号,最高位和最低为的移位输入信号,即本节(2)和(3)中说明的功能,是组合逻辑输出。它的逻辑表达式是依据表2.17和表2.18给出的真值表直接写出来的,详细内容给出在表2.20中。表2.20中的B11、B10是表2.17中的SCi;B9、B8是表2.18中的SSH。MI7、MI5、MI4、MI3是图2.17中的I7、I5、I4、I3,即运算器所用的移位和运算功能控制信号。若把这两片器件的功能也示意表示出来,
就得到如图2.18所示的完整的运算器的组成框图及连线关系。
图2.18
完整的16位运算器的组成框图
表2.19 状态寄存器的实现逻辑
PLD20V8
STR(GAL1 20V8-25) 1994.1
Generate Program Status Word
1 2 3 4 5 6 7 8 9 10 11 12
CLK B34 B33 B32 IB7 IB6 IB5 IB4 Cy ZR OV GND
OE F3 NC NC C Z V S RAN0 RAM3 Q0 Vcc
C := / B34 * / B33 * / B32 * C ;0 保持原值, 送C
+ / B34 * / B33 * B32 * Cy ;1 接收运算结果Cy
+ / B34 * B33 * / B32 * IB7 ;2 从堆栈恢复原保存值
;3 CLC 清C为0
+ B34 * / B33 * / B32 ;4 STC 置C 为1
+ B34 * / B33 * B32 * RAM0 ;5 RCR 送 RAM0
+ B34 * B33 * / B32 * RAM3 ;6 RCL 送 RAM3
+ B34 * B33 * B32 *Q0 ;7 MUL 送乘数最低位
Z : = / B34 * / B33 * / B32 * Z ;0 保持原值
+ / B34 * / B33 * B32 * ZR ;1 接收运算结果
+ / B34 * B33 * / B32 * IB6 ;2 从堆栈恢复原保存值
+ / B34 * B33 * B32 * Z ;3 保持原值
+ B34 * Z ;4~7保持原值
V : = / B34 * / B33 * / B32 * V ;0 保持原值
+ / B34 * / B33 * B32 * OV ;1 接收运算结果
+ / B34 * B33 * / B32 * IB5 ;2 从堆栈恢复原保存值
+ / B34 * B33 * B32 * V ;3 保持原值
+ B34 * V ;4-7保持原值
S : = / B34 * / B33 * / B32 * S ;0 保持原值
+ / B34 * / B33 * B32 * F3 ;1 接收运算结果
+ / B34 * B33 * / B32 * IB4 ;2 从堆栈恢复原保存值
+ / B34 * B33 * B32 * S ;3 保持原值
+ B34 * S ;4-7保持原值
DESCRIPTION
表2.20
左 / 右移位信号和最低位进位信号的形成逻辑
PLD20V8 ;
SHLR(GAL3 20V8-25) 1994.1
Generate Am2901 Shift and Carry Signals
1 2 3 4 5 6 7 8 9 10 11 12
NC Mi7 B9 B8 B11 B10 MI5 MI4 MI3 Co OVER GND
TCLK2 C OV Cy RAM3 Q3 RAM0 Q0 NC Cin F3 Vcc
; 0 ADD instruction 0
Cin = /B11 * B10 * /MI5 * /MI4 * /MI3 ; 1 INC instruction
1
+ B11 * /B10 * /MI5 * /MI4 * /MI3 * C ; 2 ADC C
+ /B11 * /B10 * /MI5 * /MI4 * MI3 ; 0 SUB 1
+ /B11 * /B10 * /MI5 * MI4 * /MI3 ; 0 SUB 1
+ B11 * /B10 * /MI5 * /MI4 * MI3 * /C ; 2 SBB /C
+ B11 * /B10 * /MI5 * MI4 * /MI3 * /C ; 2 SBB /C
+ B11 * B10 * TCLK2 ; 3 TCLK2 (方波,用于测试)
; 1 DEC 0
Cy = Co * /MI5 * /MI4 * /MI3 ; ADD 原样送
+ /Co * /MI5 * /MI4 * MI3 ; SUB 取反送
+ /Co * /MI5 * MI4 * /MI3 ; SUB
; LOG 送0值
OV = /MI5 * MI4 * OVER ; ARI 送 OVER
+ /MI5 * /MI3 * OVER ; LOG 送0
; 0 SHR instruction 送0
RAM3 = /B9 * B8 * C ; 1 RCR instruction 送C
+ B9 * /B8 * Cy ; 2 ASR 送ALU进位出
+ B9 * B8 * F3 * /OVER ; 3 用于补码乘
+ B9 * B8 * F3 * OVER ; 3 F3 xor OVER
Q3 = B9 * RAM0 ; 2 乘法运算 逐位接收低位积
RAM0 = /B9 * B8 * C ; 0 SHL instruction 送0
+ B9 * /B8 * Q3 ; 1 RCL instruction 送 C
; 2 DIV 逐位接收低位被除数
Q0 = B9 * /B8 * /F3 ; 2 DIV 逐位接收上商值
Cin .OE = Vcc ; 总保持输出有效
Cy .OE = Vcc
OV .OE = Vcc
RAM3 .OE= /MI7 ; 右移位时,该信号输出有效,否则为高阻态
Q3 .OE= /MI7
RAM0 .OE= MI7 ; 左移位时,该信号输出有效,否则为高阻态
Q0 .OE= MI7
DESCRIPTION
|