General Instrument CP1600

Last updated
The Intellivision video game console was the only widespread application of the CP1600 family. Intellivision-Console-Set.jpg
The Intellivision video game console was the only widespread application of the CP1600 family.

The CP1600 is a 16-bit microprocessor created in a partnership between General Instrument and Honeywell, introduced in February 1975. [1] [2] It is one of the first single-chip 16-bit processors. The overall design bears a strong resemblance to the PDP-11.

Contents

Honeywell used the CP1600 in a number of process control computers and related systems, but its most widespread use was the CP1610 version in the Intellivision video game console. The system saw little other use due to General Instrument's marketing philosophy of seeking out customers only with very large orders and ignoring smaller customers. They also did not pursue a second source arrangement, which in the early days of microprocessor designs was a requirement for most potential customers. [3]

Description

Physical implementation

CP1600 pinout CP1600 PIN.png
CP1600 pinout

The CP1600 was implemented in enhancement mode nMOS and required +12, +5, -3 V power supplies; I/O connections except for the clocks were TTL (5 V) compatible. [lower-alpha 1] Each microstate or processor cycle uses four internal time slots generated by two non-overlapping clocks. A 3.3 MHz two-phase clock produces a 600 nanosecond microcycle. A 5 MHz two-phase clock produces a 400 nanosecond microcycle. Due to the voltage requirements of the clock signals, these had to be generated with external circuitry, as was common in this era of microprocessor design. [3]

In order to fit a 16-bit processor into a 40-pin dual in-line package (DIP) chip design, the CP1600 multiplexed its data and address pins. This allowed a set of 16 pins to be used for both address selection and reading and writing data, but to do so required two bus cycles. It also complicated the overall machine layout as buffers were required on the memory bus to latch the address while the processor switched the pins to data mode. The interface to the system was likewise complex, requiring three pins, BDIR, BC1 and BC2, which had to be decoded to understand what state the memory bus was in. [4]

A relatively uncommon feature of the CP1600 was its "external branch" concept. This was implemented as four pins on the chip, EBCA0 through EBCA3, which held the lower four bits of the BEXT instruction opcode. When this instruction is performed, the pins are activated and are used to indicate which of up to sixteen external systems should be sampled. Those devices would then respond to the query by setting EBCI pin, and the state of this pin would then determine whether the branch was taken or not. [4] This could be used, for instance, to test whether an external device had input data that needed to be processed; the processor could express the value "2" on the EBCA to sample device 2, call the BEXT, and that device would then respond by setting EBCI to true if there was data, causing the processor to jump into the code to read the data from that device.

This contrasts with the typical solution for handling external devices; most systems have the devices raise an interrupt which causes the processor to call special code, the interrupt handler, which then reads additional data to determine which device called the interrupt. This additional data may be presented using dedicated pins on the CPU, but is often presented as a value on the data bus. The interrupt handler code then decides which device driver to call to process the data. The CP1600 can implement this in fewer instructions; the interrupt handler is simply a series of BEXT instructions pointing at the associated drivers which it runs through one at a time until the device in question sets the EBCI and automatically cause the code to branch.

In total, implementing a system using the CP1600 often required additional support chips and logic. This included a system to multiplex sixteen signals into a single pin if the external branching was being used, and a three-bit-to-eight-line converter to avoid having to decode the bus status signals in external parts. [3]

Instruction set and registers

CP1600 registers
15141312111009080706050403020100(bit position)
Main registers
R0Register 0 / Accum
R1Register 1 / Indirect
R2Register 2 / Indirect
R3Register 3 / Indirect
R4Register 4 / Autoincrement
R5Register 5 / Autoincrement
R6 / SPRegister 6 / Stack Pointer
R7 / PCRegister 7 / Program Counter
Status flags
  S Z OV C Status Flags

Of the 16-bits available in an instruction opcode, the CP1600 used only 10. The remaining 6 bits were marked "Future Use." [5] The 10-bit instructions meant that code stored in a typical byte-oriented ROM would waste six bits per instruction. In the era of expensive memory, this was a significant issue. To address this, General Instrument also produced special 10-bit ROMs that efficiently stored the instructions. As data and addresses would still require 16-bit values, the 1600 included a special SDBD instruction that pieced together a 16-bit argument from two 10-bit ROM reads.

It appears that the unused 6 bits were intended to be used with co-processors, asserting the PCIT line which stalled the CPU until released. Early documentation shows two planned chips in the series, the 1616 which added the "Extended Instruction Set", and the 1618 "Priority Expander". [6]

The system included 87 basic instructions. Instructions might be one to three 16-bit words long depending on the addressing format being used. [4] The CP1600 did not support memory-memory indirect addressing (offsets), and looping was implemented using a dedicated adder that performed single-cycle changes to addresses in memory. The arithmetic logic unit (ALU) was 16-bit wide and could add two 16-bit internal registers in 2.4 microseconds, and memory to register add two 16-bit numbers in 3.2 microseconds. [7]

Like the PDP-11, the CP1600 used eight 16-bit "general purpose" processor registers, although they were not truly general-purpose as in modern designs. Only R0 had no pre-defined purpose and has been described as "the primary accumulator". [8] R1 through R3 could be used data pointers, generally used for register-based addressing ("implied addressing"). R4 and R5 auto-incremented after being accessed, which made them useful for looping over collections of data.

R6 was the stack pointer, R7 the program counter. Since both of these registers were visible to the programmer, they could be used to implement multiple stacks, or support more complex branching, among other things. There were no implicit stack instructions; when R6 was used in a "read" operation it decremented the address and then returned the data being pointed at, simulating a POP, and when it was used in a "write" it would write then post-increment (like R4/R5), simulating a PUSH.

I/O

As was common for the era, the CP1600 used memory-mapped I/O, as opposed to separate I/O pins as seen on the Intel systems. The use of a multiplexed bus and multi-state bus status made implementing I/O more difficult than would normally be the case on memory-mapped systems. This meant that implementations had to use latches or buffers to be able to interface with the CPU as it changed the bus from indicating an address to data. [8] This both negatively affected I/O performance and increased the complexity of the I/O devices.

To address this problem, GI supplied a series of 164x dedicated I/O chips that implemented the required bus logic. These included, for instance, the 1641 keyboard controller, the 1643 cassette tape controller, and the 1647 display control. [6] Most famous among these is the 1640 "Programmable Interface Controller", or PIC, which was designed to work in concert with the CP1600 and act as a channel controller for the CPU. As with the other 1640 series chips, the PIC internally decoded the bus logic, but also added a very simple processor that could run its own programs to perform I/O and direct memory access. For instance, one might send an instruction to a PIC on a floppy disk card to read data from a given sector on the disk. The PIC would then read the data into its own internal buffer, watch the bus for unused time when the bus status pins were all zero, and then send data to main memory. [6]

General Instrument provided cross-assemblers and simulators/debuggers compatible with 16-bit or larger minicomputers. [9] GI also provided a standalone CP1600 based microcomputer system in the GIC1600. [10]

Uses

The CP1610, used in game consoles such as the Champion 2711 [11] and most notably the Intellivision, is a compatible member of the 1600 microprocessor family. It uses a 2 MHz two-phase clock producing a 1 microsecond processor cycle. The CP1610 in the NTSC Intellivisions uses a 1.7897725 MHz two-phase clock. Although users of the CP1600 in the traditional computer role were relatively rare, over 3 million Intellivisions were produced from 1980 until the video game crash of 1983 led to the closing of the Intellivision production lines in 1984. [12]

Production of the CP1600 ended in 1985 when General Instrument spun off its microelectronics division to create Microchip Technology. By this point a number of 32-bit designs like the MC68000 were available that limited interest in a 16-bit design like the CP1600, and their main existing customer, the Intellivision, was no longer in production. Many other products were also end-of-lifed at the same time, and their primary product was the PIC.

Notes

  1. In contrast to the National Semiconductor PACE, for instance, which output 12V signals and required extensive interfacing to use with TTL components.

Related Research Articles

<span class="mw-page-title-main">Intel 8080</span> 8-bit microprocessor

The Intel 8080 ("eighty-eighty") is the second 8-bit microprocessor designed and manufactured by Intel. It first appeared in April 1974 and is an extended and enhanced variant of the earlier 8008 design, although without binary compatibility. The initial specified clock rate or frequency limit was 2 MHz, with common instructions using 4, 5, 7, 10, or 11 cycles. As a result, the processor is able to execute several hundred thousand instructions per second. Two faster variants, the 8080A-1 and 8080A-2, became available later with clock frequency limits of 3.125 MHz and 2.63 MHz respectively. The 8080 needs two support chips to function in most applications: the i8224 clock generator/driver and the i8228 bus controller. It is implemented in N-type metal–oxide–semiconductor logic (NMOS) using non-saturated enhancement mode transistors as loads thus demanding a +12 V and a −5 V voltage in addition to the main transistor–transistor logic (TTL) compatible +5 V.

<span class="mw-page-title-main">Intel 8086</span> 16-bit microprocessor

The 8086 is a 16-bit microprocessor chip designed by Intel between early 1976 and June 8, 1978, when it was released. The Intel 8088, released July 1, 1979, is a slightly modified chip with an external 8-bit data bus, and is notable as the processor used in the original IBM PC design.

<span class="mw-page-title-main">Intel 8088</span> Intel microprocessor model

The Intel 8088 microprocessor is a variant of the Intel 8086. Introduced on June 1, 1979, the 8088 has an eight-bit external data bus instead of the 16-bit bus of the 8086. The 16-bit registers and the one megabyte address range are unchanged, however. In fact, according to the Intel documentation, the 8086 and 8088 have the same execution unit (EU)—only the bus interface unit (BIU) is different. The 8088 was used in the original IBM PC and in IBM PC compatible clones.

<span class="mw-page-title-main">Microprocessor</span> Computer processor contained on an integrated-circuit chip

A microprocessor is a computer processor for which the data processing logic and control is included on a single integrated circuit (IC), or a small number of ICs. The microprocessor contains the arithmetic, logic, and control circuitry required to perform the functions of a computer's central processing unit (CPU). The IC is capable of interpreting and executing program instructions and performing arithmetic operations. The microprocessor is a multipurpose, clock-driven, register-based, digital integrated circuit that accepts binary data as input, processes it according to instructions stored in its memory, and provides results as output. Microprocessors contain both combinational logic and sequential digital logic, and operate on numbers and symbols represented in the binary number system.

<span class="mw-page-title-main">Microcontroller</span> Small computer on a single integrated circuit

A microcontroller or microcontroller unit (MCU) is a small computer on a single integrated circuit. A microcontroller contains one or more CPUs along with memory and programmable input/output peripherals. Program memory in the form of ferroelectric RAM, NOR flash or OTP ROM is also often included on chip, as well as a small amount of RAM. Microcontrollers are designed for embedded applications, in contrast to the microprocessors used in personal computers or other general purpose applications consisting of various discrete chips.

The NS32000, sometimes known as the 32k, is a series of microprocessors produced by National Semiconductor. The first member of the family came to market in 1982, briefly known as the 16032 before becoming the 32016. It was the first general-purpose microprocessor on the market that used 32-bit data throughout: the Motorola 68000 used 32-bit data but had a 16-bit ALU and thus took twice as long perform many operations. However, the 32016 contained many bugs and often could not be run at its rated speed. These problems, and the presence of the otherwise similar 68000 which had been available since 1980, led to little use in the market.

<span class="mw-page-title-main">Intel 8085</span> 8-bit microprocessor by Intel

The Intel 8085 ("eighty-eighty-five") is an 8-bit microprocessor produced by Intel and introduced in March 1976. It is the last 8-bit microprocessor developed by Intel.

<span class="mw-page-title-main">Intel 4040</span> 4-bit microprocessor introduced in 1974 by Intel

The Intel 4040 microprocessor was the successor to the Intel 4004, introduced in 1974. The 4040 employed a 10 μm silicon gate enhancement-load PMOS technology, was made up of 3,000 transistors and could execute approximately 62,000 instructions per second.

<span class="mw-page-title-main">PIC microcontrollers</span> Line of single-chip microprocessors from Microchip Technology

PIC is a family of microcontrollers made by Microchip Technology, derived from the PIC1650 originally developed by General Instrument's Microelectronics Division. The name PIC initially referred to Peripheral Interface Controller, and is currently expanded as Programmable Intelligent Computer. The first parts of the family were available in 1976; by 2013 the company had shipped more than twelve billion individual parts, used in a wide variety of embedded systems.

<span class="mw-page-title-main">Zilog eZ80</span> 8-bit microprocessor

The Zilog eZ80 is an 8-bit microprocessor from Zilog, introduced in 2001. eZ80 is an updated version of the company's first product, the Z80 microprocessor.

The TMS9900 was one of the first commercially available, single-chip 16-bit microprocessors. Introduced in June 1976, it implemented Texas Instruments' TI-990 minicomputer architecture in a single-chip format, and was initially used for low-end models of that lineup.

<span class="mw-page-title-main">Fairchild F8</span> 8-bit microprocessor first shipped in 1975

The Fairchild F8 is an 8-bit microprocessor system from Fairchild Semiconductor, announced in 1974 and shipped in 1975. The original processor family included four main 40-pin integrated circuits (ICs); the 3850 CPU which was the arithmetic logic unit, the 3851 Program Storage Unit (PSU) which contained 1 KB of program ROM and handled instruction decoding, and the optional 3852 Dynamic Memory Interface (DMI) or 3853 Static Memory Interface (SMI) to control additional RAM or ROM holding the user programs or data. The 3854 DMA was another optional system that added direct memory access into the RAM controlled by the 3852.

SPARC64 is a microprocessor developed by HAL Computer Systems and fabricated by Fujitsu. It implements the SPARC V9 instruction set architecture (ISA), the first microprocessor to do so. SPARC64 was HAL's first microprocessor and was the first in the SPARC64 brand. It operates at 101 and 118 MHz. The SPARC64 was used exclusively by Fujitsu in their systems; the first systems, the Fujitsu HALstation Model 330 and Model 350 workstations, were formally announced in September 1995 and were introduced in October 1995, two years late. It was succeeded by the SPARC64 II in 1996.

<span class="mw-page-title-main">National Semiconductor PACE</span>

National Semiconductor's IPC-16A PACE, short for "Processing and Control Element", was the first commercial single-chip 16-bit microprocessor, announced in late 1974. It was a single-chip implementation of their early 1973 five-chip IMP-16 architecture, which in turn had been inspired by the Data General Nova minicomputer. To the basic IMP-16, PACE added a new operational mode, "byte mode", which was useful for working with 8-bit data like ASCII text.

<span class="mw-page-title-main">UltraSPARC III</span> Microprocessor developed by Sun Microsystems

The UltraSPARC III, code-named "Cheetah", is a microprocessor that implements the SPARC V9 instruction set architecture (ISA) developed by Sun Microsystems and fabricated by Texas Instruments. It was introduced in 2001 and operates at 600 to 900 MHz. It was succeeded by the UltraSPARC IV in 2004. Gary Lauterbach was the chief architect.

<span class="mw-page-title-main">1801 series CPU</span>

The 1801 series CPUs were a family of 16-bit Soviet microprocessors based on the indigenous Elektronika NC microarchitecture cores, but binary compatible with DEC's PDP-11 machines. First released in 1980, various models and variants of the series were among the most popular Soviet microprocessors and dominated embedded systems and military applications of the 1980s. They were also used in widely different areas such as graphing calculators and industrial CNCs, but arguably their most well-known use was in several Soviet general-purpose mini- and microcomputer designs like the SM EVM, DVK, UKNC, and BK families. Due to being the CPU of the popular Elektronika BK home computer, used in its late years as a demo machine, as well as the DVK micros that often offered a first glimpse into the UNIX world, this processor achieved something of a cult status among Soviet and then Russian programmers, and to a lesser extent, international programmers.

In computer architecture, 16-bit integers, memory addresses, or other data units are those that are 16 bits wide. Also, 16-bit central processing unit (CPU) and arithmetic logic unit (ALU) architectures are those that are based on registers, address buses, or data buses of that size. 16-bit microcomputers are microcomputers that use 16-bit microprocessors.

The NEC μCOM series is a series of microprocessors and microcontrollers manufactured by NEC in the 1970s and 1980s. The initial entries in the series were custom-designed 4 and 16-bit designs, but later models in the series were mostly based on the Intel 8080 and Zilog Z80 8-bit designs, and later, the Intel 8086 16-bit design. Most of the line was replaced in 1984 by the NEC V20, an Intel 8088 clone.

The Mostek MK5065 was an 8-bit microprocessor introduced by Mostek in early 1974. The design was originally developed by Motorola for use in an Olivetti electronic calculator, and was licensed to Mostek for use in non-calculator roles. It featured three sets of processor registers, allowing it to switch to an interrupt handler in a single cycle, and a wait-for-data mode that aided direct memory access.

<span class="mw-page-title-main">Rockwell PPS-4</span> 4-bit microprocessor

The Rockwell PPS-4, short for "Parallel Processing System, 4-bit", was an early 4-bit microprocessor from Rockwell International, released in late 1972. Although practically unknown today, the PPS series was widely used in calculators, games and toys, and other embedded applications. Updated versions continued to be produced into the 1980s.

References

Citations

  1. https://www.edn.com/general-instruments-microprocessor-aimed-at-minicomputer-market/
  2. Belzer, Jack; Holzman, Albert G.; Kent, Allen (1978). Encyclopedia of Computer Science and Technology: Volume 10 - Linear and Matrix Algebra to Microorganisms: Computer-Assisted Identification. CRC Press. p. 402. ISBN   9780824722609.
  3. 1 2 3 Osborne 1981, p. 2.1.
  4. 1 2 3 Series1600 1975, 2.1.
  5. CP-1600 Microprocessor Users Manual (PDF) (S16DOC-CP 1600 -04 ed.). General Instruments. May 1975. Retrieved 5 July 2022.
  6. 1 2 3 Series1600 1975, p. i.
  7. Series1600 1975.
  8. 1 2 Lowell Turner, "General Instruments CP1600", 10 July 2001
  9. CP-1600 Cross Assembler Simulator Users Manual (PDF). General Instrument. November 1974.
  10. GIC1600 Microcomputer Users Manual (PDF). General Instrument. September 1975.
  11. "Champion 2711 |Pre-83". pre83.com. Retrieved 2022-05-23.
  12. "Mattel Intellivision - 1980-1984". ClassicGaming. IGN. Archived from the original on 2008-06-23. Retrieved 2008-05-16.

Bibliography