The
National Semiconductor
National Semiconductor Corporation was an United States of America, American Semiconductor manufacturing, semiconductor manufacturer, which specialized in analogue electronics, analog devices and subsystems, formerly headquartered in Santa Clara, ...
COP8 is an 8-bit
CISC core
microcontroller
A microcontroller (MC, uC, or μC) or microcontroller unit (MCU) is a small computer on a single integrated circuit. A microcontroller contains one or more CPUs (processor cores) along with memory and programmable input/output peripherals. Pro ...
. COP8 is an enhancement to the earlier
COP400 4-bit microcontroller family. COP8 main features are:
* Large amount of
I/O pins
* Up to 32 KB of
Flash memory
Flash memory is an Integrated circuit, electronic Non-volatile memory, non-volatile computer memory storage medium that can be electrically erased and reprogrammed. The two main types of flash memory, NOR flash and NAND flash, are named for t ...
/
ROM
Rom, or ROM may refer to:
Biomechanics and medicine
* Risk of mortality, a medical classification to estimate the likelihood of death for a patient
* Rupture of membranes, a term used during pregnancy to describe a rupture of the amniotic sac
* ...
for code and data
* Very low
EMI
EMI Group Limited (formerly EMI Group plc until 2007; originally an initialism for Electric and Musical Industries, also referred to as EMI Records or simply EMI) was a British transnational conglomerate founded in March 1931 in London. At t ...
* Many integrated peripherals (meant as single chip design)
*
In-System Programming
* Free
assembler toolchain. Commercial
C compilers available
* Free Multitasking OS and
TCP/IP
The Internet protocol suite, commonly known as TCP/IP, is a framework for organizing the communication protocols used in the Internet and similar computer networks according to functional criteria. The foundational protocols in the suite are ...
stack
* Peak of 2 million instructions per second
The COP8 has a basic instruction cycle time 1/10 of the clock frequency; a maximum 10 MHz clock will result in a maximum 1 MHz instruction execution rate. (The 10 MHz clock is used directly by some timer peripherals.) The maximum instruction execution rate is 1 cycle per byte, and most 1-byte instructions operate in one instruction cycle. Some, particularly branch instructions, take one or two cycles more. Some models include a clock doubler, and although they still accept a maximum 10 MHz input clock, they internally double it to a 20 MHz master clock which then results in a 2 MHz instruction execution rate.
The chip is a
static logic design which can tolerate an arbitrarily slow clock; most models include a second
quartz clock
Quartz clocks and quartz watches are timepieces that use an electronic oscillator regulated by a quartz crystal to keep time. The crystal oscillator, controlled by the resonant mechanical vibrations of the quartz crystal, creates a signal with ...
crystal oscillator which can be used for the CPU clock while the high-speed clock is disabled to save power.
Registers and memory map
The COP8 uses separate instruction and data spaces (
Harvard architecture
The Harvard architecture is a computer architecture with separate computer storage, storage and signal pathways for Machine code, instructions and data. It is often contrasted with the von Neumann architecture, where program instructions and d ...
). Instruction address space is 15-bit (32 KiB maximum), while data addresses are 8-bit (256 bytes maximum, extended via bank-switching).
To allow software bugs to be caught, all invalid instruction addresses read as zero, which is a trap instruction. Invalid RAM above the stack reads as all-ones, which is an invalid address.
The CPU has an 8-bit accumulator and 15-bit
program counter
The program counter (PC), commonly called the instruction pointer (IP) in Intel x86 and Itanium microprocessors, and sometimes called the instruction address register (IAR), the instruction counter, or just part of the instruction sequencer, ...
. 16 additional 8-bit registers (R0–R15) and an 8-bit
program status word
The program status word (PSW) is a register that performs the function of a status register and program counter, and sometimes more. The term is also applied to a copy of the PSW in storage. This article only discusses the PSW in the IBM System/3 ...
are memory mapped. There are special instructions to access them, but general RAM access instructions may also be used.
The memory map is divided into half RAM and half control registers as follows:
If RAM is not banked, then R15 (S) is just another general-purpose register. If RAM is banked, then the low half of the data address space (addresses 0x00–7F) is directed to a RAM bank selected by S. The special purpose registers in the high half of the data address space are always visible. The data registers at 0xF''x'' can be used to copy data between banks.
RAM banks other than bank 0 have all 128 bytes available. The stack (addressed via the stack pointer) is always on bank 0, no matter how the S register is set.
Control transfers
In addition to 3-byte and instructions which can address the entire address space, 2-byte versions of these instructions, and , can jump within a 4K page. The instruction specifies the low 12 bits, and the high 3 bits of the PC are preserved. (These are intended primarily for models with up to 4K of ROM.) For short-distance branches, there are 63 1-byte instructions, , which perform PC-relative branches from PC−32 to PC+31. This is a 15-bit addition, and no page boundary requirements apply.
There are also jump indirect and load accumulator indirect instructions which use the accumulator contents as the low 8 bits of an address; the high 7 bits of the current PC are preserved.
Conditional branches ''per se'' do not exist, nor does the processor provide the
traditional ZCVN status flags, although the program status word contains
carry and
half-carry flag
A half-carry flag (also known as an auxiliary flag) is a condition flag bit in the status register of many CPU families, such as the Intel 8080, Zilog Z80, the x86, and the Atmel AVR series, among others. It indicates when a carry or borrow has ...
s for multi-byte arithmetic. Rather, there are a number of compare-and-skip instructions. For example, compares its two operands, and skips the following instruction if they are unequal. Any instruction may be skipped; it is not limited to branches.
An interesting extension of this mechanism is the return-and-skip instruction, which lets any subroutine conditionally skip the instruction following the call. This provides a very compact way to return a
boolean value
In mathematics and mathematical logic, Boolean algebra is a branch of algebra. It differs from elementary algebra in two ways. First, the values of the variables are the truth values ''true'' and ''false'', usually denoted by 1 and 0, whereas ...
from a subroutine.
Another feature unique to the COP8 architecture is the instruction. This one-byte instruction compares the low 4 bits of the B (memory pointer) register with a 4-bit immediate constant, and can be used to loop until B has reached the end of a small (up to 16 byte) buffer. There is also a one-byte instruction.
Instruction set
COP8 operands are listed in destination, source order. Most instructions have the accumulator A as one of the operands. The other operand is generally chosen from an 8-bit immediate value, an 8-bit RAM address, or , the RAM address selected by the B register. The and (exchange with accumulator) instructions also support RAM addressing by the X register () and post-inc/decrement variants (, , , ).
Indirect addressing via B is particularly fast, and can be done in the same cycle that the instruction is executed; even is a one-cycle instruction.
On the other hand, absolute RAM addressing is only directly encoded for five instructions:
LD A,''addr8''
,
X A,''addr8''
,
IFEQ ''addr8'',#''imm8''
,
LD ''addr8'',#''imm8''
, and
DIR ''addr8''
. The latter is a "direct addressing"
opcode prefix
In computing, an opcode prefix is an numeric value that alters the function of a following opcode. On some instruction set architectures multiple opcode prefixes are allowed sequentially, with all combining to alter the subsequent opcode. The opc ...
which may be prepended to any instruction with a operand, and changes the operand to the specified memory location. (Conditional-skip instructions skip the prefix and following instruction as a pair.) Using with the , and
LD #''imm8''
instructions is not documented, as the dedicated instructions are more efficient.
All "move" instructions are called (load) even if the destination is a memory address (
LD ''addr8'',#''imm8''
). Unusually, there are no instructions with the accumulator as a source; stores must be done with the instruction which ''exchanges'' the accumulator with the memory operand, storing A and loading the previous memory contents.
There are instructions to fetch from tables in ROM. These combine the high 7 bits of the program counter (PCU) with the accumulator, fetch a byte from that address, and place it in the accumulator ( instruction) or the low 8 bits of the program counter PCL ( instruction). Because the next instruction executed must be in the same 256-byte page of ROM as the table itself, a 256-entry table is not possible.
Notable uses
* The COP8 family is employed in the FMU-139
aerial bomb
An aerial bomb is a type of Explosive weapon, explosive or Incendiary device, incendiary weapon intended to travel through the Atmosphere of Earth, air on a predictable trajectory. Engineers usually develop such bombs to be dropped from an aircra ...
fuze
*The COP822 is employed in the M732A2
artillery
Artillery consists of ranged weapons that launch Ammunition, munitions far beyond the range and power of infantry firearms. Early artillery development focused on the ability to breach defensive walls and fortifications during sieges, and l ...
fuze
References
External links
National Semiconductor Embedded Microcontrollers(
CR16 and COP8)
microcontroller-faq/COP8 1995
*
{{DEFAULTSORT:Cop8
Microcontrollers