Bit-Slice Design: Controllers and ALUs

by Donnamaie E. White

Copyright © 1996, 2001, 2002, 2008 Donnamaie E. White

 
 

Preface

Table of Contents

1. Introduction

2. Simple Controllers

3. Adding Programming Support to the Controller

4. Refining the CCU

5. Evolution of the ALU

6. The ALU and Basic Arithmetic

7. Tying the System Together

Glossary

 

 

Refining the CCU

Last Edit November 2, 1996; May 1, 1999; July 7, 2001


Control Lines

In addition to the four instruction lines into the Am2910, there are additional control lines which allow variations in the behavior of the standard Am2910 instructions.

Register Load

The RLD pin is the register load control pin and is normally held HIGH. When RLD = LOW, whatever is on the Di bus is loaded into the register/counter. The RLD pin allows the continue (CONT) instruction to become "Load Register and Continue", the same as the existing LDCT command. It also allows a JMAP instruction to become a "Load Register and Jump Map", which could be useful if fail-soft procedures are desirable. (Selected instructions could be re-executed on recovery.)

Note that this "feature" could also lead to problems. Misuse, such as holding RLD LOW during Repeat Loop from Pipeline Until <COUNTER> = 0 (RPCT), could lead to infinite loops. RLD should not be LOW during any instruction loop where the counter or register is being used. This includes RFCT, RPCT and TWB loops.

Test Enable

The test pin, CC' (active LOW), is the input from the conditional test MUX, an Am2914 or other structure. All conditional instructions reference this pin. The test enable, CCEN', if held HIGH, causes all conditional instructions to become unconditional instructions, behaving as if the CC input were LOW (condition = TRUE) and forcing the appropriate jump. This affects nine instructions (see Table 4-2).

CCEN can be supplied by the microinstruction or it could be tied to one of the instruction lines into the Am2910.

Table 4-2 Effect of CCEN = HIGH (CCEN is a complemented pin)

Original
Instructions
New
Behavior
New
Instructions
CJP Jump to Pipeline JPL
CJPP Jump to Pipeline and POP stack JPP
CJS Jump to Subroutine JSUB
CJV Jump to Vector JVECT
CRTN Return RTRN
JSRP Jump to Subroutine (same as CJS) JSUB
LOOP POP stack and continue POP
PUSH PUSH, load counter and continue PCNTR
TWB POP stack and continue(same as LOOP) POP

Carry In

There is a carry-in Cin pin which is normally held HIGH. Then Cin = LOW, the incrementer does not increment, holding the microprogram in a one-statement loop. To avoid infinite looping, the Cin pin, if controlled, must not be controlled via the pipeline register. It must be controlled by independent hardware. The Cin pin can be used to hold a program at a NOP or similar instruction until some external signal triggers the control circuit to allow Cin to go HIGH.

Stack and Enable

There is a five-deep stack onboard the Am2910 which, unlike the Am2909/11 stack, will not "wrap around". The behavior of the Am2910 should be considered to be undefined under stack misuse. A pin is provided that can be used during initial design and/or debug which allows the stack to be tested. FULL goes LOW to indicate when five items have been pushed onto the stack without any intermittent pops.

The tristated control OE pin allows the Am2910 to share a bus with other devices, including other Am2910s.

 

For information about this file or to report problems in its use email donnamaie@sbcglobal.net
Copyright © September 1996, 1999, 2001, 2008 Donnamaie E. White WhitePubs Enterprises, Inc.