(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