INNOVASIC IA2910A

Page 1 of 19
IA2910A
Microprogram Controller
Preliminary Data Sheet
FEATURES
•
Form, Fit, and Function Compatible with the AMD™ Am2910A
•
Packaging options available: 40 Pin Plastic or Ceramic DIP, 44 Pin Plastic
Leaded Chip Carrier
•
Twelve Bits Wide
•
Internal Loop Counter
•
Four Address Sources
- push/pop stack counter
- internal holding register
- microprogram counter
- branch address bus
•
9 Word Deep Stack Register
- push/pop control for nesting subroutines
•
16 Sequence Control Microinstructions
•
Output Enable controls 3 Branch Address Sources
The IA2910A uses innovASIC’s innovative new f 3 Program to provide industry with parts that
other vendors have declared obsolete. By specifying parts through this program a customer is
assured of never having a component become obsolete again. This data sheet assumes the original
part has been designed in, and so provides a summary of capabilities only. For new designs contact
innovASIC for more detailed information.
I3
(8)
I2
(9)
VCC
DIN1
(34)
YOUT2
(7)
(40)
MAPn
DIN2
YOUT1
(41)
(35)
YOUT3
(6)
(42)
DIN1
PLn
DIN3
(36)
(43)
(5)
YOUT4
YOUT2
VECTn
(1)
(37)
(44)
(4)
YOUT5
DIN2
DIN5
DIN4
YOUT3
(38)
(2)
40 Pin DIP
(3)
DIN5
DIN3
(39)
(3)
(40)
VECTn
YOUT5
IA2910A
(4)
(2)
N. C.
(1)
DIN4
(5)
YOUT4
(6)
AMD is a trademark of Advanced Micro Devices, Inc.
YOUT1
PLn
(7)
(39)
MAPn
(8)
(38)
DIN0
DIN0
I3
(9)
(37)
YOUT0
(33)
YOUT0
I2
(10)
(36)
N. C.
(32)
CIN
(35)
CIN
(10)
(31)
CLK
CLK
I1
(11)
(30)
VDD
I0
(12)
(29)
OEn
CCENn
(13)
(28)
YOUT11
CCn
(14)
(27)
DIN11
RLDn
(15)
(26)
YOUT10
FULLn
(16)
(25)
DIN10
(32)
N. C.
(27)
(28)
DIN10
YOUT10
DIN11
(26)
(29)
YOUT9
(17)
(25)
YOUT11
N.C.
DIN9
OEn
(30)
(24)
(31)
(16)
YOUT8
(15)
(23)
CCn
RLDn
DIN8
DIN8
(14)
(22)
(21)
VDD
CCENn
YOUT7
(20)
(33)
(21)
YOUT8
YOUT7
(13)
DIN7
(22)
I0
(20)
(19)
(34)
YOUT6
DIN9
DIN7
(12)
(18)
YOUT9
(23)
I1
(19)
(24)
(18)
(11)
DIN6
(17)
VCC
FULLn
DIN6
YOUT6
IA2910A
44 Pin LCC
Copyright  1999, InnovASIC Inc.
Customer Specific IC Solutions
Page 2 of 19
IA2910A
Microprogram Controller
Preliminary Data Sheet
The IA2910A is a form, fit and function compatible part to the AMD 2910A microprogram
controller. The IA2910A is an address controller which will sequence through a series of
microinstructions contained in a ROM or PROM. There are four sources of addresses from which
the IA2910A may select. The first is a direct data bus (DIN) input, which is straightforward. The
second is an internal address register. This register contains data loaded during a previous
microinstruction. The third source is a program counter register, which generally contains the
previous address incremented by one. The final source of addresses is a nine word deep stack
register which gives the capability to execute nested subroutine linkages. All internal registers are
clocked on the rising edge of the clock input (CLK). An OEn input enables the YOUT output bus
to be tri-stated. A block diagram is shown in Figure 1.
Functional Block Diagram
Figure 1
DIN
CLK
RLDn
FULLn
Register/Counter
Stack Pointer
Zero
Detector
HOLD/LOAD
R=0
DECREMENT/
9 word X 12 Bit
Stack
Microprogram
counter-register
Mux
SELECT
CCn
CCENn
Instruction
PLA
I(3:0)
CIN
Incrementer
PUSH/POP/
HOLD/CLEAR
CLEAR/COUNT
MAPn
VECTn
PLn
12
YOUT
Copyright  1999, InnovASIC Inc.
Customer Specific IC Solutions
Page 3 of 19
IA2910A
Microprogram Controller
Preliminary Data Sheet
Functional Overview
The IA2910A is a 0.8 µm CMOS microprogram controller intended for use in high-speed
microprocessor applications. It allows addressing of up to 4K words of microprogram.
The controller contains a four-input mux that is used to select either the register/counter, direct
data input, microprogram counter, or stack as the source of the next microinstruction address.
The register/counter consists of 12 D-type, edge-triggered flip-flops, with a common clock enable.
When its load control, RLDn, is LOW, new data is loaded on a positive clock transition. A few
instructions include load; in most systems, these instructions will be sufficient, simplifying the
microcode. The output of the register/counter is available to the mux as a source for the next
microinstruction address. The direct input furnishes a source of data for loading the
register/counter.
The IA2910A contains a microprogram counter that is composed of a 12-bit incrementer followed
by a 12-bit register. The counter can be used in either of two ways. When the carry-in to the
incrementer is HIGH, the microprogram register is loaded on the next clock cycle with the current
YOUT output word plus one. Sequential microinstructions are thus executed. When the carry-in is
LOW, the incrementer passes the YOUT output word unmodified so that the counter is reloaded
with the same YOUT word on the next clock cycle. The same microinstruction is thus executed
any number of times.
The third source for the mux is the direct DIN input. This source is used for branching.
The fourth source available at the mux input is a 9-word by 12-bit stack (file). The stack is used to
provide return address linkage when executing microsubroutines or loops. The stack contains a
built-in stack pointer (SP) which always points to the last file word written. This allows stack
reference operations (looping) to be performed without a pop.
The stack pointer operates as an up/down counter. During microinstructions 1, 4, and 5, the
PUSH operation may occur. This causes the stack pointer to increment and the file to be written
with the required return linkage. On the cycle following the PUSH, the return data is at the new
location pointed to by the stack pointer.
During five microinstructions, a POP operation may occur. The stack pointer decrements at the
next rising clock edge following a POP, effectively removing old information from the top of the
stack.
The stack pointer linkage is such that any sequence of pushes, pops, or stack references can be
achieved. At RESET (Instruction 0), the depth of nesting becomes zero. For each PUSH, the
nesting depth increases by one; for each POP, the depth decreases by one. The depth can grow to
nine. After a depth of nine is reached, FULLn goes LOW. Any further PUSHes onto a full stack
overwrite information at the top of the stack, but leave the stack pointer unchanged. This
operation will usually destroy useful information and is normally avoided. A POP from an empty
stack may place non-meaningful data on the YOUT outputs, but is otherwise safe. The stack
Copyright  1999, InnovASIC Inc.
Customer Specific IC Solutions
Page 4 of 19
IA2910A
Microprogram Controller
Preliminary Data Sheet
pointer remains at zero whenever a POP is attempted from a stack already empty.
The register/counter is operated during three microinstructions (8, 9, and 15) as a 12-bit down
counter, with result = zero available as a microinstruction branch test criterion. This provides
efficient iteration of microinstructions. The register/counter is arranged such that if it is preloaded
with a number N and then used as a loop termination counter, the sequence will be executed
exactly N + 1 times. During instruction 15, a three-way branch under combined control of the
loop counter and the condition code is available.
The device provides three-state YOUT outputs. These can be particularly useful in designs
requiring automatic checkout of the processor. The microprogram controller outputs can be
forced into the high-impedance state, and pre-programmed sequences of microinstructions can be
executed via external access to the address lines.
Copyright  1999, InnovASIC Inc.
Customer Specific IC Solutions
Page 5 of 19
IA2910A
Microprogram Controller
Preliminary Data Sheet
I/O Signal Description
Table 1 below describes the I/O characteristics for each signal on the IC. The signal names
correspond to the signal names on the pinout diagrams provided.
Table 1
Symbol
Type
Description
CLK
I
Clock Input - Clock source for address register, microprogram
counter register, and stack file.
I(3:0)
I
Active high instruction bits. Selects instruction to be executed by the
IA2910A.
CCn
I
Active low. Condition code. Used as test criterion, pass is low on
CCn.
CCENn
I
Active low. Condition code enable. When set high, CCn is ignored
and the IA2910A operates as it CCn were a low.
RLDn
I
Active low. Clock enable to address register, allows loading of
register/counter regardless of instruction or condition.
OEn
I
Active low. Output enable, when high tri-states the output bus
YOUT.
CIN
I
Active high. Carry in signal to the incrementer.
FULLn
O
Active low. Indicates there are nine items on the stack.
DIN(11:0)
I
Active high. Data bus input to the multiplexer.
YOUT(11:0)
O
Active high. Data bus output from the IA2910A.
PLn
O
Active low. Pipeline address enable. Selects source number one
(usually pipeline register) as direct input source.
MAPn
O
Active low. Map address enable. Selects source number two (usually
mapping PROM or PLA) as direct input source.
VECTn
O
Active low. Vector address enable. Selects source number three
(usually interrupt starting address) as direct input source.
Theory of Operation
Table 2 shows the result of each instruction in controlling the mux which determines the YOUT
outputs, and in controlling the three enable signals PLn, MAPn, and VECTn. The effect on the
register/counter and the stack after the next positive-going clock edge is also shown. The mux
determines which internal source drives the YOUT outputs. The value loaded into the counter is
Copyright  1999, InnovASIC Inc.
Customer Specific IC Solutions
Page 6 of 19
IA2910A
Microprogram Controller
Preliminary Data Sheet
either identical to the YOUT output, or else one greater, as determined by CIn. For each
instruction, one and only one of the three outputs PLn, MAPn, and VECTn is LOW. If these
outputs control three-state enables for the primary source of microprogram jumps (usually part of a
pipeline register), a PROM which maps the instruction to a microinstruction starting location, and
an optional third source (often a vector from a DMA or interrupt source), respectively, the threestate sources can drive the DIN inputs without further logic.
Several inputs, as shown in Table 2, can modify instruction execution. The combination CCn
HIGH and CCENn LOW is used as a test in 9 of the 16 instructions. RLDn, when LOW, causes
the DIN input to be loaded into the register/counter, overriding any HOLD or DEC operation
specified in the instruction. OEn, normally LOW, may be forced HIGH to remove the IA2910A
YOUT outputs from a three-state bus.
The stack, a nine-word last-in, first-out 12-bit memory, has a pointer which addresses the value
presently on the top of the stack. Explicit control of the stack pointer occurs during instruction 0
(RESET), which makes the stack empty by resetting the SP to zero. After a RESET, and
whenever else the stack is empty, the contents of the top of stack is undefined until a PUSH occurs.
Any POPs performed while the stack is empty put undefined data on the F outputs and leave the
stack pointer at zero.
Any time the stack is full (nine more PUSHes than POPs have occurred since the stack was last
empty), the FULLn warning output occurs. This signal first appears on the microcycle after a ninth
PUSH. No additional PUSH should be attempted onto a full stack; if tried, information within the
stack will be overwritten and lost.
Copyright  1999, InnovASIC Inc.
Customer Specific IC Solutions
Page 7 of 19
IA2910A
Microprogram Controller
Preliminary Data Sheet
Instruction Set Description
Table 2
I(3:0)
Mnemonic
Name
0
1
2
3
4
JZ
CJS
JMAP
CJP
PUSH
5
6
JSRP
CJV
7
JRP
8
RFCT
9
RPCT
10
11
CRTN
CJPP
12
LDCT
13
14
15
LOOP
CONT
TWB
Jump Zero
Cond JSB PL
Jump Map
Cond Jump PL
Push/cond LD
cntr
Cond JSB R/PL
Cond Jump
Vector
Cond Jump
R/PL
Repeat Loop,
Cntr .NE. 0
Repeat PL, cntr
.NE. 0
Cond RTN
Cond Jump PL
& POP
LD Cntr &
Continue
Test End Loop
Continue
Three-Way
Branch
Reg/cntr
contents
X
X
X
X
X
Fail
Y
0
PC
D
PC
PC
Fail
Stack
CLEAR
HOLD
HOLD
HOLD
PUSH
Pass
Y
0
D
D
D
PC
Pass
Stack
CLEAR
PUSH
HOLD
HOLD
PUSH
Reg/cntr
Enable
HOLD
HOLD
HOLD
HOLD
NOTE 1
PL
PL
MAP
PL
PL
X
X
R
PC
PUSH
HOLD
D
D
PUSH
HOLD
HOLD
HOLD
PL
VECT
X
R
HOLD
D
HOLD
HOLD
PL
.NE. 0
=0
.NE. 0
=0
X
X
F
PC
D
PC
PC
PC
HOLD
POP
HOLD
HOLD
HOLD
HOLD
F
PC
D
PC
F
D
HOLD
POP
HOLD
HOLD
POP
POP
DEC
HOLD
DEC
HOLD
HOLD
HOLD
PL
PL
PL
PL
PL
PL
X
PC
HOLD
PC
HOLD
LOAD
PL
X
X
.NE. 0
=0
F
PC
F
D
HOLD
HOLD
HOLD
POP
PC
PC
PC
PC
POP
HOLD
POP
POP
HOLD
HOLD
DEC
HOLD
PL
PL
PL
PL
NOTE 1: If CCENn is LOW and CCn is HIGH, HOLD; ELSE LOAD.
X = Don’t Care
.NE. = Not equal
IA2910A Instruction Set
The IA2910A provides sixteen instructions which select the address of the next microinstruction to
be executed. Four of the instructions are unconditional – their effect depends only on the
instruction. Ten of the instructions have an effect which is partially controlled by an external, datadependent condition. Three of the instructions have an effect which is partially controlled by the
contents of the internal register/counter. The instruction set is shown in Table 2. Examples of the
Instruction Execution are illustrated in Figure 2. In this discussion it is assumed that CIN is tied
HIGH.
In the ten conditional instructions, the result of the data-dependent test is applied to CCn. If the
CCn input is LOW, the test is considered to have been passed, and the action specified in the name
occurs; otherwise, the test has failed and an alternate (often simply the execution of the next
sequential microinstruction) occurs. Testing of CCn may be disabled for a specific microinstruction
by setting CCENn HIGH, which unconditionally forces the action specified in the name; that is, it
forces a pass. Other ways of using CCENn include (1) tying it HIGH, which is useful if no
microinstruction is data-dependent; (2) tying it LOW if data-dependent instructions are never
Copyright  1999, InnovASIC Inc.
Customer Specific IC Solutions
Page 8 of 19
IA2910A
Microprogram Controller
Preliminary Data Sheet
forced unconditionally; or (3) tying it to the source of IA2910A instruction bit I(0), which leaves
instructions 4, 6, and 10 as data-dependent but makes others unconditional. All of these tricks save
one bit of microcode width.
The effect of three instructions depends on the contents of the register/counter. Unless the
counter holds a value of zero, it is decremented; if it does hold zero, it is held and a different
microprogram next address is selected. These instructions are useful for executing a
microinstruction loop a known number of times. Instruction 15 is affected both by the external
condition code and the internal register/counter.
Instruction 0 JZ JUMP and ZERO, or RESET unconditionally specifies that the address of the
next microinstruction is zero. Many designs use this feature for power-up sequences and provide
the power-up firmware beginning at microprogram memory word location 0.
Instruction 1 CJS is a CONDITIONAL JUMP-TO-SUBROUTINE via the address provided in
the pipeline register. As shown in Figure II, the machine might have executed words at address 50,
51, and 52. When the contents of address 52 is in the pipeline register, the next address control
function is the CJS. Here, if the test is passed, the next instruction executed will be the contents of
microprogram memory location 90. If the test has failed, the CJS will not be executed; the contents
of microprogram memory location 53 will be executed instead. Thus the CJS instruction at location
52 will cause the instruction either in location 90 or location 53 to be executed next. If the TEST
input is such that location 90 is selected, value 53 will be pushed onto the internal stack. This
provides the return linkage for the machine when the subroutine beginning at location 90 is
completed. In this example, the subroutine was completed at location 93 and a RETURN-FROMSUBOUTINE would be found at location 93.
Instruction 2 JMAP is the JUMP MAP instruction. This is an unconditional instruction which
causes the MAPn output to be enabled so that the next microinstruction location is determined by
the address supplied via the mapping PROMs. Normally, the JMAP instruction is used at the end
of the instruction fetch sequence for the machine. In the example of Figure II, microinstructions at
locations 50, 51, 52, and 53 might have been the fetch sequence and at its completion at location 53,
the JMAP function would be contained in the pipeline register. This example shows the mapping
PROM outputs to be 90; therefore, an unconditional jump to microprogram memory address 90 is
performed.
Instruction 3 CJP, CONDITIONAL JUMP PIPELINE, derives its branch address from the
pipeline register branch address value (BR(0) – BR(11) in FIGURE II). This instruction provides a
technique for branching to various microprogram sequences depending upon the test condition
inputs. Quite often, state machines are designed which simply execute tests on various inputs
waiting for the condition to come true. When the true condition is reached, the machine then
branches and executes a set of microinstructions to perform some function. This usually has the
effect of resetting the input being tested until some point in the future. Figure II shows the
conditional jump via the pipeline register address at location 52. When the contents of
microprogram memory word 52 are in the pipeline register, the next address will be either location
53 or location 30 in this example. If the test is passed, the value currently in the pipeline register
(30) will be contained in the microprogram counter which, in this example, is 53.
Copyright  1999, InnovASIC Inc.
Customer Specific IC Solutions
Page 9 of 19
IA2910A
Microprogram Controller
Preliminary Data Sheet
Instruction 4 PUSH is the PUSH/CONDITIONAL LOAD COUNTER instruction and is used
primarily for setting up loops in microprogram firmware. In Figure II, when instruction 52 is in the
pipeline register, a PUSH will be made onto the stack and the counter will be loaded based on the
condition. When a PUSH occurs, the value pushed is always the next sequential instruction address.
In this case, the address is 53. If the test fails, the counter is not loaded; if it is passed, the counter
is loaded with the value contained in the pipeline register branch address field. Thus, a single
microinstruction can be used to set up a loop to be executed a specific number of times.
Instruction 8 will describe how to use the pushed value and the register/counter for looping.
Instruction 5 JSRP is a CONDITIONAL JUMP-TO-SUBROUTINE via the register/counter or
the contents of the PIPELINE register. As shown in Figure II, a PUSH is always performed and
one of two subroutines executed. In this example, either the subroutine beginning at address 80 or
the subroutine beginning at address 90 will be performed. A return-from-subroutine (instruction
10) returns the microprogram flow to address 55. In order for this microinstruction control
sequence to operate correctly, both the next address fields of instruction 53 and 54 would have to
contain the proper value. Let’s assume that the branch address fields of instruction 53 contain the
value 90 so that it will be in the IA2910A register/counter when the contents of address 54 are in
the pipeline register. This requires that the instruction at address 53 load the register/counter.
Now, during the execution of instruction 5 (at address 54), if the test failed, the contents of the
register (value = 90) will select the address of the next microinstruction. If the test input passes, the
pipeline register contents (value = 80) will determine the address of the next microinstruction.
Therefore, this instruction provides the ability to select one of two subroutines to be executed
based on a test condition.
Instruction 6 CJV is a CONDITIONAL JUMP VECTOR instruction which provides the
capability to take the branch address from a third source heretofore not discussed. In order for this
instruction to be useful, the IA2910A output, VECTn is used to control a three-state control input
of a register, buffer, or PROM containing the next microprogram address. This instruction
provides one technique for performing interrupt type branching at the microprogram level. Since
this instruction is conditional, a pass causes the next address to be taken from the vector source,
while failure causes the next address to be taken from the microprogram counter. In the example
of Figure II, if the CJV instruction is contained at location 52, execution will continue at vector
address 20 if the CCn input is LOW and the microinstruction at address 53 will be executed if the
CCn input is HIGH.
Instruction 7 JRP is a CONDITIONAL JUMP via the contents of the IA2910A register/counter
or the contents of the pipeline register. This instruction is very similar to instruction 5; the
conditional jump-to-subroutine via R or PL. The major difference between instruction 5 and
instruction 7 is that no push onto the stack is performed with 7. Figure II depicts this instruction
as a branch to one of two locations depending on the test condition. the example assumes the
pipeline register contains the value 70 when the contents of address 52 is being executed. As the
contents of address 53 is clocked into the pipeline register, the value 70 is loaded into the
register/counter in the IA2910A. The value 80 is available when the contents of address 53 is in the
pipeline register. Thus, control is transferred to either address 70 or address 80 depending on the
test condition.
Copyright  1999, InnovASIC Inc.
Customer Specific IC Solutions
Page 10 of 19
IA2910A
Microprogram Controller
Preliminary Data Sheet
Instruction 8 RFCT is the REPEAT LOOP, COUNTER NOT EQUAL ZERO instruction.
This microinstruction makes use of the decrementing capability of the register/counter. To be
useful, some previous instruction, such as 4, must have loaded a count value into the
register/counter. This instruction checks to see whether the register/counter contains a non-zero
value. If so, the register/counter is decremented, and the address of the next microinstruction is
taken from the top of the stack. If the register counter contains zero, the loop exit condition is
occurring; control falls through to the next sequential microinstruction by selecting uPC; the stack
is POP’d by decrementing the stack pointer, but the contents of the top of the stack are thrown
away.
An example of the RFCT instruction is shown in Figure II. In this example, location 50 most likely
would contain a PUSH/CONDITIONAL LOAD COUNTER instruction which would have
caused address 51 to be PUSHed on the stack and the counter to be loaded with the proper value
for looping the desired number of times.
In this example, since the loop test is made at the end of the instructions to be repeated
(microaddress 54), the proper value to be loaded by the instructions at address 50 is one less than
the desired number of passes through the loop. This method allows a loop to be executed 1 to
4096 times. If it is desired to execute the loop from 0 to 4095 times, the firmware should be
written to make the loop exit test immediately after loop entry.
Instruction 9 RPCT is the REPEAT PIPELINE REGISTER, COUNTER NOT EQUAL
ZERO instruction. This instruction is similar to instruction 8 except that the branch address now
comes from the pipeline register rather than the file. In some cases, this instruction may be
thought of as a one-word file extension; that is, by using this instruction, a loop with the counter
can still be performed when subroutines are nested five deep. This instruction’s operation is very
similar to that of instruction 8. The differences are that on this instruction, a failed test condition
causes the source of the next microinstruction address to be the DIN inputs; and, when the test
condition is passed, this instruction does not perform a POP because the stack is not being used.
In the example of Figure II, the RPCT instruction is instruction 52 and is shown as a single
microinstruction loop. The address in the pipeline register would be 52. Instruction 51 in this
example could be the LOAD COUNTER AND CONTINUE instruction (number 12). While the
example shows a single microinstruction loop, by simply changing the address in a pipeline register,
multi-instruction loops can be performed in this manner for a fixed number of times as determined
by the counter.
Instruction 10 CRTN is the CONDITIONAL RETURN-FROM-SUBROUTINE instruction. As
the name implies, this instruction is used to branch from the subroutine back to the next
microinstruction address following the subroutine call. Since this instruction is conditional, the
return is performed only if the test is passed. If the test is failed, the next sequential
microinstruction is performed. The example in Figure II depicts the use of the CRTN instruction
in both the conditional and the unconditional modes. This example first shows a jump-tosubroutine at instruction location 52 where control is transferred to location 90. At location 93, a
CRTN instruction is performed. If the test is passed, the stack is accessed and the program will
Copyright  1999, InnovASIC Inc.
Customer Specific IC Solutions
Page 11 of 19
IA2910A
Microprogram Controller
Preliminary Data Sheet
transfer to the next instruction at address 53. If the test is failed, the next microinstruction at
address 94 will be executed. The program will continue to address 97 where the subroutine is
complete. To perform an unconditional RETURN-FROM-SUBROUTINE, the CRTN instruction
is executed unconditionally; the microinstruction at address 97 is programmed to force CCENn
HIGH, disabling the test and the forced PASS causes an unconditional return.
Instruction 11 CJPP is the CONDITIONAL JUMP PIPELINE register address and POP stack
instruction. This instruction provides another technique for loop termination and stack
maintenance. The example in Figure II shows a loop being performed from address 55 back to
address 51. The instructions at locations 52, 53, and 54 are all conditional JUMP and POP
instructions. At address 52, if the CCn input is LOW, a branch will be made to address 70 and the
stack will be properly maintained via a POP. Should the test fail, the instruction at location 53 (the
next sequential instruction) will be executed. Likewise, at address 53, either the instruction at 90 or
54 will be subsequently executed, respective to the test being passed or failed. The instruction at 54
follows the same rules, going to either 80 or 55. An instruction sequence as described here, using
the CJPP instruction, is very useful when several inputs are being tested and the microprogram is
looping waiting for any of the inputs being tested to occur before proceeding to another sequence
of instructions. This provides the powerful jump-table programming technique at the firmware
level.
Instruction 12 LDCT is the LOAD COUNTER AND CONTINUE instruction, which simply
enables the counter to be loaded with the value at its parallel inputs. These inputs are normally
connected to the pipeline branch address field which (in the architecture being described here)
serves to supply either a branch address or a counter value depending upon the microinstruction
being executed. There are altogether three ways of loading the counter – the explicit load by this
instruction 12; the conditional load included as part of instruction 4; and the use of the RLDn input
along with any instruction. The use of RLDn with any instruction overrides any counting or
decrementation specified in the instruction, calling for a load instead. Its use provides additional
microinstruction power, at the expense of one bit of microinstruction width. This instruction 12 is
exactly equivalent to the combination of instruction 14 and RLDn LOW. Its purpose is to provide
a simple capability to load the register/counter in those implementations which do not provide
microprogrammed control for RLDn.
Instruction 13 LOOP is the TEST END-OF-LOOP instruction, which provides the capability of
conditionally exiting a loop at the bottom; that is, this is a conditional instruction that will cause the
microprogram to loop, via the file, if the test is failed else to continue to the next sequential
instruction. The example in Figure II shows the LOOP microinstruction at address 56. If the test
fails, the microprogram will branch to address 52. Address 52 is on the stack because a PUSH
instruction had been executed at address 51. If the test is passed at instruction 56, the loop is
terminated and the next sequential microinstruction at address 57 is executed, which also causes the
stack to be POP’d; thus, accomplishing the required stack maintenance.
Instruction 14 CONT is the CONTINUE instruction, which simply causes the microprogram
counter to increment so that the next sequential microinstruction is executed. This is the simplest
microinstruction of all and should be the default instruction which the firmware requests whenever
there is nothing better to do.
Copyright  1999, InnovASIC Inc.
Customer Specific IC Solutions
Page 12 of 19
IA2910A
Microprogram Controller
Preliminary Data Sheet
Instruction 15 TWB, THREE-WAY-BRANCH, is the most complex. It provides for testing for
both a data-dependent condition and the counter during one microinstruction and provides for
selecting among one of three microinstruction addresses as the next microinstruction to be
performed. Like instruction 8, a previous instruction will have loaded a count into the
register/counter while pushing a microbranch address onto the stack. Instruction 15 performs a
decrement-and-branch-until-zero function similar to instruction 8. The next address is taken from
the top of the stack until the count reaches zero; then the next address comes from the pipeline
register. The above action continues as long as the test condition fails. If at any execution of
instruction 15 the test condition is passed, no branch is taken; the microprogram counter register
furnishes the next address. When the loop is ended, either by the count becoming zero, or by
passing the conditional test, the stack is POP’d by decrementing the stack pointer, since interest in
the value contained at the top of the stack is then complete.
As one example, consider the case of a memory search instruction. As shown in Figure II, the
instruction at microprogram address 63 can be Instruction 4 (PUSH), which will push the value 64
onto the microprogram stack and load the number N, which is one less than the number of
memory locations to be searched before giving up. Location 64 contains a microinstruction which
fetches the next operand from the memory area to be searched and compares it with the search
key. Location 65 contains a microinstruction which tests the result of the comparison and also is a
TWB for microprogram control. If no match is found, the test fails and the microprogram goes
back to location 64 for the next operand address. When the count becomes zero, the
microprogram branches to location 72, which does whatever is necessary if no match is found. If a
match occurs on any execution of the TWB at location 65, control falls through to location 66
which handles this case. Whether the instruction ends by finding a match or not, the stack will
have been POP’d once, removing the value 64 from the top of the stack.
Copyright  1999, InnovASIC Inc.
Customer Specific IC Solutions
Page 13 of 19
IA2910A
Microprogram Controller
Preliminary Data Sheet
Absolute Maximum Ratings
PARAMETER
Supply voltage, VDD
Input voltage, VIN
Input Pin Current IIN
Operating temperature
range
Storage temperature range
Ambient Temperature, Ta
Min
TBD
TBD
TBD
TBD
Max
UNITS
V
V
mA
°C
TBD
TBD
°C
°C
Lead Temperature
Power Dissipation
TBD
°C
mW
Notes
Stresses beyond those listed under “absolute maximum ratings”may cause permanent damage to the
device. Operating the device beyond the conditions indicated in the “recommended operating conditions”
section is not recommended. Operation at the “absolute maximum ratings”may adversely affect device
reliability.
DC Characteristics
PARAMETER
DC Supply voltage, VDD
Static Supply Current, IDD
Power Supply Current, IDD
Standby Supply Current, Istby
Input Capacitance, CIN
I/O Capacitance, CI/O
Circuit Ground, VSS
Min
4.5
Max
5.5
TBD
TBD
TBD
TBD
TBD
TBD
UNITS
V
µA
mA/MHz
µA
pF
pF
V
Notes
(1)
Notes:
(1) Static IDD current is exclusive of input/output drive requirements and is measured with the clocks
stopped and all inputs tied to VDD or VSS, configured to draw minimum current.
Copyright  1999, InnovASIC Inc.
Customer Specific IC Solutions
Page 14 of 19
IA2910A
Microprogram Controller
Preliminary Data Sheet
Parametric Voltage and Current Levels (Ambient Temperature = -40 to 85 C)
Input Pin
VIL
VIH
Hysteresis
Note
TBD
Output Pin
VOL
VOH
IOL
IOH
TBD
Pullup Pin
IPU
Min
Max
Note
Min
Max
TBD
AC Specifications
Parameter
TBD
Copyright  1999, InnovASIC Inc.
Customer Specific IC Solutions
Note
IOZ
Min
Notes
Max
Page 15 of 19
IA2910A
Microprogram Controller
Preliminary Data Sheet
IA2910A Execution Examples
Figure 2
0 JUMP ZERO
1 COND JSB PL
2 JUMP MAP
50
0
50
1
51
2
52
90
52
53
91
53
54
92
55
93
STACK
53
4 PUSH/COND LD CNTR
51
52
51
52
52
REGISTER/
COUNTER
N
53
90
55
80
91
56
81
92
57
82
93
83
94
84
52
51
53
52
52
53
53
71
81
54
53
20
54
21
9 REPEAT PL, CNTR .NE. 0
50
80
31
52
51
70
30
54
51
STACK
55
8 REPEAT LOOP, CNTR .NE. 0
STACK PUSH
51
50
53
91
50
54
7 COND JUMP R/PL
90
6 COND JUMP VECTOR
50
51
53
51
5 COND JSB R/PL
STACK
53
50
3 COND JUMP PL
50
COUNTER
(LDCT)
N
50
REGISTER/
COUNTER
N
51
55
10 COND RETURN
11 COND JUMP PL & POP
STACK
53
12 LD CNTR & CONTINUE
STACK PUSH
51
50
50
50
51
90
51
52
91
52
53
92
53
COUNTER
N
51
52
53
70
90
71
72
54
93
54
80
91
55
94
55
81
92
95
56
82
96
97
14 CONTINUE
13 TEST END LOOP
50
51
STACK PUSH
52
15 THREE-WAY BRANCH
50
51
62
STACK PUSH
64
63
52
64
53
65
54
66
REGISTER/
COUNTER
N
72
73
55
56
57
Copyright  1999, InnovASIC Inc.
Customer Specific IC Solutions
Page 16 of 19
IA2910A
Microprogram Controller
Preliminary Data Sheet
PLCC Packaging Dimensions (Theta J = TBD)
D
PIN 1
IDENTIFIER & ZONE
E1
E
D1
TOP VIEW
BOTTOM VIEW
.030 ± .005
Symbol
LEAD COUNT
MIN
MAX
A
.150
.154
A1
.0007
.0103
D1
.652
.656
D2
.610
.630
E1
.652
.656
E2
.610
.630
A
A1
SEATING PLANE
.03R
e
.013/.021
.020 MIN.
R
70
± 2 Deg.
D2 / E2
SIDE VIEW
Copyright  1999, InnovASIC Inc.
Customer Specific IC Solutions
e
44 (in Inches)
.050 ± .002
D
.685
.695
E
.685
.695
Page 17 of 19
IA2910A
Microprogram Controller
Preliminary Data Sheet
PDIP Packaging Dimensions (Theta J = TBD)
TOP
E1
E
LEAD 1
IDENTIFIER
eA
C
eB
1
LEAD COUNT
DIRECTION
SIDE VIEW (WIDTH)
D
A2
A
A1
L
Symbol
Lead Count
MIN
MAX
A
-
.220
A1
.015
-
B
.016
-
B1
.040
-
C
-
-
D
2.045
2.055
E
.600
.620
E1
.545
.555
28 (in Inches)
B
B1
e
.700 TYP
e
SIDE VIEW (LENGTH)
eA
.620
-
eB
-
.660
L
Copyright  1999, InnovASIC Inc.
Customer Specific IC Solutions
.125 TYP
Page 18 of 19
IA2910A
Microprogram Controller
Preliminary Data Sheet
Package Options
The IA2910A is available in two package styles as shown in the table below.
Package Type
40 Lead Ceramic DIP, 600 mil wide
40 Lead Plastic DIP, 600 mil wide
44 Lead Ceramic Leaded Chip Carrier
44 Lead Ceramic Leadless Chip Carrier
44 Lead Plastic Leaded Chip Carrier
Environment
Military
Industrial
Commercial
Military
Military
Industrial
Commercial
Order Number
IA2910A-CD40M
IA2910A-PDW40I
IA2910A-PDW40C
IA2910A-CLC44M
IA2910A-CLL44M
IA2910A-PLC44I
IA2910A-PLC44C
The following diagram depicts the innovASIC Product Identification Number.
IAXXXXX-PPPPNNNT/SP
Special Processing:
S = Space
Q = MIL-STD-883
Temperature:
C = Commercial
I = Industrial
M = Military
Number of Leads
Package Type:
Per Package Designator Table
IC Base Number
innovASIC Designator
Copyright  1999, InnovASIC Inc.
Customer Specific IC Solutions
Page 19 of 19
IA2910A
Microprogram Controller
Preliminary Data Sheet
Package Designator Table
Package Type
innovASIC
Designator
Ceramic side brazed Dual In-line
Cerdip with window
Ceramic leaded chip carrier
Cerdip without window
Ceramic leadless chip carrier
PLCC
Plastic DIP standard (300 mil)
Plastic DIP standard (600 mil)
Plastic metric quad flat pack
Plastic thin quad flat pack
Skinny Cerdip
Small outline plastic gull-wing(150 mil body)
Small outline medium plastic gull-wing (207 mil body)
Small outline narrow plastic gull wing (150 mil body)
Small outline wide plastic gull wing (300 mil body)
Skinny Plastic Dip
Shrink small outline plastic (5.3mm .208 body)
Thin shrink small outline plastic
Small outline large plastic gull wing (330 mil body)
Thin small outline plastic gull-wing (8 x 20mm) [TSOP]
CDB
CDW
CLC
CD
CLL
PLC
PD
PDW
PQF
PTQ
CDS
PSO
PSM
PSN
PSW
PDS
PS
PTS
PSL
PST
PGA
BGA
CPGA
CBGA
Contact innovASIC for other package and processing options.
Copyright  1999, InnovASIC Inc.
Customer Specific IC Solutions