Recent from talks
Nothing was collected or created yet.
Zilog eZ80
View on WikipediaThis article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
|
![]() eZ80 in a TI-84 Plus CE with 256 KB on-chip RAM | |
| General information | |
|---|---|
| Launched | 2001[1] |
| Marketed by | Zilog |
| Designed by | Zilog |
| Common manufacturer |
|
| Performance | |
| Max. CPU clock rate | to 50 MHz |
| Data width | 8 |
| Address width | 24 |
| Architecture and classification | |
| Instruction set | Z80[a] |
| Extensions |
|
| History | |
| Predecessors | Zilog Z80 Zilog Z180 |
The Zilog eZ80 is an 8-bit microprocessor designed by Zilog as an updated version of the company's first product, the highly-successful Zilog Z80. The eZ80 is binary compatible with the Z80 instruction set, but it operates almost three times faster at the same clock frequency. eZ80 features an optional mode that expands memory addressing to 16 megabytes.
Design
[edit]
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
The eZ80 has a three-stage pipeline: fetch, decode, and execute. When an instruction changes the program counter, it flushes the instructions that the CPU is currently processing. Available at up to 50 MHz (2004), the performance is comparable to a Z80 clocked at 150 MHz if fast memory is used (i.e. no wait states for opcode fetches, for data, or for I/O) or even higher in some applications (a 16-bit addition is 11 times as fast as in the original). The original Z80-compatible 16-bit register configuration is supported. The eZ80 also supports direct continuous addressing of 16 MB of memory without a memory management unit, by extending most registers (HL, BC, DE, IX, IY, SP, and PC) from 16 to 24 bits. In order to do so, the CPU has a full 24-bit address mode called ADL mode. In ADL mode, all Z80 16-bit registers are extended to 24 bits with additional upper 8-bit registers. For example, the HL register pair is extended with an uppermost register called HLU. The resulting 24-bit multi-byte register is collectively accessed by its old name, HL. The upper registers cannot be accessed individually.[2] Although the eZ80 handles 24-bit math and moves, it only supports 8-bit operations for logic functions such as AND, OR, and XOR.
The processor has a 24-bit arithmetic unit and overlapped processing of several instructions (the three-stage pipeline) which are the two primary reasons for its speed. Unlike the older Z280 and Z380 it does not have (or need) a cache memory. Instead, it is intended to work with fast SRAM directly as main memory (as this had become much cheaper). Nor does it have the multiplexed bus of the Z280, making it as easy to work with (interface to) as the original Z80 and Z180, and equally predictable when it comes to exact execution times.
The chip has a memory interface that is similar to the original Z80, including the bus request/acknowledge pins, and adds four integrated chip selects. Versions are available with on-chip flash memory and on-chip zero wait-state SRAM (up to 256 KB flash memory and 16 KB SRAM) but there are also external buses on all models.
Variants
[edit]The eZ80 family includes several variants offering different levels of integration. These single-chip computers retain an external address and data bus so they can function as general-purpose microprocessors despite their focus on specific applications.
The eZ80Acclaim! line integrates up to 128 KB of flash memory and 8 KB of SRAM, operating at speeds up to 20 MHz.[3][4]
The eZ80AcclaimPlus! adds an Ethernet controller and TCP/IP stack to the eZ80Acclaim! features, reaching speeds of up to 50 MHz.[5]
Use in commercial products
[edit]The TI-84 Plus CE graphing calculator utilizes the eZ80 in 24-bit address mode at 48 MHz.[6] The eZ80L92 processor powers the ST Robotics robot controller, running at 50 MHz.[7]
Notes
[edit]- ^ Backwards compatible with Intel 8080
References
[edit]- ^ Proven, Liam (April 26, 2024). "The eight-bit Z80 is dead. Long live the 16-bit Z80!". The Register. Retrieved May 29, 2024.
- ^ eZ80 CPU User Manual (PDF) (15, April 2015 ed.). Zilog. July 15, 2009. Archived (PDF) from the original on June 8, 2011. Retrieved June 16, 2024.
- ^ "eZ80Acclaim! eZ80F92/eZ80F93 Flash MCU Product Specification" (PDF). San Jose, California: Zilog. May 2008. Archived (PDF) from the original on June 8, 2011. Retrieved July 15, 2009.
- ^ "eZ80Acclaim! eZ80F91 Flash MCU Product Specification" (PDF). San Jose, California: Zilog. May 2008. Retrieved July 15, 2009.
- ^ "eZ80AcclaimPlus! eZ80F91 ASSP Product Specification" (PDF). San Jose, California: Zilog. July 2007. Retrieved July 15, 2009.
- ^ Connatser, Matthew (May 26, 2024). "Bored math students can now enjoy Sonic 2 on TI-84 Plus CE". The Register. Archived from the original on May 29, 2024. Retrieved May 29, 2024.
- ^ "R12 Robot Manual" (PDF). ST Robotics. p. 8. Archived from the original (PDF) on May 29, 2024. Retrieved May 29, 2024.
- "eZ80 CPU Zilog Real-Time Kernel Reference Manual" (PDF). San Jose, California: Zilog. July 2007. Retrieved July 15, 2009.
- "eZ80 CPU Zilog Real-Time Kernel User Manual" (PDF). San Jose, California: Zilog. July 2007. Retrieved July 15, 2009.
- "eZ80 CPU Zilog TCP/IP Stack API Reference Manual" (PDF). San Jose, California: Zilog. July 2007. Retrieved July 15, 2009.
Further reading
[edit]- Cantrell, Tom (February 2002). "eZ Embedded Web". Circuit Cellar (139). Archived from the original on June 10, 2011. Retrieved July 15, 2009.
- Harston, J.G. (April 15, 1998). "Full eZ80 Opcode List". Retrieved June 6, 2025.
Zilog eZ80
View on GrokipediaOverview
Development and Release
The Zilog eZ80 was introduced in April 2001 as a direct successor to the original Z80 microprocessor, marking Zilog's effort to extend the architecture's relevance in evolving embedded systems. Developed to overcome the Z80's constraints in speed and memory addressing for contemporary applications, the eZ80 maintained full binary compatibility with its predecessor while introducing enhancements like a pipelined design and support for up to 16 MB of linear address space. This evolution was driven by the need to support networked and communication-intensive tasks, such as serving web pages over TCP/IP for remote monitoring and control, thereby revolutionizing how embedded devices interacted with the internet era.[3] Initial production and announcement occurred in 2001, with the eZ80 positioned as a system-on-a-chip solution tailored for cost-sensitive markets requiring reliable 8-bit processing. Zilog emphasized the eZ80's role within the broader Z80 family extensions, aiming to prolong the ecosystem's longevity amid the shift toward more complex, connected embedded applications. By preserving the Z80's instruction set, the eZ80 allowed developers to leverage decades of existing software and tools without redesign, facilitating seamless upgrades in industrial and consumer devices.[4] A key milestone came in 2004, when Zilog released variants of the eZ80 capable of operating at up to 50 MHz clock speeds, significantly boosting performance for demanding embedded tasks while upholding compatibility. This upgrade reflected Zilog's ongoing commitment to refining the architecture for higher throughput in memory-intensive environments, solidifying the eZ80's place as a bridge between legacy 8-bit systems and modern requirements.[5]Compatibility and Improvements over Z80
The eZ80 maintains full binary compatibility with the original Z80 microprocessor, enabling seamless execution of existing Z80 software without modification or recompilation. This upward compatibility extends to the Z80 instruction set, including all opcodes, registers, and addressing modes in Z80 mode, allowing the eZ80 to serve as a drop-in replacement in legacy systems such as embedded controllers and classic computing applications. Zilog's documentation confirms that Z80 and Z180 programs run directly on the eZ80 with minimal adjustments, preserving the vast ecosystem of Z80 code developed over decades.[1][6] Key enhancements over the Z80 focus on performance and memory capabilities while retaining core architectural fidelity. At the same clock frequency, the eZ80 executes instructions up to four times faster than the Z80, primarily due to an optimized three-stage instruction pipeline (fetch, decode, execute) that overlaps operations, enabling a throughput of one instruction per cycle for many common instructions and reducing overall cycle counts. For instance, operations like load and arithmetic instructions that take multiple cycles on the Z80 benefit from this efficiency, achieving effective speeds equivalent to a Z80 running at four times the clock rate in typical workloads. Additionally, the eZ80 introduces 24-bit addressing in its Address Load (ADL) mode, expanding the addressable memory from the Z80's 64 KB limit to 16 MB, which supports larger codebases and data structures in modern embedded designs without requiring segmented memory management.[1][6][7] The eZ80 supports dynamic mode switching between Z80 mode (16-bit addressing for legacy compatibility) and ADL mode (24-bit addressing for extended capabilities), facilitated by instruction suffixes such as .S for Z80 mode and .L for ADL mode, or persistent changes via jumps and calls. This dual-mode operation allows developers to mix legacy Z80 code with enhanced routines, using the Z80 mode's 16-bit stack pointer (SPS) for backward-compatible stacks and the ADL mode's 24-bit stack pointer (SPL) for larger memory operations, all without introducing new instructions—only extended register interpretations. Furthermore, the eZ80's architectural improvements yield lower power consumption per instruction compared to the Z80 at equivalent speeds, as the enhanced pipeline and efficiency reduce the energy required for computation, enabling better battery life in power-constrained applications.[1][7][6]Architecture
Instruction Set and Addressing Modes
The eZ80 microprocessor retains the complete Z80 instruction set, comprising 158 instructions that encompass 8-bit logic operations, 16-bit arithmetic, and bit manipulation capabilities, ensuring full binary compatibility with existing Z80 software. This set includes the original Z80's arithmetic, logical, data transfer, and control instructions, with no new opcodes added to maintain seamless legacy support. However, the eZ80 enhances execution efficiency through optimized internal paths, notably enabling single-cycle instruction fetches in its extended addressing mode, which reduces overhead compared to the original Z80's multi-cycle fetches.[1][8] A key architectural feature of the eZ80 is its dual addressing modes, which balance backward compatibility with expanded memory access. In Z80 mode, the processor operates with 16-bit addressing, limiting the address space to 64 KB as in the original Z80, suitable for legacy applications. Conversely, Address Large (ADL) mode extends this to 24-bit addressing, supporting a 16 MB address space via banked memory segments, allowing modern embedded systems to handle larger code and data requirements without altering core program logic. Mode selection is controlled by a dedicated mode bit (MADL) in the CPU state or through instruction suffixes—.S for Z80 mode and .L for ADL mode—enabling dynamic switching within software.[1] Memory banking is supported in Z80 mode via the 8-bit MBASE register, which selects among 256 banks of 64 KB each to extend the address space to 16 MB while maintaining compatibility. In ADL mode, the processor uses direct 24-bit linear addressing for the full 16 MB space without banking.[1] To support these modes, the eZ80 includes specialized instructions for efficient memory operations across banks, such as LDIRX, LDDRX, and similar extended block transfer variants that handle inter-bank data movement with automatic bank switching. Conditional execution instructions can also depend on the current mode, allowing code to branch or adapt based on whether Z80 or ADL addressing is active, thereby optimizing performance in mixed-mode environments while upholding Z80 instruction semantics.[1]Registers and Data Processing
The eZ80 microprocessor retains the Z80's register architecture for compatibility while introducing extensions for enhanced performance, particularly in its Address Long (ADL) mode that supports 24-bit operations. The core register file consists of eight 8-bit general-purpose registers in the main set: the accumulator A and the pairs B/C, D/E, H/L, which can be accessed individually or as 16-bit pairs BC, DE, and HL. An alternate register set (A', B', C', D', E', H', L', and corresponding pairs BC', DE', HL') provides a duplicate for rapid context switching, preserving Z80 compatibility through instructions like EX and EXX that swap the main and alternate sets.[1] In ADL mode, these registers extend to 24 bits via upper-byte extensions: for example, the HL pair becomes a 24-bit register by appending HLU (the high-order byte) to form H L HLU, similarly for BCU with BC and DEU with DE. The index registers IX and IY, along with their alternate counterparts IX' and IY', also extend to 24 bits in ADL mode using IXU and IYU upper bytes, enabling indexed addressing across a 16 MB linear address space. The stack pointer SP operates as a 16-bit register (SPS) in Z80 compatibility mode but switches to a 24-bit register (SPL) in ADL mode, adjusting stack operations like PUSH and POP to handle 3-byte entries instead of 2-byte ones. The ADL mode is controlled by a dedicated mode bit in the CPU state, set via instructions such as SETMIX (to enable ADL) or RSMIX (to disable it), which dynamically alters register widths and addressing behavior without residing in the flags register.[1] The flags register F (and its alternate F') mirrors the Z80 design with six active bits: S (sign), Z (zero), H (half-carry), P/V (parity/overflow), N (add/subtract), and C (carry), updated by arithmetic, logical, and bit operations; bits 3 and 5 remain unused for compatibility. Data processing occurs through an 8-bit external data path but leverages a 24-bit internal arithmetic logic unit (ALU) capable of handling operands in 8-bit, 16-bit, or 24-bit formats, depending on the mode. Core arithmetic instructions include ADD, SUB, ADC, and SBC for addition and subtraction (with carry options), which operate on the extended registers in ADL mode while setting the N flag to 0 for addition and 1 for subtraction; multiplication is supported via the MLT instruction, performing an 8-bit by 8-bit operation to yield a 16-bit result stored in the HL pair. These operations prioritize efficiency in extended modes, allowing seamless transitions between 16-bit Z80-compatible processing and 24-bit computations for larger data handling.[1] Interrupt handling follows Z80 semantics, using the stack for saving PC and flags during maskable (IM 0, 1, or 2) or non-maskable interrupts. The alternate register set can be used by software for additional context switching if needed. In vectored interrupt mode (IM 2), the 8-bit I register is combined with an 8-bit external or on-chip vector to form a 16-bit pointer into a jump table, but in ADL mode, this resolves to full 24-bit addresses for the interrupt service routine entry point. The RETI and RETN instructions restore the program counter and flags from the stack while signaling the end of the interrupt.[1]Design Features
Pipeline and Performance
The eZ80 employs a three-stage pipeline architecture comprising fetch, decode, and execute stages, which overlaps instruction processing to enhance throughput. The fetch stage retrieves opcodes from memory in a single cycle when using the Address Large (ADL) mode, while the decode stage interprets instructions and the execute stage performs ALU operations, memory accesses, and other tasks. This design flushes the pipeline on program counter changes, such as jumps or interrupts, but minimizes stalls in sequential execution. Although the eZ80 lacks an on-chip data cache, it supports zero-wait-state operation with fast external SRAM, optimizing performance for embedded systems.[1][6] Clock speeds for the eZ80 reach up to 50 MHz in standard configurations, providing a substantial boost over the original Z80's typical 4–20 MHz range. At equivalent clock frequencies and with zero-wait-state memory, the eZ80 achieves up to four times the execution speed of the Z80, thanks to its pipelined design, wider opcode decoding, and reduced internal latencies. This efficiency stems from architectural enhancements like single-cycle multiply-accumulate operations and streamlined addressing modes, yielding effective performance comparable to higher-clocked Z80 systems in optimized environments.[1][6][9] Throughput improvements are evident in the eZ80's ability to rival 16-bit microprocessors in processing power, with the pipeline enabling up to four times the Z80's speed at the same clock due to fewer wait states and broader instruction handling. For instance, common instructions like ADD A, r complete in one cycle, while block transfers benefit from pipelined prefetching. These gains support embedded workloads without exhaustive benchmarking details, focusing on reliable, low-latency operation.[1][6] Power consumption remains low for embedded applications, typically ranging from 100 to 200 mW at 50 MHz and 3.3 V supply, varying with wait states (0–7) and active peripherals—e.g., around 40 mA (132 mW) in minimal configurations without cooling requirements. This efficiency arises from the optimized pipeline and 8/16/24-bit selectable data widths, balancing performance and energy use.[6]Memory Interface and Peripherals
The eZ80 microprocessor maintains Z80 compatibility in its external memory bus interface while extending it to support 24-bit addressing for up to 16 MB of addressable space, utilizing an 8-bit data bus with a separate 24-bit address bus. This bus structure allows seamless integration with legacy Z80 peripherals and memory, with the addition of an 8-bit MBASE register that prepends bank selection in Z80 mode to enable dynamic switching across 256 individual 64 KB memory banks without interrupting CPU execution. In ADL mode, the bus operates with full 24-bit linear addressing, leveraging extended registers like the 24-bit program counter (PC) and stack pointer (SP) for direct access to the entire memory range.[1] The memory interface includes four programmable chip selects (CS0 through CS3), each configurable for ROM, RAM, or I/O regions on 64 KB or 256-byte boundaries, providing glueless external memory support with priority ordering (CS0 highest). Each chip select features an independent wait-state generator capable of inserting 0 to 7 wait states to accommodate slower external memories or peripherals, and an external WAIT input pin allows further timing adjustments. Integrated variants of the eZ80, such as those in the eZ80Acclaim family, incorporate up to 256 KB of on-chip flash memory and 16 KB of SRAM, which can be relocated within the 16 MB space using upper address registers, enhancing system integration while preserving the core's external bus flexibility.[10] For I/O operations, the eZ80 provides a dedicated 64 KB I/O port space addressed via 16-bit port numbers, accessible through Z80-compatible IN, OUT, and TSTIO instructions using registers like BC or DE for indirect addressing. Microcontroller implementations optionally include a DMA controller to handle block transfers between memory and peripherals, such as Ethernet MAC buffers, bypassing the CPU core for efficient data movement. Additional optional peripherals in these variants encompass two UARTs supporting baud rates up to 115.2 kbps with 16-byte FIFOs and IrDA compatibility, four 16-bit timers for PWM and capture functions, and up to 32 GPIO pins configurable for input/output with interrupt capabilities.[1][10][6] Bus arbitration employs standard Z80-derived BUSREQ and BUSACK signals, enabling external masters like DMA controllers to request bus control after the current instruction completes, with priority given to the CPU over interrupts and DMA requests to minimize execution stalls. Interrupt handling integrates with this arbitration, using vectored modes (0, 1, or 2) and separate 16-bit or 24-bit stack pointers depending on the addressing mode, ensuring low-latency response without prolonged bus contention.[1]Variants
eZ80 Core Microprocessors
The eZ80 core microprocessors represent Zilog's standalone CPU offerings based on the eZ80 architecture, designed for integration into custom systems requiring high-performance 8-bit processing without extensive on-chip peripherals. These variants emphasize the core's enhanced capabilities, including up to 50 MHz operation and support for both 16-bit Z80-compatible addressing (64 KB space) and 24-bit ADL mode (16 MB linear addressing), while targeting flexible board-level designs.[1][6] The basic eZ80, exemplified by the eZ80190 variant, functions as a pure CPU core operating at up to 50 MHz with minimal on-chip resources, including 8 KB high-speed data SRAM and no integrated flash memory, making it suitable for custom designs where external memory and peripherals are provided. It includes essential features like 32 general-purpose I/O pins, six counter/timers, and a watchdog timer, but focuses on core execution efficiency with single-cycle instruction fetches. The eZ80190 is housed in a 100-pin LQFP package and operates on a 3.3 V core supply with 5 V tolerant I/O pins.[11][6] Development for eZ80 core microprocessors is supported by Zilog's ZDS II IDE, which provides assembly and C compiler tools, along with JTAG-based debugging via the Zilog Debug Interface (ZDI) for real-time code execution and breakpoints. These tools enable seamless programming in both Z80 and ADL modes, with assemblers supporting directives like.ASSUME ADL for 24-bit addressing.[1][6]

