Series 3000 Reference Manual Feb76
Series_3000_Reference_Manual_Feb76 Series_3000_Reference_Manual_Feb76
User Manual: manual pdf -FilePursuit
Open the PDF directly: View PDF .
Page Count: 151
Download | |
Open PDF In Browser | View PDF |
inter Series 3000 Family Of Computing Elements The Total System Solution. Since its introduction in September, 1974, the Series 3000 family of computing elements has found acceptance in a wide range of high performance applications from disk controllers to airborne CPU's. The Series 3000 family represents more than a simple collection of bipolar components, it is a complete family of computing elements and hardware/software support that greatly simplifies the task of transforming a design from concept to production. The Series 3000 Component Family A complete set of computing elements that are designed as a system requiring a minimum amount of ancillary circuitry. 3001 3002 3003 . 3212 3214 3216/26 ROMs/PROMs RAMs Microprogram Control Unit. Central Processing Element. Look-Ahead Carry Generator. Multi-Mode Latch Buffer. Interrupt Control Unit. Parallel Bi-directional Bus Driver. A complete set of bipolar ROMs and PROMs. A Complete family of MOS and bipolar RAMs. rhe Series 3000 Support A comprehensive support system that assists the designer in writing microprograms, debugging hardware and microcode, and programming prototype and production PROMs. CROMIS Cross microprogram assembler. MDS-800 Microcomputer development system with TTY/CRT, line printer, diskette, PROM programmer and high speed paper tape reader facilities. ICE-30 In-circuit emulation for the 3001 MCU. ROM-SIM ROM simulation for all of Intel's Bipolar ROMs and PROMs. Application Notes Central processor and disk controller designs and system timing considerations. Customer Course Comprehensive 3 day course covering the component family, CPU and controller designs, microprogramming and the MDS-800, ICE-30 and ROM-SIM operation. The Series 3000 family is designed to provide a Total System Solution: high performance, minimum package count and total commitment to support. Contents Series 3000 Reference Manual INTRODUCTION ........................ 1-1 COMPONENT FAMILY .................. 2-1 3001 Microprogram Control Unit ....... 2-1 3002 Central Processing Element ...... 2-15 3003 Look-Ahead Carry Generator .... 2-31 3212 Multi-Mode Latch Buffer ......... 2-39 3214 Interrupt Control Unit . . . . . . .. . .. 2-49 3216/3226 Parallel Bi-Directional Bus Driver. . . . . . . . . . . . . . . . . . . . . . . . . .. 2-61 APPLICATIONS ......................... 3-1 3000 Family System Timing ............ 3-1 Disk Controller Designed With Series 3000 Computing Elements. . . . . . . . . . . . . . . . .. 3-9 Central Processor Designs Using The Intel® Series 3000 Computing Elements . . . . . . . . . . . . . . . . . . . . . . . . . . .. 3-19 ORDERING AND PACKAGING INFORMATION ......................... 4-1 Ordering Information .................. 4-1 Package Outlines ...................... 4-2 Series 3000 Family INTRODUCTION A family architecture busses to be formed simply by connecting inputs and outputs together. Each CPE represents a complete two-bit slice through the data-processing section of a computer. Several CPES may be arrayed in parallel to form a processor of any desired word length. The MCU, which together with the microprogram memory, controls the step-by-step operation of the processor, is itself a powerful microprogramed state sequencer. Enhancing the performance and capabilities of these two components are a number of compatible computing elements. These include a fast look-ahead carry generator, a priority interrupt unit, and a multimode latch buffer. A complete summary of the first available members of this family of LSI computing elements and memories is given in the table on this page. To reduce component count as far as practical, a multi-chip LSI microcomputer set must be designed as a complete, compatible family of devices. The omission of a bus or a latch or the lack of drive current can multiply the number of miscellaneous SSI and MSI packages to a dismaying extent-witness the reputedly LSI minicomputers now being offered which need over a hundred extra TIL packages on their processor boards to support one or two custom LSI devices. Successful integration should .result in a minimum of extra packages, and that includes the interrupt and the input/output systems. With this objective in mind, the Intel Schottky bipolar LSI microcomputer chip set was developed. Its two major components, the 3001 Microprogram Control Unit (MCU) and the 3002 Central Processing Element (CPE), may be combined by the digital designer with standard bipolar LSI memory to construct high-performance controller-processors (Fig.!) with a minimum of ancillary logic. Among the features that minimize package count and improve performance are: the multiple independent data and address busses that eliminate time multiplexing and the need for external latches; the three-state output buffers with high fanout that make bus drivers unnecessary except in the largest systems, and the separate output-enable logic that permits bidirectional 3001 Microprogram control unit 3002 Central processing element 3003 3212 3214 3216 3226 3601 3604 3301 A Look.-ahead carry generator Multimode latch buffer 3304A CONTROL TO MEMORY DATA BUS MEMORY 110 AOORESS BUS TO MEMORY Priority interrupt unit Noninverting bidirectional bus driver Inverting bidirectional bus driver 256-by-4-bit programable read-only memory 512-by-8-bit programable read-only memory 256-by-4-bit read-only memory 512-by-8-bit read-only memory . MICRO NE~T ADDRESS PROGRAM MEMORY CONTROL CLOCK 181T 1 BIT 8 BITS FROM EXTERNAL 110 DEVICES DATA IN FROM MEMORY 1. Bipolar microcomputer. Block diagram shows how to implement a typical 16-bit controller-processor with new family of bipolar computer elements. An array of eight central processing elements (CPEs} is governed by a microprogram control unit (MCU} through a separate read-only memory that carries the microinstructions for the various processing elements. This ROM may be a fast, off-the-shelf unit. Intll Corporation ... mll no responsibility for the u. of any circuitry or microprogram other than circuitry or microprograms embodied in an Intel product. No other circuit patent licenas Ire implied. 1-1 Series 3000 Family ePEs form a processor Each CPE (Fig. 2) carries two bits of five independent busses. The three input busses can be used in several different ways. Typically, the K-bus is used for microprogram mask or literal (constant) value input, while the other two input busses, M and I, carry data from external memory or input/output devices. D-bus outputs are connected to the CPE accumulator; A-bus outputs are connected to the CPE memory address register. As the CPES are wired together, all the data paths, registers, and busses expand accordingly. Certain data operations can be performed simply by connecting the busses in a particular fashion. For example, a byte exchange operation, often used in datacommunications processors, may be carried out by wiring the D-bus outputs back to the I-bus inputs, exchanging the high-order outputs and low-order inputs. Several other discretionary shifts and rotates can be accomplished in this manner. A sixth CPE bus, the seven-line microfunction bus, controls the internal operation of the CPE by selecting the operands and the operation to be performed. The arithmetic function section, under control of the microfunction bus decoder, performs over 40 Boolean and binary functions, including 2's complement arithmetic and logical AND, OR, NOT, and exclusive-NOR. It increments, decrements, shifts left or right, and tests for zero. Unlike earlier MSI arithmetic-iogic units, which contain many functions that are rarely used, the microfunction decoder selects only useful CPE operations. Standard carry look-ahead outputs, X and y, are generated by the CPE for use with available look-ahead devices or the Intel 3003 Look-ahead Carry Generator. Independent carry input, carry output, shift input, and shift output lines are also available. What's more, since the K-bus inputs are always ANDed with the B-multiplexer outputs into the arithmetic function section, a number of useful functions that in conventional MSI ALUs would require several cycles are generated in a single CPE microcycle. The type of bit masking frequently done in computer control systems can be performed with the mask supplied to the K-bus directly from the microinstruction. Placing the K-bus in either the aU-one or all-zero state wiU, in most cases, select or deselect the accumulator in the operation, respectively. This toggling effect of the K-bus on the accumulator nearly doubles the CPE's repertoire of microfunctions. For instance, with the K-bus in the all-zero state, the data on the M-bus may be complemented and loaded into the CPE's accumulator. The same function selected with the K-bus in the all-one state will exclusive-NOR the data on the M-bus with the accumulator contents. MEMORY DATA BUS MEMORY AOORESS BUS OUTPUTS MEMORY ADDRESS ENABLE CARRY LOOK-AHEAD OUTPUTS {_j __--========~lL-l=t:==~==TTll --:-------------1 x MICRO- !+--+-+--+-+--j:>---CARRY INPUT y RIPPLE CARRY - OUTPUT ./ SHIFT RIGHT./" INPUT EA CLIO-~-----------+t"'T'"T"""_ _ _ _ _-r-.-J vee .-J {;;O-i FUNCTION;' BUS INPUTS F,' I FUM~g~N I I DECOOER F, ~ SHIFT RIGHT OUTPUT I CLK.....I L __ _ __.-J M, Mo ~ ~--.-- MEMORY OATA BUS INPUTS EXTERNAL MASK BUS BUS I NPUTS INPUTS 2. Central processing element. This element contains all the circuits representing a two-bit-wide slice through a small computer's central processor. To build a processor of word width N, all that's necessary is to connect an array of NI2 CPEs together. 1-2 Series 3000 Family Threelnnovatlonl other approach would require some type of program counter. To simplify its logic, the MCV (Fig. 4) uses the classic approach and requires address control information from each microinstruction. This information is not, however, simply the next microprogram address. Rather, it is a highly encoded specification of the next address and one of a set of conditional tests on the MCV bus inputs and regist(:rs. The next-address logic and address control functions of the MCV are based on a unique scheme of memory addressing. Microprogram addresses are organized as a two-dimensional array or matrix. Unlike in ordinary memory, which has linearly sequenced addresses, each microinstruction is pinpointed by its row and column address in the matrix. The 9-bit microprogram address specifies the row address in the upper 5 bits and the column address in the lower 4 bits. The matrix can therefore contain up to 32 row addresses and 16 column addresses for a total of 512 microinstruction addresses. The next-address logic of the MCV makes extensive use of this addressing scheme. For example, from a particular row or column address, it is possible to jump either unconditionally to any other location in that row or column or conditionally to other specified locations, all in one operation. For a given location in the matrix there is a fixed subset of microprogram addresses that may be selected as the next address. These are referred to as a jump set, and each type of MCV address control jump function has ajump set associated with it. Incorporating a jump operation in every microinstruction improves performance by allowing processing functions to be executed in parallel with program branches. Reductions in microcode are also obtained because common microprogram sequences can be shared without the time-space penalty usually incurred by conditional branching. Independently controlled lIag logic in the MCV is available for latching and controlling the value of the carry and shift inputs to the CP array. Two lIags, called C and Z, are used to save the state of the lIag input line. Under microprogram control, the lIag logic simultaneously sets the state of the lIag output line, forcing the line to logical 0, logical I, or the value of the C or Z lIag. The jump decisions are made by the next-address logic on the basis of: the MCV'S current microprogram address; the address control function on the accumulator inputs; and the data that's on the macroinstruction (X) bus or in the program latch or in the lIags. Jump decisions may also be based on the instantaneous state of the lIag input line without loading the value in one of the !lags. This feature eliminates many extra microinstructions that would be required if only the lIag lIip1I0p could be tested. Microinstruction sequences are normally selected by the operation codes (op codes) supplied by the microinstructions, such as control commands or user instructions in main memory. The MCV decodes these commands by using their bit patterns to determine which is to be the next microprogram address. Each decoding results in a 16-way program branch to the desired microinstruction sequence. The power and versatility of the CPE are increased by three rather novel techniques. The first of these is the use of the carry lines and logic during non-arithmetic operations for bit testing and zero detection. The carry circuits during these operations perform a word-wide logical OR (oRing adjacent bits) of a selected result from the arithmetic section. The value of the OR, called the carry OR, is passed along the carry lines to be ORed with the result of an identical operation taking place simultaneously in the adjacent higher-order CPE. Obviously, the presence of at least one bit in the logical I state will result in a true carry output from the highest-order CPE. This output, as explained later, can be used by the MCV to determine which microprogram sequence to follow. With the ability to mask any desired bit, or set of bits, via the K-bus inputs included in the carry OR, a powerful bit-testing and zero-detection facility is realized. The second novel CPE feature is the use of three-state outputs on the shift right output (RO) and carry output (CO) lines. During a right shift operation, the CO line is placed in the high-impedance (Z) state, and the shift data is active on the RO line. In all other CPE operations, the RO line is placed in the Z state, and the carry data is active on the CO line. This permits the CO and RO lines to be tied together and sent as a single rail input to the MCV for testing and branching. Left shift operations utilize the carry lines, rather than the shift lines, to propagate data. The third novel CPE capability, called conditional clocking, saves microcode and microcycles by reducing the number of microinstructions required to perform a given test. One extra bit is used in the microinstruction to selectively control the gating of the clock pulse to the central processor (CP) array. Momentarily freezing the clock (Fig. 3) permits the CPE microfunction to be performed, but stops the results from being clocked into the specified registers. The carry or shift data that results from the operation is available because the arithmetic section is CQmbinatorial, rather than sequential. The data can be used as a jump condition by the MCV and in this way permits a variety of nondestructive tests to be performed on register data. Microprogram control The classic form of microprogram control incorporates a next-address field in each microinstruction-any MICIIOINSTRlICTlDN WORD . CPARRAY 3. Conditional clock. This feature permits an extra bit in microinstruction to selectively control gating of clock pulse to CP array. Carry or shift data thus made available permits tests to be performed on data with fewer microinstructions. 1-3 Series 3000 Family MICROPROGRAM ROW AOORESS COLUMN AOORESS ENABLE ROW AODRESS "'" r---- INTERRUPT STROBE ENABLE NEXT AODRESS CONTROL FUNCTION INPUTS l • ._ .... MA. " ,.------A..---MA J - • . MAo :~:~ AC. ---f-------l I AC,----1f-------, AC, - I f - - - - - - - , AC, ----1r-----., AC,----1f---. MICROPROGRAM LO AOORESS LOAO PR, } PR, PR, PROGRAM LATCH OUTPUTS __ -.J FC o Fe, FI ~ INPUT FLAG LOGIC CONTROL Fa Fe .. Fe J PX 7 • · .•• - px. ~' • CONTROL PRIMARY FLAG LOGIC ---" INSTRUI~TlONS \ OUTPUT ,I SX 3 ·· .... sXo ~ SECONOARY INSTRUCTIONS IN 4. Microprogram control unit. The MCU's two major control functions include controlling the sequence of microprograms fetched from the microprogram memory, and keeping track of the carry inputs and outputs of the CP array by means of the flag logic control. Cracking the op cod•• For instance, the Meu can be microprogramed to directly decode conventional 8-bit op codes. In these op codes the upper 4 bits specify one of up to 16 instruction classes or address modes, such as register, indirect, or indexed. The remaining bits specify the particular subclass such as ADD, SKIP IF ZERO, and so on. If a set of op codes is required to be in a different format, as may occur in a full emulation, an external pre-decoder, such as ROM, can be used in series with the X-bus to reformat the data for the Meu. In rigorous decoding situations where speed or space is critical, the fu)] 8-bit macroinstruction bus can be used for a single 256-way branch. Pulling down the load line of the Meu forces the 8 bits of data on the X-bus (typically generated by a predecoder) directly into the microprogram address register. The data thUs directly determines the next microprogram address which should be the start of the desired microprogram sequence. The load line may also be used by external logic to force the Meu, at power-up, into the system re-initialization sequence. From time to time, a microprocessor must examine the state of its interrupt system to determine whether an interrupt is pending. If one is, the processor must suspend its normal execution sequence and enter an interrupt sequence in the microprogram. This requirement is handled by the Meu in a simple but elegant manner. When the microprogram flows through address row 0 and column IS, the interrupt strobe enable line of the Meu is raised. The interrupt system, an Intel 3214 Interrupt Control Unit, responds by disabling the row address outputs of the Meu via the enable row address line, and by forcing the row entry address of the microprogram interrupt sequence onto the row address bus. The operation is normally performed just before the macroinstruction fetch cycle, so that a macroprogram is interrupted between, not during, macroinstructions. The 9-bit microprogram address register and address bus of the Meu directly address 5 12 microinstructions. This is about twice as many as required by the typical 16-bit disk-controller or central processor. 1-4 Series 3000 Family STANOARO fUNCTION flELOS USER·DEfINABLE fUNCTION flELOS A r~-------------------#A~------------------~\ r CPARRAY fUNCTION I fLAG LOGIC fUNCTION I -- JUMP fUNCTION :::S-;" flELO ' - -_ _ _ _---L_ _ _ _ _ _ _ _ _---L. _ _ - I-- 7 I"I.~ BITS - - _ a -+1,_--7 4 BITS ........ -TI ____ \ -::O:L7R:s:R-l fUNCTIONS I J.- - - -+1. . --- BITS--_.I"I.>---- N BITS - -..... -4~ __ J n'BITS---.j 5. Microinstruction format. Only a generalized microinstruction format can be shown since allocation of bits for the mask field and optional processor functions depends on the wishes of the designer and the tradeoffs he decides to make. Moreover, multiple 512 microinstruction memory planes can easily be implemented simply by adding an extra address bit to the microinstruction each time the number of extra planes is doubled. Incidentally, as the number of bits in the microinstruction is increased. speed is not reduced. The additional planes also permit program jumps to take place in three address dimensions instead of two. Because of the tremendous design flexibility offered by the Intel computing elements, it is impossible to describe every microinstruction format exactly. But generally speaking. the formats all derive from the one in Fig. 5. The minimum width is 18 bits: 7 bits for the address control functions. plus 4 bits for the flag logic control: plus 7 bits for the CPE microfunction control. More bits can be added to the microinstruction format to provide such functions as mask field input to the CP array. external memory control. conditional clocking. and so on. Allocation of these bits is left to the designer who organizes the system. He is free to trade off memory costs. support logic. and microinstruction cycles to meet his cOSt/performance objectives. The cOlt/performance spectrum The total flexibility of the Intel LSI computing elements is demonstrated by the broad cost/performance spectrum of the controllers and processors that can be constructed with them. These include: • High-speed controllers. built with a stand-alone ROMMCV combination that sequences at up to 10 megahertz; it can be used without any CPES as a system state coniroller. • Pipelined look-ahead carry controller-processors, where the overlapped microinstruction fetch/execute cycles and fast-carry logic reduce the l6-bit add time to less than 125 nanoseconds. • Ripple-carry controller processors (a l6-bit design adds the contents of two registers in 300 nanoseconds). • Multiprocessots. or networks of any of the above controllers and processors, to provide computation, interrupt superviSion. and peripheral control. These configurations represent a range of microinstruction execution rates of from 3 million to 10 million instructions per second, or up to two orders of magnitude faster, for example, than p-channel microprocessors. Moreover, the increases in processor performance are achieved with relative simplicity. A ripple-carry l6-bit processor uses one MCV, eight CPES. plus microprogram memory. One extra computing element, the 3003 Look-ahead Carry Generator, enhances . the processor with fast carry. Increasing speed further by pipe lining, the overlap of microinstruction fetch and execute cycles, requires a few D-type MSI flip-flOps. At the multiprocessor level, the microprogram memory, MCV. or CPE devices can be shared. A l6-bit processor. complete with bus control and microprogram memory. requires some 20 bipolar LSI packages and half that many small-scale ICs. In this configuration. it replaces an equivalent MSI TIL system having more than 200 packages. Furthermore. systems built with this large-scale integrated circuitry are much smaller and less costly and consume less energy than equivalent designs using lower levels of transistor-transistor-logic integration. Even allowing for ancillary logic circuits. the new bipolar computing elements cut 60% to 80% off the package count in realizing most of today's designs made with small- or medium-scale-integrated TIL. Microprograming technology • Microprogram: A type of program that directly controls the operation of each functional element in a microprocessor. • Mlcrolnllrucllon: A bit pattern that is stored in a microprogram memory word and specifies the operation of the individual LSI computing elements and related subunits, such as main memory and input loutput interfaces. • Mlcrolnllrucllon lequence: The series of microinstructions that the microprogram control unit (MCU) selects from the microprogram to execute a single macroinstruction or control command. Microinstruction sequences can be, shared by several macroinstructions. • Macrolnllructlon: Either a conventional computer instruction (e.g. ADD MEMORY TO REGISTER, INCREMENT, and SKIP, etc.) or device controller command (e.g., SEEK, READ, etc.). 1-5 intel" SCHOTTKY BIPOLAR LSI MICROCOMPUTER 3001 MICROPROGRAM CONTROL UNIT SET The INTEL ® 3001 Microprogram Control Unit (MCU) controls the sequence in which microinstructions are fetched from the microprogram memory. Its functions include the following: Maintenance of the microprogram address register. Selection of the next microinstruction based on the contents of the microprogram address register. Decoding and testing of data supplied via several input busses to determine the microinstruction execution sequence. Saving and testing of carry output data from the central processor (CP) array_ Control of carry/shift input data to the CP array. Control of microprogram interrupts_ High Performance - 85 ns Cycle Time TTL and DTL Compatible Fully Buffered Three-State and Open Collector Outputs Direct Addressing of Standard Bipolar PROM or ROM 512 Microinstruction Addressability Advanced Organization 9-Bit Microprogram Address Regjster and Bus 4·Bit Program Latch Two Flag Registers Eleven Address Control Functions Three Jump and Test Latch Functions 16·way Jump and Test Instruction Bus Function Eight Flag Control Functions Four Flag Input Functions Four Flag Output Functions 40 Pin DIP 2-1 PACKAGE CONFIGURATION px. PX 7 PX6 PX 5 sX 3 SX 2 PR 2 sx, PR, sXo PRo FC3 FC 2 FO FC o FC, FI ISE ClK GND vcc 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 INTEl@ 3001 ~~ 30 29 28 27 26 25 24 23 22 21 ACo AC, AC5 lD ERA MAs MA7 MA6 MA. MA. MAo MA3 MA2 MA, EN AGo AC. AC3 AC2 3001 PIN DESCRIPTION NAME AND FUNCTION TYPE 111 1-4 Primary Instruction Bus Inputs Data on the primary instruction bus is tested by the JPX function to determine the next microprogram address_ active LOW 5,6,8,10 Secondary Instruction Bus Inputs Data on the secondary instruction bus is synchronously loaded into the PR-Iatch while the data on the PX-bus is being tested (JPX)_ During a subsequent cycle, the contents of the PR-Iatch may be tested by the JPR, JLL, or JRL functions to determine the next microprogram address_ active LOW 7,9,11 PR-Latch Outputs The PR-Iatch outputs are asynchronously enabled by the JCE function_ They can be used to modify microinstructions at the outputs of the microprogram memory or to provide additional control lines_ open collector PIN SYMBOL 12,13,15, 16 ·FC O- FC3 Flag Logic Control Inputs The flag logic control inputs are used to cross-switch the flags (C and Z) with the flag logic input (FI) and the flag logic output (FO). 14 FO Flag Logic Output The outputs of the flags (C and Z) are multiplexed internally to form the common flag logic output_ The output may also be forced to a logical 0 or logical 1_ active LOW three-state 17 FI Flag Logic Input The flag logic input is demultiplexed internally and applied to the inputs of the flags (C and Z). Note: the flag input data is saved in the F-Iatch when the clock input (CLK) is low_ active LOW 18 ISE Interrupt Strobe Enable Output The interrupt strobe enable output goes to logical 1 when one of the JZR functions are selected (see Functional Description, page 6). It can be used to provide the strobe signal required by the INTEL 3214 Priority Interrupt Control Unit or other interrupt circuits_ 19 CLK Clock Input 20 GND Ground 21-24 37-39 ACo-ACs Next Address Control Function Inputs All jump functions are selected by these control lines. 25 EN Enable Input When in the HIGH state, the enable input enables the microprogram address, PR-Iatch and flag outputs. 26-29 MAo-MA3 Microprogram Column Address Outputs three-state 30-34 MA,j-MAa Microprogram Row Address Outputs three-state 35 ERA Enable Row Address Input When in the LOW state, the enable row address input independently disables the microprogram row address outputs. It can be used with the INTEL 3214 Priority Interrupt Control Unit or other interrupt circuits to facilitate the implementation of priority interrupt systems. 36 LD Microprogram Address Load Input When in the active HIGH state, the microprogram address load input inhibits all jump functions and synchronously loads the data on the instruction busses into the microprogram registllr. However, it does not inhibit the operation of the PR-Iatch or the generation of the interrupt strobe enable. 40 VCC +5 Volt Supply NOTE: 111 Active HIGH unless otherwise specified_ 2-2 3001 LOGICAL DESCRIPTION The MCU performs two major control functions. First, it controls the sequence in which microinstructions are fetched from the microprogram memory. For this purpose, the MCU contains a microprogram address register and the associated logic for selecting the next microinstruction address. The second function of the MCU is the control of the two flag flip·flops that are included for interaction with the carry input and carry output logic of the CP array. The logical organization of the MCU is shown in Figure 2. NEXT ADDRESS LOGIC The next address logic of the MCU pro· vides a set of conditional and uncondi· tional address control functions. These address control functions are used to implement a jump or jumpltest opera· tion as part of every microinstruction. That is to say, each microinstruction typically contains a jump operation field that specifies the address control function, and hence, the next micro· program address. In order to minimize the pin count of the MCU, and reduce the complexity of the next address logic, the microprogram address space is organized as a two dimensional array or matrix. Each microprogram address corresponds to a unit of the matrix at a particular row and column location. Thus, the 9bit microprogram address is treated as specifying not one, but two addresses the row address in the upper five bits and the column address in the lower four bits. The address matrix can therefore contain, at most, 32 row addresses and 16 column addresses for a total of 512 microinstructions. possible jump target addresses are referred to as a jump set. Each type of MCU address control (jump) function has a jump set associated with it. Appendix C illustrates the jump set for each function. FLAG LOGIC The flag logic of the MCU provides a set of functions for saving the current value of the carry output of the CP array and for controlling the value of the carry input to the CP array. These two distinct flag control functions are called flag input functions and flag output functions. The next address logic of the MCU makes extensive use of this two component addressing scheme. For example, from a particular row or column address, it is possible to jump uncon· ditionally in one operation anywhere in that row or column. It is not possible, however, to jump anywhere in the address matrix. In fact, for a given location in the matrix, there is a fixed sub· set of microprogram addresses that may be selected as the next address. These The flag logic is comprised of two flip·flops, designated the C-flag and the Z-flag, along with a simple latch, called the F-Iatch, that indicates the current state of the carry output line of the CP array. The flag logic is used in conjunction with the carry and shift logic of the CP array to implement a variety of shift/rotate and arithmetic functions. ENABLE ROW MICROPROGRAM MEMORY ADDRESS ADDRESS MAo - - - ERA ..... MAo - - MAo INTERRUPT STROBE ISE ENABLE EN ACe MCUOUTPUT ENABLE AC, ADDRESS CONTROL fUNCTION AC, AC, AC, AC, AC. LOAD LD GND-, ~l-l--f~::~~+--PR2 vee ---.I MOGRAM I PR, LATCH ' -_ _ _l""T"-PRO OUTPUTS I I I I I I ---~ FCo Fe, FLAG FLAG FLAG FLAG PRIMARY LOGIC INPUT OUTPUT LOGIC INSTRUCTION CONTROL BUS CONtROL F, FO FC2 FC3 PX, - - PX4 Figura 2. 3001 Block Diagram 2-3 SX3 - - SXo SECONDARY INSTRUCTION aus 3001 FUNCTIONAL DESCRIPTION ADDRESS CONTROL FUNCTIONS The address control functions of the MCU are selected by the seven input lines designated ACO-ACS. On the rising edge of the clock, the 9-bit microprogram address generated by the next address logic is loaded into the microprogram address register. The next microprogram address is delivered to the microprogram memory via the nine output lines designated MAo-MAs. The microprogram address outputs are organized into row and column addresses as: JZR Jump to zero row. ACO-AC3 are used to select 1 of 16 column addresses in rowO, as the next address. JCR Jump in current row. ACO-AC3 are used to select 1 of 16 addresses in the current row, specified by MA4-MAS, as the next address. JCE Jump in current column/ row group and enable PR-Iatch outputs. ACoAC2 are used to select 1 of 8 row addresses in the current row group, specified by MA7-MAs, as the next row address. The current column is specified by MAo-MA3. The PR-Iatch outputs are asynchronously enabled. MAS MA7 MAs MA5 MA4 row address MA3 MA2 MA, MAo column address Each address control function is specified by a unique encoding of the data on the function input lines. From three to five bits of the data specify the particular function while the remaining bits are used to select part of either the row or column address desired. Function code formats are given in Appendix A, "Address Control Function Summary." The following is a detailed description of each of the eleven address control functions. The symbols shown below are used throughout the description to specify row and column addresses. Symbol Meaning 5-bit next row address where n is the decimal row address. coin 4-bit next column address where n is the decimal column address. FLAG CONDITIONAL ADDRESS CONTROL (JUMP/TEST) FUNCTIONS The jump/test flag functions use the current microprogram address, the contents of the selected flag or latch, and several bits from the address control function to generate the next microprogram address. Mnemonic JFL UNCONDITIONAL ADDRESS CONTROL (JUMP) FUNCTIONS The jump functions use the current microprogram address (i.e., the contents of the microprogram address register prior to the rising edge of the clock) and several bits from the address control inputs to generate the next microprogram address. Mnemonic Function Description JCC Jump in current column. ACo-AC4 are used to se Iect 1 of 32 row addresses in the current column, specified by row group, specified by MA7 and MAs, as the next row address. If the current column group specified by MA3 is coIO-coI7, the C-flag is used to select col2 or col3 as the next column address. If MA3 specifies column group cols-col,5, the C-flag is used to select col,O or col" as the next column address. MAO-MA3, as the next address JCF JZF Jump/test Z-flag. Identical to the JCF function described above, except that the Z-flag, rather than the C-flag, is used to select the next column address. PX-BUS AND PR-LATCH CONDITIONAL ADDRESS CONTROL (JUMPITEST) FUNCTIONS The PX-bus jump/test function uses the data on the primary instruction bus (PX4-PX71. the current mircoprogram address, and several selection bits from the address control function to generate the next microprogram address. The PR-Iatch jump/test functions use the data held in the PR-Iatch, the current microprogram address, and several selection bits from the address control function to generate the next microprogram address. Function Description Mnemonic Function Description Jump/test F-Latch. ACO-AC3 are used to select 1 of 16 row addresses in the current row group, specified by MAs, as the next row address. If the current column group, specified by MA3, is colo-coI7, the F-Iatch is used to select col2 or col3 as the next column address. If MA3 specifies column group coIS-col,5, the F-Iatch is used to select col1O or col" as the next column address. JPR Jump/test PR-Iatch. ACO-AC2 are used to select 1 of 8 row addresses in the current row group, specified by MA7 and MAS, as the next row address. The four PR-Iatch bits are used to select 1 of 16 possible column addresses as the next column address. Mnemonic Function Description JLL Jump/test leftmost PRlatch bits. ACO-AC2 are used to select 1 of 8 row addresses in the current row group, specified by MA7 and MAS, as the next row address. PR2 and PR3 are used to Jump/test C-flag. ACO-AC2 are used to select 1 of 8 row addresses in the current 2-4 3001 FUNCTIONAL DESCRIPTION (con't) select 1 of 4 possible column addresses in col4 through col7 as the next column address. JRL JPX Jump/test rightmost P R· latch bits. ACo and ACl are used to select 1 of 4 high·order row addresses in the current row group, specified by MA7 and MAS, as the next row address. PRo and PRl are used to select 1 of 4 possible column addresses in col12 through coilS as the next column address. Jump/test PX·bus and load PR-Iatch. ACo and ACl are used to select 1 of 4 row addresses in the current row group, specified by MAs-MAS' as the next row address. PX4PX7 are used to select 1 of 16 possible column addresses as the next column address. SXO. SX3 data is locked in the PR-Iatch at the rising edge of the clock. FLAG CONTROL FUNCTIONS The flag control functions of the MCU are selected .by the four input lines designated FCO-FC3. Function code formats are given in Appendix B, "Flag Control Function Summary." The following is a detailed description of each of the eight flag control functions. FLAG INPUT CONTROL FUNCTIONS The flag input control functions select which flag or flags will be set to the current value of the flag input (FI) line. Data on FI is stored in the F-Iatch when the clock is low. The content of the Flatch is loaded into the C and/or Z flag on the rising edge of the clock. Mnemonic Function Description SCZ Set C-flag and Z-flag to FI. The C-flag and the Zflag are both set to the value of FI. STZ Set Z-flag to F I. The Zflag is set to the value of FI. The C-flag is unaffected. STC Set C-flag to F I. The Cflag is set to the value of FI. The Z flag is unaffected. HCZ Hold C-flag and Z-flag. The values in the C-flag and Z-flag are unaffected. FLAG OUTPUT CONTROL FUNCTIONS The flag output control functions select the value to which the flag output (FO) line will be forced. Mnemonic Function Description FFO Force FO to o. FO is forced to the value of 10gicalO. FFC Force FO to C. FO is forced to the value of the C-flag. FFZ Force FO to Z. FO is forced to the value of the Z-flag. FF1 Force FO to 1. FO is forced to the value of logical 1. 2-5 LOAD AND INTERRUPT STROBE FUNCTIONS The load function of the MCU is controlled by the input line designated LD. If the LD line is active HIGH at the rising edge of the clock, the data on the primary and secondary instruction busses, PX4-PX7 and SXO-SX3, is loaded ·into the microprogram address register. PX4-PX7 are loaded into MAo-MA3 and SXO-SX3 are loaded into M~-MA7. The high-order bit of the microprogram address register MAs is set to a logical O. The bits from the primary instruction bus select 1 of 16 possible column addresses. Likewise, the bits from the secondary instruction bus select 1 of the first 16 row addresses. The interrupt strobe enable of the MCU is available on the output line designated ISE. The line is placed in the active high state whenever a JZR to COl15 is selected as the address control function. Customarily, the start of a macroinstruction fetch sequence is situated at rowo and COl15 so that the INTEL 3214 Priority Interrupt Control Unit may be enabled at the beginning of the fetch/execute cycle. The priority interrupt control unit may respond to the interrupt by pulling the enable row address (ERA) input line down to override the selected next row address from the MCU. Then by gating an alternative next row address on to the row address lines of the microprogram memory, the microprogram may be forced to enter an interrupt handling routine. The alternative row address placed on the microprogram memory address lines does not alter the contents of the microprogram address register. Therefore, subsequent jump functions will utilize the row address in the register, and not the alternative row address, to determine the next microprogram address. Note, the load function always overrides the address control function on ACoACe. It does not, however, override the latch enable or load sub-functions of the JCE or JPX instruction, respectively. In addition, it does not inhibit the interrupt strobe enable or any of the flag control functions. 3001 D.C. AND OPERATING CHARACTERISTICS ABSOLUTE MAXIMUM RATINGS· Temperature Under Bias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . , O°C to· 70°C Storage Temperature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -65°C to +160°C All Output and Supply Voltages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ;).5V to +7V All Input Voltages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -1.0V to +5.5V Output Currents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 100 mA ·COMMENT: Stresses above those listed under "Absolute Maximum Ratings" may cause permanont damage to tho device. Thi. i•••tro•• rating only of and functional operation the device at these or any other conditions above those indicated in the operational sections of this specification is not implied. Exposure to absolute maximum ratings for extended periods may affect device reliability. TA = O°C to 70°C Vec = 5.0V ±5% SYMBOL PARAMETER Vc Input Clamp Voltage (All Input Pins) IF Input Load Current: CLK Input EN Input All Other Inputs IR MIN TYP(1) MAX --o.B -1.0 --0.075 --0.05 --0.025 Input Leakage Current: ClK EN Input All Other Inputs V Ic =-5.mA --0.75 --0.50 --0.25 mA mA mA VF =0.45V 120 j.lA j.lA j.lA VR 80 40 VIL Input low Voltage VIH Input High Voltage Icc Power Supply Current (21 170 240 VOL Output low Voltage (All Output Pins) 0.35 0.45 VOH Output High Voltage (MAo-MAs. ISE. FO) los Output Short Circuit Current (MAo-MAs. ISE. FO) 10 (of!) O.B 2.0 2.4 -15 CONDITIONS UNIT V = 5.25V Vcc = 5.0V V 3.0 -28 Off-State O~tPut Current: MAo-M.AS. FO MAo-MAs. F.O. PRo-PR2 NOTES: (1) Typical values are for TA = 25°C and nominal supply voltage. (2) EN input grounded. all other inputs and outputs open. 2-6 mA V 10L = 10mA V 10H =-1 mA --60 mA Vec = 5.0V -100 100 j.lA j.lA Vo = 0.45V Vo = 5.25V 3001 A.C. CHARACTERISTICS AND WAVEFORMS SYMBOL TA .. o·c to 70·C. vcc PARAMETER = 5.0V ±5% MIN Typl'l MAX UNIT tCY Cycle Time (21 85 60 ns twp Clock Pulse Width 30 20 ns tSF tSK tsx tSI Control and Data Input Set·Up Times: lD. ACo-ACS FCO.FC, SXO-SX3. PX4-PX7 FI 10 0 35 15 0 ns ns ns ns tHF tHK tHx tHI Control and Data Input Hold Times: lD. ACo-ACs FCo. FC, SXO-SX3. PX4-PX7 FI 5 0 20 20 0 10 30 45 ns 25 5 ns ns ns ns 5 8 tco Propagation Delay from Clock Input (ClKI to Outputs (MAo-MAs. Fa) tKO Propagation Delay from Control Inputs FC2 and FC3 to Flag Out (Fa) 16 30 ns tFO Propagation Delay from Control Inputs ACo-ACs to latch Outputs (PRo-PR2) 26 40 ns tEO Propagation Delay from Enable Inputs EN and ERA to Outputs (MAo-MAs. Fa. PRo-PR2) 21 32 ns tFI Propagation Delay from Control Inputs ACo-ACS to Interrupt Strobe Enable Output (lSE) 24 40 ns NOTE: I1l Typical values are for TA • 25°C and nominal supply voltage. 121 tCY = twp + tSF + tco TEST CONDITIONS: TEST lOAD CIRCUIT: vee Input pulse amplitude of 2.5 volts. Input rise and fall times of 5 ns between 1 volt and 2 volts. Output load of 10 mA and 50 pF. Speed measurements are taken at the 1.5 volt level. soon OUT 1 Kfl 50pF -=CAPACITANCE(21 T A .. 25·C TYP MAX UNIT Input Capacitance: ClK.EN All Other Inputs 11 5 16 10 pF pF Output Capacitance 6 12 pF SYMBOL CIN CoUT MIN PARAMETER NOTE: (21 This parameter is periodically sampled and is not 100% tested. Condition 01 measurement is 1·1 MHz. VBIAS· 2.SV. Vcc = SV and TA=2SoC. 2·7 3001 D.C. AND OPERATING CHARACTERISTICS ABSOLUTE MAXIMUM RATINGS· Temperature Under Bias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. -55°C to +125°C Storage Temperature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -i55°C to +160°C All Output and Supply Voltages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -il.5V to +7V All Input Voltages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -1.0V to +5.5V Output Currents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 100 mA 'COMMENT: Stresses above those listed under "Absolute Maximum Ratings" may cause permanent damage to the device. This is a stress rating only and functional operation of the device at these or any other conditions above those indicated in the operational sactions of this specification is not implied. Exposure to absolute maximum ratings for extended periods may affect device reliability. SYMBOL PARAMETER Vc Input Clamp Voltage (All Input Pins) IF Input load Current: ClK Input EN Input All Other Inputs IR MIN Typ (1 ) MAX -0.8 -1.2 V IC =-5mA -75 -50 -25 -750 -500 -250 IJ.A IJ.A IJ.A VF = 0.45V 120 80 40 IJ.A IJ.A IJ.A VR = 5.5V Input Leakage Current: CLK EN Input All Other Inputs VIL Input Low Voltage VIH Input High Voltage Icc Power Supply Current (2) 170 250 VOL Output Low Voltage (All Output Pins) 0.35 0.45 VOH Output High Voltage (MAo-MA8. ISE. FO) los Output Short Circuit Current (MAo-MAs. ISE. FO) 10 (off) Off·State Output Current: MAO-MA8. FO MAo-MA8. F.O. PRo-PR2 0.8 2.0 UNIT V CONDITIONS Vcc = 5.0V V 2.4 3.0 -15 -28 NOTES: (1) Typical values are for TA = 2SoC and nominal supply voltage. (2) EN input grounded. all other inputs and outputs open. 2-8 mA V 10L = 10 mA V 10H =-1 mA -60 mA Vcc = 5.0V -100 100 IJ.A IJ.A Va = 0.45V Va = 5.5V 4f'L/lr~ 3001 A.C. CHARACTERISTICS AND WAVEFORMS SYMBOL PARAMETER MIN Typ (1 ) MAX UNIT tCY Cycle Time (2) 95 60 ns twp Clock Pulse Width 40 20 ns tSF tSK Control and Data Input Set-Up Times: lD. ACo-AC6 FCo. FC, SXO-SX3. PXot-PX7 FI 10 0 35 15 0 ns ns ns ns Control and Data Input Hold Times: lD. ACO-AC6 FCo. FC, SXO-SX3. PX4-PX7 FI 5 0 25 22 0 8 10 30 45 ns Propagation Delay from Control Inputs FC2 and FC3 to Flag Out (FO) 16 50 ns Propagation Delay from Control Inputs ACO-AC6 to latch Outputs (PRo-PR2) 26 50 ns Propagation Delay from Enable Inputs EN and ERA to Outputs (MAo-MAs. FO. PRo-PR2) 21 35 ns Propagation Delay from Control Inputs ACO-AC6 to Interrupt Strobe Enable Output (lSE) 24 40 ns tsx tsl Propagation Delay from Clock Input (ClK) to Outputs (MAo-MAs. FO) NOTE: II) Typical.alues are lor TA 121 tCY = twp + tSF + tco 25 5 ns ns ns ns 5 = 25°C and nominal supply voltage. TEST CONDITIONS: TEST lOAD CIRCUIT: Vee Input pulse amplitude of 2.5 volts. Input rise and fall times of 5 ns between 1 volt and 2 volts. Output load of 10 mA and 50 pF. Speed measurements are taken at the 1.5 volt level. 500n OUTo-......- - i 1 Kfl 50pF CAPACITANCE (2 ) TA = 25°C SYMBOL CIN COUT TYP MAX UNIT Input Capacitance: ClK.EN All Other Inputs MIN 11 5 16 10 pF pF Output Capacitance 6 12 pF PARAMETER NOTE: 121 This parameter is periodically sampled and is not 100% tested. Condition 01 measurement is I TA = 25°C. 2-9 = 1 MHz. VBIAS = 2.5V. Vcc = 5V and 3001 3001 WAVEFORMS CLK CLOCK INPUT ~ / \ 1/ \ \ J / ~IW~ ICY EN. ERA ENABLE INPUTS V 1\ E-tco ---l -----l> f\1 11\ lEO MAO·MAS CONTROL MEMORY ADDRESS OUTPUTS E---- -IHF ISF-----) \f ACO-AC6. LD ADDRESS CONTROL INPUTS /\ 'f---IEO- -----l> ----'l IFO E-- V 1\ PRO-PR2 "PR" LATCH OUTPUTS iE-IHK tsK \V 11\ FCO-FC3 FLAG CONTROL INPUTS IHI lSI E-- \1 1\ FI FLAG INPUT iE--IKO E--IEO- E-tco V FO FLAG OUTPUT "E--IFI---J \/ \ ISE INTERRUPT STROBE ENABLE OUTPUT IHX ISX SXO-PX7 INSTRUCTION BUS INPUTS 2-10 )1 3001 TYPICAL AC AND DC CHARACTERISTICS CLOCK PULSE WIDTH Vs. VCC AND TEMPERATURE ICC VS. TEMPERATURE 190 40 Vee·5.0V 190 126'C -~ V 170 0 ~ 26'C 0 5.0 4.75 4.6 160 &.60 6.26 "' -56 C O'C 70 C 26"C 126"C TEMPERATURE (OC) Vee CLOCK TO mA OUTPUTS VS. LOAD CAPACITANCE OUTPUT CURRENT VS. OUTPUT LOW VOLTAGE 6O.-------,--------r------~------_, 40 Vee - I.OV 30 -56°C -- 1 12&°C 26' E a: 0 6Or--------r--------r--------r--~~~ a .r--------r------~~--~~~------_; ~ 3Or-------+-----~~~----_t------~ 25'C 70'C 126'C 0 4.6 5.0 4.7& 5.5 5.25 °0~----~~~----~0.~4------~0.8~----~0~ 5.75 Vee OUTPUT VOLTAGE (VOLTSI CLOCK TO MA OUTPUTS VS. LOAD CAPACITANCE OUTPUT CURRENT VS. OUTPUT HIGH VOLTAGE 60 we ----- 1MAo r- Vee - 5.0V - TA • WC ~ .-- Vee ~ 160 300 260 300 ~ -40 350 LOAD CAPACITANCE (pFI ". IJ ~r' ~ o 1.0 2.0 3.0 OUTPUT VOLTAGE (VOLTS) 2-11 r"-?O'C 26"c / 5 -35 100 ~ 1"26'C ~ 0 60 -6&'C O'C ~ 5 0 -~.ov 4.0 5.0 3001 APPENDIX A ADDRESS CONTROL FUNCTION SUMMARY FUNCTION MNEMONIC NEXT ROW AC6 S m, mo d2 d, dO mS m4 d3 d2 d, dO d2 d, dO m3 m2 m, mo d3 d2 d, do m3 0 ma m7 d2 d, dO m3 0 ma m7 d2 d, do m3 0 do ma m7 d2 d, do P3 P2 do ma m7 d2 d, do 0 d, dO d, do do d4 d3 d2 d, do 0 0 0 d3 d2 d, dO . ma m7 m6 0 d2 d, dO d3 d2 d, do ma 0 d2 d, dO d2 d, do d2 d, d2 d, 0 JCE Jump in column/enable JFL Jump/test F-Iatch 0 JCF Jump/test C-flag 0 JZF Jump/test Z-flag 0 JPR Jump/test PR-Iatches 0 JLL Jump/test left PR bits 0 JRL Jump/test right PR bits JPX Jump/test PX-bus 0 0 0 SYMBOL MEANING dn Data on address control line n Data in microprogram address register bit n Data in PR-Iatch bit n Data on PX-bus line n (active LOW) Contents of F-Iatch. C-flag. or Z-flag. respectively 0 ma m7 dO ma m7 1 d, do ma m7 mS DESCRIPTION MNEMONIC FC, 0 0 SCZ Set C-flag and Z-flag to f 0 STZ Set Z-flag to f 0 STC Set C-flag to f HCZ Hold C-flag and Z-flag 0 DESCRIPTION MNEMONIC FC3 2 Force Fa to 0 0 0 FFC Force Fa to C-flag 0 FFZ Force Fa to Z-flag FFl Force Fa to 1 LOAD FUNCTION LD MAs 0 see Appendix A 0 7 x3 s x2 S 4 MA3 2 0 see Appendix A x, Xo x7 Xs SYMBOL MEANING xn Contents of the F-Iatch Data on PX- or SX-bus line n (active LOW) 1 0 NEXT COL NEXT ROW Xs 2-'2 6 d, FLAG CONTROL FUNCTION SUMMARY FFO Flag Output m2 d3 d, d2 Jump in current row TYPE m3 d2 d3 JCR Flag Input do 0 d3 0 0 APPENDIX B d, 0 d4 0 Jump to zero row Pn xn f. c. z MA3 2 Jump in current column mn 4 3 JZR 0 MAS 7 4 JCC TYPE NEXT COL DESCRIPTION X4 S X7 2 Xs 0 c p, Po P3 P2 p, Po Xs x4 3001 APPENDIX C JUMP SET DIAGRAMS JCC Jump in Current Column JZR Jump to Zero Row The following ten diagrams illustrate the jump set for each of the eleven jump and jump/test functions of the MCU. Location 341, indicated by the black square, represents one current row (row21 ) and current column (COI5) address. The grey boxes ind icate the microprogram locations that may be selected by the particular function as the next address. row31---i> t t colo current column JCF, JZF Jump/Tlit C-FI8g Jump/Test Z-FI8g JFL Jump/Tlit F·Lau:h JCR Jump in Current Row JCE Jump Column/En..... current row current row group group Ma7 10 Ma7 10 current column JLL Jump/Tlit Left Latch JPR Jump/Tlit PR·Latch JRL Jump/Tlit Right Latch currant .ow JPX Jump/Tlit PX-Bul :,rentL group Ma7 10 group M,~tJ 2-13 3001 TYPICAL CONAGURATIONS r'S-,--~'~R7A~M~A~'~""~"'~""-"'~"'~""~M~A-0--------"N~ AC. 360. PROM A, ClK TO 3002 CP ARRAY 3604 PROM 1 ~8 Non-Pipelined Configuration with 512 Microinstruction Addressability IIIII sv cs,··cs. AO Os °5 ..... 0 , 3604 PROM 3604 PROM cs, ··CS4 Ao ·················A8 ············--·A8 PROM CS,.-CS4 AO'" ···.0, t '"'"' 360' PROM . ···-A8 CS,··CS. AO ················-Aa sv II .11 AS" ···········AOCS4-·CS' A8 ········ __ ······-AOCS4--CS' -.ll A8 ·················.4.0 CS4"CS, 360. 3604 PROM 380. PROM PROM 08 ··········· .. ··0, 08 ···············0, Os ·····.. ·······0, II A8·················AOCS4··CS' 360' PROM Oa ·············0, MAa··· ........... MAo IS' lllI_~_~ACO AC, AC, AC3 AC, ACs AC. 'NW 3001 MCU TO MEMORY DATA BUS U§~sv~~~~~~r;:-:JI ig 2D 3D 2Q~ 30- L=::j:=!==/ ~~-======:::::::...J eLK NOTE; 5V Two O-Iype flip-flops of the '5174 pipeline register ate used as the microprogram address reglst.r 81(1I1'1S1on. Pipelined Configuration with 2048 Microinstruction Addressability 2-14 CLK 0-- CLR ~ PIPELINE REGISTER TO 3002 CPARRAV SCHOTTKY BIPOLAR LSI MICROCOMPUTER SET The INTE L® 3002 Central Processing Element contains all of the circuits that represent a 2·bit wide slice through the data processing section of a digital com· puter. To construct a complete central processor for a given word width N, it is simply necessary to connect an array of N/2 CPE's together. When wired together in such an array, a set of CPE's provide the following capabilities: 2's complement arithmetic Logical AND, OR, NOT and exclusive·OR Incrementing and decrementing Shifting left or right Bit testing and zero detection Carry look·ahead generation Multiple data and address busses High Performance - 100 ns Cycle Time 3002 CENTRAL PROCESSING ELEMENT PACKAGE CONFIGURATION TTL and DTL Compatible N·Bit Word Expandable Multi·Bus Organization 3 I nput Data Busses 2 Three·State Fully Buffered Output Data Busses Ko 3 11 General Purpose Registers K, X y Full Function Accumulator Independent Memory Address Register Cascade Outputs for Full Carry Look·Ahead Versatile Functional Capability 8 Function Groups Over 40 Useful Functions Zero Detect and Bit Test Single Clock 28 Pin DIP 2·15 vee 10 I, 26 F2 F, 4 25 Fo 5 24 F3 ED 6 co 7 RO 8 LI 9 CI 10 19 EA 11 18 Do CLK A, 12 17 F. Ao 13 16 Fs GND 14 15 F6 INTEL@ 3002 Mo M, 0, 3002 PIN DESCRIPTION PIN SYMBOL 1,2 NAME AND FUNCTION External Bus Inputs Active lOW The external bus inputs provide a separate input port for external input devices. 3,4 Active LOW Mask Bus Inputs The mask bus inputs provide a separate input port for the microprogram memory, to allow mask or constant entry. 5,6 X,Y Standard Carry Look-Ahead Cascade Outputs The cascade outputs allow high speed arithmetic operations to be performed when they are used in conjunction with the INTEL 3003 Look-Ahead Carry Generator. 7 CO Ripple Carry Output The ripple carry output is only disabled during shift right operations. Active LOW Th ree-state B RO Sh ift Right Output The shift right output is only enabled during shift right operations. Active LOW Three-state 9 LI Shift Right Input Active LOW 10 CI Carry Input Active LOW 11 EA Memory Address Enable Input When in the LOW state, the memory address enable input enables the memory address outputs (AO-A1)' Active LOW 12-13 Ao-A1 Memory Address Bus Outputs The memory address bus outputs are the buffered outputs of the memory address register (MAR). Active LOW Th ree-state 14 GNO Ground 15-17, 24-27, Fo-F6 Micro-Function Bus Inputs The micro-function bus inputs control ALU function and register selection. 18 ClK Clock Input 19-20 00-0 1 Memory Data Bus Outputs The memory data bus outputs are the buffered outputs of the full function accumulator register (AC). Active LOW Three-state 21-22 Mo-M1 Memory Data Bus Inputs The memory data bus inputs provide a separate input port for memory data. Active LOW 23 ED Memory Data Enable Input When in the LOW state, the memory data enable input enables the memory data outputs (00-01) Active LOW 28 Vee +5 Volt Supply NOTE: 1. Active HIGH, unless otherwise specified. 2-16 3002 LOGICAL DESCRIPTION The CPE provides the arithmetic, logic and register functions of a 2·bit wide slice through a microprogrammed central processor. Data from external sources such as main memory, is brought into the CPE on one of the three separate in· put busses. Data being sent out of the CPE to external devices is carried on either of the two output busses. Within the CPE, data is stored in one of eleven scratch pad registers or in the accumula· tor. Data from the input busses, the registers, or the accumulator is available to the arithmetic/logic section (ALS) under the control of two internal multi· plexers. Additional inputs and outputs are included for carry propagation, shifting, and micro·function selection. The complete logical organization of the CPE is shown below. MICRO·FUNCTION BUS AND DECODER The seven micro·function bus input lines of the CPE, designated Fa-Fa, are decoded internally to select the ALS function, generate the scratch pad address, and control the A and B multiplexers. M·BUS AND I·BUS INPUTS The M·bus inputs are arranged to bring data from an external main memory into the CPE. Data on the M·bus is multiplexed internally for input to the ALS. The I·bus inputs are arranged to bring data from an external I/O system into the CPE. Data on the I·bus is also mul· tiplexed internally, although indepen· dently of the M·bus, for input to the ALS Separation of the two busses per· mits a relatively lightly loaded memory bus even though a large number of I/O devices are connected to the I·bus. Alternatively, the I·bus may be wired to perform a multiple bit shift (e.g., a byte exchange) by connecting it to one of the output busses. In this case, I/O device data is gated externally onto the M·bus. SCRATCH PAD The scratchpad contains eleven registers designated Ra through Rg and T. The output of the scratch pad is multiplexed interl'lally for input to ALS. The ALS output is returned for input into the scratch pad. ACCUMULATOR AND D·BUS An independent register called the accumulator (AC) is available for storing the result of an ALS operation. The output of the accumulator is multi· plexed internally for input back to the ALS and is also available via a three· state output buffer on the D·bus outputs. Conventional usage of the D·bus is for data being sent to the external main memory or to external I/O devices. A AND B MULTIPLEXERS The A and B multiplexers select the two inputs to the ALS specified on the micro·function bus. Inputs to the A· multiplexer include the M·bus, the scratchpad, and the accumulator. The B·multiplexer selects either the I·bus, the accumulator, or the K·bus. The selected B·multiplexer input is always. logically ANDed with the data on the K·bus (see below) to provide a flexible masking and bit testing capability. ALS AND K-BUS The A LS is capable of a variety of arithmetic and logic operations, in· cluding 2's complement addition, in· crementing, and decrementing, plus logical AND, inclusive·OR, exclusive· NOR, and logical complement. The result of an ALS operation may be stored in the accumulator or one of the scratchpad registers. Separate left input and right output lines, designated LI and RO, are available for use in right shift operations. Carry input and carry output lines, designated CI and CO are provided for normal ripple carry propaga· tion. CO and RO data are brought out via two alternately enabled tri·state buffers. In addition, standard look ahead carry outputs, designated X and Y, are available for full carry look ahead across any word length. The ability of the K·bus to mask inputs to the ALS greatly increases the versa· tility of the CPE. During non·arithmetic operations in which carry propagation has no meaning, the carry circuits are used to perform a word·wise inclusive· OR of the bits, masked by the K·bus, from the register or bus selected by the function decoder. Thus, the CPE pro· vides a flexible bit testing capability. The K·bus is also used during arithmetic operations to mask portions of the field being operated upon. An additionalfunction of the K-bus is that of supply· ing constants to the CPE from the microprogram. MEMORY ADDRESS REGISTER ANDA·BUS A separate ALS output is also avail· able to the memory address register (MAR) and to the A·bus via a three· state output buffer. Conventional usage of the MAR and A·bus is for sending ad· dresses to an external main memory. The MAR and A·bus may also be used to select an external device when executing I/O operations. MAIN MEMORY ADDRESS A, D, .. D, ED ENABLE ENABLE EA ADDRESS LOOK AHEAD DATA CI CARRY IN {X -+------l CARRY OUT co -- ..:s"' &0 ~ r---- i.. , E 26:::- 40 ~K &.0 Vee (VOLTS) Vee (VOLTSI PROPAGATION DELAY - CLOCK TO "A" AND "0" DATA OUTPUT VS. AND TEMPERATURE PROPAGATION DELAY - CLOCK TO "A" AND "0" DATA OUTPUT VS. LOAD CAPACITANCE "-CC: 10 1Or--------r------~--------r_------~ ! 5 ~ UDY PROPAGATION DELAY FROM FUNCTION INPUTS TO CASCADE OUTPUTS VS. Vee AND TEMPE_R!'TURE CARRY IN SET UP TIME vs. Vee AND TEMPERATURE I &.2&V vee (VOLTS) OUTPUT VOLTAGE I 5 &0 1Or-------;-------~--------+_------~ ~ ~ ~ ! I, 40 1----+-::;_..... IE, :P :P Vee (VOLTSI LOAD CAPAC'T ANCE (pFI 2-26 3002 TYPICAL CONRGURATIONS MEMORY ADDRESS BUS (ZH L1NESI DATA BUS TO MEMORY (2N llNESI LAD '--v' F.-F. ClK l+- 3002 CARRY FROM 3001 i- CI CO II 3002 RO --::>F o-F3 I CARRY TO 3001 MICROPROGRAM CONSTANTIMASK INPUT BUS (ZH llNESI 1, M K """" - r-- ~ r-------.- ir> "rt= '--- r- 1- I .J + + - - - - l l - I ' - - - - - , DATA BUS FROM MEMORY - - - - l l - - - - - - ' (2N llNESI EXTERNAL DATA BUS (2N L1NESI Rippltl-Carry Confi.,ration IN 3002 CPE's) +5V EC n +8 ECn +8 CARRY FROM 3001 CARRY TO 3001 +-~------------------------------------------------------------------------------~ Carry Look-Aha. Confi.,retion With Ripple Through tho Left Slice (32 Bit Array) 2-27 3002 APPENDIX A MICRO-FUNCTION SUMMARY F·GROUP R·GROUP MICRO·FUNCTION Rn + (AC A K) + CI ... Rn , AC o II M + (AC A K) + CI'" AT III ATL A (lL A Kd'" RO II V [(IH A KH) A ATHl "'ATH [AhA (lLA Kdl V [ATHV(lH A KH)l"'Ah K V Rn "'MAR Rn + K + CI ... Rn II K V M "'MAR M+K+CI"'AT III (AT V K) + (AT A K)+CI"'AT (AC A K) -1 + CI ... Rn 2 II (AC A K) -1 + CI'" AT III (I A K) -1 + CI'" AT II M + (AC A K) + CI ... AT III AT + (I A K) + CI ... AT CI V (R n A AC A K) ... CO Rn A (AC A K) ... Rn II CI V (M A AC /\ K) ... CO M A (AC A K)'" AT III CI V (AT A I A K)->CO AT A (I A K)'" AT 1 (see Note 1) Rn + (AC ,\ K) + CI ... Rn 3 4 5 6 7 CI V (R n A K)'" CO K A Rn ... Rn II CI V (M A K) ... CO K AM'" AT III CI V (AT A K)'" CO K A AT'" AT CI V (AC A K) ... CO Rn V (AC A K)'" Rn II CI V (AC A K) ... CO MV(ACAK)"'AT III CI V (I A K) ... CO AT V (I A K) CI V (Rn A AC A K) ... CO Rn iii (AC A K) ... Rn CI V (M A AC A K) ... CO M iii (AC /\ K)'" AT III CI V (AT A I A K) ... CO AT iii (I A K)'" AT 1. 2'5 complement arithmetic adds 111 ... 11 to perform subtraction of 000 ... 01. 2. Rn includes T and AC as source and destination registers in R-group 1 micro-functions. 3. Standard arithmetic carry output values are generated in F-group 0, 1, 2 and 3 instructions. SYMBOL MEANING I, K,M CI, II CO, RO Rn AC AT MAR L, H Data on the I, K, and M busses, respectively Data on the carry input and left input, respectively Data on the carry output and right output, respectively Contents of register n including T and AC (R-Group I) Contents of the accumulator Contents of AC or T, as specified Contents of the memory address register As subscripts, designate low and high order bit, respectively 2's complement addition 2's complement subtraction Logical AND Logical OR Exclusive-NOR Deposit into /\ V (ji AT II NOTES: + -~ 2-28 3002 APPENDIX B ALL-ZERO AND ALL-ONE K-BUS MICRO-FUNCTIONS K·BUS =00 MICRO·FUNCTION MNEMONIC K·BUS = 11 MICRO·FUNCTION MNEMONIC Rn + CI .... Rn. AC ILR AC + Rn + CI .... Rn. AC ALR M + CI .... AT ACM M + AC + CI .... AT AMA SRA (See Appendix AI LMI 11 .... MAR Rn - 1 + CI-- Rn M - 1 + CI .... AT AT L .... RO ATH .... ATL Rn .... MAR Rn + CI .... Rn M .... MAR M+CI-+AT CI-1--AT DSM LMM 11 .... MAR CIA AT-1 + CI->AT See Note 1 CSR AC - 1 + CI-> Rn See Note 1 SDR See Notes 1,4 CSA AC -1 + CI'" AT See Notes 1.4 SDA AT+ CI .... AT CI-1 .... Rn LI .... ATH (See CSA above) INR Rn + CI -- Rn (See ACM above) AT + CI .... AT LDM DCA 1- 1 + CI-- AT LDI AC + Rn + CI -- Rn ADR (See AMA above) INA I+AT+CI->AT AlA CI .... CO 0 .... Rn CLR CI v (R n II AC) -> CO Rn II AC -> Rn ANR CI->CO 0"" AT CLA Cl.v (M II ACI ... CO MIIAC""AT ANM (See CLA above) CI v (AT II I)'" CO AT II I'" AT ANI (See CLR above) CI v Rn'" CO Rn'" Rn TZR (See C LA above) CI v M "'CO M"'AT LTM (See C LA above I CI v AT'" CO AT -+AT TZA CI"'CO Rn'" Rn NOP CI v AC"'CO Rn v AC'" Rn ORR CI"'CO M""AT LMF CI v AC"'CO M v AC"'AT ORM CI v I'" CO I v AT'" AT ORI (See NOP above) CI--CO R;; .... Rn CMR CI v (R n CI""CO M"'AT LCM Clv (M CI""CO AT"" AT CMA Clv (AT Rn iii AC'" Rn XNR AC)"'CO Miii AC"'AT XNM I)--CO I iii AT--AT XNI AC)"'CO 4. The more general operations. CSR and SDR. should be used in place of the CSA and SDA operations. respectively. 2·29 3002 APPENDIX C FUNCTION GROUP 0 1 2 3 4 5 6 7 REGISTER GROUP FUNCTION AND REGISTER GROUP FORMATS F6 5 4 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 0 0 1 1 REGISTER RO R, R2 R3 R4 RS R6 R7 RS Rg F3 2 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 T AC II III T 0 0 AC T 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 AC 2-30 SCHOTTKY BIPOLAR LSI MICROCOMPUTER SET The INTEL (!) 3003 Look·Ahead Carry Generator (LCG) is a high speed circuit capable of anticipating a carry across a full 16-bit 3002 Central Processing Array. When used with a larger 3002 CP Array multiple 3003 carry generators provide high speed carry look·ahead capability for any word length. The LCG accepts eight pairs of active high cascade inputs (X, V) and an active low carry input and generates active 10\'11 carries for up to eight groups of binary adders. High Performance - 10 ns typicel propagation dalay Compatible with INTEL 3001 MCU and 3002CPE DTL and TTL compatible 3003 LOOK-AHEAD CARRY GENERATOR PACKAGE CONFIGURATION Y7 Vee x7 YI ECn+ 8 28 Full look-ahead across 8 adders Xs Xl Y2 X. Low voltage diode input clamp INTEL- Ys 3003 28-pin DIP Cn+S X, X3 "0 Y3 11 Yo ,. en +3 en Cn+" en +2 GND 2-31 Cn+. Y, Y. Expandable Xs Cn+ 7 Cn+1 '3 Cn+ 1 3003 LOGIC DIAGRAM EC n+ 8 SYMBOL 1,7,8,11 18,21,23 27 Y O-Y7 2,5,6,10 19,20,24 26 17 X7 NAME AND FUNCTION TYPE Active HIGH XO-X7 Standard carry look-ahead inputs Active HIGH Cn Carry input Active LOW Cn+8 3 ECn+8 Cn+l- Carry outputs Cn+8 carry output enable }-- :;;;; Standard carry look-ahead inputs 4,9,12 13,15,16 R== =;= ~ V7 PIN DESCRIPTION PIN ......... Active LOW Active HIGH ~ Vs Xs Vo en+8 en+7 en+8 Xs v. X. Cn+5 V3 28 14 Vee +5 volt supply GND Ground Cn+~ X3 V2 Cn+3 X2 v, en+ 2 X, Vo Xo Cn .... to'" -rt=r>- 3003 LOGIC EQUATIONS The 3003 Look-Ahead Generator is implemented in a compatible form for direct connection to the 3001 MCU and 3002 CPE. Logic equations for the 3003 are: Cn +.7 = Y SXS + Y SY 5 X 5 + Y SY 5Y 4X 4 + Y SY 5 Y 4Y 3X 3 + Y SY 5Y 4Y 3Y 2 X 2 + Y6Y5Y4Y3Y2Y1Xl + Y SY 5Y 4Y3Y 2Y lYOXO +YSY5Y4Y3Y2Y1YOCn Cn + 8 = High Impedance State when EC n + 8 Low Cn + 8 = Y 7 X 7 + Y 7Y SX S + Y 7Y SY 5 X 5 + Y7YSY5Y4X4 + Y 7 Y SY 5 Y 4Y 3X3 + Y 7Y SY 5 Y 4Y 3Y 2 X 2 + Y7YSY5Y4Y3Y2Y1Xl + Y 7Y SY 5 Y 4Y 3Y 2Y l YOXO + Y 7 Y SY 5 Y 4Y3Y2Y 1YOGn when EC n + 8 high 2-32 en+ 1 3003 D.C. AND OPERATING CHARACTERISTICS ABSOLUTE MAXIMUM RATINGS· Temperature Under Bias . Storage Temperature -65°C to +160°C -0.5V to +7V All Output and Supply Voltages. -1.0V to +5.5V All Input Voltages Output Current . o°C to 70°C 100mA . ·COMMENT: Stresses above those listed under "Absolute Maximum Rating" may cause permanent damage to the device. This is a stress rating only and functional operation of the device at these or at any other condition above those indicated in the operational sections of this specification is not implied. T A = O°C to +70°C SYMBOL VCC = 5.0V ±5% PARAMETER Vc Input Clamp Voltage (All Input Pins) 'F Input Load Current: X6,X7Cn,ECn + 8 Y7,XO,X5, YO'Y6 Input Leakage Current: Cn and EC n + 8 All Other Inputs 'R V,L Input Low Voltage V,H Input High Voltage ICC Power Supply Current VOL Output Low Voltage (All Output Pins) VOH Output High Voltage (All Output Pins) lOS Short Circuit Output Current (All Output Pins) 'O(off) MIN. TYP.(1) MAX. -O.B -1.0 -0.07 -0.200 -0.6 -0.25 -0.500 -1.5 40 100 0.8 2.0 80 0.35 2.4 -15 130 0.45 3 -40 Off·State Output Current (C n + 8) UNIT CONDITIONS V 'C = -5 mA mA mA mA VF = 0.45V jJ.A jJ.A VR = 5.25V V VCC = 5.0V V VCC = 5.0V mA All Y and EC n + 8 high, All X and Cn low V 10L = 4 mA V 10H = -1 mA -65 mA VCC = 5V -100 +100 jJ.A jJ.A Vo = 0.45V Vo = 5.25V NOTE: Typical values are for TA = 25°C and nominal supply voltage. (11 A.C. CHARACTERISTICS TA = O°C to 70°C, VCC = +5V ± 5% SYMBOL MIN. PARAMETER 3 TYP.(1) MAX. UNIT 10 20 ns txc X, Y to Outputs tcc Carry I n to Outputs 13 30 ns tEN Enable Time, Cn + 8 20 40 ns NOTE: Typical values are for T A = 25°C and nominal supply voltage. (11 2-33 3003 D.C. AND OPERATING CHARACTERISTICS ABSOLUTE MAXIMUM RATINGS· Temperature Under Bias -55·C to +125·C Storage Temperature -65·C to +160·C All Output and Supply Voltages. -0.5V to +7V All I nput Voltages Output Current -1.0V to +5.5V . 100mA ·COMMENT: Stresses above those listed under "Absolute Maximum Rating" may cause permanent damage to the device. This is a stress rating only and functional operation of the device at these or at any other condition above those indicated in the operational sections of this specification is not implied. TA = -55·Cto +125·C, Vee = 5.0V ±10%. SYMBOL PARAMETER MIN. Vc Input Clamp Voltage (All Input Pins) IF Input Load Current: X6,X7,Cn,ECn+8 Y 7,XO,X5, YO'Y6 Input Leakage Current: and EC n + 8 All Other Inputs IR TYP.(I) MAX. -0.8 -1.2 -0.07 -0.200 -0.6 -0.25 -0.500 -1.5 en VIL Input low Voltage VIH Input High Voltage ICC Power Supply Current VOL Output Low Voltage (All Output Pins) VOH Output High Voltage (All Output Pins) lOS Short Circuit Output Current (All Output Pins) 10(off) 40 100 0.8 2.1 80 0.35 2.4 -15 130 0.45 3 -40 Off·State Output Current (C n + 8) CONDITIONS UNIT V IC = -5 mA mA mA mA VF = 0.45V IJA IJA VCC = 5.25V, VR = 5.5V V VCC= 5.0V V VCC = 5.0V mA All Y and ECn + 8 high, All X and Cn low V 10l =4 mA V 10H =-1 -65 mA -100 +100 IJA IJA VCC mA =5V VO=0.45V VO= 5.5V NOTE: Typical values are for T A = 25°C and nominal supply voltage. (1) A.C. CHARACTERISTICS TA =-55·C to +125·C, Vee =+5.0V ±10% SYMBOL MIN. PARAMETER 3 TYP.(I) MAX. UNIT 10 25 ns txc X. Y to Outputs tcc Carry I n to Outputs 13 40 ns Enable Time. Cn + 8 20 50 ns NOTE: (11 Typical values are for TA = 25°C and nominal supply voltage. 2-34 3003 WAVEFORMS G . =*.....--- X,V INPUTS ________________ Cn INPUT ~*~I~.~---------~----------~-e------~----.--! ____________ NOTE: ALTERNATE TeST LOAD: ------- Vee ----.-;~-tEN1-r--..,~,J::.::"-1-j ____~ T Cn.a OUT VOH I Cn .8 OUTPUT . _ __________ J tt ~ ~ '0' ,. VOL O.SV SYMBOL PARAMETER MIN TYP MAX UNIT Input Capacitance All inputs 12 20 pF Output Capacitance Cn +8 7 12 pF NOTE: (21 This parameter is periodically sampled and is not 100% tested. C.ondition 01 measurement is 1 = 1 MHz, VBIAS VCC = S.OV and TA = 25°C. = S.OV, TEST LOAD CIRCUIT: TEST CONDITIONS: Input pulse amplitude of 2.5V. Input rise and fall times of 5 ns between 1 and 2 volts. Output loading is 5 mA and 30 pF. Speed measurements are made at 1.5 volt levels. Vee " OUT o--~---+ =3O.F 2-35 2. 3003 TYPICAL A.C. AND D.C. CHARACTERISTICS OUTPUT CURRENT vs. OUTPUT LOW VOLTAGE ICC VS. TEMPERATURE 80 8Or_----,-----~------r_--~ L..L 8O~-----+------~------~~~~ !Jj - 70 m~----~----.,,~------+-----~ ~75 -50 -26 25 50 75 100 °0~--~~~-----7------~----~ 125 OUTPUT (V) TEMPERATURE (OCI x, Y TO OUTPUTS VI. Vee AND TEMPERATURE OUTPUT CURRENT VS.OUTPUT.HIGH VOLTAGE 30 t -. !. .. z a: a: ::l U ~ ! -'0 m ~ ~ . -,. ::l 0 -m x 0 --- _55°C / / O"c}5'C // ~ :e> '0 '\).:c 125'1 -26 -30 .... o 0 Vee (VOLTS) x, Y TO OUTPUT DELAY VS. LOAD CAPACITANCE .. x, Y TO OUTPUTS VS. VCC AND TEMPERATURE 30 Vee J ls.ov TA " 26°C 30 > ~ Q !; I!: ::l m 0 :e> x '0 ~ 0.. ! - . txc_+ ~ "- "- 0 x , 25'\ '" ~ :e> 1-" 70'C m ~ ~ ,-+ I--" ...-::: p-- ~ '00 5." 5.25 5.00 4.75 OUTPUT IV) ! xc ._ '0 ~ \'C -5T 260 .... o 300 LOAD CAPACITANCE (pFI 4.75 5.00 Vee (VOL TSI 2·36 5.26 .... 3003 TYPICAL CONFIGURATIONS The 3003 LCG can be directly tied to the 3001 MCU and a 3002 CP array of any word length. The following figures represent typical configurations of 16· and 32-bit CP arrays. Figures 1 and 2 illustrate use of the 3003 in a system where the carry output (CO) to the 3001 MCU is rippled through the high order CPE slice. Figure 3 illustrates use of the 3003 in a system where tri·state output Cn+8 is connected directly to the flag input on the 3001 MCU. Cn+8 is disabled during shift right by decoding that instruction externally. thus multiplexing Cn+8 with the shift right (RO) output of the low order CPE slice. Ee n + 8 CARRY FROM 3001 TO +-~--________________________________________~ CARRY 3001 Figure 1. Carry Look-Ahead Configuration with Ripple through the Left Slice U6-Bit Array) ... ... F;" -5V F3 F, F, Ec" +8 CARRY FROM M3IlOl ~~RRV~-+ ______________________________________________________________________________________ M3IlOl Figure 2. Carry Look-Ahead Configuration with No Carry Ripple through the Left Slice (32-Bit Array) 2·37 ~ SCHOTTKY BIPOLAR LSI MICROCOMPUTER SET The INTE~3212 Multi-Mode Latch Buffer is a versatile 8-bit latch with three-state output buffers and built-in device select logic. It also contains an independent service request flip-flop for the generation of central processor interrupts. Because of its multi-mode capabilities, one or more 3212's can be used to implement many types of interface and support systems for Series 3000 computing elements including: High Performance - 50 ns Write Cycle Time Low Input Load Current - 250 JJ.A Maximum Three-State Fully Buffered Outputs PACKAGE CONFIGURATION 24 • OSI 23 MO 22 011 High Output Drive Capability Independent Service Request FlipFlop Asynchronous Data Latch Clear 001 4 21 INTEL@ 3212 01 2 IS 01 3 17 16 01 4 Gated data buffers 004 5TB Multiplexers GNO 20 19 002 003 24 Pin DIP Simple data latches 3212 MULTI-MODE LA TCH BUFFER 10 15 11 14 12 13 Bi-directional bus drivers Vcc INT DiS DOS 01 7 007 01 6 006 01 5 005 CLR OS2 Interrupting input/output ports CQNTROL " 0 MEMORV 110 M'fMOR'" "');l-:''''''~S aus MICRO PROGRAM MEMORV INSTRUCTION BUS 't)Ptt..~ l!trr.. ~V'..o"" ""'t'W\o"" Figure 1_ Block Diagram of a Typicel System 2·39 u ...~ po., ~"()V\ 't)'C........ ,c'C..'S. 3212 PIN DESCRIPTION PIN 2 SYMBOL NAME AND FUNCTION OS1 Device Select Input 1 MO Mode Input active LOW When MO is high (output mode) the output buffers are enabled and the write signal to the data latches is obtained from the device select logic. When MO is low (input mode) the output buffer state is determined bV the device select logic and the write signal is obtained from the strobe (STB) input. 3,5,7,9, 16, lB, 20, 22 011- 01 S 4,6, B,10, 15,17,19, 21 001- 00 S 11 STB Data Inputs The data inputs are connected to the O-inputs of the data latches. three-state Data Outputs The data outputs are the buffered outputs of the eight data latches. Strobe Input When MO is in the LOW state, the STB input provides the clock input to the data latch. 12 GNO 13 Ground Device Select Input 2 When OS1 is low and OS2 is high, the device is selected. 14 CLR 23 INT Clear active LOW Interrupt Output active LOW The interrupt output will be active LOW (interrupting state) when either the service request flip-flop is low or the device is selected. NOTE: (1) Active HIGH, unless otherwise specified. 2-40 3212 FUNCTIONAL DESCRIPTION The 3212 contains eight D·type data latches, eight three·state output buf· fers, a separate D·type service request flip·flop, and a flexible device select! mode control section. DATA LATCHES The Q·output of each data latch will follow the data on its corresponding date input line (DI,-Dls) while its clock input is high. Data wi II be latched when the internal write line WR is brought low. The output of each data latch is connected to a three·state, non·inverting output buffer. The in· ternal enable line EN is bussed to each buffer. When the EN is high, the buf· fers are enabled and the data in each latch is available on its corresponding data output line (DOo-DO S )' The Q output of the SR flip·flop is logically ORed with the output of device select logic and then inverted to provide the interrupt output INT. The 3212 is considered to be in the in· terrupting state when the INT output is low. This allows direct connection to the active LOW priority request in· puts of the INTEL3214 Interrupt Control Unit. When operated in the input mode (i.e., MD low) the strobe input STB is used to synchronously write data into the data latch and place the SR flip·flop in the interrupting (reset) state. The in· terrupt is removed by the central pro· cessor when the interrupting 3212 is selected. 1---------------1 I I I I I I I I STB::+===::t::;:===!f:> ~ D~ 05 2 I I INT DEVICE SELECT LOGIC Two input lines DS, and D'S2 are pro· vided for device selection. When DS, is low and DS2 is high, the 3212 is selected. 0" I-++--r>-~DOI 012 1-4--1--1'">4- 002 MODE CONTROL SECTION The 3212 may be operated in two modes. When the mode input line MD is low, the device is in the input mode. In this mode, the output buffers are enabled whenever the 3212 is selected; the internal WR line follows the STB input line. When MD is high, the device is in the output mode and, as a result, the out· put buffers are enabled. In this mode, the write signal for the data latch is obtained from the device select logic. 01 3 01. DiS 01. 01, H-+--f>-"':"'-oo, 01, 1-4--1'">........ DO, SERVICE REQUEST FLIP·FLOP AND STROBE The service request flip-flop SR is used to generate and control central proces· sor interrupt signals. For system reset, the SR flip·flop is placed in the non· interrupting state (i.e., SR is set) by bringing the CLR line low. This simul· taneously clears (resets) the 8·bit data latch. CLR L M3212 Logic Diagram 2·41 3212 D.C. AND OPERATING CHARACTERISTICS ABSOLUTE MAXIMUM RATINGS· Temperature Under Bias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .O°C to 70°C Storage Temperature . . . . . . . .. _65°C to +160°C All Output and Supply Voltages. . ... -0.5V to +7V All Input Voltages . -1.0V to +5.5V Output Currents . . . . . 100mA ·COMMENT: Stresses above those listed under "Absolute Maximum Ratings" may cause permanent damage to the device. This is a stress rating only and functional operation of the device at these or any other conditions above those indicated in the operational sections of this specification is not implied. Exposure to absolute maximum ratings for extended periods may affect device reliability. T A .. aOc to +75°C Symbol Vee =+5V ±5% Parameter Typ. Min. Max. Conditions Unit IF Input Load Current STB, 052, CLR, 01,-0IS Inputs -.25 mA VF = .45V IF Input Load Current MO Input -.75 mA VF .45V IF I nput Load Current OS, Input -1.0 mA VF .45V IR Input Leakage Current STB, OS,CLR, 01,-0ISlnputs 10 IlA VR 5.25V IR I nput Leakage Current MO Input 30 IlA VR 5.25V IR I nput Leakage Current 05, Input 40 IlA VR 5.25V Ve Input Forward Voltage Clamp -1 V Ie VIL Input "Low" Voltage VIH Input "High" Voltage VOL Output "Low" Voltage VO H Output "High" Voltage Ise Short Circuit Output Current 1101 Output Leakage Current High I mpedance State lee Power Supply Current .85 -5 mA V V 2.0 V 10L 15mA V 10H -1 mA -75 mA Vee = 5.0V 20 IlA Vo = .45V/5.25V 130 mA .45 4.0 3.65 -15 90 2042 3212 A.C. CHARACTERISTICS Symbol TA - ooc to 75°C, VCC = +5.0V ± 5% Paramatar Min. Max. Typ. Unit ns tpw Pulse Width tpD Data To Output Delay 30 ns twE Write Enable To Output Delay 40 ns tSET Data Setup Time 15 ns tH Data Hold Time 20 ns tR Reset To Output Delay 40 ns ts Set To Output Delay 30 ns tE Output Enable Time 45 ns tc Clear To Output Display 45 ns 25 CL = 30 pf TEST LOAD CIRCUIT: TEST CONDITIONS: Input pulse amplitude of 2.5 volts. Input rise and fall times of 5 ns between 1 volt and 2 volts. Output load of 15 mA and 30 pF. Speed measurements are taken at the 1.5 volt level. Vee 300n our 0--_--+ 30pF CAPACITANCE(1I Symbol LIMITS Test Min. Typ. Max. Units CIN OS,. MD Input Capacitance 9 12 pf CIN DS2, CLR, STB, 0I 1-DI S Input Capacitance 5 9 pf COUT D01-DOS Output Capacitance B 12 pf NOTE: 11) This parameter is periodicallv sampled and is not 100% tested. Condition 01 measurement is 1 = 1 MHz. VSIAS = 2.SV. VCC TA = 25°C. 2-43 = SV and 3212 D.C. AND OPERATING CHARACTERISTICS ABSOLUTE MAXIMUM RATINGS* Temperature Under Bias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -55°C to +125°C Storage Temperature . . . . . . . . .. -0.5V to +7V All Output and Supply Voltages. All Input Voltages . -1.0V to +5.5V Output Currents . . . . . 100 mA ·COMMENT: Stresses above those listed under "Absolute Maximum Ratings" may cause permanent damage to the device. This is a stress rating only and functional operation of the device at these or any other conditions above those indicated in the operational sections of this specification is not implied. Exposure to absolute maximum ratings for extended periods may affect device reliability. TA =_55°C to +125°C; Symbol Vee =5.0V ±10% Parameter Typ. Min. Max. Conditions Unit IF I nput Load Current STB, OS2, CLR, OI,-OIS Inputs -.25 mA VF = .45V IF Input Load Current MO Input -.75 mA VF .45V IF I nput Load Current OS, Input -1.0 mA Vrf. .45V IR I nput Leakage Current STB, OS, CLR, OI,-OIS Inputs 10 f.l.A VR 5.5V IR I nput Leakage Current MO Input 30 f.l.A VR 5.5V IR Input Leakage Current OS, Input 40 f.l.A VR 5.5V Ve Input Forward Voltage Clamp V Ie -5 mA V 1L Input "Low" Voltage VIH Input "High" Voltage VOL Output "Low" Voltage VO H Output "High" Voltage Ise Short Circuit Output Current 1101 Output Leakage Current High Impedance State lee Power Supply Current 1.2 .80 V V 2.0 V 10L = 10mA V 10H = .5mA mA Vee = 5.0V 20 f.l.A Va = .45V/5.5V 145 mA .45 4.0 3.5 -15 -75 90 2-44 ArIL/~ A.C. CHARACTERISTICS Symbol TA = -55°C to +125°C. Vee = 5.0V ± 10% Parametar Typ. Min. Max. Unit 40 tpw Pulse Width tpo Data To Output Delay 30 ns tWE Write Enable To Output Delay 50 ns tSET Data Setup Time 20 ns tH Data Hold Time 30 ns tR Reset To Output Delay 55 ns ts Set To Output Delay 35 ns tE Output Enable Time 50 ns tc Clear To Output Display 55 ns ns TEST CONDITIONS: CL 30 pf TEST LOAD CIRCUIT: Input pulse amplitude of 2.5 volts. Input rise and fall times of 5 ns between 1 volt and 2 volts. Output load of 15 mA and 30 pF. Speed measurements are taken at the 1.5 volt level. Vcc 300n OUTo--_--t 30 pF 600n CAPACITANCE I1 } Symbol LIMITS Test Min. Typ. Max. Units CIN 05 1• MD Input Capacitance 9 12 pf CIN DS2. CLR, STB, Oil-Dis Input Capacitance 5 9 pf COUT DO I-DOS Output Capacitance 8 12 pf NOTE: 111 This parameter is periodicallv sampled and is not 100% tested. Condition of measurement is f = 1 MHz. VSIAS = 2.SV. Vee = SV and TA = 2Soe. 2-45 3212 3212 WAVEFORMS ,o5vX-------------y5v DATA - - - - - - - ' 'o5Vl STBodis,. DS2 'I' I;=='PW ° \'5V '_W_E=j , __________ _ X'-'_o5V__________ I ~--------------- ____________ I4 _-_ - OUTPUT 'H ~'------ _______________ --' OUTPUT DO ,5VX- ------------- --Y'5V DATA - - - - - - - . . . / I-- STB .. r 'SET 'H '.I '---- '5V\'-_____________ OS, • 052 'PDo-j !,------------ X'-:_5V________________ OUTPUT _ _ _ _ _ _ _ _ _ __ - I STB _____-J~~'o_5V_____________________ -~l NOTE: ALTERNATIVE TEST LOAD -< VCC'0K OUT ~ _0 'R CL lK 2-46 3212 TYPICAL A.C. AND D.C. CHARACTERISTICS vs. INPUT CURRENT Vee" ~~ ~5.DV -so ~ -100 ~ OUTPUT CURRENT VS. OUTPUT "LOW" VOLTAGE '00r------,-------,------,-------, INPUT VOLTAGE Vee" +5.0V 8O~----~------_+------~----~ ~ c I TA .. ere ! V TA • 2."C VVTA ·'S"C /' >- ~ -150 il i ! ~ 60 >- 00 rr: rr: :> u ~ -200 0 20 -250 -300 -3 ., -, -2 .2 °o~--~~~-----L------~------J .3 INPUT VOLTAGE IV) OUTPUT "LOW" VOLTAGE (VI OUTPUT CURRENT vs. OUTPUT "HIGH" VOLTAGE DATA TO OUTPUT DELAY VS. LOAD CAPACITANCE so Vee" +5.0V Vee ,·~s.ov TA .. 25G e -s 00 C ! >- ~ rr: rr: ! -'0 > TA " 75°C ";;j -,S 0 .... T... :> u >- :> 0 0 TA -O"C -20 i>- :> 0 30 ~ -a"c >- 20 "!< -25 0 ~- '0 00 so '00 DATA TO OUTPUT DELAY vs. TEMPERATURE 0 30 ~ 25 z 20 >- I >- ;I 80 's '0 -25 '00 TE_ER"TURE C·CI 2-47 -- . I 0 0 . ...~ a: .-- r--.... 211 35 .. ,;':"",""'""" ... ...... 1 > ~ ",,' 0 -211 300 Vee" +5.0V 20 0 250 00 Vee" +I.GV , - WRITE ENABLE TO OUTPUT DELAY VS. TEMPERATURE 22 2 'so ... ~ LOAD CAPACITANCE (pFI OUTPUT "HIGH" VOLTAGE (VI • • -- --::. ~ f.-\---;. .......... I ~~ _-- --- \- ........;:-i 1---~~~<' ...... .-- DS~< I-- I-- I I 26 80 '00 3212 TYPICAL CONFIGURATIONS GATED BUFFER (TRI·STATE) BI·DIRECTIONAL BUS DRIVER VCC---r-------.----;:~~_, .I.. STB INPUT DATA (250 "A) STB OUTPUT DATA (!5mAI (3.65V MINI ;3212 L-__________ ~ DATA BUS I. CLR '" 1 ~ DATA BUS CONTROL (0: L - RI (I: R - LI GND ----------------' ,L " r-< GATING { CONTROL (DS1.DS2) ;3212 CLR -- G~D L..- STB INTERRUPTING INPUT PORT DATA BUS INPUT STROBE ;3212 L STB CLR L-...J SYSTEM INPUT SYSTEM RESET t---DR T~c~~~~ IE~W) TO CPU INTERRUPT INPUT OUTPUT PORT (WITH HAND·SHAKING) DATA BUS ,....------ OUTPUT STROBE STB SYSTEM OUTPUT SYSTEM RESET SYSTEM INTERRUPT ~ GND 1........::..:'--____- PORT SELECTION } (LATCH CONTROL) (DS\.DS21 2-48 V.... DATA BUS The Intel"'3214 Interrupt Control Unit (ICU) implements multi-level interrupt capability for systems designed with Series 3000 computing elements. The ICU accepts an asynchronous interrupt strobe from the 3001 Microprogram Control Unit or a bit in microprogram memory and generates a synchronous interrupt acknowledge and an interrupt vector which may be directed to the MCU or CP Array to uniquely identify the interrupt source. The ICU is fully expandable in 8-level increments and provides the following system capabilities: SCHOTTKY BIPOLAR LSI MICROCOMPUTER SET 3214 High Performance - 80 ns Cycle Time PACKAGE CONFIGURATION INTERRUPT CONTROL UNIT Compatible with Intel 3001 MCU and 3002 CPE 8-Bit Priority I nterrupt Request Latch 4·Bit Priority Status Latch 3-Bit Priority Encoder with Opan Collector Outputs DTL and TTL Compatible 8-Level Priority Comparator Fully Expandable .,•• ., ECS SGS R. IA R, ClK R, ISE R, At R, A, R, Vcc R, A, R. EtR 24-Pin DIP GNo Eight unique priority levels per ICU Automatic Priority Determination Programmable Status N-Ievel expansion capability Automatic interrupt vector generation 2-49 ENLG " " ETLG 3214 PIN DESCRIPTION PIN NAME AND FUNCTION SYMBOL 1-3 Current Status Inputs Active LOW The Current Status inputs carry the binary value modulo 8 of the current priority level to the current status latch. 4 SGS Status Group Select Input Active LOW The Status Group Select input informs the ICU that the current priority level does belong to the group level assigned to the ICU. 5 IA Interrupt Acknowledge The Interrupt Acknowledge Output will only be active from the ICU (multi·ICU system) which has received a priority request at a level superior to the current status. It signals the controlled device (usually the processor) and the other ICUs OR·tied on the Interrupt Acknowledge line that an interrupt request has been recognized. Active LOW Open·Coliector Output The IA signal also sets the Interrupt Disable flip·flop (it overrides the clear function of the ECS input). 6 CLK Clock Input The Clock input is used to synchronize the interrupt acknowledge with the operation of the device which it controls. 7 ISE Interrupt Strobe Enable Input The Interrupt Strobe Enable input informs the ICU that it is authorized to enter the interrupt mode. 8-10 Request Level Outputs When valid, the Request Level outputs carry the binary value (modulo 8) of the highest priority request present at the priority request inputs or stored in the priority request latch. The request level outputs can become active only with the ICU which has received the highest priority request with a level superior to the current status. 11 ELR Enable Level Read Input Active LOW Open·Coliector Active LOW When active, the Enable Level Read input enables the Request Level output buffers (Ao-A2)' 12 GND 13 ETLG Ground Enable This Level Group Input The Enable This Level Group input allows a higher priority ICU in multiICU systems to inhibit interrupts within the next lower priority ICU (and all the following ICUs). 14 ENLG Enable Next Level Group Output The Enable Next Level Group output allows the ICU to inhibit interrupts within the lower priority ICU in a multi-ICU system. 15-22 Priority Interrupt Request Inputs Active LOW The Priority Interrupt Request inputs are the inputs of the priority Interrupt Request Latch, The lowest priority level interrupt request signal is attached to Ro and the highest is attached to R 7 . 23 ECS Enable Current Status Input The Enable Current Status input controls the current status latch and the clear function of the Interrupt Inhibit flip-flop. 24 Vee +5 Volt Supply NOTE: (1) Active HIGH, unless otherwise noted. Active LOW 3214 FUNCTIONAL AND LOGICAL DESCRIPTION The ICU adds interrupt capability to suitably microprogrammed processors or controllers. One or more of these units allows external signals called interrupt requests to cause the pro· cessor/controller to suspend execution of the active process, save its status, and initiate execution of a new task as requested by the interrupt signal. It is customary to strobe the ICU at the end of each instruction execution. At that time, if an interrupt request is acknowledged by the ICU, the MCU is forced to follow the interrupt micro· program sequence. Figure 1 shows the block diagram of the ICU. Interrupt requests pass through the interrupt request latch and priority encoder to the magnitude comparator. The output of the pri· ority encoder is the binary equivalent of the highest active priority request. At the comparator, this value is com· pared with the Current Status (cur· rently active priority level) contained in the current status latch. A request, if acknowledged at interrupt strobe time, will cause the interrupt flip·flop to enter the "interrupt active" state for one microinstruction cycle. This action causes the interrupt acknowl· edge (lA) signal to go low and sets the interrupt disable flip·flop. The IA signal constitutes the interrupt command to the processor. It can directly force entry into the interrupt service routine as demonstrated in the appendix. As part of this routine, the microprogram normally reads the reo questing level via the request level out· put bus. This information which is saved in the request latch can be en· abled onto one of the processor input data buses using the enable level read input. Once the interrupt handler has determined the requesting level, it normally writes this level back into the current status register of the ICU. This action resets the interrupt disable flip· flop and acts to block any further request at this level or lower levels. Entry into a macro level interrupt ser· vice routine may be vectored using the request level information to generate a subroutine address which corresponds to the level. Exit from such a macro· program should normally restore the prior status in the current status latch. The Enable This Level Group (ETLG) input and the Enable Next Level Group (EN LG) output can be used in a daisy chain fashion, as each ICU is capable of inhibiting interrupts from all of the following ICUs in a multiple ICU configuration. I I J ", ", ", ", ", ", ", ., ., ., An active request level (Ro-R7) is greater than the current status Bo-B2 The interrupt mode (lSE) is active ETLG is enabled The interrupt disable flip·flop is reset When active, the IA signal asynchron· ously sets the disable flip·flop and holds the requests in the request latch until new current status information (BO-B2, SGS) is enabled (ECS) into the current status latch. The disable flip·flop is reset at the completion of this load operation. During this process, ENLG will be en· abled only if the following conditions are met: ETLG is enabled The current status (SGS) does not belong to this level group There is no active request at this level The request level outputs Ao-A2 and the IA output are open·collector to permit bussing of these lines in multi· ICU configuration. .......- El" ETlG ", The interrupt acknowledge flip-flop is set to the active LOW state on the rising edge of the clock when the following conditions are met: 1 I I I - REaUEST ACTIVITY I I ....r:- :r- INTERRUPT REQUEST ::c..... LATCH • I PRIORITY ENCODER I I I I I ~ '-- I CURRENT STATUS F= I--- COMPARATOR FD LATCH I I I INT ACK FF ......... 'I' 'CS I I I I - I I I I I I I I I I I I I I r~ DIS " I -.:.l........ I I IS' CLK At I L ___________________________________ Figure 1. 3214 Block Diagram. 2·51 A, A, ENlG r--c.S.!...... SGS I ~r;--;; I I ~~ PRIORITV I ~ 3214 D.C. AND OPERATING CHARACTERISTICS ABSOLUTE MAXIMUM RATINGS* Temperature Under Bias Ceramic. . . . Plastic . . . . . -65°C to +75°C . . O°C to +75°C Storage Temperature _65°C to + 160°C All Output and Supply Voltages. .-0.5V to +7V All Input Voltages -1.0V to +5.5V . Output Currents . . . 100mA ·COMMENT: Stresses above those listed under "Absolute Maximum Rating" may cause permanent damage to the device. This is a stress rating only and functional operation of the device at these or at any other condition above those indicated in the operational sections of this specification is not implied. Exposure to absolute maximum ratings for extended periods may affect device reliability. TA = oOe SYMBOL to +75°C, Vcc = 5.0V ±5% PARAMETER MIN Vc Input Clamp Voltage (all inputs) IF I nput Forward Current: LIMITS Typ(1) MAX -1.0 ETLG input all other inputs -.15 -.OS CONDITIONS UNIT V IC = -5 mA -0.5 -0.25 mA mA VF = 0.45V IR Input Reverse Current: ETLG input all other inputs 80 40 iJ.A iJ.A VR = 5.25V VIL Input LOW Voltage: all inputs 0.8 V VCC = 5.0V VIH Input HIGH Voltage: all inputs V VCC = 5.0V ICC Power Supply Current (2) VOL Output LOW Voltage: all outputs VOH Output HIGH Voltage: ENLG output lOS Short Circuit Output Current: ENLG output ICEX Output Leakage Current: 2.0 = 25°C and 130 mA .3 .45 V 10L = 15 mA V 10H = -1 mA 2.4 3.0 -20 -35 IA and AO-A2 outputs NOTES: 11)Typical values are for T A 90 nominal supply voltage. 12)80-82, SGS, ClK, R0-R4 grounded, ali other inputs and ali outputs open. 2·52 = 5.0V -55 mA VCC 100 iJ. A VCEX = 5.25V 3214 A.C. CHARACTERISTICS TA z DoC to +75°e. Vee - +5V ± 5% SYMBOL PARAMETER MIN liMITS TYP(1) MAX UNIT ttv ClK Cycle Time 80 tpw ClK, ECS, IA Pulse Width 25 15 ns ns Interrupt Flip-Flop Next State Determination: tlSS ISE Set-Up Time to ClK 16 12 ns tlSH ISE Hold Time After ClK 20 10 ns tETCS 2 ETlG Set-Up Time to ClK 25 12 ns tETCH 2 ETlG Hold Time After ClK 20 10 ns tECCS 3 ECS Set-Up Time to ClK (to clear interrupt inhibit prior to ClK) 80 25 ns tECCH 3 ECS Hold Time After ClK (to hold interrupt inhibit) 0 tECRS 3 ECS Set-Up Time to ClK (to enable new requests through the request latch) 3 110 ECS Hold Time After ClK (to hold requests in request latch) 0 tECSS 2 ECS Set-Up Time to ClK (to enable new status through the status latch) 75 tECSH 2 ECS Hold Time After ClK (to hold status in status latch) tDCS 2 SGS and B0-82 Set-Up Time to ClK (current status latch enabled) 70 tDCH 2 SGS and 80-B2 Hold Time After ClK (current status latch enabled) 0 tRCS 3 R0-R7 Set-Up Time to ClK (request latch enabled) 90 tRCH 3 R0-R7 Hold Time After ClK (request latch enabled) 0 tiCS IA Set-Up Time to ClK (to set interrupt inhibit F_F. before ClK) 55 tCI ClK to IA Propagation Delay tECRH ns 70 ns 70 ns ns 0 50 ns ns 55 ns ns 35 15 ns 25 ns Contents of Request Latch and Request Level Output Status Determination: tRIS4 R0-R7 Set·Up Time to IA 10 0 ns tRIH4 R0-R7 Hold Time After IA 35 20 ns tRA R0-R7 to A0-A2 Propagation Delay (request latch enabled) 80 100 ns tELA ElR to A0-A2 Propagation Delay 40 55 ns tECA ECS to A0-A2 Propagation Delay (to enable new requests through request latch) 100 120 ns· tETA ETlG to A0-A2 Propagation Delay 35 70 ns 2-53 3214 A.C. CHARACTERISTICS (CON'T) SYMBOL LIMITS PARAMETER UNIT MIN Typ(l) SGS and B0-B2 Set-Up Time to ECS 15 10 ns SGS and 80-82 Hold Time After ECS 15 10 ns MAX Contents of Current Priority Status Latch Determination: Enable Next Level Group Determination: R0-R7 to EN LG Propagation Delay 45 70 ns ETLG to EN LG Propagation Delay 20 25 ns ECS to ENLG Propagation Delay (enabling new request through the request latch) 85 90 ns ECS to ENLG Propagation Delay (enabling new SGS through status latch) 35 55 ns NOTES: (11 Typical values are for TA = 25°C and nominal supply voltage. (2) Required for proper operation if ISE is enabled during next clock pulse. (3) The~e times are not required for proper operation but for desired change in interrupt flip-flop. (4) Required for new request or status to be properly loaded. (5) tCY = tiCS + tCI TEST LOAD CI RCUIT TEST CONDITIONS: Input pulse amplitude: 2_5 volts_ Input rise and fall times: 5 ns between 1 and 2 volts_ 300n Output loading of 15 mA and 30 pf_ OUT Speed measurements taken at the 1_5 V levels_ 0---..--------; lOOn 3001 CAPACITANCE(5) SYMBOL LIMITS PARAMETER UNIT Typ(l) MAX Input Capacitance 5 10 pf Output Capacitance 7 12 pf TEST CONDITIONS: VBIAS =2_5V, Vee = 5V, TA MIN =25°C, f = 1 MHz NOTE: (5)This parameter is periodically sampled and not 100% tested_ 2-64 D.C. AND OPERATING CHARACTERISTICS ABSOLUTE MAXIMUM RATINGS* Temperature Under Bias CerDip . . . . . Storage Temperature -55°C to +125°C -65°C to +160°C All Output and Supply Voltages. . All Input Voltages . -1.0V to +5.5V Output Currents . . • . • . 100mA . -0.5V to + 7V ·COMMENT: Stresses above those listed under "Absolute Maximum Rating" may cause permanent damage to the device: This is a stress rating only and functional operation of the device at these or at any other condition above those indicated in the operational sections of this specification is not implied. Exposure to absolute maximum ratings for extended periods may affect device reliability. TA =_55°C to +125°C; Vee SYMBOL =5.0V ± 10% PARAMETER MIN Vc Input Clamp Voltage (all inputs) IF I nput Forward Current: LIMITS TYPO) MAX -1.2 ETLG input all other inputs -.15 -.08 UNIT CONDITIONS V IC = -5 mA -0.5 -0.25 mA mA VF = 0.45V IR I nput Reverse Current: ETLG input all other inputs 80 40 /lA /lA V R =5.5V V IL Input LOW Voltage: all inputs 0.8 V VCC = 5.0V VIH Input HIGH Voltage: all inputs V VCC = 5.0V ICC Power Supply Current(2 ) VOL Output LOW Voltage: all outputs VOH Output HIGH Voltage: ENLG output lOS Short Circuit Output Current: ENLG output ICEX Output Leakage Current: 2.0 = 2S Cl 130 mA .3 .45 V 10L = 10mA V 10H = -1 mA 2.4 3.0 -15 -35 IA and A0-A3 outputs NOTES: (1)Typical values are for T A 90 C and nominal supply voltage. 12)80-82' SGS. elK. R0-R4 grounded. all other inputs and all outputs open. 2·55 -55 mA VCC= 5.0V 100 /lA VCEX = 5.5V 3214 M41 . ~r4RV· A.C. CHARACTERISTICS TA=-55°Cto+125°C; SYMBOL vee =5.0V± 10% PARAMETER MIN LIMITS Typ(l) MAX UNIT tcy ClK Cycle Time l51 85 tpw ClK. ECS. IA Pulse Width 25 15 ns ns Interrupt Flip-Flop Next State Determination: tlSS ISE Set-Up Time to ClK 16 12 ns tlSH ISE Hold Time After ClK 20 10 ns tETCS 2 ETlG Set-Up Time to ClK 25 12 ns tETCH 2 ETlG Hold Time After ClK 20 10 ns tECCS 3 ECS Set-Up Time to ClK (to clear interrupt inhibit prior to ClK) 85 25 ns tECCH 3 ECS Hold Time After ClK (to hold interrupt inhibit) tECRS 3 ECS Set-Up Time to ClK (to enable new requests through the request latch) 3 110 ECS Hold Time After ClK (to hold requests in request latch) 0 tECSS 2 ECS Set-Up Time to ClK (to enable new status through the status latch) 85 tECSH 2 ECS Hold Time After ClK (to hold status in status latch) tDCS 2 SGS and B0-B2 Set-Up Time to ClK (current status latch enabled) 90 tDCH 2 SGS and B0-82 Hold Time After ClK (current status latch enabled) 0 tRCS 3 R0-R7 Set-Up Time to ClK (request latch enabled) 100 tRCH 3 R0-R7 Hold Time After ClK (request latch enabled) 0 tiCS IA Set-Up Time to ClK (to set interrupt inhibit F.F_ before ClK) 55 tCI ClK to IA Propagation Delay tECRH ns 0 70 ns 70 ns 0 ns 50 ns ns 55 ns ns 35 15 ns 30 ns Contents of Request Latch and Request Level Output Status Determination: tRIS4 R0-R7 Set-Up Time to IA 10 0 ns tRIH4 R0-R7 Hold Time After IA 35 20 ns tRA R0-R7 to A0-A2 Propagation Delay (request latch enabled) 80 100 ns tELA ElR to A0-A2 Propagation Delay 40 55 ns tECA ECS to A0-A2 Propagation Delay (to enable new requests through request latch) 100 130 ns tETA ETlG to A0-A2 Propagation Delay 35 70 ns 2-56 A.C. CHARACTERISTICS (CON'T) MIN LIMITS TYP(1) SGS and B0-B2 Set-Up Time to ECS 20 10 ns SGS and B0-82 Hold Time After ECS 20 10 ns SYMBOL PARAMETER MAX UNIT Contents of Current Priority Status Latch Determination: Enable Next Level Group Determination: tECSN R0-R7 to EN LG Propagation Delay 45 70 ns ETLG to ENLG Propagation Delay 20 30 ns ECS to ENLG Propagation Delay (enabling new request through the request latch) 85 110 ns ECS to EN LG Propagation Delay (enabling new SGS through status latch) 35 55 ns NOTES: 111 Typical values are for TA = 25°C and nominal supply voltage. 121 Required for proper operation if ISE is enabled during next clock pulse. (3) These times are not required for proper operation but for desired change in interrupt flip-flop. (4) Required for new request or status to be properlv loaded. (51 tCY = tiCS + tCI TEST CONDITIONS: TEST LOAD CIRCUIT Vce Input pulse amplitude: 2.5 volts. Input rise and fall times: 5 ns between 1 and 2 volts. 300n Output loadi ng of 15 rnA and 30 pf. OUT O--~-------1 Speed measurements taken at the 1.5V levels. 30 pI CAPACITANCE(5) LIMITS TYP(1) MAX Input Capacitance 5 10 pf Output Capacitance 7 12 pf SYMBOL PARAMETER TEST CONDITIONS: VBIAS = 2.5V, VCC = 5V, TA MIN = 25°C, f = 1 MHz NOTE: (S)This parameter is periodically sampled and not 100% tested. 2-57 UNIT 3214 WAVEFORMS 'OCS • ______ J ~ 'ocH','-.;;;;---;07/1 ------- --, ~ r--- ----------- X -J1''-----r---------- -------+--Ji~--------teres 'ETCH --------ylX---------------- ISE - - - - - - - ------4---~------J.;I~ _J 1 'ISS IISH r-~ r---- , SGS '0', JI~+~EJ~ -------J~~,~D~HJ '-I-.-~.-EC-SS-.-EC-SH-I-"""\ ECS Ir+---+~, i'--J ~--+,I lEeRS CLK "CRN ----- =± I-~."""~--f 'PW _.j::~::j:::j:==1==1==~EC~C"-S--- IA x------- '(u---------------x 0 0 0, _________ ~i -- '-_+--J tecRH leeCH 'CI ICY ~ r-----, __ _ __________ J~ I~ tpw I -:~~-- ------)(I~-------------- ELO -+--...j::j::-:::-=I=I-:-:,!.,-ar +----- ~L: __ ,I~____ ------ -.-- .... -IETEN.I '--+-________ tecsN ENLG J OEN '- _ _ _ _ _ _ _ _ -------------------------~)(--------------)(------ TYPICAL CONFIGURATIONS The ICU has been designed for use with the INTEL Series 3000 Bipolar Microcomputer Set. It operates from the single common system clock and can accept an interrupt strobe (lSE) generated by the 3001 Micropgoram Control Unit or by a bit in micropro' gram memory as shown in Figures 2 and 3. The ICU responds to interrupt reo quests of sufficient priority by enter· ing the interrupt active mode. Its output (lA) can be tied to the row enable input (ERA) of the 3001 MCU. This gates an alternate row address onto the microprogram memory ad· dress bus which forces the system to execute an interrupt handling routine. Alternatively, the ICU output can be used to directly modify the MCU jump instruction (AC inputs) so that the next microprogram address corresponds to the start of the interrupt routine rather than the start of the macroin· struction fetch sequence. Of course, in the case of this particular imple· mentation, the interrupt strobe must be generated one clock period earlier and the ISE output of the MCU should not be used. As shown in Figure 4, when several ICUs are used together to provide a 2-58 multiple of 8 priority levels, most con· trollines will be bussed. The Intel 3205 Decoder may be used to decode the high order bits of the request level, the information being derived from the daisy·chain group level signals. As mentioned in the functional description, the request level information (Ao-A2) may be sent to the 3001 MCU or the 3002 CP array as a constant through the Mask (K) bus or as data through the memory (M) or data (I) busses. Similarly, the status information can be generated by the CP array and carried to the ICU by the data (D) output bus of the CP array. 3214 TYPICAL CONFIGURATIONS (CON'T) MlCRO·INSTRUCTION MICROPROGRAM MEMORY TOct'ARRAY, 110 AND MAIN MEMORY RAM -3101,3107 MIC;:AOf'ROGRAM MICRO·INSTRUCTION MEMORY "OM-3301A, 3304" I'ROM -1801.3104 TOct'ARRAY. AAM-31G1.lI01 ROM-3)(11,\,3304. "ROM-lIIIl,3IIM 110 AND M"IN MEMOFlY AC'I===::;l Figura 2. Interfacing 3214 with 3001. Figura 3. Interfacing 3214 with 3001. Interrupt strobe generated by MCU. Interrupt routine start address at column 15 row 31. Macro-instruction fetch start address at column 15 row 0. I nterrupt strobe generated by the microprogram memory. Interrupt routine start address at column 14 row 0Macro-instruction fetch start address at column 15 row 0. ... ~J . .."VHOW{ INTERRUPT RIOUIS" IHIO"II' PRIORITY OROlWl : r-- ., ,. ICU1.t.o .. rnI 'G, OI. l:r m- r-~ r;-.' .."V, LOW { . "UOfUTY GROUPI _. 112 _,v A, r;:::=: ICUI AO I. ENlG -~ r- 1 ~f-[J ., INTERRUPT REOUESTS ILOWEST I'RIORITY GROUPI . : 'GS ::'.' ., ICUO Ao 1CUfi'R_ - I. ISE~ ~l L..J... AC"VHOW{ .,., 32.4 r;::: r- A. "" OS. INT STROBE FROM MCU OR MICROPROGRAM MEMORY r---ETlO .,., SG$ - ENABLE LEVEL READ INT ACKNOWLEDGE {TO ERA"'" Of MCUI ElLG INTEIIHU" REOUESTS 12ND HIGHEST r-r-- III ENLO- e--' }a~. - 1m Ao "" f-rrI. ISE ... f- r- ENLG ~ l ".. ,III I i CU""IJIITITATUS I f " " CI' ""RAYI I tHAIU CURRENT STATUI Figura 4. Using Several 3214 Interrupt Chips to Provide more than Eight Priority Levels. (The 3214 at the upper right is used to encode the high order bits of the requesting level) 2-59 intel SCHOTTKY BIPOLAR LSI MICROCOMPUTER SET The INTE~3216 is a high-speed 4-bit Parallel, Bidirectional Bus Driver. Its three-state outputs enable it to isolate and drive external bus structures associated with Series 3000 systems High Performance- 25 ns typical propagation delay Low Input Load Current-O_25 mA maximum High Output Drive Capability for Driving System Data Busses Three-State Outputs TTL Compatible 16-pin DIP The INTEL 3226 is a high-speed 4-bit Parallel, Inverting Bidirectional Bus Driver_ Its three-state outputs enable it to isolate and drive external bus structures associated with Series 3000 systems_ 3216/3226 PARALLEL BIDIRECTIONAL BUS DRIVER PACKAGE CONFIGURATION cs vcc 000 DCE DBa '4 003 01 0 '3 DB3 DO, INTEl@ 3216 '2 01 3 DB, 11 0°2 01, 'A GND The 3216/3226 driver and receiver gates have three state outputs with PNP inputs_ When the drivers or receivers are tri-stated the inputs are disabled, presenting a low current load, typically less than 40 /lamps, to the system bus structure_ 3216 3226 LOGIC DIAGRAM 3216 LOGIC DIAGRAM 3226 010 o----~I>-~---, DIOO------jl>o>---j---, DOoo-----i----<>--+--, 0" o----j---jl>---j---, 01, oo,o-----i---- O---j----' 01, o-----i-~I>----i---, OI,o----j---jI>o>---j---, DO,o----j---- ---j---, DD,o----j--o ===r I ~ -----------' I O.5V 2-65 OH V VOL System Timing Series 3000 System Timing Considerations by Gary Fielland While the timing for each component in Intel's 3000 Series Schottky Bipolar Microcomputer Set is clearly specified, the composite system timing must be derived. This system timing is highly dependent on the particular configuration implemented, and hence, must be carefully considered for each implementation. Though Intel cannot generate the system timing for every possible configuration, an effort has been made to study a few simple variations. By examining these examples and taking note of considerations given, it should be easier for the system designer to realize those times which are critical, and to generate the appropriate timing for his particular system. The designer must consider many different factors in determining this "proper" system timing. Several simplifications are made to facilitate this discussion. Intel commercial grade parts are specified over a wide temperature range (O°C - 70°C) and so variations in timing due to temperature will not be considered, except for a short note at the end. Whenever a signal must traverse a conductor between two points, there is a finite delay introduced into the signal path that is not accounted for by any data sheet. This is the delay due to such factors as the Aside from these simplifications, it should be realized that this note is not an extensive study of the timing of any particular system, but rather a compendium of typical considerations which a designer might examine. Consider the basic "data sheet" I6-bit processor configuration as shown in Figure 1. It utilizes pipeline registers, full carry look-ahead, and a priority interrupt mechanism. To implement any such system the designer must be very careful to provide the proper timing for all components under all possible operating conditions. Such a system is highly complex and the analysis is best approached in a piecemeal fashion. t MICRO· PROGRAM PIPELINE MEMORY 16 3601·1·S OR 4 3604'S length of the conductor, its transmission properties, and the characteristics of the driver and receiver. When a TTL totempole output drives a TTL input a short distance away this delay is usually negligible compared to other delays in the signal path. However, if there are many loads (increasing the capacitance), or the driver is of the open-collector type (limiting the drive), or if the receiver is physically far removed, the designer should consider and allow for any possible deleterious effects of this delay. For this discussion, except in one special case, the delay introduced by interconnection is not considered. K BUS CK I--- , . . - LI CI VECtOR j E C" Cn+8 l 1 CK MA8·4 MA3·B AC6-9 MCU FC9·3 3214 3001 FO IAI------ ERA FI B8'·2 RiI·7 SX9·PX7 CK AB·2 ICU INTEJRUPT REQUESTS ISE t J~"+' +Vcc I - - ISE "N M,N I--ROI--- XY t I INTERRUPT DOUT 16 BIT CPE ARRAY 3OO2'S CK ADDRESS SY STEM CL OCK t F)1.6 "oUT REGISTERS 74S174 1 CARRY XY LOOK-AHEAD 3003 Cli- C"~ -- t I MEMORY DATA Figure 1. Basic 16-Bit Processor Configuration 3-1 OTHER DATA System Timing ARITHMETIC DELAY PATHS First an analysis will be made of the arithmetic paths and delays. Imagine cycles in which arithmetic is being done within the CPE array. The carrys must have time to propagate through the arithmetic portion and reach the MCU so that a conditional jump may be made based on that carry out bit. For the moment ignore other critical paths, and examine Figure 2 which illustrates these arithmetic cycles. Keeping the same train of thought, consider individually the effects of variants from the configuration of Figure 1. If full carry look-ahead is not used and the carry is allowed to ripple through only the last slice, an additional delay path is introduced. After the 3003 has generated the carry outputs there is the CPE carry-in setup time (tSS) which must be met as before. However, the carry-out of the last slice will not be available to the MCU flag input until it has rippled through (tCe> that slice. Finally, the MCU flag input setup time (tsI) must be satisfied. The cycle begins with the rising edge of the system clock as it clocks the pipeline registers. After the delay (tpLR) introduced by the pipeline, the function is available at the CPE array. There is a delay (tXF) while all the CPE's decode the function and generate their X and Y outputs for the operation. Once the X and Y outputs are stable, the Carry Look-Ahead circuit takes some time (txC> to simultaneously generate all the carry outputs, including the one which goes to the MCU flag input. Time must be provided to allow for the carry-input setup time of the CPE's (tss) and the MCU (tsI). Finally, adding in enough time for the clock pulse, which acts as a write pulse for the CPE register array, the cycle time is determined. Note the time for the MCU flag output to stabilize (tKO) was ignored as it is not a limiting specification for this configuration. tCYCLE = tpLR + tXF + txc + tcc + tsI + twp If the 3003 Look-Ahead Carry circuit is not used, there will be considerable delay added to the basic cycle due to ripple carry time. Once the CPE function-inputs are stable, the function must be decoded and the carry-out of the least significant slice generated (tCF)' The carry must ripple through six slices (6* tCC) and meet the carry setup time (tsS) of the most significant slice. However, it must also ripple through this last slice (tCC) and meet the MCU flag input setup time which is a more severe restriction. tCYCLE = tPLR + tXF + txc + tss + twp CLOCK u FUNCTION INPUTS • tcYCLE = tPLR + tCF + (7* tCC) + tSI + twp u 1 ~~~ i ----------- I j-----tXF~: X. Y. RO OUTPUTS C r-------------------------- i I i'xc---+\---'sS-1 CARRY INPUTS ' ~~~ *-------------------..;.I-- ------------------------~------~ t-'SI--~-i----------i _ t cc FLAG INPUT l --' ================================== tPLR elK t to pipeline register outpUts (745174) 'XF function inputs to X,Y,RD outputs 17 52 'XC Lookahead - X. V inputs to carry OUtputl 20 'SS Data set-up time, LI &: CI 27 'CC Ripple carry lei to CO) delay 25 'SI 'WP NOTE: tce included only if carry ripples through lalt slice. Flag input set"lJP time '5 Clock pulse width 33 tCYCLE Full fast carry tpLA + tXF + txc + tss + tw'P last slice ripple tPLR '49 + tXF + txc + tce + tSI + tw'P If pipeline ragistersare not used; replace tPLA with the sum of teo (eLKt to '62 M~ outputs, 44 nsec) plus tROM (access time; 50 nsec for 3601-1, 70 nsec for 3604). If 3003 fast carry is not used; replace tXF with teF (function IN to eo output, 85 nsec); replac8tXe + tee with (N-l)-tee. where "N" is the number of stices used. Figure 2. Non-Interrupt 16-Bit Processor Cycle Timing 3-2 "sec System Timing Consider first a special case. Namely, the data is input via an LTM instruction and no test will be made on the carry-output. This implies that for this specific instruction, carry propagation is unimportant and it is acceptable to have an erroneous carry-output. For such a case, it is sufficient to only allow for the CPE data setup time (tDS)' If pipeline registers are not used, there will be additional delay. It takes some time (tCO) after the rising edge of the clock for the next address to propagate through the MCU address register and buffers. Then, when this address is stable the ROMs must be accessed and there will be a delay (tROM' access time) before their output and hence the CPE function-input is stable. Thus, the cycle time for a nonpipelined system with carry look-ahead is: tCYCLE tSETUP = tDS For the more general case where arithmetic is done on input and the carry-output may be tested, the above analysis is incomplete. While the above condition must be met, it is no longer the determining factor. Time must be allowed for carry propagation. See Figure 3, which illustrates this case. From the point in time when the data becomes stable at the CPE inputs, there is a delay (tXD) while the CPE generates the X and Y outputs. If Ripple Carry is employed, the delay (tCD) is in waiting for the carry-output of the least significant slice. After either of these delays the rest of the setup time is allocated analogously to that depicted in Figure 2 and discussed previously in relation to arithmetic cycle times. = tco + tROM + tXF + txc + tss + twp In the previous discussion it was assumed that the operands in the arithmetic operations were internal registers and the K-bus as implemented. If one of the operands is the M-bus or the I-bus, additional consideration should be given. This situation will typically arise at the completion of a Memory-Read or Input cycle. Typically, these cycles are implemented such that the processor clock stops in its high state to wait for the data to be available, while the processor is in the midst of executing an LMM or similar instruction. Thus, it is often the case that the pipeline registers have long since been accessed and the function decoded. Then, when the data becomes available a clock pulse is issued and normal operation continues. It is the time from the point the data becomes available until the clock pulse is issued (Data Input Setup Time) that is of concern here. tSETUP (Basic) =tXD + txc + tss tsETUP (Last Slice Ripple) = tXD + txc + tcc + tsI tsETUP (Ripple Carry) = teD + (7* tCe> + tSI tsETUP (No Pipeline) - Same as Basic CLOCK DATA INPUTS -t I 'xo"- x, V OUTPUTS -'xc-I' X CARRY INPUTS '" ·I~,cc~ I FLAG INPUT \'=t SI - _ I tXD Data inputs to X.V outputs tHX SX,PX input hold time tSET-UP Full fast carry LIlt slice ripple 42 nsec 20 89 txo + txc + t55 tXD + txc + tee + tSI 102 If 3003 fast carry is not used; replace tXD with tCD (data input to CO output, 55 nsec); replace txc + tee with (N-ll-tCC then tSET-UP fripple carryl. NOTE: This diagram is UMJ.lly of concern only in relation to memory-read, or input cycles. Fillur.3. 16-Bit Processor Data Input Set-Up Times 3-3 245 t= System Timing CONTROL DELAY PATHS control inputs. Some consideration must be given to the additional requirements on timing imposed by the use of this ISE output. After the ROM has been accessed and the MCU address control inputs are valid, it takes the MCU some time (tFI) to decode the JZR 15 operation and raise the ISE output. This output is used as the 3214 ISE input and must be valid early enough to meet that input setup time (tISS). As this setup time is relative to the rising edge of the clock, the clock pulse width need not be added in. After carefully examining the arithmetic paths and delays it is appropriate to push all of this information onto your "mental stack" and begin again with a consideration of the control paths and delays_ After this study the stack can be popped and information merged to yield overall system requirements_ Consider the MCU as it cycles in normal operation (see Figure 4). At the rising edge of the clock the new microprogram address is loaded into its holding register and through the output buffers. Thus, the new address reaches the ROM after a delay (teo). Then there is a wait (tRaM) while the ROMs are accessed before the outputs are valid. At this time the MCU address control inputs (which are never pipelined) are valid and this must be early enough in the cycle to satisfy the MCU address control input setup time (tSF). Adding the time for the clock pulse (twp) yields the cycle time requirement. Note this paragraph has ignored the generation of the ISE output. tcYCLE = teo + tRaM + tFI + tISS Recalling the basic configuration depicted in Figure 1 and the situation described in the last paragraph, imagine that an interrupt request had been active long enough to meet the request setup time (tRCS) of the ICU. Then since the ISE input went high and satisfied the input setup time, the Interrupt Acknowledge flip-flop within the 3214 will change state and lower the MCUs ERA input after a delay (tCI). After the row address outputs are disabled (tEO)' the pull-up resistors will begin to pull these lines high and after the voltage on these lines rises to 2.0V (tRISE) the ROM address will be valid. The remainder of this cycle is the same as previously described and usually will not be required to again generate an ISE pulse. tCYCLE = teo + tRaM + tSF + twp In the basic configuration shown in Figure 1 the ISE output is used to strobe the 3214 Interrupt Control Unit each time a JZR 15 (usually a jump to macroinstruction fetch) is recognized at the MCU address tCYCLE = tCI + tEO + tRISE + tRaM + tSF + twp CLOCK ROM ADDRESS AC 16-61 INPUTS ISE OUT : ,t°-1 ',I 1--t c ERA INPUT I F==---tM-U-X~--~----------------- tco elK t to MA [8 ..... 4>1 outputs 44 nsec tROM ROM access time (70 nsec for 3604) 3601- 1 50 tSF tFI ACIS .....1/.l1 input set-up time 10 ACI6-¢1 input to ISE output 40 tlSS ISE input (3214) set-up 16 tc, elKI to IAoutput (3214) 25 tEO ERA input to MA 18 ..... 4J output tRISE RISE time to 2.0 V with 1 KH pull-ups: (16"3601-1) 32 84 21 tMUX Multiplexer switch time (7451581 tCYCLE Ignoring ISE output teo + tROM + tSF + twp \3601-11 Using ISE output teo + tROM + tFI 14"36041 12 (3604) + llSS 13601-1) 137 157 150 Interrupt using pull-upstCI + tEO + tRISE + tRaM + tSF + twp (3601-11 234 Interrupt using MUX" tel + tMUX + tROM + tSF + twp (3601-11 130 ("MUX adds tMUX-PROP [6 nsec] to Figure 4. MCU & Interrupt Cycle Timing 3-4 tcol System Timing Examining the times shown on Figure 4 for this case of an interrupt cycle using pull-up resistors, it is clear that unless something is done this will be the limiting cycle time requirement. There are several techniques which may be used to ease this requirement. Since interrupt cycles are relatively infrequent in comparison with other cycles, one solution might be to extend just that cycle. In other words, the system cycle time would be determined by all considerations previously mentioned, but ignoring the abnormal interrupt cycle requirement. Then the clock circuit would be designed such that it could extend a cycle in response to a signal from the 3214 Interrupt Control Unit (see Figure 5). teYCLE (Interrupt with MUX) tCI + t MUX + t ROM + tSF + twp MICRO· PROGRAM MEMORY ADDRESS l MULTIPLEXER SELECT A'N +Vcc SYSTEM CLOCK I ClK OUT CLOCK GENERATOR r j CK CYCLE EXTEND i---- B'N r MAB-4 'SE MA3-O 'SE ICU CK 'SE 'CU 3214 = MCU IA f.-- +Vcc --" ERA 'SE MCU 3001 ~ TERA 1 Figure 6. Multiplexer to Reduce Address Rise Time A third alternative to solve the long interrupt cycle requirement is to implement the interrupts in quite a different way. Rather than changing the MCU address outputs, the MCU address control input least significant bit (AO/» may be altered (see Figure 7). Using this technique an extra ROM bit (Interrupt Strobe) is required to strobe the 3214 ICU since the MCUs ISE output occurs one cycle too late. Implementing the same mechanism (interrupt strobe on JZR 15) could be done by using the interrupt strobe bit to strobe the ICU (see Figure 7) the cycle before the JZR 15 code appears. An added benefit of this method is that the interrupt structure may be strobed at points other than the beginning of an instruction fetch cycle, facilitating PAUSE or WAIT instructions. Examining the timing diagrams in Figure 7, it can be seen that this implementation of interrupts does not limit the system cycle time. Rather, this interrupt mechanism's timing is less restrictive than timing for a normal cycle. The only requirements are that the interrupt strobe bit from the ROM reaches the 3214 ICU ISE-input within its setup time (tISS ). In the next cycle it is only necessary that the lA-output has gone low (tCI) early enough to meet the MCU address control input setup time (tSF). Thus, for the price of one bit of ROM interrupts can be implemented with no penalty in time. At this point both major delay paths (arithmetic and control) have been examined for the implementation in question. After the designer has assured himself Figure 5. Interrupt Cvcle Extension The interrupt cycle would still be exactly as depicted in Figure 4, but the length of the interrupt cycle would be longer than a normal cycle, and in fact long enough to accommodate the interrupt cycle requirement. It can be seen that a significant portion of the interrupt cycle is lost waiting for the pull-up resistors to charge the capacitance on the address lines. Thus, another method of easing the interrupt cycle requirement would be to reduce the address line rise time (tRISE). Reducing the resistance of the pull-ups would help but this technique is limited by the available MCU address output fanout. Alternatively, the MCU row address outputs (MA8-4) could be connected to the ROM address lines through a multiplexer such as the 74S158 (see Figure 6). With such a connection the interrupt cycle time is reduced since the MCU enable time (tEO) plus the address line rise time (1RISE) may be replaced with simply the multiplexer select time (tMUX) as shown in Figure 4. However, it should be noted that such a connection adds delay to the MCU address outputs, thus effectively lengthening this existing delay (teo) by the multiplexer propagate time (tMUX.PROP) and hence lengthening any cycle which was dependent on the MCU delay (teo). 3·5 System Timing MICROPROGRAM MEMORY (OPEN· COLLECTOR) ISEI-----I ICU +Vcc IA teo + tROM + tSF + twp tco + tROM + 1155 Modification) > teo + tROM + tSF + twP. and tCYCLE (Non-Interrupti ;> +Vcc tCYCLE (Interrupt Strobel MCU tCYCLE IAC[411 +Vcc AC6-11----4o-AJlIv--' ERA )0 ;;;.otel + tBUF + tSF + twP tCYCLE (Interrupti - Same as Non-Interrupt CLOCK Ir- L '-J ~ 'w.- - 'wp- ~ _ t c o _ ~'co--ROM ADDRESS __ t ROM ___ 1\ -'S.- I--'ROM t 'ISS IA OUTPUT 7417 OUTPUT .- ' JZR 15 CODE FROM ROM INTERRUPT STROBE BIT APPEARS CI __ MODIFIED TO JZR 14 BY IAOUTPUT J --- tauF [- Figure 7. Interrupt Using AC (1/» Modification there are no other delays which he may have overlooked, such as introducing external circuitry into the paths, he may merge the various requirements generated into a uniform set of system requirements. Any change introduced after these requirements have been generated must be closely examined that it does not subtly alter any system requirements. Delays that are negligible in one configuration may be dominant in a slightly different structure. WHAT HASN'T BEEN MENTIONED? 1. In the introduction it was explained that temperature would not be considered in the examples since Intel specifies products over the 0° C to 70° C temperature range. This deserves further comment. A quick glance at an Intel Data Sheet will verify that Intel parts are specified and guaranteed over the O°C to 70°C ambient temperature range and concurrently with a five percent tolerance power supply. This is a reasonable range and allows the designer to guarantee circuit operation. . Unfortunately, the standard Schottky MSI line (74SXX) is only specified at 25°C ambient and Vee = 5V. The variance of parameters over the allowable temperature and supply voltage is un· specified and left to the designer's experience. Due to this uncertainty the designer should "appro· priately" modify any times attributable to nonIntel parts to allow for variations over temperature and supply voltage. 2. In the examples given it was always assumed that setup times would be honored. Though most of a computing system is synchronous, it typically has to interface with asynchronous events. It is at this interface that difficulty may be encountered. Consider a popular circuit (Figure 8) used to "synchronize" asynchronous signals. In this circuit the output delay is guaranteed only if the input setup time is met. But since the input is asynchronous, this setup time may not always be satisfied, as at the second event depicted in Figure 8. What happens? Though the results are highly dependent on the flip-flop circuit design, System Timing Recall the 3214 Interrupt Control Unit and its request setup time (tRCS) and its IA output delay (tCI)' This delay is in several critical system paths as shown by the examples. Of course, the IA output delay specified also presumes the IA flip-flop setup time was met. When deliberately violating the IA flip-flop setup time, a hang-up of 50 nsec has been observed. What is a designer to do? Slowing down the system such that it could tolerate any expected hang-up would be the easiest solution. This may not always be as bad as it sounds. Recalling the situation depicted in Figure 7, note that some flip-flop hang-up is tolerable. [tIA-HANG = tCYCLE - (tSF + twp )]. An alternative would be to "synchronize" the asynchronous interrupt requests using the technique previously described. An octal D flip-flop such as the 74S374 would be suitable. . some general observations may be made. Typically, the effect is to stretch out the flip-flop delay time as the event approaches arbitrarily close to the clock edge. Theoretically, the delay will go to infinity if the event falls precisely on the clock edge. Some flip-flops also exhibit a characteristic in which the output may change state and some time later return to the original state. This phenomena is known as "hang-up" and has been observed to last for twenty nanoseconds on a 7 4S7 4. It cannot be absolutely prevented when asynchronous signals are introduced into a synchronous system, but the probability of the "hung" flip-flop causing an error can be reduced without limit. The technique is simply to cascade these interfaces. If two such flip-flops are cascaded there is some probability PI (Pj <1) that the asynchronous event will fall close enough to the clock edge to hang the first flip-flop. Given that it hangs, there is some probability 1'2 that it will hang for very nearly an entire clock period and into the hang-up zone of the second flip-flop. Then, there is a probability Pa that the second flip-flop will hang long enough to cause an error. Thus, the probability of error is I'E = PI *P2*Pa. Hence, by cascading flip-flops the probability of error can be reduced without limit. ASVNCHRONOUS I SVSTEM 3. In the examples given it has been assumed that the system, including all the CPEs, the MCU, and the ICU, operates from a single clock. If a circuit, such as in Figure 9, that provides a separate clock for different components is used, the possible clock skew must also be considered when determining system timing. INTERFACE 74874 ----+-----~D ASV-;;;;::ONOUS I EVENT I SYNCHRONOUS I SVSTEM I Q~------~----- I~CK "'1J"'"'U"" SYSTEM CLOCK SYSTEM CLOCK ASVNC EVENT Q OUTPUT LJ U *'OU1 {:'"j U ~l,"+;:t" .I. tsu - 74574 oa1a input set-up time" 3 nsec. tFO - 74574 Delay hom clock t ·9 nsec. tHU - Heng up due to set-up time violation. Figure 8. Synchronizing Circuit Exhibiting Hang-Up 3-7 ~ U 1-'oU1 X t HU --- System Timing SUMMARY Generating the correct timing for a complex system in which parameters may vary with temperature, power supply voltage, lead length and the like is no trivial task. Fortunately, large scale integration such as Intel's 3000 family is making the task much easier. With the 3000 family of compatible parts the designer need only worry about the interfaces and may be assured the internal timing is correct. Such a system is best analyzed by separately considering the various delay paths and later combining the sundry results. And of course, with Murphy on vacation the designer can be confident of a flawless design on the first pass. TWICE CLOCK - - - . . _ - - - - - - - , RATE MCUANO SYSTEM "RUN"---+-~ CLOCK CPE CLOCK CPE CLOCK INHIBIT BIT FROM PIPE LINE REGISTER Figure 9. CPE Clock Inhibit Circuit 4. Though not explicitly mentioned, it has been assumed that all input hold times would be observed. Usually these times are satisfied with no conscious effort required of the system designer. However, parameters such as the MCU SX and PX input hold time must be carefully considered. These inputs are used for macro instruction decoding and typically are used at the end of an instruction fetch cycle. When using these inputs the designer must provide the necessary data hold time before allowing the data to change. 3-8 Disk Controller Design Disk Controller Designed With Series 3000 Computing Elements by Glenn Louie Figure 1. Bipolar Microprogrammed Disk Controller speed microprocessors that together with a minimum of external logic perform the intricate program sequences required by high speed peripheral controllers. With the introduction of the first microprocessor, digital designers began a massive switch to programmable LSI technology, away from hardwired random logic. Designers found that with these new LSI components and the availability of low cost ROMs they could easily implement structured designs which were both cost effective and flexible. However, not all digital designs were amenable to the microcomputer approach. One of the basic limitations was the speed at which a particular critical program sequence could be executed by a microprocessor. The early P-channel MOS microprocessors, such as Intel's 4004 and 8008, were able to solve a broad class of logic problems where speed was not essential. With the introduction of the more powerful n-channel MOS microprocessors, such as the Intel@8080, the range of applications was significantly broadened, but there still existed a class of applications that even these newer devices were not fast enough to handle. A multi-chip bipolar microprocessor differs from the single chip MOS microprocessor in that the bipolar microprocessor is programmed at the· microinstruction level rather than at the macroinstruction level. This means that instead of specifying the action via a macro program using a fixed instruction set, a designer can specify the detailed action occurring inside the microprocessor hardware via a microprogram using his own customized microinstructions. In general, microinstructions are wider than macroinstructions (e.g. 24 to 32 bits) and have a number of independent fields that specify simultaneous operations. In a single microcycle, an arithmetic operation can be executed while a constant is stored into external logic and a conditional jump is being performed. Recently, two new Schottky bipolar LSI computing elements, members of the Intel Bipolar Microcomputer Set, were introduced which expand the range of microcomputer applications to include high speed peripheral controllers and communication equipment. The new elements are the 3001 Microprogram Control Unit (MCU) and the 3002 Central Processing Element (CPE). These two components facilitate the design of specialized, high A bipolar LSI microprocessor design is )im. ilar to a general MSI/SSI microprocessor design where the intricacies of the application are imbedded in the program patterns in ROM. However, the large amount of logic necessary to access the microcode has been replaced by the LSI MCU chip. Also, 3-9· Disk Controller Design the MSI logic required to provide the arithmetic and register capabilities has been replaced by the functionally denser LSI CPE slices. Because of these new LSI chips, microprogramming with all its advantages can now be applied to designs which previously were unable to justify microprogramming overhead. The bipolar LSI microcomputer in the BMDC performs the necessary command decoding, address checking, sector counting, overlap seeking, direct memory accessing, write protection, password protection, overrun detection, drive and read selection, and formatting. External hardware assists the microprocessor in updating the sector counter, performing parallel-to-serial and serial-to-parallel conversion, and generating the CRC data checking information. The BMDC uses a special purpose microprocessor, configured with the components listed in Table A. The LSI microprocessor uses an MCV, an 8: I multiplexer, eight 360 I PROMs, a command latch, a data buffer, and an array of eight CPE slices (Fig. 2). The characteristics of this design, only one of many possible with the 3000 family, are as follows: The effectiveness of these new LSI components in a high speed peripheral controller design has been demonstrated by the Applications Research group at Intel with the design of a 2310/5440 moving head disk controller (BMDC). The BMDC has a total of 67 IC chips and is packaged on a printed circuit board measuring 8" x IS", as shown in Figure I. Disk controllers of equivalent complexity realized with conventional components typically require between 150 and 250 I.C.'s. The BMDC performs all the operations required to interface up to four "daisy chained" moving head disk drives, with a combined storage capacity of 400 megabits, to a typical minicomputer. It is fast enough to keep up with the drive's 2.5 MHz bit serial data stream while performing the requisite data channel functions of incrementing an address register, decrementing a word count register, and terminating upon completion of a block transfer. • • • • • • • 400 nsec system clock 16-bit wide CP array Ripple carry CPE configuration Non-pipelined architecture One level subroutining 230 32-bit microinstructions Word to 4-bit nibble serialization The MCV controls the sequence in which microinstructions are executed. It has a set of unconditional and conditional jump instructions which is based on a 2-dimensional array for the microprogram address spece called the MCV Jump Map. (I) The BMDC interacts with the minicomputer's disk operating system (DOS) via I/O commands, interrupts and direct memory access (DMA) cycles. The I/O commands recognized by the BMDC's microprogram are: PART # Conditions In Seek Cylinder Write Data Read Data Verify Data Format Data The BMDC sends an interrupt to the minicomputer when either a command is successfully executed, a command is aborted, or a drive has finished seeking. The DOS then interrogates the BMDC with a Conditions In command. The following flags specify the conditions which the BMDC can detect: Done flag Malfunction flag Not Ready flag Change In Seek Status flag Program Error flag Address Error flag Data Error flag Data Overrun flag Data transfers between the minicomputer and the disk BMDC occur during DMA cycles. DMA cycles are also used for ·passing command information from the minicomputer to the BMDC. DESCRIPTION QUANTITY 3001 MCU 1 3002 CPE 3212 8 bit 1/0 Port 3205 1 of 8 Decoder 8 6 2 8 3601 lK PROM 3404 6 bit Latch 74173 4 bit Gated D F/F 74174 6 bit D F/F 74175 4 bit D F/F 74151 8: 1 Multiplexer 8233 Dual 4: 1 Multiplexer 9300 4 bit Shift Register 9316 4 bit Binary Counter 2 8503 CAe Generator 1 7474 Dual D F/F 5 2 7473 Dual J·K F/F 7451 7404 And-Dr-Invert Gate Hex Inverter Quad 2 Input Nand Gate 1 6 9 7400 74H08 Quad 2 Input And Gate 1 7403 Quad 2 Input Nand O.C. Gate 2 7438 Quad C.C. Drivers 4 74Hl03 Dual J·K F/F 2 Total 67 I.C. Packages Table A. I.C. Component List for Disk Controller 3·10 Disk Controller Design MICROPROGRAM MEMORY OUTPUT PORTS 8·36015 ~ .1 8 8 ACQ·6 Fe Fa ,001 SX PX 2 7 2 F1 -7"; 1 t I' It····· ,I ,I 8 ----I ~IIIIIIIII MAO. MCU J' 8:1 MUX I INPU~ PORT y O-l-DATA MUX ......-' t..... t PORTA t I II 1·····1' I , PORTe PORT B t I I f8 LeI ' - - - eo ,. I LI o OUTPUTS 18 MAB I M ,. ,. I • K AO CP ARRAY 8 - 3OO2's A OUTPUTS 4 COMMAND LATCH FO-6 8 NIBBLE OUT 4 4 NIBBLE IN EXTERNAL LOGIC J. 27 , DATA BUFFER ,. 18 MOB DISK DRIVE SIGNALS Figure 2. Disk Controller - The various elements of a specialized microprogrammed processor is shown with the external logic which together is the entire disk controller. In addition, the MCV is connected in such a manner as to perform command decoding, external input testing, and one level subroutining. upon exiting, a subroutine with a JPR instruction, control can be returned to the procedure which called it (Fig. 4). This technique saves a significant amount of microcode in the BMDC because some long sequences do not have to be repeated. Command decoding is achieved by connecting the command latch to the Primary Instruction (PX) bus inputs and using the JPX instruction (Fig. 3). The testing of external input signals is performed by routing the least significant bit (LSB) of the seven bit jump code through an eight-to-one multiplexer (Fig. 2). The mUltiplexer is controlled by a 3-bit Input Select Code which selects either the LSB of the jump code or one of 7 external input signals to be routed to the MCV. This technique has the effect of conditionally modifying an unconditional jump code so that the next address will either be an odd or even location (Fig. 3). A one instruction wait for external signal loop can be simply implemented in this fashion. The microprogram control store is an array of eight 360 I PROMs organized to give 256 words x 32 bits (230 words were required for the BMDC). The 32-bit wide word is divided into the following sub control fields: I. 2. 3. 4. 5. 6. 7. Jump Code field Flag Control field CPE Function field Input Select field Output Select field Mask or Data field Mask Control field TOTAL 7 bits 2 bits 7 bits 3 bits 3 bits 8 bits 2 bits 32 bits The command latch and data buffer retain command information from the computer so that the memory bus will not be held up if the BMDC should be busy performing an updating task. The data buffer also retains the next data word during a Write Data to disk operation. One level subroutining is achieved by feeding the four least significant bits of the address microprogram outputs back into the secondary instruction (SX) inputs. Enough program status information can then be saved in the internal PR latch when a subroutine is called with a JPX instruction so that 3-11 Disk Controller Design The CP array is connected in a ripple carry configuration as shown in Figure 5. The eight CPE slices provide the BMDC with a l6-bit arithmetic, logic and register section. Word to nibble serialization is made possible by connecting the Shift Right Outputs (RO) of the first, third, fifth, and seventh CPE to the Nibble Out bus. By using only four shift right operations a word in a register can be converted into four 4-bit nibbles. The final serialization of these nibbles is done in the external logic. Similarly, the Shift Right Inputs (LI) of the second, fourth, sixth, and eighth CPE are connected to the Nibble In bus so that with only four shift right operations, a word can be assembled from four nibbles. COLUMN o , 2 3 4 5 6 1 8 9 10 11 12 13 1415 COLUMN 2 3 4 5 6 7 8 9 10 " 12 13 14 15 0 V" CALL i .... ' -!UBROUTlN~ CALL CAL~ C ~ B CAL~ ROW (WAIT FOR EXTERNAL INPUT) RET ,. SHItWAlnlltAOVAlfVfOR.. AT DAnOATAOATADATA D"TA .., \ DESIGNATED RETURN ROW ~ ~ B" r-- C., - 0" " ROW (INSTRUCTION DECODING) 13 I JCC '--+-+H-CJNDITIION~L BRANCH ON EXTERNAL INPUTS -t-t-+--i r USING JUMP CURRENT COLUMN (Jec) AND JUMP CURRENT ROW (JeRI INSTRUCTION 1T ,,~t=~~=l~~JC3R~~~~~~~t=J==t=l~ Figure 4. MCU Jump Map for one level subroutine call and return. A subroutine is called from four different places in the program each with a unique column number. Upon returning from the subroutine, control will be transferred back to the portion of program which called it. A subroutine may be called from a maximum of 16 different places. 13 Figure 3. MCU Jump Map for instruction decoding and conditional branching on external inputs , NIo {, '. • NI IN ,--!r- CO CII--'-LI RO I---- , BBlE ur BBLE 4 1', 1', {, I 1 ~~y- ~K 300' , L-L - r300' I--- 300' - , , ---.l I---- 'r-- , , 1 ---.l 300' , , , , - , {, {, {, ---.l L.J.. -..l r300' '- - 1- :...- --:r.T Tz , , , , , {2'6 e- BUS CATA OUTPUT BUS ,~ CI - r- IN _LI RO M-t,-K n;-r 300' CARRY 300' . I I , , 16 -co 3002 l- ADDRESS , " , I I , , 01 DATA MUX , MASK CONTROL FIELD }. DISK DRIVE co NOITIONS DATA , , 16 INPUT BUS I FIELD Figure 5. CPE Array - A 16-bit arithmetic, logic and register section is built up with 8 CPE slices connected in a ripple carry configuration. The K, I, and M bus is used for loading information into the CPE slices. The LI inputs and RO outputs are connected to make up the Nibble In and Nibble Out buses. 3-12 Disk Controller Design MCV chip via the carry out line. Finally, the eleven scratch pad registers allow the controller to retain data and status for the processor. An eight bit mask bus is connected to the mask inputs of the least significant half of the array. The mask inputs of the most significant half of the CP array are all tied to the eighth mask bit. A constant with a value between +127 and -128 can therefore be loaded into the array from the microprogram. The mask bus comes from the data field of the microprogram via a 0-1 data multiplexer. When the CP array requires either an all one or all zero mask, the data field is freed to provide data to external logic. The CP array in the microprocessor performs the following for the BMDC with its registers and arithmetic functions. I. 2. 3. 4. 5. 6. 7. 8. Sector counting Word to nibble serialization Drive seek status monitoring Header checking DMA address incrementing Word counting Multi-sector length counting Automatic resynchronization of sector counter 9. Accessing of additional information from memory 10. Time delays The 3002 CPE is an extremely flexible component which makes it particularly attractive for controller designs. The Memory Address Register makes an ideal DMA address register.(!) The accumulator (AC) register, which also has its own output bus can be used as a data word buffer during a write DMA cycle. Concurrently, another word can be assembled in the T register using the shift right operation. The three separate input buses provide a mUltiplexing capability for routing different .data into the CPE. In the BMDC, the I-bus is used for loading disk drive conditions, the K-bus for loading mask or constant information, and the M-bus for reading an external data buffer. The arithmetic logic section performs zero detection and bit testing with the result delivered to the The organization of the microprocessor was chosen to maximize the use of the MCV and CPE in performing the various tasks required for disk control. However, there are some specialized tasks which are more economically performed by external logic. The microprocessor controls this external logic by output ports whiclr are selected by the output select field in the microinstruction. The EXT BUS RD B~~!~~~LE BUS CONTROL II I I DAT~EOT~~~RUN t-R!!:E'-:A='~~::":':':;'::::TE,-J t--'-';6f:--_-i-C_______~------..:'+6_>--<--.1 t---,7A-----------t~----,._____+._=__........._ j 16 16 • - - - BIPOLAR LSI MICROPROCESSOR - • 4 MEM ADO BUS MEM DATA BUS BUS INTERFACE +DISK DRive INTERFACE CYLINDER ADD I PLATTERHEAD SELECT UNIT SELECT WR GATE NIBBLE OUT t--f-.., NIBBLE IN t-,4---' DISK CABLE DRIVER 3 I ;~T~~TL~NDER I OF DATA OUTPUT PORTS DISK DATA FOR CONTROLLING ~ r;;t---J TOP INDEX PULSE ~ BOTTOM INDEX EXTERNAL LOGIC INPUT PORT I;;;-l FOR TESTING OR SVNCHRONIZING ~ ~~ TO EXTERNAL LOGIC L -_ _ _ _ _ _ _ _ _ _ _ _D_R_'V~E~C~0~ND~I_Tl~ON_S~/~8---------~I PULSE TOP SECTOR PULSE BOTTOM SECTOR PULSE Figure 6. External Logic - Microprocessor monitors and controls external logic via input-output port to perform sPeCialized disk controller functions. 3-13 Disk Controller Design data to these ports is delivered from the shared data field. The external logic section of the BMDC (Fig. 6) has a double buffered 4-bit shift register which is used for initial packing and the final serialization of data. It is controlled by a modulo-4 counter circuit. During a write operation, serial data from the shift register is encoded by the clock controlled double frequency encoder and sent to the drive. As data is being transferred to a cyclic redundancy code (CRC) is generated and then appended to the end of the data stream to be recorded on the disk. The external logic also contains addressing latches and flag flip-flops to capture sector and index pUlses. It also contains main memory bus·control circuitry for performing bus protocol, bus acquisition, and data overrun detection. ~-_ SET NOT HEADY flAG 80 AHORT GET FROM MEMORY THE HEADER. STARTING ADDRESS, BLOCK LENGTH, & PASSWORD SET PROGRAM ERROR FLAG 8. ABORT The microprogram for the BMDC microprocessor directly implements the six I/O commands. The program controls the sequential action of the various elements of the microprocessor and of the external logic needed to decode and execute the commands. In Figure 7, the flow chart of the Read command shows the actions required to read a file off the disc. The BMDC first selects the drive specified by the command and checks its ready status. It then uses a memory pointer passed to it by the command to access four more words from the main memory using DMA cycles. The first word is the Header, which contains the track address and sector address information. The second word is the Starting Address specifying the first location in memory where the data is to be stored. The third word is the Block Length of the file to be retrieved. All of the address information and the Block Length are stored in several CPE registers for further processing. The fourth word is the Password which is compared against a microprogram word to insure that the command from the computer is a valid one and not a program error. The password can prevent an erroneous command, due to a user programming error, from destroying important files on the disc. ' - - - - SET ADDRESS ERROR FLAG & ABORT PACK NIBBLES TO FORM WORDS INCREMENT MEM ADD COUNT DECREMENT WORD COUNT INITIALIZE CHANNEL OPERATION CRITICAL TIMING lOOP NO SET OATA ERROR FLAG l!. ABORT After the password check, the BMDC resynchronizes the sector counter if necessary and waits for the desired sector by monitoring the sector pulse flag. When the desired sector arrives, the BMDC synchronizes itself to a start nibble and reads the header which it compares to the desired header to insure that the head is positioned properly. It then reads and stores 128 words of data at sequential locations in memory. A cyclic redundancy code is compiled during the read oper- YES seT DONE flAG Figure 7. Read Command Flowchart - This flowchart is coded in the microprogram which when executed performs the disk Read operation. 3·14 Disk Controller Design ation and compared against the CRC word read in after the data. At the end of each sector the block length is decremented to see if it is the last sector. If it is not, the sector address is incremented and another sector is read. In addition to the command routines, the microprogram has an idle loop routine (Fig. 8) which the BMDC executes when it is not busy with a command. While in the loop, the BMDC updates the sector count, monitors the drives seeks status lines and decodes any disc commands from the disc operating system in the minicomputer. The design process for the BMDC began with an evaluation of what disc controller operations could effectively be handled by the microprocessor. This also determined what had to be performed by external logic. A microprocessor configuration was then established and certain critical sequences were programmed to verify that the configuration was fast enough. A flow chart was produced and the microprogram coded directly from it. All attempts were made to use the MCU and CPE slices effectively and keep the microprogram within 256 words. The assignment of MCU addresses which initially appeared difficult, was, with a little experience, quite straight forward and less restrictive than a state counter design. After the coding, the microprogram was assembled and loaded into the microprocessor's control memory. The BMDC design demonstrates how a specialized high speed microprocessor can be designed using standard bipblar LSI devices and microprogrammed to perform disc control functions with the addition of a small amount of external logic. The flexibility of Series 3000 allows a designer to optimize the configuration for his application. For extremely high speed applications, the designer can add fast carry logic and microinstruction pipelining to his microprocessor to achieve alSO nsec 16-bit microprocessor. At Intel, our design experience with the BMDC design exercise has shown that the use of the MCU and CPE results in a clean, well structured design. The complexity of the design resides primarily in the microprogram leaving the external logic relatively simple. During debugging, most of the problems encountered were restricted to the microprogram which was easily modified and debugged using l:)ipolar RAM for the control memory. Figure 8. BMDC Flowchart - The BMDC runs in the idle loop when it is not busy doing command processing. References I. J. Rattner, J. Cornet, M. E. Hoff, Jr., "Bipolar LSI Computing Elements Usher In New Era of Digital Design," ELECTRONICS, September 5, 1974, pp 89-96. 3·15 l> 'tJ 'tJ m . ,' Z C " ••~~~~ : : ~r; ; -; ; oli';ii~~ -,; =='i ===ii ::; ~ I..~ '.",.:,:,1 " DU :: Oil n 001 : UI]C~ST' An ~ ::~~T~ 2l eoMMAlKl Oll "::~ .,. iili I. ~_ _ _'_"_- < I c Cii ~ 0 0 z ::a -I 0 rrm " I¥." ::a en 0 :I: m s:: ~ (; I:' , r.- ""w. 110 -.32 Cl" ""I·r iil- CMlI CO-AND I)l' OlID JIll 0 iii" ~ 0 -20 ~ (j) .... 0 CD en cD' ~ » 'tI 'tI m Z o >< I o en 8"z -I :D o rr- m :D en o :I: m s:: ~ (; .. ~ ~. f&"V CnAoO C iii' oo"" -... :::I (3 (5" c m cO· :::I CPU Design Contents Central Processor Designs Using The Intel® Series 3000 Computing Elements by M.E. Hoff, Jr., James Sugg, Ron Yara INTRODUCTION .. . . . . . . . . . . . . . . . . . . . . . . . . .. THE SERIES 3000 F AMILY . . . . . . . . . . . . . . . . . . .. AN INTRODUCTION TO MICROPROGRAMMING.. CONSTRUCTING CENTRAL PROCESSING UNITS ..................................... Basic Design Steps . . . . . . . . . . . . . . . . . . . . . . . . .. Hardware Organization ...................... Writing of Microprograms .... . . . . . . . . . . . . . . .. DEFINITION OF CONTROL FIELDS . . . . . . .. ASSIGNMENT TO CONTROL MEMORY. . . . .. PROGRAMMING TECHNIQUES . . . . . . . . . . .. A DESIGN EXAMPLE ........................ Initial Specifications ........................ Macro-Instruction Decoding .................. Microprogram Implementation. . . . . . . . . . . . . . .. MEMORY REFERENCE AND IMMEDIATE GROUP ..................... JUMP GROUP. . . . . . . . . . . . . . . . . . . . . . . . . .. REGISTER MOVE AND SUBROUTINE GROUP ................................ SPECIAL FUNCTION GROUP. . . . . . . . . . . . .. INPUT/OUTPUT GROUP .................. INTERRUPTS. . . . . . . . . . . . . . . . . . . . . . . . . .. Microprogram Memory Assignment. . . . . . . . . . . .. CONCLUSION .............................. APPENDIX A - DESIGN EXAMPLE INSTRUCTION SET. . . . . . . . . . . . . . . . . . . . . . . . .. Memory Reference Group . . . . . . . . . . . . . . . . . . .. Immediate Group .......................... Jump Group .............................. Subroutine Call Group. . . . . . . . . . . . . . . . . . . . . .. Subroutine Return Group ........ . . . . . . . . . . .. Register Manipulation Group. . . . . . . . . . . . . . . . .. Byte Load and Store Group. . . . . . . . . . . . . . . . . .. Special Memory Reference Instruction .......... Base and Status Register Move Group . . . . . . . . . .. Input/Output Group . . . . . . . . . . . . . . . . . . . . . . .. Stack Push and Pop Group ................... APPENDIX B - MICROPROGRAM LISTINGS . . . .. APPENDIX C - CENTRAL PROCESSOR SCHEMATIC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 3·19 3-21 3-21 3-21 3-23 3-23 3-23 3-26 3-26 3-27 3-28 3-29 3-30 3-33 3-34 3-34 3-43 3-46 3-49 3-52 3-52 3-53 3-58 3-62 3-62 3-62 3-63 3-63 3-64 3-64 3-64 3-64 3-64 3-64 3-64 3-65 3-76 CPU Design INTRODUCTION Unit (MCU) and the 3002 Central Processing Element (CPE). The MCU determines the sequence of micro-instruction execution and controls carry / shift data to and from the CPE array. The CPE provides a complete two-bit wide slice through the data processing section of a central processing unit. CPEs may be arrayed in parallel to form a processor of any desired word length. For example, to produce a l6-bit wide data path, eight CPEs would be used. Until recently, the area of high performance, general purpose and special purpose central processors was unaffected by the microprocessor revolution. Although they covered a broad range of applications, the P-channel and N-channel microprocessors' performance limitation prevented their use in applications where high speed was necessary. The introduction of the Series 3000 Computing Elements has expanded the spectrum of microprocessor applications to include both high performance central processors and controllers. Utilizing Intel's Schottky bipolar technology, the Series 3000 components realized a level of performance that was not possible with MaS microprocessors. For example, a l6-bit processor with a microinstruction cycle time of 150 nanoseconds can be built with the 3000 components. In addition, the components of the family can be arranged into a number of different configurations and microprogrammed by the system designer to perform in a variety of processing environments from front end processing to arithmetic intensive computation. I All of the above components use standard TTL logic levels, as some designers may wish to utilize SSI and MSI TTL logic to control external circuitry, or to add functions not included in the basic set to increase the speed of certain operations. Other members of the family currently include the following computing elements: • • • • • 3003 3212 3214 3216 3226 Look-Ahead Carry Generator Multi-Mode Latch Buffer Interrupt Control Unit Bidirectional Bus Driver Inverting Bidirectional Bus Driver This application note describes a systematic procedure for designing central processors with the Series 3000. Using a CPU design example, simple guidelines are given for tasks such as macro-instruction opcode assignment, macro-instruction decoding and execution and microprogram memory assignment. The control and main memory portion of the central processor may be implemented with any of the standard bipolar or MaS memory components shown on page 2. THE SERIES 3000 F AMIL Y AN INTRODUCTION TO MICROPROGAMMING The Intel® Series 3000 Bipolar Microcomputer Set is a family of Schottky bipolar LSI computing elements which simplify the construction of microprogrammed central processors and device controllers. These processors and controllers are truly microprogrammed in the sense that their control functions are determined by the contents of a control memory. This control memory may be realized with standard read-only (ROM) memory, read/ write (RAM) memory or programmable read-only memory (PROM) elements. The central processing unit of a general purpose computer usually consists of two portions: an arithmetic portion and a control portion. The control portion determines the sequence of instructions to be executed and presides over their fetching and execution while the arithmetic portion performs arithmetic and logical operations. The basic operation of the control portion consists of selecting the next instruction from memory, !hen executing a series of states based upon the instruction fetched. This sequence may be implemented via a combination of flip-flop and random logic, or by the use of tables in control memory. The two most important computing elements in the family are the 3001 Microprogram Control I J. Rattner, J. Cornet, and M. E. Hoff, Jr., "Bipolar LSI Computing Elements Usher In New Era of Digital Design," ELECTRONICS, September 5, 1974, pp 89-96. 3-21 CPU Design Standard Bipolar and MOS Memory Components PART NUMBER NUMBER OF PINS DATA ORGANIZATION TECHNOLOGY ACCESS TIME CONTROL MEMORY 3601 16 Bipolar PROM 256X4 70 nS' 3602 16 Bipolar PROM 512X4 70 nS 3604 24 Bipolar PROM 512X8 70 nS 3624 24 Bipolar PROM 512X8 70 nS 3301A 16 Bipolar ROM 256X4 45 nS 3302 16 Bipolar ROM 512X4 70 nS 70 nS 3304A 24 Bipolar ROM 512X8 3324A 24 Bipolar ROM 512X8 70 nS 3106A 16 Bipolar RAM 256X1 60 nS 3107A 16 Bipolar RAM 256X1 60 nS 256X8 1000 nS MAIN MEMORY 1702A 24 Static MOS EPROM 2704 24 Static MOS EPROM 512X8 500 nS 2708 24 Static MOS EPROM 1024X8 500 nS 1000 nS 1302 24 Static MOS ROM 256X8 2308 24 Static MOS ROM 1024X8 500 nS 2316 24 Static MOS ROM 2048X8 850 nS 2101 22 Static MOS RAM 256X4 1000 nS' 2102 16 Static MOS RAM 1024X1 1000 nS' 2111 18 Static MOS RAM 256X4 1000 nS' 2112 16 Static MOS RAM 256X4 1000 nS' 2104 16 Dynamic MOS RAM 4096X1 2107B 22 Dynamic MOS RAM 4096X1 200 nS 5101 22 Static CMOS RAM 256X4 650 nS *Higher speed versions of these devices are available. Consult the Intel Data Catalog. When the latter technique is used, the central processor is said to be microprogrammed. memory. Each macro-instruction is then executed as a series of micro-instructions. Main memory contains macroprograms, while control memory contains microprograms which define the realized central processor. The functions of the control portion of a microprogrammed central processing unit are very similar to that of a central processing unit itself. To avoid confusion, the terms "micro" and "macro" are used to distinguish those operations in the control unit from those of the realized central processorFor example, the central processor, under the direction of micro-instructions read from its control memory, fetches macro-instructions from main Figure I shows a block diagram of a microprogrammed central processing unit (defined by the dotted boundary). The control unit issues addresses to the control memory and fetches micro-instructions. This control unit uses the contents of control memory (micro-instructions) to drive the data processing unit, external circuits, and to select the 3-22 CPU Design finds it necessary to alter or enhance the basic macro-instruction set in some fashion. The tabular or programming approach offered by the microprogrammed architecture makes such changes far easier than would be possible in a processor realized via hardwired logic. EXTERNAL CONTROL SIGNALS r------1 1.----..., DATA PROCESSING UNIT 1 1 IALU, REGISTERS. 1'---?O:~-' 1 1...-..., 1.--......... I MAIN MEMORY I (MACROPROGRAMSI CONSTRUCTING CENTRAL PROCESSING UNITS BUS CONNECTIONS) 1 L----.,..~-' I1 L---::oo::--' 1 Basic Design Steps 1 1 I'--.....".,~-' To realize a central processor with the Series 3000 computing elements, several steps are necessary: 1 1 1 1. Definition of hardware organization. 2. Definition of the central processor macroinstruction set. 3. Implementation of microprograms which realize the desired macro-instruction set. 1 MACRO·INSTRUCTION MACRO-I'l'STRUCTIONSIDATA 1 OPCODE 11.. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ...l CENTRAL PROCESSING UNIT Figure 1. Block Diagram - Microprogrammed Computer Hardware Organization A typical CPU constructed utilizing the Series 3000 computing elements will consist of an array of CPE chips, one MCU, and a control memory. The array of CPE chips realizes the arithmetic, logical functions and registers of the CPU, while the combination of the MCU and control memory realizes the control portion. The microprogram contained in control memory initializes the machine when power is first turned on and supervises the fetching and execution of macro-level instructions. In addition, routines to handle such special functions as interrupts will also be contained within the control memory. next micro-instruction. The data processing unit performs the actual computations, logical operations, etc. In the Intel® Bipolar Microcomputer set, the 3001 MCU performs the control unit function, while the 3002 CPE is the basic building block for the data processing section. Thus, within a microprogrammed machine, there are at least two levels of control and two levels of programming to be considered. The designer of a central processor is usually concerned with the definition of the macro-instruction set and its realization as a microprogram. The Intel® Series 3000 Bipolar Microcomputer Set establishes a micro-instruction set which is used as a base for the microprograms which generate macro-instruction sets. The 3002 CPE array contains six buses for communication with external circuitry. Four of these buses are used primarily to communicate with memory and I/O devices while the remaining two, the function control bus (F-Bus) and the control memory data bus (K-Bus), enable the control portion of the processor to drive the CPE array. The function control bus is driven by control memory outputs which direct the CPE array to execute the desired operation. The K-Bus allows the control memory to supply various constants and/or masks to the CPE array. The reason for using this microprogrammed approach is that very complex macro-instruction sets can be realized as sequences of relatively primitive micro-instructions. The logic of the final macro-machine remains relatively simple, with most of the design complexity residing in the microinstruction sequences contained in control memory. Because 8 bits of operation code information can be passed directly to the MCU, the set is best adapted to macro-instruction sets in which all of the operation code information is defined by 8 bits (256 unique macro-instructions). However, larger macro-instruction sets can be realized by saving any remaining bits of the operation code in the CPE array or in an external register. The saved bits can The final user of the computer seldom needs to be aware that the CPU was realized with microprograms rather than hardwired logic. A functional description of the macro-instruction set is usually sufficient for his purposes. However, the user will benefit from the microprogrammed approach if he 3-23 CPU Design then be tested later by routing them to the MCV, through its 8-bit input port. • The address bus (A-Bus) to main memory • The data bus (D-Bus) to memory • The data bus (M-Bus) from memory with its path for operation code data to the MCU • The external device input bus (I-Bus), not shown • The micro-function bus (F-Bus) from the pipeline register • The constant bus (K-Bus) from the pipeline register A "pipelined" mode of operation may be implemented by placing a register of edge triggered D flip-flops between control memory outputs and the circuitry controlled by those outputs. This register causes the execution of a micro-instruction to overlap the fetching of the next micro-instruction. The control lines which issue micro-instruction sequence information to the MCV are not routed through the pipeline register when the pipelined mode is used; they are routed directly from the microprogram memory outputs to the ACO-AC6 inputs of the MCV. In addition, the carry logic bus to and from the MCV and the micro-instruction sequence logic bus from control memory to the MCV are shown. Ad- ditional control fields to such external logic as memory and I/O control are shown as an output bus from control memory. Microprograms written to realize a given macroinstruction set will differ for pipelined and nonpipe lined machines. The major differences are associated with conditional jumps in the microprogram which test the results of arithmetic or logical operations executed by the CPE array. In a pipelined machine, these results are delayed by one microinstruction, so that conditional jumps must be delayed by at least one micro-instruction before execution. More detailed information concerning these differences is contained in the microprogramming section of this application note. The number of bits required for each word of control memory, i.e., each micro-instruction, is determined by the number of logical functions the micro-instruction controls. A minimum of 18 bits is usually required for basic hardware control: 7 bits of micro-instruction sequence control to the MCV, (ACO-AC6), 4 bits of carry control to the MCV, (FCO-FC3), and 7 bits of micro-function selection to the CPE array, (FO-F6). That is, the basic hardware requires at least three control word fields of 7 bits, 4 bits, and 7 bits width respectively. Almost every processor will require additional fields to control other logical functions such as main memory control, I/O control, and constant generation. Figure 3 illustrates a typical microinstruction word format with several typical user defined control fields added. Figure 2 shows block diagrams illustrating the organization of standard and pipelined central processing units. The block diagrams show the basic modules of standard and pipelined CPVs: the MCV, CPE array, microprogram memory and the pipeline register. The six buses associated with the CPE array are shown: MEMORY ADDRESS DATA BUSTO BUS MEMORY CLOCK CONTROL TO MEMORY,IID MEMORY ADDRESS DATA IUS TO IUS MEMORY CLOCK DATA IN FROM MEMORY DATA IN fROM MEMORY Figure 2. Bipolar Microcomputer Non-Pipelined Organization Figure 2. Bipolar Microcomputer Pipelined Organization 3-24 CPU Design As an example of the use of additional logic to enhance the set, consider the use of a control field (I-bit width) to inhibit the CPE clock. This operation allows non-destructive testing of CPE registers via the MCU carry logic. The carry logic in the MCU responds just as if the micro-instruction were executed, but the fact that the CPE clock was inhibited leaves the CPE registers unaltered. An example of conditional clocking is given in a later section called "Programming Techniques." The constant bus to the CPE array seldom needs to be as wide as the data buses. For example, consider a l6-bit machine where an array of eight CPEs is used. While the constant bus is nominally 16 bits wide, if a limited set of masking operations are used, the number of bits can be reduced significantly. Figure 4 shows how 4 bits can be used to generate the masks for such a machine where the only masks needed are for separating high and low order data bytes, for testing the sign and magnitude of the data word, and for testing the least significant bit of the word. MCU CPE CPE MCU MAIN MEMORY 1/0 SYSTEM Figure 3. General Micro-Instruction Format co LI 03 02o-----_4----_4--~----_+--~----~~ 01 O-----------------------------------------4-__ ~----~_4----~~_+ ____ ~ OOo-------------------------------------------------------------------------~ O. 03 02 01 !BINARV. LOW TRUE) 1 1 1 K·BUS (HEXADECIMALI 1 • •• • • • • • • 1 MASK FUNCTION 0000 0001 SELECT lse •a ooFF SELECT LOW ORDER BYTE 1 FFOO SELECT HIGH ORDER BYTE 1 1 7FFF 8000 FFFF SELECT ENTIRE WORD SELeCT WORD MAGNITUDE SELECT WORD SIGN Figure 4. Wiring the K-Bus Using 4-Bits MICRO-INSTRUCTION WORD CONDITIONAL CLOCKING CONTROL BIT ---J=0,VCLETIME MASTER CLOCK CONDITIONING CO~~~~I:~ _____-J! Figure 5. Conditional Clocking 3·25 CPU Design Writing of Microprograms Each symbol is associated with only one field, so that the various symbols can be uniquely interpreted by the assembler. A number of symbols are predefined for the assembler, and are not to be used except as provided by the assembler. These reserved symbols include the standard symbols for the MCU and CPE functions, and a number of directives to the assembler. Once the hardware design is established and the macro-instruction set chosen, the designer should proceed to implement the microprograms for the system. To assist in the writing of these microprograms, Intel has developed CROMIS, a complete microprogramming system for Series 3000 computing elements. CROMIS consists of two major software subsystems, XMAS and XMAP. XMAS is a symbolic microassembler which is extensible in both microinstruction length and memory address space. XMAP is a complementary subsystem which maps the micro-instruction bit patterns produced by XMAS into compatible ROM/PROM programming files for use with standard memory components. DEFINITION OF CONTROL FIELDS Each control field added by the hardware designer must be declared to the microprogram assembler. In addition, each bit pattern to be assembled into a word in the control field may be symbolically designated. A FIELD definition statement in the declaration part of the microprogram is used to declare the field by name and define any states. Programs written in the microassembly language have two main parts, a declaration part in which various aspects of the micro-instruction word are defined and a specification part in which microinstruction contents are symbolically declared. Provision is made for comment statements throughout the program so that the programmer may explain the functions being performed. As an example, let a 2-bit field be defined for memory control. If the programmer wishes to name this field MEMC, and define symbols for the states with 0 I corresponding to READ, 10 corresponding to WRITE, and II signalling RMW (readmodify-write) and default to 00 if READ, WRITE or RMW is not specified, the statement: The main body of the program, the specification part, defines the sequences of states to be executed, and the operations which take place for each state. The main effort in writing a microprogram will be expended in developing this section. MEMC Each statement of the specification part of the program defines the action (and location) of one micro-instruction, i.e., one word of control memory. The statement will declare, either directly or by default, the contents of each control field for the specified micro-instruction. Furthermore, the statement will include assignment information designating the address in control memory where the statement is located. MICROPS (REAO-01B, WRITE-lOB, RMW-l1BI DEFAULT-ooB; would perform the definition. The words FIELD, MICROPS, LENGTH, and DEFAULT are directives to the microprogram assembler. Additional directives include IMPLY, STRING, KBUS, and ADDRESS. The use of these words, and other features of CROMIS are covered in the Series 3000 Cross Microprogramming System Specification. A specification statement consists of one or more labels followed by a series of control field specifications. A colon after an entry indicates that it is a label. The contents of the control fields are indicated symbolically, using either standard MCU or CPE symbols or user-defined symbols, or by an equation of the type FNM FIELD LENGTH-2 A typical statement of the specification section might take the form: 7BH: IOIB LAB: ILRIR3) FFO STZ JFllNC lei; The number 7BH (hexadecimal) followed by a colon tells the assembler that the micro-instruction is assigned to row 7 column II of control memory (when control memory is treated as an array of 32 rows and 16 columns). The symbolic label LAB where FNM is a name associated with the field. The entry 10lB implies the binary value 101. 3·26 CPU Design 3. Using the flowchart as a guide, perform the assignment. In general, conditional jumps should be assigned first, with clusters of conditional jumps assigned before isolated jumps. Leave long chains of unconditional sequences for last. The process of assignment can be assisted by using a diagram of the control memory showing the 32 rows and 16 columns. As each state is assigned, the control memory diagram is marked to show occupancy of that word and the flowchart marked to show the assignment of the state. With the assignment complete, the addresses are copied from the memory diagram. (the colon indicates a label) is also associated with this location. ILR(R3) indicates that the contents of register 3 are to be conditionally incremented and copied to the AC register, while FFO forces the carry input to a logic zero, so that the increment operation does not take place. STZ indicates that the Z flip-flop is to be set by the results, so that, as no carry can result, the Z flip-flop will be set to a logic zero. These symbols are standard symbols, with ILR associated with the CPE and FFO and STZ associated with the MCU carry logic. The JFL tests the carry output line for a conditional jump to either the statement labeled NC or to the statement labeled Te. JFL is also a standard symbol. Note that, if the machine is pipelined, the conditional jump tests the results of the previous instruction, not of the present one. The semicolon indicates the end of the statement. One other procedure in microprogram memory assignment has been found to be useful. When the control memory diagram is marked as each state is assigned, it is helpful to include state linkage information in the diagram, i.e., memory location(s) that reference the current location and memory location(s) referenced by the current location. With the additional information, micro-instruction sequences can be easily traced on the control memory diagram. In the statement above, no information was provided for the K-Bus. It is assumed the assembler will provide the appropriate default value associated with the ILR operation, i.e., the K-Bus at all zeros. The reader is referred to the Intel® Series 3000 Cross Microprogramming System Specification for detailed information concerning CROMIS. The state linkage information can be quite useful when most of the microcode has been assigned and only a few locations are left to assign the remaining states. If reassignment of memory locations becomes necessary in order to assign the remaining microcode, or modify the existing microcode, the state linkage information will greatly simplify the task. ASSIGNMENT TO CONTROL MEMORY The nature of the MCU next state address control requires the programmer to assign control memory locations to each micro-instruction. While this may at first seem unfamiliar, it can usually be easily accomplished if the following sequence is followed: When reassignment becomes necessary, sequences of unconditional micro-instructions should be considered first since they are the easiest to move. Therefore, these types of states are useful to annotate. 1. The microprogram should be written without regard to address assignment. Then conditional jumps are assigned using the basic conditional jumps provided by the MCU (JFL, JCF, JZF, JPR, JLL, JRL, JPX), noting the number of possible destinations for the conditional jumps chosen. When a sequence of instructions is to be executed unconditionally and does not indicate what jump codes will be used to advance to the next state (unless the JCE enable feature is required), use the non-committal code JMP rather than selecting a JCC, JZR or JCR. In some cases, a particular sequence may be impossible to assign as written. For example, consider the following section of microprogram: r ENTER WITH INSTRUCTION DISPLACEMENT "0" IN AC, SAVE AT R9 -, 175: r 2. Prepare a state sequence flowchart for the program (see example, Figure 7). According to the programmer's preference, this may be done before, during or after the actual writing of the code. Label the conditional jump points on the flowchart. 3·27 SQR(9) FFI .PX(MO,Ml, M2, M3. M4, MS, MS, M7, MS, M9, MA. MS, Me, MD. ME. MFI; ALSO TESTS HIGH 4 BITS OF MACRO-INSTRUCTION ., r MO- MACRO INSTRUCTION GROUP 1, FETCH R2 -, 128: MO: ILRIR21 FFO 129 Ml: ILRIR3} FFO; M1P; ADRIR91 FFO; JMP(M1PI: CPU Design 1. Forcing a fixed address to access a predetermined location in memory or to select a specific I/O device. (Also may be used to load literals.) " MIP M2 I I: D M3 I M41·:"G ClRtN) LMIIN) The first operation clears the register selected by N, while the second loads the logical OR of the contents of N and the contents of the K-Bus to the memory address register (MAR) of the CPE array and into register N. DESAD is a symbol for the desired address value previously defined by the programmer. The pair of micro-ops above may also be used to set any register to any desired constant, although the contents of the MAR are destroyed. ROWp Figure 6. Operation MIP Can Be Reached From Both MO and M1 by Locating MIP in Row 0 or Duplicating it in Both Column 0 and Column 1 In the above example, MIP follows both MO and M1. Since the row in which MO and MI reside is completely filled, MIP must be located in row zero (because the JZR jump operation allows a location in row zero to be reached from anywhere in memory). If row zero were already fully occupied, the assignment could not be made. However, in this case the state represented by MIP might be duplicated so that it can be reached from state MO and M1. No extra execution time is added by this modification, although one more memory location is used. When assigning should be used cause only they in the program KB"OESAD; 2. Any register may be set to all I's by the operation CSR(N) FFO 3. A value read from memory or I/O into the AC may be split into bytes and stored in another register as follows: SOR{N) FFl KFFOO; f" STORE RIGHT BYTE IN REG N • / SORIAe) FFl KOOFF; r SET lEFT BYTE OF ACTOZERQ ./ where KFFOO is a symbol which causes the KBus to be set to IIII IIII 0000 0000 in binary, and KOOFF is a symbol for setting the K-Bus to 0000 0000 II1I 1I1I in binary. The high order byte is placed in the upper byte of register N while the low order byte remains in the low position of the AC. The low byte of register N and high byte of the AC are cleared. to memory, row zero locations judiciously, but not sparingly, becan be reached from anywhere else using a single JZR jump function. Finally, in a 512-word microprogram memory there are 64 possible destination pairs for the JCF, JZF and JFL conditional jump functions, since all three use columns 2 and 3 or columns 10 and II as their jump target. It is therefore important to insure that enough destination pairs are available for the conditional jumps used in a microprogram. 4. Sign Testing and Absolute Magnitude - To test sign bits most effectively, an inhibit operation at the CPE clock is very desirable. In the following examples the symbol INH implies a signal from the control memory to inhibit the CPE clock. This prevents modification of the AC register. PROGRAMMING TECHNIQUES The operations Because of the flexibility of both the micro-operations and the architecture of the Series 3000 computing elements, a number of programming "tricks" can be used to implement a desired operation. As the programmer becomes more familiar with the set, he will find new ways to perform different functions. The list of operations given here are intended as examples. In general, the labels indicating assignments to memory are not shown. In all of the examples, KB is the name associated with the K-Bus field of the micro-instruction. Statements bounded by /* ... * / are comments and do not affect the assembly. TZAtAC) AN: K8000 INH JFl(AP,AN); CtA(AC) AP: generate the absolute magnitude of AC in AC for the non-pipelined case (note K8000 implies 1000 0000 0000 0000 on the K-Bus) while TZR(AC) NOP AN: KSOOO INH JFLiAP,ANI; CIA(ACI AP: performs the same operation for the pipelined case. 3·28 CPU Design r When two numbers in AC and T must be converted to positive numbers and the signs saved, as well as the sign of the product, the following routine may be used for a pipelined machine. CL Mel+1 Mel +:~ /' ENTER WITH VALUES IN T,AC " ," fiRST CLEAR SIGN AREA MCl+J REGISTER 9 FOR THIS EXAMPLE 'f CLR(R91. MLP "NEXT TEST SIGNS OF AC. THEN T " K8000 TZRIACI INH. TlRm r JfL(AP,ANI: LMI(R91 K8000 CIA(ACI «000 LMHR91 M8'~~--------~'---~ JFL TEST AC SIGN SIT " ,'TESTTSIGNBIT " JFL(TP,TNI. I" SET HIGH AND LOW ORDER BIT " JFL(TP,TN). " COMPLEMENT AC " JMP(NXOPI: r SET BIT 15 'f M81+1 M81+2 o-________-to~"'M8::::Z~>=JZ"'F ,. COMPLEMENT T 'f ClAm. MEX Figure 7. State Sequence Flow Diagram Multiply Loop Upon reaching label NXOP, both AC and T will contain positive numbers (high order bit = 0) and register 9 will contain a I in the high order bit if and only if AC was originally positive, a I in the second bit from the top if and only if T was originally positive, and a zero in the low order bit if and only if the signs were the same. A one will appear in the second lowest order bit if and only if both numbers were originally positive. Execution of the sequence takes 5 micro-instruction cyeles. ROW 10 CSRIRBI 1(0000. "SET R8TOFFFF HEX' TZFHR81 KFFFO. /' SET R8TOFFFOHEX • !" CLEAR PARTIAL PRODUCT lAC) " ClRIACI. /' fETCH AND TEST MULTIPLIER LOWQAOER BIT " SRA(TI; " MAIN LOOP - EXECUTE MULTIPLIER BIT TEST, ADD IF NECESSARY', MLP: LMUR81 FF 1 STZ SDRIRll FFI ,. SAVE AC IN REGl " JFLIMBZ.MBll. ,. INCREMENT LOOP COUNTER SAVE IN Z ., ILR(R91 FFO. I" PLACE MULTIPLICAND. R9.IN AC " ALR(R7I FFO r " A.oD SEQUENCE " MBI' ADO MULTIPLICAND TO PARTIAL PRODUCT ./ " NOW ROTATE. THEN TEST LOOP COUNT - SAveD IN Z ., ,'NOTE r COL 2 COL 3 COL 4 COL 5 MCl ., MlP MEX MCl MCl '2 '3 MB' MBZ MB, , MB1 Because MLP and MEX are the two destinations of a JZF jump function, they must be in the same row, in columns two and three respectively or in columns 10 and II respectively. Since MLP executes a lFL to MBZ, MBI, then MBZ and MBI must be in the same pair of columns as MLP and MEX. For the example, rows 9 and 10 were chosen, and columns 2 and 3, and the four states MLP, MEX, MBZ, MBI are assigned first. Next the states following MBL (indicated by MBI+I and MBI+2) and MBZ are assigned. As all of these jumps are unconditional, the operations lCC, lCR, and lZR are used. As the lZR is usually reserved for entry to commonly used routines, only the JCC and JCR jumps are used here. SET UP LOOP COUNTER 'f MGl COL MCl Figure 8. An Assignment of the Multiply Loop to Control Memory 5. Pipelined Multiply - Assume that AC and T represent the partial product and multiplier respectively, while register 9 contains the multiplicand and register 8 will be used as a loop counter. Register 7 is used for temporary storage. It is assumed that both numbers are positive. r COL o ROW 9 PIPELINE ALLOWS USE OF Z FOR SHIFT BIT PROPAGATION '/ To demonstrate the techniques introduced above, a central processing unit design cycle will be carried through from initial specification to final microprogram memory assignment. NOTE THE SoRIR7I. ILRIR91. AND ALRIR11 MICRO-INSTRUCTIONS CAN BE REPLA.CEo WITH AN A¥A MICRO·INSTRUCTION ELIMINATING Z INSTRUCTIONS FROM THE INNER LOOP IF OATA IS LATCHEO ON THE M BUS ., SRAIACI FFOSTZ. I' SHIFT PARTIAL PRODUCT. SAVE LSB ., SRAtTI FFZ JZFIMLP.MEXI. I' Z TEST IF OF LOOP CDUNTI " MEX: Note that the pipeline causes the lZF (or a lCF) to test the contents of the flip-flop as set two or more instructions earlier. A state sequence flow diagram for the multiply sequence might be drawn as shown in Figure 7. Note that in Figure 7, each symbolically labeled state is noted, and each conditional jump is indicated and the conditions corresponding to each jump are noted. A flowchart like that of Figure 7 contains sufficient information to perform the assignment to memory. An assignment might be as shown in Figure 8. A DESIGN EXAMPLE The following design example illustrates some of the basic techniques which may be used in developing a central processor with the Intel® Series 3000 Bipolar Microcomputer Set. The basic design sequence consists of stating the machine objectives, then designing the hardware configuration and microprograms. For this example, it is assumed that the designer has the freedom to specify operation code assignments, and to modify the instruction set to take greatest advantage of the chip set's capabilities. 3-29 CPU Design Initial Specifications P register with the starting address of the routine. Similarly, a return instruction restores the appropriate registers. Some jumps may also be conditional, checking the status of the C flip-flop, or the sign or magnitude of the A register. Let the following list of design objectives represent the initial specifications for a central processor instruction set. I. The machine should use a 16-bit data path, with instructions containing an opcode portion and a data or displacement portion. 8. Additional operations may involve manipulations of data in the A and X registers and the ability to move data between the X and the W, B, E or S registers. 2. Machine registers should include a program counter, P, a stack pointer, S, an accumulator, A, an index register, X, and two base registers, Band E. B is a base register for data and E is a base register for program. In -addition, a carry flip-flop may be a bit in the status word, W. 3. References to memory for data should be relative to the B register, using the displacement portion of the instruction (designated D). Memory reference modes include direct (Address=B+D), indirect (address equals the contents of B+D), and indirect indexed (address equals the value given by the sum of X and the contents of the word at address B+D). Indirect and indirect-indexed modes should include both absolute and B relative (Le., the address is relative to the contents of the B register) forms so that indirections may be computed both at time of assembly and during prog~am execution. 4. Memory reference instructions include: load address to A, load data to A, AND data to A, OR data to A, XOR data to A, add data to A, subtract data from A, push address to stack, push data to stack, store A at computed address, pop stack to computed address, load address to X, load data to X, add data to X, subtract data from X, store X at computed address (operations involving X may not need to implement indirect-indexed modes). 5. Immediate instructions using the displacement portion of the instruction as the data, include, load A, load X, add to A, add to X. A two word "load immediate" instruction may also be implemented. 6. Jump instructions include a short relative jump (Address=P+D-K, where K is a constant), an indirect jump to an address relative to the E base register, and an indirect call operation. 7. The call (to a subroutine) operation saves the P, E, B, and W registers (global call), or the P register (local call) on the stack and loads the 9. Byte load and store operations should include automatic packing and unpacking of bytes in a 16-bit memory location. 10. Input/output instructions should use either the displacement or the X register to specify the I/O device address. In addition to the definition of the macro-instruction set, the designer should also prepare descriptions of the initialization operations (Le., at "power on") and interrupt handling to be used. For this machine, let it be considered necessary for the machine to start at power up with W, A, and X cleared and for S to be set to the contents of word 0, B to be set to the contents of word 1 of memory, E set to the contents of word 2, and P set to the contents of the memory location pointed to by E. Let I/O device 0 represent a source of interrupt level information (level requesting in) and a destination for current level out, consistent with the use of the 3214 Interrupt Control chip. In addition, let the low order bits of W contain current interrupt level information. When servicing an interrupt, the processor will execute a jump to subroutine which will reload P and E while saving all registers except S on the stack. The service routine will interrogate the interrupt hardware to determine the level of the request and will restore former status upon exit from the interrupt program. For this purpose, a return and restore status instruction will be provided. In parallel with the specification of the design objectives, a first pass at the CPU's architecture can be made. The block diagram in Figure 9 shows a general CPU architecture as defined in the initial specification above. The design example machine uses a pipelined architecture and includes a control structure which implements eight basic memory bus and clock operations. A 3-bit field is used to control this structure. The states for this field are designated 3-30 CPU Design \ MEMORY 8. I 0 ADDRESS BUS \ BIDIRECTIONAL DATA BUS \ CONTROL BUS ---------------, 3002 CPE ARRAY AC REGISTER I I MAR ARITHMETlC:LOGIC UNIT P[AFOIl.MSADDf:lESSCALCU I I 'MEMORY AND I 0 BUS CONTROL IMSISSI! I " " - - - - - - - - r - - - - - - - - - - - - I MICROPROGRAM MEMORY 1\,-_ _ _ _--, (ROMS PROMSr LATIONS AND AHITHMETIC lOGIC OPERATIONS UNDER CONTROL OF THE MICRO PROGRAM r--------------- - -------1 -H' I REGISTER FILE X _ INDEX REGISTER (RlI W - STATUS REGistER IR11 B E P S 3001 MCU I A - ACCUMULATOR 11'101 - BASE REGISTER, DATA (1'151 - BASE REGISTER, PROGRAMIR61 - PROGRAM COUNTER IR31 - STACK POINTER IR41 MICROPROGRAM WORKING I I , I SHIFT CARRY MICROPROGRAM LOGIC CONTROL UNIT SEQUENCE I I IL _________________ _ REGISTERS RB. 1'19, T ,, L _____________________________ ~ OPCQDE FIELD Figure 9. Block Diagram of CPU Architecture stack pointer and a push decrementing it. This direction is preferred, as it leaves the stack pointer pointing at the topmost entry in the stack. In addition, pops usually appear more often than pushes (pushes share code), and the increment operation requires fewer micro-instructions. NBO (No Bus Operation), INH (Inhibit CPE Clock), CNB (CPE uses bus), RMW (read modify write signal to memory - starts a read cycle and prevents release of bus until the CPU executes a write cycle), RRM (Request read cycle from memory), RWM (Request write to memory), RIN (Request input from an I/O device), and ROT (Request an output to an I/O device). The designer must select the actual instructions to be used. Let the instructions and their associated mnemonics shown in Table I be selected in the first design pass. The stack has been designed to run "backwards" through memory, with a pop incrementing the :j:.31 CPU Design Table I. Proposed Instruction Set MEMORY REFERENCE GROUP MNEMONIC JUMP GROUP (continued) FUNCTION MNEMONIC RELATIVE INDIRECT FUNCTION LAA Load address to A LDA Load data to A JRCZ JICZ Jump if C=O ADA Add data to A JRXL JIXL Jump if X';;;A SDA Subtract data from A JRLE JILE Jump if A';;;O AND data to A JRGT JIGT Jump if A>O ODA OR data to A JRCN JICN Jump ifC*O XDA Exclusive OR data to A JRXE JIXE Jump if X=A NDA PAS Jump relative: Jump indirect: Push address to stack PDS Push data to stack SAM Store A into memory PSM Pop stack into memory LAX Load add ress to X P=P+D-128 P=(E+D)+E STACK PUSH AND POP GROUP MNEMONIC FUNCTION LDX Load data to X PHAX Push A and X onto stack ADX Add data to X PPAX Pop A and X from top of stack SDX Subtract data from X SXM Store X in memory SPECIAL MEMORY REFERENCE INSTRUCTION MNEMONIC IMMEDIATE GROUP MNEMONIC ISZ FUNCTION LAI I ncrement location B+D and skip if zero SUBROUTINE CALL GROUP Load to A immediate AAI Add to A immediate NAI AND to A immediate OAI OR to A immediate XAI Exclusive OR to A immediate PSI Push to stack immediate LXI Load to X immediate AXI Add to X immediate MNEMONIC FUNCTION CLS Call local subroutine, push P onto stack P=E+(E+D) CVS Call value subroutine, push W, B, E, P onto stack E=E+(E+D) P=E'+(E') CAS Call absolute subroutine, push W. B. E, P onto stack P=(D) where E'=E+(E+D) If D is equal to zero, the contents of the memory location following the instruction is used as the immediate value. JUMP GROUP MNEMONIC RELATIVE INDIRECT FUNCTION SUBROUTINE RETURN GROUP FUNCTION MNEMONIC JRU JIU Jump unconditional JRGE JIGE Jump if A;;'O JRLT JILT Jump if A A JREZ JIEZ Jump if A=O JRNZ JINZ Jump if A*O 3-32 FUNCTION RLS Return from local subroutine, pop P from stack RVS Return from value subroutine, pop P, E, B, W from stack RSA Return from subroutine, restore all, pop A, X, P, E, B, W from stack CPU Design Table I. Proposed Instruction Set (continued) BYTE LOAD AND STORE GROUP MNEMONIC INPUT/OUTPUT GROUP FUNCTION MNEMONIC FUNCTION LBA Load byte absolute IND Input one word to the A register LBR Load byte relative OTO Output one word from the A register SBA Store byte absol ute SBR Store byte relative Absolute mode: Relative mode: D serves as the address for the I/O port. Byte address = (B+D)+X12 Byte address = (B+D)+B+X12 Input one word to the A register OTX Output one word from the A register The X register provides the address for the I/O port. The least significant bit of the X register is treated as the byte pointer in main memory as follows: X Reg. LSB = 0 = 1 INX Given the basic design objectives, the next step is to write the sequences of micro-instructions to implement the macro-instruction described above. Each macro-instruction must be assigned a unique operation code. The operation code (opcode) will be used by the 300 I MCV to generate the appropriate address for the micro-instruction which executes that macro-instruction. the left or high order byte is selected the right or low order byte is selected For load operations, the selected byte is loaded into the right byte position of the A register and the left byte is cleared. For store operations, the right byte of the A regis· ter is stored at the selected byte location leaving the un· selected byte of the word unaltered. Macro-Instruction Decoding To take full advantage of the 3001 MCV's eight input lines (SXO-3, PX4-7) for instruction decoding, all macro-instruction operations should be completely specified in an 8-bit opcode field and use the remaining 8 bits for displacement values. In Figure 10 the 8-bit opcode of a macro-instruction being read in on the memory data bus is gated directly to the 3001 MCV. While the displacement is being stored in the CPE array, a JPX operation is REGISTER MANIPULATION GROUP MNEMONIC FUNCTION RAR Rotate A right, include CF F RAX Rotate A and X right, include CFF SAX Shift A and X right, preserve sign SAL Shift A left, fill with zeros The shift count is given by D if D is non· zero or by the least significant seven bits of the X register if D is zero. 300' Meu 300' I'PR1 CPE ARRAY ~ SXO-l OPCODE FIELD BASE AND STATUS REGISTER MOVE GROUP MNEMONIC FUNCTION MEMORY DATA INPUT BUS MSX Move S to X, adjust MBX Move B to X, adjust MEX Move E to X, adjust MWX Move W to X, adjust MXS Move X to S, adjust MXB Move X to B, adjust MXE Move X to E, adjust MXW Move X to W, adjust Figure 10, Macro-Instruction Decoding with the 3001 executed by the 300 I. The JPX operation executes a 16 way branch based on the 4 bits of the PX lines and also stores the 4 bits on the SX lines in the PR latches for later decoding. For best microcode efficiency then, the opcode field should be arranged in such a manner that the first 4 bits tested (by the JPX operation) select the initial processing (usually an address calculation) of the macro-instruction. A possible instruction format is shown in Figure II. The destination register is adjusted by D-128 (i.e., D-128 is added to the destination register). 3-33 CPU Design 15 14 13 12 11 10 9 8 I I I I I I I I ADDRESS MODE I 7 6 I OPERATION MODE 5 I 4 I 3 I 2 I 1 I 0 I In addition to the initial address mode processing input/output, register to register, and other special function operations can be specified in the first 4 bits, as shown in Table III. I DISPLACEMENT Figure 11. possible Macro-Instruction Format In the case of the CPU design example, the initial processing involves address calculations and/or operand fetching. Table II contains the initial processing modes for the design example. Microprogram Implementation Having assigned the first 4 bits of the macroinstruction operation code, the next 4 may be tentatively assigned. These 4 bits will have different meanings for different instruction classes. To improve microcode efficiency it is desirable to share as much code as possible between different microprogram segments. For example, the ADA and AAI instructions might share the add operation once the data has been fetched. Table II. Memory Modes In the description below, the letters A, X, B, S, P, W, and E represent the contents of the respective registers. 0 represents the 8-bit displacement treated as a positive number ranging from 0 to 255. 0' represents 0-128. ( ) are used to designate contents of memory. For example, (B+O) means the contents of the memory location whose address is equal to the sum of the contents of B and the displacement O. It is assumed that, when the instruction is fetched, P is incremented prior to instruction execution. MEMORY REFERENCE AND IMMEDIATE GROUP The assignment shown in Table IV might be used for the memory reference and immediate group instructions. The clustering has been chosen in a way that should allow JPR and JLL and JRL micro-operations to be used effectively and to allow code sharing between the two groups. MEMORY REFERENCE MODES 1. Direct: Address = B+O 2. Indirect: Address = (B+O) 3. Indirect relative: Address = (B+O)+B 4. Indirect indexed: Address = (B+O)+X 5. Indirect indexed relative: Address = (B+O)+B+X An initial flowchart for the memory reference and immediate group instructions is shown in Figure 12. In the flowchart, the boxes indicate the operations performed. The appropriate jump operations (JPX, JLL and JRL) are indicated along with the bit patterns that select each box. IMMEDIATE MODES 6. If 0*0, Data = 0-128 It is possible that when the actual code for the sequence is written, some improvements in efficiency may still be made_ In addition, some of the boxes shown as dummies may be eliminated by suitable placement of the JLL and JRL instructions. If 0=0, Data = (P), P=P+l JUMP MODES 7. Jump relative: P=P+0-128 8. Jump indirect: P=(E+O)+E g. Call relativ\!: P=(E+O)+E 10. Knowledge of the MCU assignment restrictions may also influence some choices here. For example, the MCU provides twice as many possible JLL jump destinations as JRL jump destinations, while the sequence shown uses twice as many JRLs as JLLs. As a result, an easier assignment might be obtained if the JLLs and JRLs were exchanged, which is equivalent to a reassignment of the macrooperation codes. Call indirect: P=E'+(E') where E'=E+(E+O) REGISTER MODE 11. Fetch source register Using the instruction format shown in Figure 11, the high order 4 bits (bits 12 to 15) will be used to select one of the modes listed in Table II. Thus, by executing a JPX operation, a 16 way branch on the PXQ-PX3 bus can be performed to determine the address mode specified. At the same time the SX bus bits (the Operation Code field) will be stored in the PR latches for later use. A possible assignment of the first 4 bits (bits 12 through 15) might be as shown in Table III. Also, recognizing that the MCU's JCC type jump facilitates jumping from one JLL destination to another, it is desirable to assign the macro-operation codes so that operations which share final segments are aligned in columns. For example, the SDA instruction would typically be achieved by complementing the data, then adding it to A, which may share the code for ADA. As a result, a 3-34 CPU Design Table III. Mode Bit Assignments ADDRESS MODE BITS INITIAL PROCESS MODE 0000 No operation 0001 Jump relative P+D' 0010 Jumps (index, etc.) (E+D)+E 0011 Immediate D' or (P) 0100 Direct memory reference B+D 0101 Indirect memory reference (B+D) 0110 I ndirect index (B+D)+X 0111 Indirect index relative (B+D)+X+B 1000 I/O input D->MAR 1001 I/O input X->MAR 1010 I/O output D->MAR 1011 I/O output X->MAR 1100 Move group 1101 Special function group 1110 Indirect relative memory reference 1111 No operation OP FIELD BITS MEMORY REFERENCE FUNCTION IMMEDIATE FUNCTION 0000 ADA AAI 0001 ADX AXI 0010 NDA NAI 0011 ODA OAI 0100 LDA LAI 0101 LOX LXI 0110 PDS PSI 0111 XDA XAI 1000 LAA 1001 LAX PAS 1011 SDA 1100 SAM 1101 SXM 1110 PSM 1111 SDX Condition testing LAI, AAI, etc. LAA, LDA, etc. Shift A Table IV. Memory Reference and Immediate Op Code Assignment 1010 SUBSEOUENT PROCESSING (B+D)+B better assignment of opcodes might be achieved by placing ADA and SDA in the same column. For example, see the assignment shown in Table V. Table V also assumes exchange of the JLL and JRL instructions. Table V. Modified Memory Reference Op Code Assignments 0000 = NDA 0100 = ODA 1000 = XDA 0001 = LDA 0101 = LDX 1001 = PDS 1100 = ADA 1101 = ADX 0010=LAA 0110=LAX 1010=PAS 1110=SDA 0011 = SAM 0111 =SXM 1011 =PSM 1111 =SDX Except for those considerations mentioned above, the code is most easily written without regard to memory assignment. Also, it is assumed that reassignments of macro-operations codes are made when efficiency can be improved. Let the CPE register assignments be made as shown in Table VI. The code which follows represents the specification portion of the microprogram in which the various fields are identified, and symbols defined. 3-35 CPU Design fETCH FeTCH FETCH FeTCH JRL JRL FETCH FETCH FETCH FETCH FETCH FETCH FETCH FETCH JRL JRL FETCH FETCH FETCH FETCH Figure 12. First Pass of Memory Reference Group Flowchart /* BIPOLAR MICROCOMPUTER MACRO-MACHINE REGISTER MACHINE- -12/13/74 UPDATED 3/18/75 MACHINE HAS 7 REGISTERS AS FOLLOWS: A ACCUMULATOR RD X INDEX REGISTER R1 P PROGRAM COUNTER R3 S STACK POINTER R4 B DATA BASE REG R5 E PROG_ BASE REG. R6 W STATUS WORD R7 C=CARRY,LlNK FLiP-FLOP=HOB OF W DEFINITION OF KBUS FIELD *1 3-36 CPU Design FIELD LENGTH=4 M ICROPS( KOOOO=O K8000=8 KBUS; KB KB DEFAULT=O K007F=1 KOOOFF=3 K7FFF=7 KFFOO=12 KFF80=14 KFFFF=15); /* DEFINITION OF BUS CONTROL FIELD *f FIELD LENGTH=3 MICROPS(NBO=OOOB RIN=100B MCF /* DEFAULT=O INH=OOlB RMW=010B ROT=101B RRM=110B CNB=OllB RWM=lllB); NBO NO BUS OPERATION INHIBIT CPE ARRAY READ-MODIFY-WRITE CPU NEEDS BUS REQUEST INPUT REQUEST OUTPUT REQUEST READ MEM. REQUEST WRITE MEM. INH RMW CNB RIN ROT RRM RWM SET UP FOR SYMBOLIC REPRESENTATION OF REGISTER DESIGNATIONS *j A X P S B E W /* STRING STRING STRING STRING STRING STRING STRING 'RO'; 'Rl'; 'R3'; 'R4'; 'R5'; 'R6'; 'R7'; SET UP A SPECIAL NO.OP STRING *f NO.OP STRING 'NOP(R3)'; /* NEXT WE SPECIFY A DEFAULT TO FFl IN THE FO FIELD FOR THE SDR MICROP IN THE CPE FIELD. SDR IS NORMALLY USED AS A STORE OPERATION. WHEN A DECREMENT OPERATION IS ALSO DESIRED, FFO WILL HAVE TO BE EXPLICITLY SPECIFIED */ SDR IMPLY FO=llB; Table VI. Register Assignments RO = A Rl = X R3 = P R4 = S R5 = B R6 = E R7 = W (C is high order bit of W) The next portion of the code represents the machine initialization (in which registers are set to initial values during power up), and the memory reference and immediate group of instructions. The elementary flowchart followed is that of Figure 13, reflecting the reassignment shown in Table V. A number of programming "tricks" can be found in the microcode. For example, the C flag of the MCU (not to be confused with the C flip-flop of the macro machine) is set each time the machine executes a fetch instruction by the SDR microoperation. SDR adds 111 ... 1 to the AC (as masked by the K-Bus) so that whenever the carry input of the CPE array is a I, the masked AC register will be stored unchanged into the designated register, and the carry output of the CPE array will be I. Similarly, a ILR micro-operation (KBUS = 0) with a carry-in of zero never generates a carry, so that it can be used to clear the C flag if so desired. 3-37 CPU Design FETCH FETCH FETCH FETCH JLL JLL FETCH FETCH FETCH FETCH FETCH FETCH FETCH FETCH FETCH FETCH FETCH FETCH JLL JLL Figure 13. Second Pass of Memory Reference Group Flowchart The C flag is used to implement a type of microcode subroutine where code is shared by two "calling" routines, one which leaves the C flag unchanged and the other which clears it. Upon exit from the shared code sequence, the C flag is tested giving a unique exit for each of the two calling routines (see Figure 14). The inhibit operation, indicated by the "INH" micro-operation, inhibits the clock to the CPE array. For these operations the carry function and conditional jump results are the same as if the operation were executed. However, none of the CPE registers are altered when the clock is inhibited. Figure 14. Microcode Subroutine Using the C-Flag to Determine Exit 3-38 CPU Design The result is a number of "compare" or test micro-operations. As an example of this situation, consider the tollowing sequence of micro-instructions (only labels and jumps shown): In general, row zero locations should be used sparingly because they are the only locations that can be reached from anywhere in microprogram memory using a single JZR micro-operation. During the first pass of the microprogram implementation, notes can be added to indicate where code might be saved if row zero locations are used. TST: DO: In the sequence above, DO through D 15 occupy an entire row. The micro-instruction labeled DIA unconditionally follows both of those labeled DO and D I. Since the row containing DO through D 15 is fully occupied, DlA cannot be assigned to that row. The only other unconditional jump which can reach a common location from more than one column is the JZR. However, such conditional jumps as JCF and JZF, where the condition is pre-set, can jump to a given location from up to eight sites in a given row, as illustrated in Figure 15. A common case of such microcode saving follows the execution of a JPR or JPX micro-operation. If the datum being tested by the JPR or JPX represents a macro-instruction operation code in which less than 16 modes are used, there is always the possibility that an invalid code might be encountered. Rather than have the machine behave unpredictably, it is better to have the machine execute some designated sequence for invalid macrooperation codes. As a result, all 16 locations reached by the JPX or JPR micro-operation must be considered occupied. Therefore, when it is desirable to have a single state follow each of several states reached by a single JPX or JPR microoperation, two possible methods can be used which do not require additional jump micro-operations: COLUMN 012345678 ROWn 100 I0+21 1 106 1 107108109 f 03 WITHIN CURRENT ROW GROUP t Figure 15. Special Use of the Conditional Jump Functions /* ZERO T AS TEMPORARY POINTER, WRITE W TO INTERRUPT STRUCTURE CLR(T); LMI(T); ILR(W) ROT; */ LMI (T) FF 1 RRM; ACM(AC) ; SOR(S); /* SET B = (1), T = 2 FOR NEXT OPERATION */ LMI(T) FF1 RRM; ACM(AC); SOR(B) STC; /* > COLUMN 2 FOR C·FLAG" 0 CLR(A); CLR(X); GLR(W); /* SET S = (0), T = 1 FOR NEXT OPERATION 06 8 ROWn+1 INITIALIZATION SEQUENCE ZERO A, X, AND W */ INIT: 04 +_+_L+_L+_+_+_' -!---JCF MICRO"()PERATI'lN I. Locate the single state in the row zero 2. Locate the single state in a column reached by a JCF or JZF micro-instruction and insure the corresponding (C or Z) flag is in the desired state. '* ,R IDO. 01. 02. D•... D151 .IMP ID1A) 01: 01A: THIS SETS THE C FLAG TO INSURE A CORRECT JUMP TO XRTN */ 3-39 */ CPU Design /* GET (2), JUMP TO XRTN TO SET E = (2), P = (E) LMI(T) RRM; ACM(AC) *j JCF (*,XRTN); /* FETCH SEQUENCE & START OF MACRO-INSTRUCTION PROCESSING P IS ISSUED TO MAR AND INCREMENTED, MACRO-INSTRUCTION IS FETCHED AND TESTED BY JPX MICRO-OPERATOR_ NOTE FETCH IS IN LOCATION 15 TO STROBE INTERRUPT ON ENTRY_ *j FETCH: LMI(P) FFl RRM; /* LOAD DISPLACEMENT AND TEST FOR ZERO USING Z FLAG * j LTM(AC) STZ KOOFF; /* SAVE DISPLACEMENT, TEST 4 BITS OF MACRO-OP_ TEST IS DELAYED TO ALLOW PIPELINE PROPAGATlON_ ALSO C FLAG IS SET FOR LATER USE IN PSEUDO-SUBROUTlNES_ *j SDR(R9) STC JPX(NAO,JREL,JIG,IMMD,DMRF,IMRF,IXMA,IXMB,IND, I NX,OTD,OTX,MVGP ,SPFG,I R BM,NA 15); /* UNASSIGNED OP-CODE GROUPS- -NOPS FOR THIS VERSION NAO: NA15: NO_OP NO_OP *j JZR(FETCH); JZR(FETCH); /* IMMEDIATE GROUP OF MACRO-INSTRUCTIONS- -TEST FOR LONG OR SHORT FORM- -D IS IN AC AND R9- -ADJUST AC BY -128 *j IMMD: LMI(AC) KFF80 /* LONG FORM: FETCH NEXTWORD TO AC IMML: LMI(P) FFl RRM; ACM(AC) /* SHORT FORM: NO PROCESSING NEEDED IMMS: NO_OP JZF(lMML,IMMS); *j JRL(lLGA,ILPX,NAll,NAI2); *j JRL(ILGA,ILPX,NAll,NAI2); /* PREPROCESSING FOR ARITHMETIC AND LOGIC ROUTINES? NONE NEEDED ILGA: ILPX: NO_OP NO_OP JLL(NDA,ODA,XDA,ADA); JLL(LDA,LDX,PDS,ADX) /* NOTE: NAil AND NAI2 ARE NON-VALID INSTRUCTIONS!! THEY ARE MADE INTO NO-OPS IN THIS VERSION OF THE MACRO-MACHINE *j NAil: NAI2: NO_OP NO_OP JZR(FETCH); JZR(FETCH); /* BASIC ARITHMETIC AND LOGIC PROCESSING- -UPDATE C FF OF MACROMACHINE FOR ADA--TOGGLE ITON CARRY FROM ADA *j ADA: ADA1: NCY: SCY: /* LOGICALS NDA: ODA: XDA: ADR(A); NO_OP NO_OP LMI(W) K8000 JFL(NCY,SCY); JZR(FETCH); JZR(FETCH); *j ANR(A) ORR(A) CMR(AC); XNR(A) JZR(FETCH); JZR(FETCH); JZR(FETCH); 3-40 *j CPU Design /* LOA AND LOX OPERATIONS *j LOA: LOX: SDR(A) SDR(X) JZR(FETCH); JZR(FETCH); /* STACK PUSH- -ADVANCE STACK POINTER TO NEXT LOCATION (FOR THE REVERSE DIRECTION STACK- -A DECREMENT OF S), THEN WRITE *j PDS: PDS1: /* DSM(S); LMI(S) RWM JZR(FETCH); ADX - SHARES CODE FOR ADA - ALSO TOGGLES C FF OF MACRO MACHINE *j ADX: ADR(X) JMP(ADA1); /* MEMORY REFERENCE INSTRUCTION GROUPS DIRECT--GETB+D INTO AC--ALSO R9 *j DMRF: /* ILR(B); ALR(R9) JRL(MRV1,MRV2,MRAD,STPG); INDIRECT-ABSOLUTE- -GET (B+D) INTO AC- -C FLAG USED FOR PSEUDO-SUBROUTINE *j IMRF: IMRF1: MLOAD: ILR(B); ALR(R9); LMI(R9) RRM ACM(AC) JCF(MADD,MLOAD); JRL(MRV1,MRV2,MRAD,STPG); /* NOTE: MADD WILL BE USED FOR OTHER INDIRECT OPERATIONS WHERE B, X, ETC_ HAS BEEN LOADED TO R8 *j MADD: /* ACM(AC); ALR(R8) JRL(MRV1,MRV2,MRAD,STPG); INDIRECT INDEXED ABSOLUTE - CLEAR C FLAG, MOVE X TO R8 *j IXMA: ILR(X) STC; SDR(R8); /* NOTING THAT ASSIGNMENT RULES WOULD NOT ALLOW THE DESIRED JUMP TO IMRF UNLESS IXMA+l WERE IN ROW ZERO- -AN EXTRA STATE IS ADDED HERE *j IXMA2: /* ILR(B) JMP(lMRF1); INDIRECT INDEXED RELATIVE - CLEAR C FLAG, PUT B+X IN R8 *j IXMB: ILR(X) STC; SDR(R8); ILR(B); ADR(R8) JMP(lMRF); /* INDIRECT RELATIVE (TO B) - CLEAR C FLAG, PUT B IN R8 *j IRBM: /* ILR(B); AGAIN ASSIGNMENT RULES PREVENT JUMPING TO IXMA+l UNLESS IT IS LOCATED IN ROW ZERO- -PLACEMENT THERE COULD FREE TWO WORDS *j SDR(R8) /* JMP(lXMA2); THE FOLLOWING PROCEDURES IMPLEMENT THE BASIC PREPROCESSING FOR VALUE AND ADDRESS LOADING_ VALUE-GROUP 1: GET (AC) IN AC MRV1: LMI(AC) RRM; ACM(AC) *' JLL(NDA,ODA,XDA,ADA); 3-41 CPU Design /* VALUE GROUP 2 *f MRV2: LMI(AC) RRM; ACM(AC) JLL(LDA,LDX,PDS,ADX); f* MRAD GROUP INCLUDES ADDRESS LOADS AND SUBTRACT FROM A *f /* MRAD: NO.OP JLL(LAA,LAX,PAS,ISDA); LAA: LAX: PAS: SDR(A) SDR(X) DSM(S) JZR(FETCH); JZR(FETCH); JMP(PDS1); FOR SUBTRACT, ADD l'S COMPLEMENT PLUS 1 * f ISDA: /* /* JMP(ADA1); STPG GROUP INCLUDES STORES AND SUBTRACT FROM X *f STPG: LMI(AC) JLL(SAM,SXM,PSM,SDX); SAM: SXM: ILR(A) RWM ILR(X) RWM JZR(FETCH); JZR(FETCH); POP STACK TO MEMORY - SAVE ADDRESS, POP STACK' f PSM: /* LMI(AC) RRM; LCM(AC); ADR(A) FF1 SDR(T); LMI(S) FF1 RRM; ACM(AC); LMI(T) RWM JZR(FETCH); SUBTRACT FROM X *f SOX: LMI(AC) RRM; LCM(AC); ADR(X) FF1 JMP(ADA1); Thus the initialization procedure requires 16 words of microcode, the fetch sequence 3, and the memory reference and immediate groups use a total of 57 words. In addition, two dummy locations (NAI I and NAI2) are needed for unassigned macrooperation codes. Sample execution times for some of the instructions may be estimated by counting the number of micro-instructions in the sequences and the number of read and write memory cycles. Allowing I SO nsec for each micro-instruction, and 400 nsec for each memory cycle, some representative execution times would be as shown in Table VII. Table VII. Representative Execution Times INSTRUCTION ADA, direct MICROCYCLES READ CYCLES 10 2 2.3J.1S 2 2.0 JJS 3 3.45 J.lS ADI, short 9 LOA 8 LAI, short LOA, indirect index relative EXECUTION TIME 1.75J.1S 7 15 WRITE CYCLES 1.45 J.lS 3-42 CPU Design the conditional jumps, X>A, X~, X=A and X=t-A which share a common subroutine and exit via a JLL jump, the opcode values were assigned arbitrarily. JUMP GROUP The next section shows the realization of the jump group instructions. Two basic classes, a jump relative to the program counter and an indirect jump through a table stored at the beginning of the program are represented. Conditional jumps include A>O, ,900, A=O, A~O, A~, A O, X~, C=O and c=t-o. A flowchart representing the jump coding is shown in Figure 16. During the microcoding of the sequence, two methods were evaluated. One used the JRL, JLL sequence of testing 2 bits of macrooperation code at a time, while the one actually selected uses a JPR macro-operation. The JPR test selected uses no more code than the JRL, JLL sequence method, and executes more rapidly. At one point (for the X=A, X=t-A, X>A, X";A tests), code is shared as if it were part of a subroutine, then a JLL instruction is used to resolve the exit. This method is another example of a pseudosubroutine that saves microprogram memory. Use of this technique does put a constraint on the assignment of macro-operation codes. In addition, two classes of subroutine calls are provided; a local call which pushes P onto the stack, and jumps relative to E, and a global subroutine call which stores the W, B, E, and P registers on stack and computes new values for E, the program base register, and P. Also, included in this section of microcode is the operation that pushes both A and X onto the stack. Table VIII shows the opcode assignments for the various jump operations implemented. Except for Table VIII. Jump Instruction Group MNEMONIC RELATIVE M 0 FUNCTION INDIRECT M 0 JRU, JIU Jump unconditional 0001 0000 0010 JRGE, JIGE Jump if A;;'O 0001 0001 0010 0000 0001 JRL T, JILT Jump if A A 0001 0011 0010 0011 JREZ, JIEZ Jump if A=O 0001 0100 0010 0100 JRNZ, JINZ Jump if A*O 0001 0101 0010 0101 JRCZ, JICZ Jump if C=O 0001 0110 0010 0110 JRXL, JIXL Jump ifX,A 0001 0111 0010 0111 JRLE, JILE Jump if A';;;O 0001 1000 0010 1000 JRGT, JIGT Jump if A>O 0001 1001 0010 1001 JRCN, JICN Jump ifC*O 0001 1010 0010 1010 0001 0010 1011 JRXE,JIXE Jump if X=A CVS Call subroutine, push W, B, E, P PHAX Push A, X onto stack CLS Call subroutine, push P JRXN, JIXN 1011 N.A. 0001 1101 N.A. 0001 )ump if X"=foA Subroutine calls 1111 0010 1100 0010. 1101 0010 1110 0010 1111 Unconditional and conditional jumps Local: Push P to stack P=E+(E+D) Value: Push W, B, E, P to stack E=E+(E+O) P=E'+(E') where E'=E+(E+O) Relative: Indirect: 3-43 P=P+O' where D'=0-128 P=E+(E+O) CPU Design FETCH FETCH FETCH FETCH FETCH FETCH FETCH FETCH Figure 16. Jump Group Flowchart /* JUMP GROUPS- -USE JPR MICRO-OPERATION TO RESOLVE CONDITION SELECTION DESTINATION ADDRESS IS COMPUTED FIRST - -PLACED IN AC AND R9 JUMP RELATIVE TO P- -ADDRESS=P+D-12S * f JREL: JRDR: ILR(P); LMI(AC) KFFSO; ALR(R9) JPR(JUNC,JAGE,JAL T,JXGA,JAEO,JANE,JCEZ,JXLA, JALE ,JAGT,JCNZ,JX EA,CPSS,PXA,C LOP,JX NA); /* JUMP INDIAECT - GET E+(E+D) IN AC AND R9 *f JIG: ILR(E); ADR(R9); LMI(R9) RRM; AMA(AC); SDR(R9) JPR (JUNC,JAGE,JAL T,JXGA,JAEO,JAN E,JCEZ,JX LA, JALE,JAGT,JCNZ,JXEA,CPSS,PXA,CLOP,JXNA); 1* UNCONDITIONAL JUMP *f JUNC: SDR(P) JZR(FETCH); /* TESTS FOR A_GE_O, ETC_ *f JAGE: JALT: JAEO: JANE: TZR(A) KSOOO INH TZR(A) KSOOO INH TZR(A) TZR(A) JMP(TTRU); JMP(TFAL); JMP(TTRU); JMP(TFAL); 3-44 FETCH FETCH CPU Design TZR(A) K8000 INH; TZR(A) JFL(APRE,ANPE); APRE: ANPE: NO.OP NO.OP JFL(JNT2,JTR2); JZR(FETCH); JALE: TZR(A) K8000 INH; TZR(A) JFL(APE2,AN2); NO.OP SDR(P) JFL(JTR1,JNT1); JZR(FETCH); JAGT: APE2: AN2: /* TESTS OF C FLlp·FLOP (HIGH ORDER BIT OF W) JCEZ: JCNZ: TZR(W) K8000lNH TZR(W) K8000 INH *j JMP(TTRU); JMP(TFAL); /* TEST EXECUTION FOR ABOVE TESTS - ROW ZERO USED * j TTRU: NO.OP JFL(JTR1,JNT1); JTR1: JNT1: SDR(P) NO.OP JZR(FETCH); JZR(FETCH); TFAL: NO.OP JFL(JNT2,JTR2.); JNT2: JTR2: NO.OP SDR(P) JZR(FETCH); JZR(FETCH); /* TESTS FOR X.GT.A, X.LE.A, X.EQ.A, X.NE.A- -SHARED PSEUDO· SUBROUTINE USES JLL FOR AN EXIT TEST - -ROUTINE ENTRY IN ROW 0 C FLAG IS SET FOR X.GT.A, FL TEST FOR X.EQ.A * j JXGA: JXLA: JXEA: JXNA: ILR(X) ILR(X) ILR(X) ILR(X) JMP(XATS); JMP(XATS); JMP(XATS); JMP(XATS); /* SAVE X AT T, FETCH AND COMPLEMENT A XATS: SDR(T); ILR(A) STC; CMA(AC); *j /* CLEAR C FLAG * j /* ADD HOB'S OF A' AND X - CARRY MEANS X NEG., A.GE.O *j ADR(T) K8000; /* EXECUTE PREVIOUS TEST, SET UP TO TEST HOB OF RESULT - -IF I, THE SIGNS OF A AND X WERE THE SAME *j TZR(T) K8000lNH JFL(TFEQ,TXNG); /* TXNG IMPLIES X NEG AND A.GE.O- -I.E. X.NE.A AND X.L T.A- -DO A DUMMY OPERATION TO FORCE THE PROPER F FLAG *j TXNG: JLL(JXGX,JXLX,JXEX,JXNX); ILR(A) /* PERFORM A TEST ADDITION AND EXECUTE SIGN·EQUAL TEST C WILL BE SET IF SIGNS WERE THE SAME AND X.GT.A *j TFEQ: ADR(T) STC K7FFF JFL(SNEQ,SWEQ); /* SNEQ IMPLIES SIGNS NOT EQUAL- -I.E. X.GE.O, A NEG- -X.GT.A SNEQ: SDR(AC) STC; NO.OP /* DUMMY OPIO SET C FLAG *j *j JLL(JXGX,JXLX,JXEX,JXNX); 345 CPU Design /* FOR SIGNS EQUAL,IF X=A RESULT WOULD BE 1111 ... 1. INCREMENT WILLGENERATEACARRYIFSO *f SWEQ: /* JXGX: JXLX: JXEX: JXNX: /* ILR(AC) FF1 JLL(JXGX,JXLX,JXEX,JXNX); EXECUTION OF JUMP TESTS * f ILR(R9) ILR(R9) ILR(R9) ILR(R9) JCF(JNT2,JTR2); JCF(JTR1,JNT1); JFL(JNT2,JTR2); JFL(JTR l,JNT1); SUBROUTINE CALLS CALL LOCAL AND PUSH W, B, E, P =CPSS CALL LOCAL AND PUSH P ONL Y=CLOP CL FLAG IS USED FOR EXIT TEST AFTER PUSHING P *f CPSS: DSM(S); ILR(W); LMI(S) RWM; CPG2: DSM(S); ILR(B); LMI(S) RWM; DSM(S); ILR(E); LMI(S) RWM; CLOP2: /* DSM(S); ILR(P); LMI(S) RWM; E+(E+D) INTO AC *f ILR(R9) /* JCF(LRTN,XRTN); XRTN: SDR(E); LMI(E) RRM; AMA(AC); LRTN: SDR(P) JZR(FETCH); CLOP: DSM(S); ILR(P) STC JMP(CLOP2); PUSH INSTRUCTION *f PXA: DSM(S); ILR(X); LMI(S) RWM; DSM(S); ILR(A); LMI(S) RWM JZR(FETCH); REGISTER MOVE AND SUBROUTINE RETURN GROUP In this section of code, the Register Move and Subroutine Return group instructions are implemented. Both groups share the same IPX entry point, I 100B. Table X shows the opcode values assigned to the macro-instructions. To simplify the decoding for register selection (S, B, E or W) in the Register Move group, the two low order bits of the PR latch are used to modify the micro-instruction as it is strobed into the pipeline register. By tying the two PR latch outputs of the 300 I to the two low order bits of the CPE control field, a ICE jump function (which enables the PR CPU Design latch outputs) can be used to provide a wire OR of PRO, PR I and FO, F I (see Figure 17). Table X. Register Move and Subroutine Return Group MNEMONIC Figure 17. Wire-OR of POa-1 and FO-1 Thus, in the micro-instruction SDR(Rl) FUNCTION M 0 RLS Pop P 1100 1111 RVS Pop P, E, B, W 1100 1101 1100 RSA Pop A, X, P, E, B, W 1100 PPAX PapA, X 1100 1110 MSX Move S to X, adjust 1100 0100 MBX Move B to X, adjust 1100 0101 MEX Move E to X, adjust 1100 0110 MWX Move W to X, adjust 1100 0111 MXS Move X to S, adjust 1100 0000 MXB Move X to B, adjust 1100 0001 MXE Move X to E, adjust 1100 0010 MXW Move X to W, adjust 1100 0011 NO.OP Nothing implemented 1100 10XX JCE (MXRXI the register group field FO-F3 is modified as shown in Table IX. The microprogram sequence is shown in Figure 18. Table IX. Register Group Field FO-F3 Modification MICROPROGRAM MEMORY OUTPUT (FO-F3) PR LATCH OUTPUT RESULT STORED IN PIPELINE REGISTER SELECTED REGISTER 0111 00 0100 S 0111 01 0101 B 0111 10 0110 E 0111 11 0111 W FETCH FETCH FETCH FETCH Figure 18, Register Move and Subroutine Return Group Flowchart 3-47 FETCH FETCH CPU Design /* MOVE GROUP OF INSTRUCTIONS- -USES JCE TO SELECT REGISTER- -NOTE THAT REGISTER ASSIGNMENT BECOMES IMPORTANT FIRST MODIFY D TO GET D-12B ./ MVGP: LMI(R9) KFFBO JLL(MVXR,MVRX,MOD,PGRP); /* MOVE X TO REG. - GET X, MODIFY BY D'=D-12B ./ MVXR: MXRX: ILR(X); ALR(R9); SDR(R7) NO.OP JCE(MXRX); JZR(FETCH); /* REGISTER OVERRIDE ./ /* MOVE REG TO X - FETCH REG USING JCE OVERRIDE ./ MVRX: MRXX: ILR(R7) ALR(R9) JCE(MRXX); JMP(LDX); /* MOD NOT IMPLEMENTED IN THIS VERSION ./ MOD: NO.OP JZR(FETCH); /* ADJUST STACK AND RETURN GROUP PPAL- -POPS A, X, P, E, B, AND W PPRA- -POPS P, E, B, AND W PPAX- -POPS ONLY A AND X POPP- -POPS ONLY P • / PGRP: PPAL: PAXC: PPRA: ILR(R9); ADR(S) JRL(PPAL,PPRA,PPAX,POPP); LMI(S) FF1 RRM; ACM(AC); SDR(A); LMI(S) FF1 RRM; ACM(AC) SDR(X); JCF(PAXE,PAXC); LMI(S) FF1 RRM; ACM(AC); SDR(P); LMI(S) FF1 RRM; ACM(AC); SDR(E); LMI(S) FF1 RRM; ACM(AC); SDR(B); LMI(S) FF1 RRM; ACM(AC); SDR(W); /. RESTORE INTERRUPT STRUCTURE ~ CLR(T); LMI(T) ROT JZR(FETCH); PAXE: SDR(X) JZR(FETCH); PPAX: ILR(AC) STC JMP(PPAL); POPP: LMI(S) FF1 RRM; ACM(AC) JMP(JUNC); 3-48 CPU Design SPECIAL FUNCTION GROUP Table XI. Special Function Groups The JPX entry point 110 I B is used as an entry point for the special function groups which include byte load and store, register manipulation, and the absolute subroutine call and increment and skip if zero instructions. Table XI lists the opcode values assigned to the instructions. A flowchart of the sequences is shown in Figure 19. MNEMONIC In order to execute a byte load or store operation efficiently, a byte swap capability (which exchanges the high and low order byte positions) is necessary. By wiring the data outputs of the high order byte to the I inputs of the low order byte, and the low order outputs to the high order I inputs, a byte swap operation can be performed (see Figure 20). Note that with the configuration shown in Figure 20, a byte swap can be performed on either a memory word or the AC register of the CPE array by reading data in on the I-Bus inputs while performing a memory read or enabling the D-Bus, respectively. REGISTER SHIFTIROTATE GROUP Figure 19. Special Function Groups Flowchart 3-49 FUNCTION M 0 LBA Load byte absolute 1101 0000 LBR Load byte relative 1101 0100 SBA Store byte absol ute 1101 1000 SBR Store byte relative 1101 1100 RAR Rotate A right, include CFF 1101 0001 RAX Rotate A and X right, include CFF 1101 0101 SAX Shift A and X right, preserve sign 1101 1001 SAL Shift A left, fill with zeros 1101 1101 ISZ I ncrement and skif ip zero 1101 XX10 CAS Call absolute, push P, E, W, B P <- (D) 1101 XXll CPU Design BIDIRECTIONAL DATA BUS {J-::======~.2:.~ f- Figure 20. I-Bus Wired for Byte Swap /* SPECIAL FUNCTION GROUP BYTE OPERATORS- -ADDR=(B+D)+B+X/2 OR (B+D)+XI2 CALL TO (D) AND PUSH ALL SHIFT AND ROTATE GROUP INCREMENT AND SKIP FETCH B JUST IN CASE */ SPFG: /* JRL(BYTE,RSGP,SCJG,ISJG); BYTE GROUP- -COMPUTE ADDR, STORE B IN CASE NEEDED */ BYTE: SDR(R8); ADR(R9); ILR(X); SRA(AC) STC; LMI(R9) RRM; ACM(AC) LBYR: LBYA: LBYT: RBYT: DBIA: ALR(R8); LMI(AC) RRM LDI(AC) FFl KOOFF L TM(AC) KOOFF; SDR(A) SBYR: SBYA: ALR(R8); LMI(AC); ILR(A); TZR(AC) KOOFF RRM L TM(T) KFFOO; ALR(T) RWM STRB: SRB1: STLB: /* ILR(B) LTM(T) KOOFF; LDI(AC) FFl CNB JLL(LBYA,LBYR,SBYA,SBYR); JCF(LBYT,RBYT); JMP(DBIA); JZR(FETCH); /* LOAD MAR FOR LATER USE */ JCF(STLB,STRB); JZR(FETCH); JMP(SRB1); ROTATE GROUP ROTATE A WITH C- -ROTATE A AND X WITH C- -SHIFT A, X RIGHT, FILL WITH SIGN- -SHIFT A LEFT, FILL WITH ZEROES 3-50 CPU Design AT ENTRY, Z FLAG IS ZERO IF D=O. DUE TO PIPELINED OPERATION, IT IS THIS CONDITION THAT IS TESTED BY THE FIRST JZF *f RSGP: SZDS: SNZD: RACI: RAXI: SAXI: SLZI: TZR(W) STZ K8000lNH ILR(X); SDR(R9) FFO K007F DSM(R9) JZF(SZDS,SNZD); ILR(A) ILR(X); SDR(T) TZR(A) STZ K8000 INH ILR(A) JMP(RUNR); JLL(RACI, RAXI,SAXI,SLZI); JLL(RACI,RAXI,SAXI,SLZI); JMP(RACI); JMP(RAXI); JMP(RUNR); f* MAIN ROTATION LOOP *f RUNR: DSM(R9)STC JLL(RACR,RAXR,SAXR,SLZR); RACR: RAXR: JFL(RSEX,RUNR); SLZR: SRA(AC) FFZ STZ SRA(AC) FFZ STZ; SRA(T) FFZ STZ SRA(AC) FFZ STC; SRA(T) FFC ADR(AC) STZ JCF(RSEX,RUNR); JFL(RSEX,RUNR); RSEX: SDR(A) JLL(RACF,RAXF,SAXF,SLZF); RACF: SNCF: SSCF: RAXF: RXF1: SAXF: SLZF: TZR(W) K7FFF NO.OP LMI(W) K8000 ILR(T); SDR(X) ILR(T) TZR(W) K7FFF JZF(SNCF,SSCF); JZR(FETCH); JZR(FETCH); SAXR: JCF(RSEX,RUNR); JMP(RACF); JMP(RXF1); JZF(SNCF,SSCF); /* SPECIAL CALL AND JUMP GROUP- -CURRENTLY CONTAINS ONLY THE CALL TO (D) AND PUSH W,B,E,P- -ALL 4 OPCODES DO THE SAME THING * f SCJG: LMI(R9) RRM; ACM(AC); SDR(R9) JMP(CPSS); f* INCREMENT AND SKIP GROUP- -AGAIN 4 OPCODES ARE USED FOR ONE INSTRUCTlON- -LOCATION AT B+D IS INCREMENTED *f ISJG: NOSK: SKIP: ALR(R9); LMI(R9) RMW; ACM(AC) FFl RWM; NO.OP NO.OP LMI(P) FFl JFL(NOSK,SKIP); JZR(FETCH); JZR(FETCH); 3-51 CPU Design generates a Request Input or Request Output to select an I/O port and specify the operation to be performed. Table XII lists the opcode values assigned to the macro-instructions. The flowchart in Figure 21 shows the microcode sequence used. INPUT/OUTPUT GROUP In this section of code, the input/output instructions are implemented. In conjunction with the memory address register, the bus control field Table XII. Input/Output Group MNEMONIC INTERRUPTS M FUNCTION 0 IND I nput one word A+- (D) 1000 XXXX OTD Output one word (D) +-A 1001 XXXX INX I nput one word A+- (X) 1010 XXXX OTX Output one word (X) +-A 1011 XXX X A basic means for microcoding interrupts when using the 3214 Interrupt Control Circuit involves forcing an alternate microprogram address which then leads to an interrupt handling routine. The interrupt handling routine interrogates the interrupt structure to determine the interrupting level. This level is rewritten to the interrupt structure to block further interrupts at the interrupting priority level or lower levels while enabling interrupts at higher levels. • FOR NOW FOUR OPCOOE GROUPS Will BE ASSIGNED FOR INPut AND OUTPUT' LMIIR9)RIN ACM(ACI. SORIA) LMIIXI RIN ACM(AC) LMIIR9) JZRIFETCHI wx--~----------~~----------~----------~---- FETCH FETCH FETCH Figure 21. Input/Output Flowchart /* INTERRUPT- -UTILIZED CALL ROUTINES FOR REGISTER SAVING I/O DEVICE #0 REPRESENTS EXTERNAL INTERRUPT STRUCTURE START BY PUSHING OLD VALUE OF STATUS */ INTER: DSM(S); ILR(W); LMI(S) RWM; /* READ INTERRUPTING LEVEL FROM EXTERNAL STRUCTURE */ CLR(T); LMI(T) RIN; LTM(AC) KOOFF ROT; /* NOTE LEVEL REWRITTEN */ /* STORE PRIORITY IN W - SET C FLAG FOR PROPER LOADING OF REGISTERS */ SDR(W) STC; /* INTERRUPT ROUTINE STARTING ADDRESS IS COMPUTED IN R9 */ LMI(W) RRM; ACM(AC); SDR(R9) JMP(CPG2); 3·52 CPU Design Microprogram Memory Assignment below. Conditional jumps should be labeled as to type and condition corresponding to each destination. This information will be necessary when performing an assignment. No other information is needed on the flowchart, but it is quite useful to show any symbolic label that may be associated with a state. Having written the actual code with minimal regard to memory assignment, the actual assignment to ROM must be performed. To assist in this function, a complete state (Le., microcode instruction) flowchart should be prepared. Each machine state is represented by a dot in the state diagrams shown INITIALIZATION GROUP INIT=OO ENTRV POINT FROM OTHEA ROUTINES FETCH = OOOFH JPX NAO JREL JIG IMMO DMRf IMRF IXMA IXMB IND INX OTD aTX MVGP SPFG tRBM IMMEDIATE GROUP IMML IMMS JRL 00 lLGA 01 ILPX NAI2 FROM MRXX JLL JLL 00 01 NDA aDA FETCH 10 00 11 xaA ADA LOA 10 LOX PDS FETCH PDSl FETCH FROM MEMORY REFERENCE GROUP "ISOA" AND "SOX" FETCH FETCH 3-53 ADX FROMMEM REF "PAS" FETCH FETCH 11 NA1S CPU Design MEMORY REFERENCE GROUP OMRF IXMB IRBM •0 MADO JRL JRL JRL 00 01 10 11 MRVl MRV2 MRAD STPG JLL JLL 00 01 SAM SXM 10 PSM 11 sox 11 LOA LOX PDS ODA XDA ADA FETCH ADX FETCH JLL 00 NDA 11 FETCH TO "ADA'" 10 11 PAS FETCH FETCH ISOA PDS' JUMP GROUP JREL TO "ADA'" JROR JIG n ~ r-oooo-----1~~~~--~--t------,------~--~--t-,O~IO~--~I~OO~I~-1-,~OO~O--~~~---r~~--,------,-,-ll~, ~ JUNe JCNZ JAGT FROM "pop,,","," FETCH '1 ANPE • 0 JTRI FETCH FETCH FETCH FeTCH 3-54 JALE JXNA CPU Design JUMP GROUP (CONTINUE'" --1. "R 1110 1101 1100 PXA CPIS CLOP FROM INTER +9 CLOP2 CPO' JCF LRTN FETCH XRTN FETCH MOVE GROUP 11 PGRP 00 MVXR MRXX FETCH JRL .t 00 'PAL t. PPRA PPAX MXRX FETCH TO "LDX" FETCH FETCH TO "JUNC" " POPP CPU Design SPECIAL FUNCTION GROUP SPECIAL FUNCTION GROUP JOL SP F. 00 0' RSGP BYTE 11 '0 SCJ. 'SJG ---m- -, '0 SZOS SNZO ~ -0 - - . . TO "CPSS" >JLL JCF kJ:11 LBVR ·0 ., LBYT R8VT SBYA JCF -0 STLB SBVR RAel ~:Y STRB JLL 00 RACF 0' RAXF ~ ( 10 SAXF SLZI JCF "0 SRBl FETCH SKIP ., JFL DBtA ., FETCH FETCH JLL u~' LBVA NOSK '"1 RUNR ~RSEX FETCH JLL 11 SLZF U~ACO 0' RAXR "- SAXO '0 11 SLZR JZF ·0 SNCF FETCH t~F FETCH INTERRUPT SERVICE ROUTINE If0 GROUP INTER = 255 FETCH 3-56 CPG' CPU Design executes a JCE jump which uses an additional location within the JLL destination columns. However, the basic jump micro-operation characteristics do allow all of these conditional jumps to be placed within one block of eight rows. Once all of the state diagrams have been prepared, a number of steps may be followed to simplify the assignment procedure. First, the basic hardware characteristics dictate that INIT, FETCH, and INTER be located in microprogram memory locations 0, 15, and 255 (decimal), respectively. Then, note that each conditional jump has a limited range.- As a result, when several conditional jumps follow one another in sequence, all may have to be located within a restricted range in microprogram memory. For JCF, JZF, JLL and JRL microinstructions, the calling instruction must be in the same block of eight rows as the destinations. To retain row zero, the conditional jumps of clusters one and five are placed in the last eight rows of the microprogram memory. In addition to the destinations, space must be reserved for the "calling" micro-instructions for each of the conditional jumps listed in the clusters. Chart I shows an assignment of the conditional jumps of clusters one and five, together with some of the immediately related states. For the assignment procedure, a form like that of Chart I is used to show which microprogram memory locations are occupied and which are available. The format also aids visualization of valid jump micro-operations. As each state is assigned to its location in micro memory, the corresponding position on the state diagram is marked to show assignment. In this way, unassigned states are easily located on the state diagrams. To do the best assignment, the most restricted set of micro-instructions should be assigned first. The most restricted groups of micro-instructions are usually associated with clusters of conditional jumps which must be located within a given range of memory. It is therefore very useful to catalog all such clusters of conditional jumps. Table XIII lists the clusters associated with this machine. In each case the conditional jump is identified by the jump micro-operation and the first of its destinations. Thus in Table XIII the symbol JRL(MRVI) really refers to the code JRL(MRVI, MRV2, MRAD, STPG). For this machine, there are only five clusters. The information placed in the memory maps includes the state label or, for strings of states with no assigned label, the label of the nearest previously labeled state plus information to indicate how far from that labeled state the present state is. For example, INIT+2 is the second state after INIT. Table XIII. Conditional Jump Clusters 1. JPX JRL JLL JZF (NAO) (lLGA). JRL (BYTE) (NOA). JLL (LOA). JLL (MVXR). JLL (RACI) (IMML). JZF (SZOS) 2. JRL (MRV1) JLL (SAM). JLL (LAA) JCF (MAOO) 3. JLL (JXEX) JFL (JTR 1). JCF (JNT2) 4. JRL (PPAL) JCF (PAXC) 5. JLL (RACR). JLL (RACF) JCF (RSEX) JZF (SNCF) The state assignment can proceed, with conditional jumps and short unconditional sequences being assigned before long unconditional sequences. Chart 2 shows the state assignment at a point when all states except those between INIT and FETCH, those between PPRA and FETCH, and those associated with IND, INX, OTD and OTX have been assigned. For those states which have only one calling state (Le., a state which has only one state jumping to it with a non-conditional jump) and only one target state (i.e., it makes a non-conditional jump to another state), two hexadecimal numbers are also written on the memory map. The number in the lower left-hand corner is the address of the calling state (first hex digit is the row, second hex digit is the column), and the number in the lower righthand corner is the address of the target state. This information will tell the designer at a glance which states can be easily moved in the process of memory assignment, and to which locations they can be moved. For instance, a state with its calling state and target state in the same row (or column) can be moved anywhere in that row (or column), and a An examination of the flowcharts indicates that a simpler code might result if clusters one and five were combined because of the coupling between JLL(RACI) of cluster one and the JCF(RSEX) of cluster five. The combination of these two clusters represents the greatest degree of restriction, as within the same block of rows there would be one JPX, six JLL, two JRL, one JCF and three JZF micro-operations. In addition, the JLL(MVXR) 3-57 CPU Design may then be used freely. In those cases where extra states were used to avoid the use of row zero locations, the assignment may be reconsidered. For this machine, the operations IND, INX, OTD and OTX were rewritten to utilize row zero locations. Figure 22 shows the revised flow diagram for these four operations. state with its target state in the row zero can be moved anywhere in the same row or column as its calling state. As an example of how this information can be used, note that in Chart 2 state RAXI+ I has been assigned to location 090H. However, when the INIT sequence is assigned, it becomes convenient to locate INIT+ I somewhere in column O. Since there are no available spaces in column 0, the designer notes that state RAXI+ 1 has both its calling and target states in row 9, and so RAXI+ I can be moved anywhere in row 9. In Chart 3, RAXI+ I has been reassigned to location 098H, and INIT+ 1 has been assigned to location 090H. This moving process will typically be frequently necessary in the assignment procedure, and thus it is quite useful to have this information right on the working memory map. The final assignment is as shown in Chart 3. Two locations remain. FETCH FETCH Figure 22. IND, INX, OTD and OTX Revised Flow Diagram The final state assignments consist mostly of the long unconditional sequences. Row zero locations /* INPUT AND OUTPUT - -CURRENT VERSION DOES NOT DECODE INTO SUBGROUPS- -ALSO ROW ZERO IS USED TO SAVE CODE */ IND: IND1: INX: OTD: OTD1: OTX: LMI(R9) RIN; ACM(AC); SDR(A) LMI(X) RIN LMI(R9); ILR(A) ROT LMI(X) JZR(FETCH); JMP(lND1); JZR(FETCH); JMP(OTD1); CONCLUSION In the central processor design example described above, the final definition of the central processor macro-instruction set evolved as the microprograms were being implemented. In many instances, it was necessary to modify the macro-instruction opcode assignment in order to take full advantage of the capabilities of the Series 3000 architecture. Macroinstruction operations were also redefined to add more flexibility as microprogramming techniques improved. ability to decode macro-instruction opcodes and large repertoire of conditional and unconditional jump operations resulted in both efficient microprograms and complete memory utilization. Only two memory locations remained unused after the microcoding was complete. The central processor developed in this application note is used as a design example only, and therefore does not represent a complete central processor or an instruction set designed for a specific application. However, because of the microprogrammability of the Series 3000 family, the same basic organization can be tailored to a wide range of operating environments from I/O processing to data processing and dedicated arithmetic computation. The microprograms were implemented without regard to memory assignment except in cases where code sharing between micro-instruction opcode assignments were critical. Actual assignment of the micro-instructions to memory involved a very small portion of the design cycle. The 3001 MCU's 3·58 Chart 1 JFL, JCF, JZF COLUMN RESTRICT 0 00 , f,e,<=O f,e,<=1 2 3 JFL, JCF, JZF COLUMN RESTRICT JLL COLUMN RESTRICT 4 5 6 8 7 9 f,e,<=O f,e,<=1 A B JRL COLUMN RESTRICT C 0 E F FETCH IN IT 01 02 03 04 05 06 07 08 NAO 09 RAXI+l 95 94 OA RAXR+l A4 RXFI JREL JIG IMMD DMRF IMRF IXMA IXMB RSEX RUNR RACI RAXI SAXI SLZI SAXR+l A6 SNCF SSCF RACR RAXR SAXR SLZR IMML+l B2 IMML IMMS RACF RAXF SAXF SLZF OC MVXR MVRX MOD PGRP OD NDA ODA XDA ADA OE LDA LDX PDS ADX OB OF MRXX IND INX OTD OTX SZDS+l 9A SZDS SNZD PAXC PAXE MVGP SPFG IRBM NA15 BYTE RSGP SCJG ISJG PPAL PPRA PPAX POPP ILGA ILPX NAil NAI2 INTER o"CJ c: C m cs· :::J o"0 c: c Chart 2 JFL, JCF, JZF COLUMN RESTRICT 0 1,<,.=1 2 3 4 JTRI JNTI TFAL TTRU 1 JAGT+l JLL COLUMN RESTRICT 1,<,.=0 6 5 7 8 1,<,.=0 1,<,.=1 9 A B MAOO+l IMRF1+l XATS SBYA+2 18 STLB STRB 00 INIT 01 SNEO+l 12 SNEO SWEO LBYA LBYR SBYA SBYR 02 OBIA LBYT RBYT -JXGX JXLX JXEX JXNX 03 JUNC JALT JXGA JAEO JANE JCEZ JXLA 04 PXAt2 40 70 APE2 AN2 IXMB+3 47 85 IXMA+l 86 56 IXMB+2 57 45 05 JIG+3 EO 60 XATS+4 5A TFEO TXNG OMRF+l 84 IMRFI IXMA2 IXMB+l 87 47 INTER+3 5F 59 INTER+4 58 69 06 JIGt4 50 JROR+ 1 71 JNT2 JTRI LAA LAX PAS ISOA ISOA+l 67 F8 07 PXA+3 40 FO JROR 81 61 APRE ANPE SAM SXM PSM SOX PSM+1 76 A8 08 NAO JRLE JIG IMMO OMRF IMRF IXMA IXMB INO 09 RAXI+1 95 94 OA RAXR+ 1 A4 SAXRt 1 A6 SNCF SSCF RACR RAXR SAXR OB RXFI IMML+l B2 IMML IMMS RACF RAXF oc MVXRtl C4 Cl MVXRt2 CO NCY SCY MVXR 00 POPP+l OF 30 XOA+l 06 OF CPG2+7 F2 00 PPAL+l OC 08 OE JIGt2 E2 50 MXRX JIGtl 82 EO OF PXAt4 70 Fl PXAt5 FO OF CPG2+6 FB 02 JAGE RSEX RUNR I JFL, JCF, JZF COLUMN RESTRICT JALE+l SBYA+l 16 79 JALE cS' :J JRL COLUMN RESTRICT C STLB+l lA 10 0 E F CLOP2 FETCH SRBI FETCH+l OF 9F PPRA+l DO 2F BYTE+5 AE JXEA CPSS PXA CLOP XATS+l OB 5B SCJG+2 4E 3C PXA+l 3D 40 SCJG+l CE 4C XATS+3 5B 51 XATS+2 4B 5A CPSS+l 3C 50 CPSS+2 5C AO IRBM+l 8E 56 INTER+2 BF 58 INTER+5 59 6C MAOO MLOAO INTER+6 69 60 INTER+7 6C 6F CLOP+l 3E 00 INTER+8 60 AF SOX+l 77 F9 CPG2+2 AA 7B CPG2+3 7A EB MRVI MRV2 MRAO STPG INX OTO OTX MVGP SPFG IRBM MRV2+1 7D JAGT JCNZ JXNA NA15 FETCH+2 IF SZOS+l 9A SXOS SNZO MRV1+l 7C SLZR PSM+2 78 B8 ISJG+3 09 CPG2+1 AO 7A BYTE+3 AC AE BYTEt2 BC AB CPG2 BYTEt4 AB 2E INTERt9 6F AO SAXF SLZF PSM+3 A8 OF XRTN+2 B9 BA LRTN XRTN BYTE+l CC AC CLOP2tl 00 XRTN+l BB B9 INTER+! FF 5F MVRX MOO PGRP PGRP+l C7 ISJG+l CF 09 NOSK SKIP BYTE RSGP SCJG ISJG NOA aOA XOA AOA PPAL+2 03 E8 ISJG+2 09 A9 PAXE PAXC PPAL PPRA PPAX POPP LOA LOX POS AOX PPAL+3 08 E9 PPAL+4 E8 CPG2+4 7B FB ILGA ILPX NAil NAI2 AOAI ISOA+2 68 F7 SOX+2 79 F7 CPG2+5 EB F2 RACI RAXI MRXX SAXI POSI SLZJ INTER Chart 3 JFL. JCF. JZF COLUMN RESTRICT 0 f.e •• =O f.e ••=1 2 3 4 5 6 1 JFL. JCF. JZF COLUMN RESTRICT JLL COLUMN RESTRICT 7 8 f.e ••=O f,c,z=l 9 A B JRL COLUMN RESTRICT C 0 E F 00 INIT JAGT+l JTRl JNTl TFAL TTRU OTOl JALE+l IN01 MAOO+l IMRF1+l XATS INIT+12 FC CLOP2 PPRA+4 lE FETCH 01 SNEO+l 12 INIT+4 21 41 SNEO SWEO LBYA LBYR SBYA SBYR SBYA+l 16 79 SBYA+2 lB STLB STRB STLB+l lA 10 SRBI PPRA+5 OE 9E FETCH+l OF 9F 02 OBIA INIT+3 91 11 LBYT RBYT JXGX JXLX JXEX JXNX os INOl+l OF PPRA+13 PPRA+ll 2B OF EA 2B PPRA+12 2A 29 PPRA+l 00 2F BYTE+5 AE PPRA+2 20 4F 03 JUNC JAGE JALT JXGA JAEO JANE JCEZ JXLA JALE JAGT JCNZ JXEA CPSS PXA CLOP JXNA 04 PXA+2 40 70 INIT+5 11 44 APE2 AN2 INIT+6 41 F4 IXMB+3 47 85 IXMA+l 86 56 IXMB+2 57 45 INIT+ll 49 OC INIT+10 4A 48 INIT+9 FA 49 XATS+l OB 5B SCJG+2 4E 3C PXA+l 30 40 SCJG+l CE 4C PPRA+3 2F OE 05 JIG+3 EO 60 XA1'S+4 5A TFEO TXNG OMRF+l 84 IMRFl IXMA2 IXMB+l B7 47 INTER+3 5F 59 INTER+4 XATS+3 58 69 5B 51 XATS+2 4B SA CPSS+l 3C 50 CPSS+2 5C AO IRBM+l BE 56 INTER+2 BF 5B 06 JIG+4 50 JROR+l 71 JNT2 JTRl LAA LAX PAS ISOA ISOA+l 67 F8 INTER+5 59 6C MAOO MLOAO INTER+6 69 60 INTER+7 CLOP+l 6C 6F 3E 00 INTER+8 60 AF 07 PXA+3 40 FO JROR 81 61 APRE ANPE SAM SXM PSM SOX PSM+l 76 A8 SOX+l 77 F9 CPG2+2 AA 7B CPG2+3 7A EB MRVl MRV2 MRAO STPG OS NAO JRLE JIG IMMO OMRF IMRF IXMA IXMB INO INX OTD OTX MVGP SPFG IRBM NA15 09 INIT+l 00 91 INIT+2 90 21 RSEX RUNR RACI RAXI SAXI SLZJ RAXI+1 95 94 SZOS+l 9A SXOS SNZO MRV1+l 7C MRV2+1 7D PPRA+6 lE FE FETCH+2 IF OA RAXR+l A4 SAXR+l A6 SNCF SSCF RACR RAXR SAXR SLZR PSM+2 78 B8 ISJG+3 09 CPG2+1 AO 7A BYTE+3 AC AE BYTE+2 BC AB CPG2 BYTE+4 AB 2E INTER+9 6F AO OB RXFI IMML+l B2 IMML IMMS RACF RAXF SAXF SLZF PSM+3 A8 OF XRTN+2 B9 BA LRTN XRTN BYTE+l CC AC CLOP2+1 00 XRTN+l BB B9 INTER+l FF 5F OC MVXR+l C4 Cl MVXR+2 CO NCY SCY MVXR MVRX MOO PGRP PGRP+l C7 ISJG+l CF 09 NOSK SKIP BYTE RSGP SCJG ISJG 00 POPP+l OF 30 XOA+l 06 OF CPG2+7 F2 00 PPAL+l OC 08 NOA OOA XOA AOA PPAL+2 03 E8 ISJG+2 09 A9 PAXE PAXC PPAL PPRA PPAX POPP OE JIG+2 E2 50 MXRX JIG+l 82 EO PPRA+9 F3 EA LOA LOX POS AOX PPAL+3 08 E9 PPAL+4 E8 PPRA+l0 CPG2+4 E3 2A 7B FB ILGA ILPX NAil NAI2 OF PXA+4 70 Fl PXA+5 FO OF CPG2+6 FB 02 PPRA+8 FE E3 INIT+7 44 FA MRXX POSl AOAl ISOA+2 68 F7 SOX+2 79 F7 INIT+8 F4 4A PPRA+7 9E F3 INTER CPG2+5 EB F2 INIT+13 OC o'V c: c I CS· ::s CPU Design The operations supported under these five modes are as follows: APPENDIX A THE DESIGN EXAMPLE INSTRUCTION SET The basic machine uses a 16-bit word. All instructions are single word instructions except the long immediate forms. Macroprograms are fully reloeatable without reassembly. The data segment is also independently relocatable. There are five basic instruction catagories: memory reference, immediate data, jumps (including calls and returns), register moves and manipulations, and input-output functions. MNEMONIC ASSIGNED CPE REGISTER (A) Accumulator RO 0 AND data to A 0000 LOA Load data to A 0001 LAA Load address to A 0010 SAM Store A in memory 0011 ODA OR data to A 0100 LOX Load data to X 0101 LAX Load address to X 0110 SXM Store X in memory XoA Exclusive OR data to A POS Push data to stack 0111 1000 1001 PAS Push address to stack PSM Pop stack to memory 1010 1011 ADA Add data to A 1100 NoA The machine has seven registers as follows: REGISTER FUNCTION (X) Index Register Rl (B) Data·Base Register R5 AoX Add data to X 1101 (E) Program Execution Base Register R6 SoA Subtract data from A 1110 (P) Program Counter R3 SOX Subtract data from X 1111 (S) Stack Pointer R4 (W) Status Word Register' R7 Immediate Group • A carry flip·flop designated C is. the high order bit of the status word register W. MNEMONIC Memory Reference Group ADDRESS MODE ADDRESS COMPUTATION M·FIELD CODES FUNCTION M· O· FIELD FIELD LAI Load to A immediate 0011 0001 AAI Add to A immediate 0011 1100 NAI AND to A immediate 0011 0000 OAI OR to A immediate 0011 0100 XAI Exclusive OR to A immediate 0011 1000 Direct B+o 0100 Indirect (B+D) 0101 Indirect Relative (B+o)+B 1110 PSI Push to stack immediate 0011 1001 Indirect Indexed (B+o)+X 0110 LXI Load to X immediate 0011 0101 Indirect Indexed Relative (B+o)+X+B 0111 AXI Add to X immediate 0011 1101 SUMMARY OF MEMORY REFERENCE MODES If D is equal to zero, the contents of the memory location following the instruction is used as the immediate value. Note: Values enclosed in ( ) designate indirect addresses. 3.&2 CPU Design Jump Group MNEMONIC RELATIVE M 0 FUNCTION INOIRECT M 0 JRU,JIU Jump unconditional 0001 0000 0010 0000 JRGE,JIGE Jump if A.GE.O 0001 0001 0010 0001 JRLT,JILT JumpifA.LT.O 0001 0010 0010 0010 JRXG,JIXG Jump if X.GT.A 0001 0011 0010 0011 JREZ,JIEZ Jump if A.EQ.O 0001 0100 0010 0100 JRNZ,JINZ Jump if A.NE.O 0001 0101 0010 0101 0110 JRCZ,JICZ Jump if C.EQ.O 0001 0110 0010 JRXL,JIXL Jump if X.LE.A 0001 0111 0010 0111 JRLE,JILE Jump if A.LE.O 0001 1000 0010 1000 JRGT,JIGT Jump if A.GT.O 0001 1001 0010 1001 JRCN,JICN Jump if C.NE.O 0001 1010 0010 1010 JRXE,JIXE Jump if X.EQ.A 0001 1011 0010 1011 JRXN,JIXN Jump i·f X.NE.A 0001 1111 0010 1111 M 0 Unconditional and conditional jumps: Relative: Indirect: P = P+D' P = E+(E+O) where 0'=0-128 Subroutine Call Group MNEMONIC CAS FUNCTION Call absolute, push P, E, W, B P +- (0) ABSOLUTE 0 M 1101 XXll M 0 CLS Call local subroutine, push P N.A. 0010 1110 CVS Call global subroutine, push W. B, E, P N.A. 0010 1100 Local: Push P to stack P = E+(E+O) Value: Push W, B, E, P to stack E = E+(E+O) P = E'+(E') where E'=E+(E+O) CPU Design Subroutine Return Group M 0 RLS Pop P 1100 1111 RVS Pop P, E, B, W 1100 1101 RSA Pop A, X, P, E, B, W 1100 1100 MNEMONIC FUNCTION The shift count is given by D if D is non-zero or by the least significant seven bits of the X register if D is zero. Base and Status Register Move Group MNEMONIC Register Manipulation Group MNEMONIC FUNCTION M 0 RAR Rotate A right, include CFF 1101 0001 Rotate A and X right, include CFF 1101 RAX 0101 SAX Shift A and X right, preserve sign 1101 1001 SAL Shift A left, fill with zeros 1101 1101 LBA FUNCTION Move B to X, adjust 1100 0101 MEX Move E to X, adjust 1100 0110 MWX Move W to X, adjust 1100 0111 MXS Move X to S, adjust 1100 0000 MXB Move X to B, adjust 1100 0001 MXE Move X to E, adjust 1100 0010 MXW Move X to W, adjust 1100 0011 NO.OP Nothing implemented 1100 10XX 0 MNEMONIC M 0 0000 INO I nput one word A<- (0) 1000 XXXX OTD Output one word (0) +-A 1001 XXXX INX I nput one word A+- (X) 1010 XXXX OTX Output one word (X) +-A 1011 XXXX Load byte relative 1101 0100 Store byte absol ute 1101 1000 SBR Store byte relative 1101 1100 Byte address MBX M LBR Relative mode: 0100 1101 SBA Byte add ress 1100 FUNCTION Input/Output Group Load byte absol ute Absolute mode: 0 Move S to X, adjust The destination register is adj us ted by D-128. Byte Load and Store Group MNEMONIC M MSX = = FUNCTION (B+0)+X/2 (B+O)+B+X12 Special Memory Reference Instruction MNEMONIC ISZ FUNCTION Increment and skip if zero M 1101 0 XX10 Stack Push and Pop Group M o M 0 PHAX Push A, X onto stack 0001 1101 0010 1101 PPAX Pop A, X 1100 1110 MNEMONIC FUNCTION 3-64 CPU Design APPENDIX B MICROPROGRAM LISTING RECORD NUMBER 1 2 © Intel Corporation, 1975 1* BIPOLAR MICROCOMPUTER MACRO-MACHINE REGISTER MACHINE--12/13/74 UPDATED 3/18175 3 4 5 6 7 B 9 10 11 12 13 MACHINE HAS 7 REGISTERS AS FOLLOWS: ACCUMULATOR RO A INDEX REGISTER R1 X P PROGRAM COUNTER R3 S STACK POINTER R4 DATA BASE REG R5 I:i g PROG. BASE REG. R6 W STATUS WORD R7 14 15 16 17 C=CARRY,LINK FLIP-rLUP=HOB OF W 113 19 .!O KB FIELD LENG'lH=4 MICROPS(KOOOO=O KIiOOO=B KB KBUS: DErINIrl~H Or KBUS fIELD */ DEfAULT=O K007f=1 KOOfF=3 K7FFF=7 KFFn-=15); KfFOO=12 KfFBO=14 21 22 23 .i!4 25 20 27 28 .!9 30 31 32 33 34 35 36 37 31i 39 ,* DEFINITION OF BUS CONTROL FIELD MCr /* INH RMW CNB RIN ROT RRM RWM FIELD LENG1'H=3 MICROPS(NMO=0008 RHi=100B */ DEFAULT=O INH=OOlB RMW=010B ROT=10lB RRM=lI0B CNB=OIIB RWM=111B); NBO NO BUS OPERATION INHIBIT,CPE ARRAY READ-MODIFY-wRITE CPU NEEDS BUS REQUEST INPUT REQUEST OUTPUT REQUEST READ MEM. REQUEST WRITE MEM. 40 41 42 43 SEt UP FOR SYMBOLIC REPRESENTATION OF REGISTER DESIGNATIONS *1 44 P S B E 45 4b 47 48 STRING STRING STRING STRING STRING STRING STRING A X w 'RO', 'Rl', 'R3'; 'R4', 'RS', 'Ro'; 'R7', 49 50 51 52 53 54 55 56 57 1* SET UP A SPECIAL NO.OP STRING *1 NO.OP /* STRING 'NOP(R2)', NEXT WE SPECIFY A DEFAULT TO rFl IN THE Fa FIELD tOR THE lOR MlCROP IN" THE CPE FlELD. lOR 18 NORMALLY USED AS A STORE OPERATION. WHEN A DECREMENT OPERATION II ALIO DESIRED, "0 WILL HAVE TO BE EXPLICITLY SPECIFIED *1 511 59 60 SDR IMPLY FO-11B' CPU Design RiCORD NUMIER 61 62 63 64 65 66 b1 be 69 10 11 '* ZERO INITIALIZATION SEQUENCE A, X, AND W *' INIT: OOOH: 090H: 091H: ,. ZERO f AS TEMPORARY POINTER, WRITE W TO INTERkUPT STRUCTURE 12 13 021H: 74 75 76 01lH: 17 ao 81 82 83 84 85 86 87 041H: /. SET S = CO), T =1 fOR NEXT 92 93 94 95 96 97 98 LMlCT) fFl RRMJ ACMCAC) 044H: OF4H: OFAH: SDR(S); /. SET B = (1), r = ~ FUR NEXT OPERATION *1 L~ll(T) Ff1 RRM; ACMCAC); SDRCB} src; 04AH: 049H: 048H: /. THIS SETS THE C fLAG TO INSURE A CORRECT JUMP TO XRIN */ /. GET (2), JUMP TO XRTN TO SET E = (2), LMI(T) RRM; ACM(AC) OOCH: OFCH: /* ./ OPERATIO~ 88 89 90 91 *' CLRCT) , LMl(l'H ILR(W) Ron 78 H CLR(A) J CLR(X); CLRCW)J P = CE) ./ JCF C*,XRTN); FETCH SEQUENCE & START Of MACRO-INSTRUCTION PROCESSING P IS ISSUED TO MAR AND INCREMENTED, MACRO-INSTRUCTION IS fETCHED AND TESTED BY JPX MICRO-OPtRATION. NOTE fETCH IS IN LOCATION 15 TU STROBE INTERRUPT ON ENTRY. *' 99 100 101 102 10l 104 105 106 107 108 1()':/ 110 111 112 113 114 11!) 110 117 116 119 120 121 12.1 123 124 125 OOFH: fETCH: LMI(P) ffl RRM; /* LOAD DISPLACEMENT AND TEST fOR ZERO USING Z FLAG *' LTMCAC) STZ KOOfF; 0IFH: '* SAVE DISPLACEMENT, TEST 4 BITS OF MACRO-OP. TEST IS DELAYED TO ALLOW PIPELINE PROPAGATION. ALSO C FLAG IS SET FOR LATER USE IN PSEUDO-SUBROUTINES. *' 09FH: SOH(RII) S'fC J~X(NAO,JR~L,JIG,IMMO,OM~f,lMRF,lXMA,lx~~,IhO, INX,OIO,OTX,MVGP,SPfG,IRbM,NAI5); /. ~~ASSIGN~D 080H: u8F'ti: /' :'lAO: NAl~: UP-CODE GHUUPS--NOP~ fUH 1HIS V~RSION ./ JZRnTfCH) ; JZR(nl'Cit); 1000.OP NO.UP IMM~()lATE GROUP Uf MACRU-INSTRUCTIONS--TEST fOR LONG F'URN--O IS IN AC AND H9--AOJUSl AC bY -128 ./ 0.3tll /. LUNG O~lh: IMMO: F'O~M: lMML: LIH(AC) KfF'I!O FETCH NEXI WURD TU AC */ LMl(P) Hi RR~I: JZHIMML,IMMS); O~ SHORT CPU Design IlECOtlD NU~tlt:R OBIH: 12b ACI-l( AC) JRLIILGA,ILPX,~AII,NAI2); U7 12i! 129 13,) 131 132 " SHURf fORM: NO PROCESSING NEEDEU " Otl3ti: " IMMS: Pk~PRJCESSING JRLIILGA,ILPX,~All,NAI2); fUR ARITHMETIC A~U LOGIC ROuTINES? NONE NEEDED " 133 Ol:H: Ot:DH: 134 Ij~ 136 137 " NO.UP NO.OP ~OTE: NAIl AND NAil ARE ~AD£ l~rU ~U-UPS IN lHIS 13b 139 140 141 142 143 144 ILGA: ILPX: OHH: OEfH: NAll : NAI2: JLLINDA,DUA,XDA,ADA); JLLILDA,LDX,PDS,ADX); NUN-VALID INSTRUCTIOhSll THt:1 ARE VERSIUN Of fHE MACHO-MACHINE " NO.OP NO.UP JZRlfETCH); JZRlfETCH); BASIC ARITHMETIC AND LOGIC PROCt:SSING--UPUATE C ff MACHINE fOR ADA--TOGGLE IT ON CARRY fROM ADA '1 " O~ MACRU- 1 .. ~ OD/H: Of7H: OC2H: OC3H: 146 147 14~ 1411 ADA: AUAl: NCY: scr: AURIA); NU.OP NO.UP LMIIW) K8000 JfL INcr, scn; JZRlfETCH); JZRlfETCH); I~O 151 152 153 154 155 156 157 158 159 160 161 162 163 164 " LOGICALS " OD4H: OU5H: OD6H: ODIH: NDA: ODA: XDA: ANH(A) ORRIA) CMR(AC l: XNR(A) JZRlfETCH): JZH(fETCH); JZR(fETCH) I LDA AND LOX OPERATIONS '1 " OE4H: OE5HI LDA: LDX: SDR(A) SDR(X) J:l.R(FETCH) , J:l.R(FETCHl/ /. STACK PUSH--ADVANCE STACK POINTER TO NEXT LOCATION (fOR THE REVERSE DIRECTION STACK--A DECREMENT Of S), THEN WRITE '1 165 OE6H: OfbH: 166 167 168 169 170 171 172 173 114 175 176 177 178 179 PDS: PDSI: DSM(S); LMHS) RWM JZR(fETCH); I' ADX - SHARES CODE fOR ADA - ALSU TOGGLES C ff Of MACRO MACHINE '1 OE7H: " AUX: JMP(ADAl); ADHIX) MEMONI REFERENCE INSTRUCTION GRUUPS DIRECT--GET 8tD INTO AC--ALSO R9 '1 0&4H: DMRf: 054H: ILRIS); ALRIR9) JRLIMRVl,MRV2,MRAU,STPG); /. INDIRECT-ABSOLUIE--GET (8+D) INfO AC--C fLAG USED fOR PSEUDO-SUBROUTINE ./ 180 l~i 182 181 184 O·~5H: 055H: UOAH: ObBH: IMRf: IMRr1: MLOAD: ILR(B); ALH(R9); LMIIR9) RRM ACM(AC) JCf"( MADD, MLOAD); JRL(MRVl,MRV2,MRAD,SIPG); 18~ 180 1~7 If ~OIE: kADD WILL bE USED fUR orHER IhDIPECT S, X, ETC. HAS BEEN LOADED TU RB '1 OPERATION~ WHERE 188 1~9 I!lO ObAH: 009H: MADU: ACiHAC); ALI« 1'\8) JRL(MRVl,MRV~,MRAD,STPG); 1~1 \1/2 If INDIRECT INDEXlD Atl~OLUT~ - CLEAR C fLAG, MUVE X TO H8 '1 l~j 194 oa6H: 195 04bH: lXMA: ILR(X) ~TC; SDR(RS); 196 3-67 CPU Design RECORD NUMBER 197 198 19':1 200 lOI 202 203 204 205 :l06 207 2011 209 210 211 212 j* NOriNG r~AT ASSIGNMENT RULES WOULD NOT ALLOW ThE DESIRED JUMP ro IMRF UNLESS IIMA+l WERE IN IS ADDED HERE */ U5bH: UMA2 : ILR(B) RO~ ZERO--AN EXTRA STATE JMP (lHRf'1); /* INDIRECT INDEXED RELATIVE - CLEAR C FLAG, PUT B+X IN R8 */ 01l7H: 057H: 047H: 045H: /* IXHB: lLR(X) STC; SDR(R8); ILR(BJ; ADIHR8) JMP 1'1: /~ 245 246 247 248 249 250 251 252 253 lS4 255 256 257 258 259 260 2,,1 264/ 263 264 265 266 267 LMllAC) RRM; ACM(AC) JLL(LDA,LDX,PDS,ADX)/ MRAD GROUP INCLUDES ADDRESS LOAOS AND SUijTRACT FROM A */ OIEH: MRAU: NO.OI' JLL(LAA,LAX,PAS,ISDA); 064H: 065H: 066H: LAA: LAX: PAS: SDI 2"'6 2'J7 29ij 2':1':1 300 301 30l OHH: OOIH: JAGT: 072n: IIPkE: 07Jti: AI~PE: 038H: U07H: JALE: 04211: 043tl: Ak'E2: AN2: 303 304 305 30b 307 308 309 310 311 H.o! 311 314 315 316 317 1* TESTS OF C fLIP-fLOP (HIGH ORDER BIT or W) *1 UJbH: 03AH: JCEZ: JCNZ: TZR(w) K800u INH TZR(W) Keooo INH JMP(TTRU); JMP(TFAL); 1* TESI EXECUTION fUR ABuVE TESTS - ROW ZERO USED *1 005H: 'HRU: NO.OP JFL(JTRI,JNTl)1 002H: 003H: JIRl: JNTl: SIlR(P) NO.OP JZRIFETCH); JZR(FETCH); 319 004H: TfAL: 320 321 322 NO.UP JFL(JNT2,JTR2)I OblH: 063H: JNT2: JTR2: NO.OP SDR(P) JZRCfETCH)I JZR(FETCH)I 31ij 323 324 325 326 321 32ij 329 330 331 332 333 334 335 He> 3J7 338 /* TESTS fOR X.GT.A, X.LE.A, X.EO.A, X.NE.A--SHARED PSEUDOSUBROUTINE USES JLL ~OR AN EXIT TEST--kOUTINE ENTRY IN ROW 0 C FLA~ 033H: 037H: 03BH: 03FH: IS SET FOR X.GT.A, FL TEST FOR X.EQ.A *1 JXGA: JXLA: JXEA: JXNA: ILRCX) ILR(X) ILR(X) ILR(X) JMP(XATS); JMP(XATS); JMP(XATS); JMP(XATS); /* SAVE X AT r, fETCH ANIl cmlPLEMENT A *1 OOBH 04BH 05bH XATS: SOR(T) ; lLRCA) STC; CMA(AC); 1* CLEAR C FLAG *1 3-69 CPU Design RECORD NUfoIBER 33~ 1* ADD Hoa'S Of A' AND X - CARRY ~EANS 1 NEG •• A.GE.O *1 340 341 342 343 344 AOR(,£) K80UO; u~AH: 1* EXEcurE PREVIOUS TEsr, SET UP TO TEST HOB OF RESULT--IF 1. THE SIGNS OF A AND X ~ERE THE SAME *1 345 HI> 34/ 348 34':1 J50 J!>l 3::.:.1 J~J 051H: TZR(T) ~8000 INH JFL(TFEQ,TXNG) ; 1* rXNG IMPLIES x NEG AND A.GE.O--I.E. X.NE.A AND X.LT.A--DO A DUMMY OPERATION TO FURCE THE PkUPER 053H: lLRCA) F fLAG ., JLLCJXGX,JXLX,JXEX,JXNX); 1* PERfORM A TEST ADDITION AND EXECUTE SIGN-EQUAL TEST C 354 ~ILL BE SEf IF SIGNS WERE THE SAME AND X.GT.A ., 3::'~ 356 J~ 052H: rFEQ: I. SNEQ IM~L1ES 012H: 010H: SNEQ: ADR(T) STC K7FfF JFL (SNEQ, SWEQ) ; I 35i! J59 360 361 J02 3td J64 365 Jb6 367 368 369 370 311 372 373 374 375 376 317 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 390 397 398 SIGNS NOT EQUAL--I.E. X.GE.O, A NEG--X.GT.A *1 SDR(AC) STC; NU.UP I. DUMMY UP TO SET C fLAG ., JLLCJXGX,JXLX,JXEX,JXNX); 1* FOR SIGNS EQUAL, IF X=A RESULT wOULD SE 1111 ••• 1. wILL GENERATE A CARRY IF SO *1 OllH: Sf/EQ: JLLeJXGX,JXLX.JXEX,JXNX); ILkCAC) "1 1* EXECUTION OF JUMP TESTS ., 024H: U2::'H: 02bH: 027H: JXGX: JXLX: JXEX: JXNX: lLR(R9) lLR(R9) ILR(R9) ILR(R9) JCf(JNT2,JTR2) ; JCf(JTR1,JNTl) ; Jf'L(JNT2,JTR2); Jf'L(JTR1,JNT1); 1* SUBROUTINE CALLS CALL LOCAL AND PUSH W, S, E, P =CPSS CALL LOCAL AND PUSH P ONLY-CLOP C FLAG IS USED FOR EXlT TEST AFTER PUSHING P 03CH: 05CH: OSDH: CPSS: DSM(S); ILR(W); LMI(S) RWM; OADH: OAAH: 07AH: CPG2: DSM(S); ILR(S); LMICS) RWM; DSM(S); 07BH: OEBH: OFSH: LMlCS) RwM; OF2H: 0l>2H: OODH: DSM(S); ILH(P); LMI(S) RWM; I. "~I !LROd; CLOP2: t:tCE+D) l",ro AC ., ILR(R9) OIlDH: JCFCLRTN,XRTN); 399 400 401 402 403 4114 40':) 4U6 407 40b 409 INCREMENT OSSH: OBEH: OS9H: XRTI~ UBAH: LRTN: SDR(P) JZR(HTCH) ; CLOP: DSM(S) ; lLR(P) STC JMPCCLOP2); 031:.H: OoEH: : SORCE); LMl(E) RRM; AMA(AC) ; 1* PUSri INSTRuCTION ., 3-70 CPU Design RECORD NUMBER 410 030H: 04DH: 040H: Ul 41~ 413 PXA: OSM(S): IL~(X): LMI(S) 1'.\1114: 414 415 411> O~·OH: OSM(S): ILIHA); 417 OFIH: L~ll(S) 070H: RWM JZR(FETCH); 4111 419 420 421 422 42.3 4:l4 425 421> 1* MUVE GROUP OF INSTI'.UCTIO~S--USES JCE TO SELECT REGISTER--NOTE THAT REGISTER ASSIGNMENT BECOMES IMPORTANT FIRST MUOIF¥ 0 to GET D-128 *1 08CH: OC4H: OCOH: OCIH: OEIH: 428 429 U8 MVXR: MXRX: 1* MOVE Rt:G TO OCSH: 01'"5H: 435 436 437 LMI(R9) KFF80 JLL(MVXR,MVRX,MOO,PGRP): 1* MOVE X TO REG. - GET X, MODIfY BY 0'=0-128 " 421 430 431 432 433 U4 MVGP: " 439 MVRX: MRXX: ILR(X); ALR(R9): SOR(R7) NO.OP x- JCE(MXRX); JZR(FETCH) , " REGISTER OVERRIDE *1 FETCH REG USING JCE OVERRIDE *1 ILR(R7) ALR(R9) JCE(MRXX); JMP(LOX) : MOO NOT IMPLEMENTED IN THIS VERSION *1 OCbH: MUD: JZR(FETCH): NO.OP 440 441 44J 443 444 44!) 441> " ADJUST STACK AND RETURN GROUP A, X, P, E, B, AND W PPHA--POPS P, E, B, AND w PPAX--POPS UNLr A AND X POPP--POPS ONLr P " PPAL--~OPS 447 448 449 OC7H: OC8H: PGRP: lLR(R9); ADIHS) 450 451 452 OOCH: 003H: OOSH: PPAL: LMl(S) FFl RRM; ACM(AC): SORIA): 453 454 Olo:llH: 4!)5 451> OE9H: OOBH: PAXC: JRL(PPAL,PPRA,PPAX,POPP); LMI(S) n·1 RRM; ACM(AC) SDR(X); JCF(PAXE,PAXC) : 4!)7 45S 459 460 41>1 ODOH: 02UH: 02~·H: LtU(S) HI· RRM; ACM(AC): SDR(P): 4b2 04FH: OOEH: 011::11: LMI(S) FF1 kRM; ACIH AC ); SORCE): 09EI1: OFEH: LMHS) Fn RRM: ACM(AC): SOIHB) ; 463 404 46~ ,*b6 46"/ 468 41>9 470 471 4U O~jH: 01::311: OEAH: O~AH: LMI(S) FFI RRM; ACM(AC) : SOlleW); 4·/j 474 475 476 471 1* RESTORE INTE.R~UI'T STRUCTURE *' 02t!H: 029H: CLR(T); LMI(T) HOT JZR(FETCH) ; ODAIH 50Rl1.) J'Z.R l rE'tC~) ; 478 419 480 3-71 CPU Design RECORD NUMBER PPAX: JMP(PPALl: OOEH: ILIHAC) STC 482 ODFH: POP!': LMHS) FFl RRM; 483 JMP(JUNC); OOOH: ACM(AC) 484 485 48b I ' SPECIAL FUNCTION GROUP 481 BYTE OPERATORS--AODR=(B+0)+S+X/2 OR (B+D)+X/2 488 CALL TO (D) AND PUSH ALL 4119. SHIFT AND ROTATE GRUUP 490 INCREMENT AND SKIP 491 FETCH B JUST IN CASE *1 492 493 ILR(B) SPFG: JRL(BYTE,RSGP,SCJG,ISJG); 494 49~ 1* BYTE GROU!'--COMpUtE AOOR, STORE B IN CASE NEEDED *1 49i1 SOR(k8); 491 OCCH: tinE: AOR(R9); 498 OBCri: 499 OACH: ILR(X); 500 OABri: SRA(AC) STC; 501 OAEH: LtoIHR9) RRM; )02 AMA(AC) 02EH: JLL(LBYA,LBYR,SB~A,SBYR); 503 ALR(R8); 1.115ri: LBYk: 504 LMI(AC) RRM 014H: LIHA: 505 JCrtLBYT,RBYT); 50E> LDI(AC) FFI KOOFF JMp (lJllIA); 022H: LilYT: SCI') 02JH: KbYT: LT'UAC) KOOFF; 5011 SOH(A) 020H: DBIA: JZH(Ft::TCH); 509 510 017H: ALI«k8) ; SbYR: 01bH: 511 SlltA: LMUAC) ; 1* LOAD MAR FUR LATER US~ *1 ILldA) ; 512 01t1H: 019H: T~R(AC) KOOFF RRM S13 JCnSTLB,STRB); )14 STRb: 01bH: LTM('r) "'FrOO; 010H: 515 JZR(FETCH) ; ALRlT) RwM SRBI: 51& 517 OlAH: Sl'LS: L'fMlT) KOOfF; JMp(SRBI); 518 OleH: LOHAC) Ffl CNS 519 /f ROfArE GROUP ~lO 521 RUTArE A WITH C--ROIATE A AND I WITH C--SHIfT A, X RIGHT, FILL 5U ~ITH SIGN--SHIFT A LEFT, FILL WITH ZEROES 52J 524 AT ENTRY, Z FLAG is ZERO IF 0=0. DUE TO piPELINt::O OPERATION, IT IS )l5 CHIS CUNOITION THAT IS TESTED bY THE fIRST JZF *1 5lE> HSGp: 527 OCDH: TZR(W) STZ K8000 INH JZHSZOS, SNZD); 09AH: 528 ILRlX): SZDS: 52~ SDR(R9) FFO K007f 099H: JLL(RACI,RAXI,SAII,SLZI); 5JO SIIIZD: DSM(R9) 09BH: JLL(RACI,RAXI,SAII,SLZI)7 481 531 532 533 534 535 53E> 537 538 539 540 541 542 543 544 54::; 54& 547 548 54\1 094H: 095H: 098H: 09bH: 097H: RACI: RAil: SAXI: SLZI: ILR(A) ILR(I); SDiHT) TZR(A) STZ K8000 INH ILR(A) JMP(RUNR); JMp(RACI); JMP (RAXI J: JMP(RUNR); 1* MAIN ROTATION LOOP ' I 093H: RUNR: OSM(R9) STC JLL(RACR,RAXR,SAXR,SLZR), OA4H: OA5H: OAOH: OA&H: OA1H: OA7ri: RACR: RAXR: JFL(RSEI,RUNR); SLZR: SRA(AC) FfZ STZ SRA(AC) FFZ STZ; SRA(T) FFZ lOTZ SRA(AC) FFZ STC; SRA(T) FFC AOR(AC) STZ O\l2H: RSI::X: lOLJR(A) JLL(RACf,HAXF,SAXf,SLZf); OB4H: RACF: TZR(w) K7FFF JZH SNCF, SSCF); SAXR: JCf'( RSEX, RUNR) 7 JC~' (RSEI, RliNIO ; JFL(RSEX,RUNR); 550 551 3-72 CPU Design RECORD NUMBER OA2H uAJH 085H OSOH 08bH vS"/H 55~ 553 554 5~5 55b 557 55d 559 5&0 5&1 " ~b4 SO~ 50& SLZ~ NO.Up LMl(W) K~OOO ILRtl); SDIHX) ILRtT) TZIHw) K7fH JZIHFETCH) ; JZRtFETCH); JMp(RACF); JMp t RXF 1); JZF (SNCF , SSCf') ; SPECIAL CALL AND JUMP GRO~p--CURRENTLY CUNTAINS ONL~ tHE CALL TO to) A~D PUSH ~,B,E,p--ALL 4 UpCOD~S DO THE SAMg THING " OCgll: 04EH: 04Cti: 5&~ Soj SNCF SSCF RAXf RXF1 SAXf SCJii: LMl(R9) RRM; ACrHAC); SOR(M!f) JI'!P(CPSS); INCR~MENT AND SKIP GROUp--AGAIN " OpCUDES ARE DSED FOR ONE INS1RUCTION--LOCATIUN AT b+D IS l~CREMENTED " " ~67 !)6a 569 OCFH: OC9H: ODIIH: OA9H: OCIIH: OC8H: 570 571 572 5"/3 574 ISJG: NUSK: SKU': ALRtR9); LMI(R9) RMW; ACM(AC) Ffl; NU.Up R.. M IW.OP LMItp) ffl Jf'L (NOSII, 51111'); JZIH fETCH); JZRtFEl'CH) ; 57~ 57& " INpur AND OuTPUT--CURRENT VERSION DOES NOT DECODE INTO SUBGROUpS--ALSO ROW ZgRO IS USED TU SAVE CUDE " 577 51d 579 08~H: 580 008H: 028H: 089H: OIlAH: 006H: 088H: 581 58~ 583 584 585 INO: IND1: INX: OtD: OTD1: OTX: LMltR9) RIN; AC"! tAC J; SDRtA) LMItX) IUN LMltR9); ILlltA) ROT LMIlX) JZRtHTCH); JMp t IND1); JZRtFETCH) ; JMp(OTD1); 580 ~87 " INTERRUpT--UTILIZES CALL ROUTINES FOR REGISTER SAVING 588 110 DEVICE 10 REPRESENTS EXTERNAL INTERRUPT STRUCTURE START 8Y PUSHING OLD VALUE OF STATUS " 589 590 591 592 593 OFFH: OBFH: 05FH: INTER: DSM(S); ILR(Wl; LMItS) RioIM; 594 595 " READ INTERRUPTING LEVEL FROM EXTERNAL STRUCTURE " 59& 058H: 059H: 0&9H: 597 598 599 600 601 CLR(T); L!H(Tl R1N; LTM(AC) KOOFF ROT; " NOTE LEVEL REWRIrTEN " STORE PRIORITY IN W - SET C FLAG FOR PROPER LOADING OF REGISTERS " " 602 O&CH: 603 604 &05 60b ou7 60d 609 SDR(W) STCI INTERRUPT RUUfINE STARTING ADDRESS IS COMPUTED IN R9 " " U6DH: OoFH: OA~'H: [.~i l ( w) RRM; ACIHAC); SDRtIl9) JMPtCpG2); 610 b11 612 EOF NO PROGRAM EMRORS END Uf PROGRAM 3·73 o"'D c: Mle~OP~O~~A~ OH ~E~ORY IMA~E JCC 0090H C 2H IH 1H JfL' JZR 0072H • OOOFH OOOri b7 o - - -JLL- 0024H I JZN' JFL UOOFH • 0062H OOP2H 319 314 317 4 • 7H 6H JfL 584 8H 9H JFL 0042H JCC 0028H 302 580 AH 8H • 18.1 • 335 * 92 4 1 1 * .-------.-------. - JCR JCF' JCR' JCR' 3 2 1 2 JCR 0018H JC~ JC~ 0016H 0019H 504 511 2 510 512 513 * 517 • 1 1 1 • 1 • 74 I I OOOtH JCC 0011H 5UiI 7J ~ I * * JoO I * 36b 505 2 1 .-------f------·. - JCf * JCII' JCR * UO.OH' 0020H SOb * 1 • * 507 1 001AH * 001CH • JCt' 0002f! J.L OU02H 370 371 J72 3 J 373 . 3 OOOAH 0055H 0047H 0059" 182 201 206 597 598' 2 2 1 1 l' OOOfH JZII OOOFH JCC OOn.H JCR 006aH 1 JZR OOOFH JfL 514 • 1 * JZt<'*-------f-----~-* JCR * JeR 0062H 000.2H OOIOH OH EH FH JCC OOBOH JCC 001EH JCC 001FH 394 463 2 1 100 38 001UH JZR OOOFH Jce OU9lH JCC 009t'H 51a 515 4b4 104 1 2 I I JCR 002.H JLL 0014H Jee 004t'H 190 • 1 • JCII 0014H t-------.-------. eH JRL' JCF' JCC' JCC 007CH * OOoAH • 004BH • OOFCH 3 301 J~H OU2" SH JCC' JC~' JLL' JCF 0041H * uOIOH * u024H * 0022H 001H ----- • 31b • 4 • 2~b 4H - OOOFH • 002BH • 0029H 581 • 477' • 472' 476' 459 502 460 I l' 1* I' I 1 1 - JZ~ *t-------f-------. JZR J~R * JZR JZR JZ~ JZII Jec JCC JZR JZII'*-------*-------. JZR * Jec' JCC * 0004H OOOdH' U005H 0004H 0005H OOOI:lH 1i007H OOOIH • 0004H * OOOSH * 005CH 0040H OObEH OOUIlH OOjH • 310 • 330 380 411 J28 • 20b J09 329 ]01 406 295 293 29l 331 190 * HI * l • 2 • 3 2 2 2 2 2 2 2 3 2 2 2 l * 2 * -------------------.-------.------------------------------------:---------------,------.,-------,-------------------------------JZH JZR JCC JZH * JCC Jee Jec JCII JeM JCR JCR * JCR * JCC' JeC JCt< * JfL * 0070h OOOfH • 00F4H 0056H U04SH 004SH • 0049H • 005ijH • 003CH 0040H OOOEK Ou85H OOOCH 004CH 004411 * 0002H U04H • 564 * J04' JOS * 86 • 85 • 33b • 5&3 195 207 87 402 412 413 2U8 75 * 79 I • 1 • 1 • 1 • 1 • 1 1 I 1 1 I I 1 1 I 1 * .-------.-------. .-------.-------. JeR JZR JCII JCR JCC Jell Jet: JLL' JRL JCC JCC * JCR' JCR' JCR Jt'l. * JfL JZk OuUt"h JZ~ OOO~H .. 0060H 280 1 340 1 • J5b 1 * * ]SI 1 * 177 1 .-------f-------. - JZR JZM JZR' JPR 0030H 0030H 281 271 2Jo 237 2]8 1 1 1 I 1 JZM * JZR OilOFH OOOFH JZR OOOFt! JCR 0078H J~R' OUbH Jce OOFOH * 415 1. OOOFH Jec' Jt"L 0061H • 0062H 007H • 0024H * 007CH OOSlH * OOllH 2/1 * l' OOOFH 29~' 2~9' 1* 1* 250 1. 251 1. 255 1. = JCC OOfSH OOAOK 0056H 0058K 381 1 382 217 1 1 593 1 JCR * JZR * JRL * JCR 006CH • 0009H * 007CH 0060H JCII 006FH JZR OOOOH JCC OOArH 608 1 00&9" • 0051H • 005"H • 0050H • 243 599 • 1 1 1 • JCR .. Jce 0079H OOASH 262 1 25b 1. • 337' 1* .-------*-------. - 242 - - ,. • 341' 1* 189 • 1 * 184 • 603 607 407 1 • 1 1 1 JCC 0090H JLL 0064H 229 3 234 3 .-------.-------. JCC' JCR * Jec' JCC. 00F9H • 0078H • 00E8H • 00geH • • 26.1 ** ·3S6 * 388' 224 l' 1* l' J JLL • 0074H 248 J ================&=&*=======*=======*===8=========================================a= •• =====3.==== •••• ===================.::=_==_ ••••• m ca· ~ MICROPROGRAM MEMORl IMAGE 2H OH IH JZR OOOFH JCC 007111 008H * * 4H 3H JCC. 00E2H JZr. * UU~2H * * • I 270 1 277 • 121 I •• _____1 . f• • _______ 176 1 JCR 0091H JCC * * JCII 0021H II~ * JLL' JLL 00B4H • OUA4H 009H - * OO~311 7H 6H ~H JCC 0054H 91t Sit Jce 005511 Jce 0046H JCC 0057H Jee 0008H 181 2 194 205 579 I I I JCR. JeR 0098H •. 009~H Jell 0093H = JeR = 0094H S3b 534 1 All OOOFH 423 1 493 I 212 1 116 I JLL' JCR. JLL' JLL 0094H • 0099H • 0094H • 0004H JLL 00E4H Jee OOFEH JPX OO&OH 230 1 too I 1 110 1 JfL' JCC * JCR * JCR OOCAH • 007AH * OOAE" • OOASH JeR OOAAH Jec OU2EH JCII OVAOH 1 384 2 501 I 609 1 JCII' JZR * JCR * JCC OOBAH * OOOfH OOSEH. OOA:H JCF OOBAH JCII 0089H Jee 005fH * • 582 • I 69' ~49 540' ~32 ~H 1* 4 6' J 3 535 2 JeR OUAOH JCR OOA1H 0092H 544 1 JCF. JZR' JZII JFL 0092H' OOOFH • OOOFH 0092H • 540' 552' 553 542 l 'f _______ 2 •' _______ , t 1 ~43 545 ~47 '1 I 1 257 1 JCP 00B4H JRL' JCN' JilL' JZ. OOECn 00B1h' OOECH • OOA,1t JCR 0080H JeR OOIlOH JZF OOA4i1l JZH OOOFH ~51 ~54 5~0 ~~7 2 1 1 1 258 I 40, 1 OOElh' OUOfH OOOfH OOCOII • 429 • 148 • 149 • 427 I •f _______ 1 •f _______ 1 •• 1 OOfSH dOOFH OOCBH OODeH 0009H 1 439 1 447 1 448 1 * JZR OOOFH JCN OOOIH Jce oonH JCC 00E8H 153 2 1~4 1~5 2 146 2 4~2 2 JCII JZR OOEAH. OOOfH JZR OOOfH Jec OOfoH 161 3 166 171 454 ~ 2 2 I Jee * JCR 00E3H OOFAH Jce 00E5H JZR OOOFH 435 I 167 2 - - JCF 0092H OOAII . - - - - - __ f _______ • 2 JFL Jce 001l8H FH Jce 005EH 1 - EH JRL ooeCH 68 - DH CH Bit JZR' JZR' JZR' JLL 0008H 0006H • OOOoH 00e4h 529 1 512 585 • 583 1 * • _______ I • • .-______ t 528 - 530 I I 22~ .-------*-------* - • * 1 • * 385 • I • 500 1 * * 499 t-------*-------* - JZ~ 008H 55~ 2 120 I 12~' l' 130 I 404. 3' 400. 2' 498 I 39S 1 401 1. 592 1. OObCH 009AH 004EH 00e911 497 502 509 I 527 1 I I JCII OOODH • OODlH Jce 0020H JC~ OODCH JCR OUI)OH 450 2 458 481 2 I 483 1 JLL 00E4H JZR OOOFH JZII OOOFH 135 140 2 141 2 JeR 00F3H Jec OOSFH -------------------.-------.-------.-------------------------------:---------------.-----.. -------.-------------------------------JCII JZR JZII' JeR JCE JZR JCR JilL Jce * JZR' JZII Jec JZf Jee Jell JC~' OOClh ooer! Jec 0030H - - 484 I - - JCC vO~UII * 15& 393' 4~1 1 .t _______ l '* _______ 1*• JZII' JCR OOOFH' OOEOH OOEH 279 I JCR OOFlH * JZR' JZR JCII JZR OOOfH • OOODH • UODSH • OOOfH OOOIt HO • I * 278 _ * •* * 470 1 *-------f------_.* I JZK * Jce OOOfH • 0002H * 160 434 I Jce '" JCR oonH '" 00E9H JFL" Jell 00C2H .. oonH 570 1 * * * • • 417' 1* 392' 1* 4bB. 1* 80 I. 147.. 4= 244 1 • * 573 1 574 1 • *-------t-------* JCC' JZR * JC~ * 00A9H • OOOF" * • 479 • 4~0 1 • 1 • 1 ~71 • * * .-------*-------. - JLL * Jef * JCC JCC OODAH * 002AH • OOfSH 45~ • 471 • 1 • 00D4H 3B9 1 * .------_t _______ * - 1 • 134 2 - __ -2 - JeR * Jee. JCR * JCF 00F7H 004AH * OUf2H • OOSAH OOfH 416 I OOOfH • OOOfH 264 • 1* * 81 I. • 390. 1* 93 I. • 467 1. 591 O. aa.==a=a=====a=====*=======*= •• =K==*===============================a===========aa=.*.======*======.*:z:====.=.====.aa.aa=•••• =_::::: o"V c: C m cO ::s CPU Design APPENDIX C §ll' =il CENTRAL PROCESSOR SCHEMJ\TICS ~.r= ~ ~ r- ::B 1= ~ .~ C2? ,~~ ~ ~ ,r~~~ ~~e.: J:il l[ I i=- Eb..L1. § I lliJ=~ ,)ll ~I[ 1-1 Imfilll ~IIII - ~=! ~ N1d I~~ "Ul ~ .......... In~l~ - llY} I-t ~ J ~ e-+~I ~ ~ ::: . .~:~" e- ~ ~$.l .
Source Exif Data:File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.6 Linearized : No Create Date : 2016:08:25 21:32:27-08:00 Modify Date : 2016:08:25 21:39:04-07:00 XMP Toolkit : Adobe XMP Core 4.2.1-c041 52.342996, 2008/05/07-21:37:19 Metadata Date : 2016:08:25 21:39:04-07:00 Producer : Adobe Acrobat 9.0 Paper Capture Plug-in Format : application/pdf Document ID : uuid:bd3cf327-7bbf-954e-bf45-0f3b9ffe13ca Instance ID : uuid:485c2d25-a59a-9e4c-86a3-d7df162c6914 Page Layout : SinglePage Page Mode : UseOutlines Page Count : 151EXIF Metadata provided by EXIF.tools