The goal of this project is to design and build a module for the RC2014™/RCBus and my Yelllow MSX Series, that can operate as a complete CPU module and drive the various available modules.
The eZ80 Zilog CPU is an updated version of Z80 CPU. It comes in a few variations with many on chip facilities in addition to the basic CPU, such as flash ROM, RAM, GPIO and other IO services. See the Wikipedia page for basic overview of the CPU (https://en.wikipedia.org/wiki/Zilog_eZ80)
This site is a mirror on my hackaday account at: https://hackaday.io/project/196330-ez80-cpu-for-rc2014-and-other-backplanes
Project Objectives
- Interface an eZ80 CPU to drive the various TTL 5V modules for the RC2014™ and other similar backplanes.
- Operate in a Dual-CPU mode - so that the original Z80 CPU and eZ80 can alternate access to the address/control and data buses.
- Figure out how to get software working easy in the system. Look at RomWBW and my Yellow MSX series. cross compiler tools etc.
- Utilise some extra pins on the 80 pin backplanes to support a direct 24 bit address range for a possible 'Large Linear Memory Module'.
- Make it work with RomWBW and my Yellow MSX configurations.
- Learn SMD and how to hand solder surface mounted components.
Design Details
I have journaled some of my thinking around the design and learnings in the project log. If this is the your first viewing of the project, you may want to read through these journal entries sorted by ‘Oldest’ first. Click here: Journal Log
Which eZ80?
The eZ80 was originally released around the turn of the century. There are a number of variants available today. They all comes with additional features within the chip, such as Flash ROM, RAM, GPIO, UART, I2C and timers. Some can run at up to 20Mhz and other up to 50Mhz.
The key feature of the CPU above the original Z80, is its ability to address a full 16MB of memory. It has 24 address lines (8 more then the 16 for the Z80). Its has features built in to help run existing Z80 software in 'compatible' mode on this chip.
I choose the eZ80F92 variant for my designed. It can operate at up to 20Mhz, has 128K of on-chip Flash ROM and 8K of RAM. And lots of other features: UARTS, GPIO, timers, SPI and i2c. I may not be able to use all these features in my design though.
Surface Mount Device challenge
I have never worked with SMD stuff before. The eZ80F92 comes in a 100 pin LQFP package. Its pins are very tiny - and with my aging eyes, might be a challenge for me to hand assemble. Of course, the PCB fabricator can assemble these things relativity cheaply - that may be an option.
But I don't want to make an all SMD module. So I intend to place the eZ80F92 on an adapter board, with pins, that can be inserted into a conventional module PCB.
Inspiration
Of course, this is not the first hobby, DIY, retro solution using the eZ80 CPU. There are a few out there that inspired me.
-
Agon - a cool little single board retro machine, with large following and lots of open source material available.
-
eZ-Tiny - it might be small, but it is still very capable.
- The Z20X computer - this seems to be abandon now and the original website is gone - but it gave me the inspiration for a CPU breakout module.
- RC2014 - where it all began for me.
- And my own Yellow MSX project.
Below is a 10 second demo of the first operating prototype, driving the RC2014 Digital IO module. It just flashes the LEDS, so nothing very impressive - just confirms that the eZ80 is able to do I/O operations to another module. Lots of updates and software required to enable full operation. Eg: running CP/M, Basic, and eventually getting it to work in my Yellow MSX configuration.
Latest Updates
2024/10/06
The eZ80 for RC kit is now available from my Tindie store.
Read more...
2024/09/29
This weekend, I made significant progress in making a PI Pico module connect to the eZ80. Enabling the ability to erase and write to the on-chip flash ROM. This will be an alternative and cheaper way to program the eZ80 compared to Zilog’s Smart Programmer.
Read more...
2024/09/22
I am very excited to announce that Wayne Warthen has accepted my pull requests for the eZ80 module into his mega RomWBW project. The eZ80 support is now part of the mainline code base. Still very much under development and early alpha - but official!
Read more...
Show Older Journal Posts…
2024/09/15
My primary goal with the eZ80 module is to achieve maximum compatibility with RC2014/RCBus modules and configurations. The eZ80 is a significantly faster processor. However, to ensure communication with older, slower retro modules, appropriate wait states must be introduced, which means some performance will be sacrificed. Despite this, the system remains much faster than a standard Z80 running at 7MHz.
Read more...
2024/09/15
Been working on understanding and writing code to re-flash the on-chip ROM from a CP/M application.
Read more...
2024/09/07
Last week, I submitted to the PCB manufacturer, an order for assembled CPU modules. This is the first time I have submitted an order to the factory to place and solder components onto one of my PCB designs. It was quick, easy and generally quite simple.
Read more...
2024/09/06
As the eZ80 CPU has some differences and additional control signals, I need to consider how some of these signals have to be mapped, and how their slight difference may impact compatibility. I have already had to ‘resolve’ issues with the timing of the WR
signal to ensure operation of the Bank Memory module and the Compact Flash module.
Read more...
2024/08/18
Been learning about i2c over the last few days. Today I managed to get the eZ80’s i2c interface to drive a little Adafruit 8x8 LED matrix i2c module.
Read more...
2024/08/17
Thought I should share a quick little demo video, showcasing some of the progress with porting RomWBW to the eZ80 CPU.
Read more...
2024/08/11
One issue I hit when I was attempting to port the V9958 driver code (TMS9918 compatible driver), was an apparent intermittent fault. After a few frustrating hours, I figured out that the V9958 was not being ‘reset’ on power up - and could not be initialised correctly by the CPU.
Read more...
2024/08/10
A new PCB arrived last week. This iteration, V1.5, has a number of improvements, including a small battery holder for CR1216/1225 3V Lithium Batteries.
Read more...
2024/07/30
In my previous post, I looked at how to improve compatibility with modules where the write logic is triggered on the positive edge of the WR
signal. This is important for Modules such at the Compact Flash and banking Memory Modules. But I have since found I introduced an issue with the next module I attempted to test with; the SN76489 sound module by J.B. Langston.
Read more...
2024/07/21
As shown in the previous post, I built a new eZ80 CPU module and paired with a newly designed Bus interface module. This new interface module has solved some critical compatibility issues I was having.
Read more...
2024/07/21
I have achieved some success since my self inflicted RTC issue.
Read more...
2024/07/16
Well this was an interesting day. Spent much of it getting the Real Time Clock working. Created code for the on-chip firmware to initialise and configure the on-chip RTC. Added a RTC driver in my RomWBW branch to interface with it. All working perfectly.
Read more...
2024/07/07
In addition to testing my recent changes around the data buffering, I also conducted some overclocking tests.
Read more...
2024/07/07
As mentioned in a previous post, I had issues with the RAM/ROM module not working when using 74HCT670 register chips. I was only able to get a booting system, if I used the HC variants of those chips (74HC670).
Read more...
2024/06/15
Porting RomWBW to support the eZ80 CPU requires a number of things to be achieved:
Read more...
2024/06/15
As mentioned in a previous post HBIOS booted on the eZ80, there was an issue with the Memory Module - where it would only work if I used the 74HC670 chips (instead of the similar 74HCT670). I think the problem for this might have to do with a problem I had discovered with the way I was buffering the Data lines (D0-D7) between the eZ80 and the backplane.
Read more...
2024/06/05
Just published the firmware code I am developing on github - its on my new account - dinoboards
Read more...
2024/05/31
Next part of the design is the RC2014/RCBus compatible interface PCB.
Read more...
2024/05/31
This is the heart of the design. A simple breakout PCB to map the various pins of the eZ80 to a standard 2.54mm (100mil) pin. Its a 4 layer PCB, (4 layer boards are very cheap these days). The 2 inner layers solid ground planes, which should help with cross talk and other noise issues.
Read more...
2024/05/31
Unlike memory, IO will be a bit more tricky.
Read more...
2024/05/31
The eZ80 has 4 configurable Chip Select signals (CS0 to CS3), in addition to the MREQ and IOREQ signals. The chip-select signals can be configured to activate for range of memory or IO requests.
Read more...
2024/05/31
I want this new eZ80 module to operate on a backplane, with an original Z80 module also. Dual CPU mode.
Read more...
2024/05/31
The eZ80 is kind of compatible with the Z80, but has a number of key differences that need to be considered for this to work:
Read more...