Close
0%
0%

Compact Z80 SBC

A Z80 single board computer designed to have as many features as possible built into a small PCB

Similar projects worth following
This project documents my take on a Z80 single board computer. It is built to be compact and usable, while still maintaining the feel of a vintage computer from its OS and chip selection. Currently, it is on its second version.

Feel free to do whatever you’d like with this project, as long as you give me credit in some way or another. You could try building a board yourself, expanding off of it, or using it as a reference or inspiration for a project of your own.
I absolutely love feedback and will always respond to questions/comments/criticisms.

More details (and photos) to come!

Features: 

- 6MHz Z80 processor 
- 32K of ROM, from $0000 to $7FFF 
- 32K of RAM, from $8000 to $FFFF 
- Z80 SIO (DART) controlling a full RS-232 serial port (57600 baud) 
- Z80 PIO controlling two channels, one connected through a darlington transistor array 
- Z80 CTC with four software-programmable timer/counter circuits 
- Modified NASCOM BASIC (Microsoft BASIC) interpreter 
- Z80 pin header 
- Open-source hardware!

Ideas for the future:

  • CP/M capability (I’ll need to research CP/M more)
  • An additional serial channel (coming soon!)
  • An external keyboard/video board to allow standalone functionality 
  • A memory expansion board
  • An expansion bus separate from the Z80 breakout pins
  • A programming port for the EEPROM for on-board programming(?)
  • Better PCB layout (in progress for V2.1)
  • Combining the RAM/ROM and I/O decoding chips (easily doable)
  • A version that supports 74HC chips that could (possibly) run off of a battery
    • A board that supports both LS and HC chips?
    • Potentially fixed in V2.1
  • Perhaps a better power connector and supply regulation

IC selection:

My Z80 SBC is designed around hardware that would have been available during the 1980s, with only a few exceptions. Despite this, however, all of the hardware to create the SBC is still manufactured and readily available, including the entire Z80 family and the 74LS family. Every part can be found on Digi-Key, except for the Z80 PIO and the SIO/0 (DART), which can both be found on Mouser. They can be expensive, so I have found that eBay is a good option to find chips for lower prices.

Important hardware info:

Note that the power input for the board is 5V only and is not regulated on the board. Anything higher than 5.5V will damage or destroy some ICs! I choose to use a cable such as this one so that I can use a USB port or AC adapter as a power source.

The Z80 DART is a version of the Z80 SIO with all synchronous functions dropped. It is hardly manufactured (although still active) and a CMOS version was never created. For this reason, it may be desirable to substitute the DART for a Z80 SIO/0. This chip is still produced in its CMOS variant and is nearly pin compatible with the DART. The difference between the chips is that the SIO/0 has pins 11 and 29 as SYNCA and SYNCB for synchronous operation, while the DART uses them for RIA and RIB (ring indicators for modem control). These pins are grounded on the SBC, so either the DART or SIO/0 will work just fine.

I have taken the time to create and layout both a schematic and PCB for this project, and they can be viewed in the project gallery and interacted with at my EasyEDA page here. I currently don't sell PCBs for the board, but you can have them ordered through JLCPCB or any other fabrication service. I may decide to sell boards on a Tindie page if anyone wants me to.

  • 1 × Z84C0006PEG Microprocessors, Microcontrollers, DSPs / Microprocessors (MPUs)
  • 1 × AT28C256 Memory ICs / EEPROMs
  • 1 × AS6C62256A Memory ICs / Static RAM (SRAM)
  • 1 × SN74LS139 Logic ICs / Decoders, Encoders, Multiplexers, Demultiplexers
  • 1 × Z84C3006PEG Clock and Timer ICs / Timer ICs

View all 18 components

  • LIF: Saving my ROM

    Jacob Hahn09/08/2019 at 05:37 0 comments

    Tonight I was looking around eBay to check for low prices on parts I need to build my SBC, and I came across a socket called a "Low Insertion Force" socket. These sockets are built for prototyping or chips that are made to be removed often and they are much cheaper than ZIF sockets. The standard IC sockets I use hold onto the chips inserted into them very tightly, which is great for any that I don't have to remove, but in my case is bad for my ROM IC. I need to remove it and replace it many times to experiment with code, so the tight grip could eventually start to cause damage from stress to the board and socket. With these LIF sockets, I can hold my IC in tightly and remove it easily when I need to, and I can fit them into a standard socket so I can remove them when I have my final code. I went ahead and bought 10 of them for less than a dollar a piece.

  • Project Update: More than a Basic Success

    Jacob Hahn09/01/2019 at 02:49 0 comments

    After much testing and thinking, I've (finally!) found the issue in my project preventing BASIC from running properly.

    After the test program worked, I reflashed BASIC to the EEPROM and started the SBC with it. To my surprise, it booted just fine, and BASIC worked as expected. However, when I clicked the reset button on the board to test if it would work a second time, nothing happened. I kept pressing it, and after about 10 tries, it finally reset properly. Strange. The last thing that I would have expected to have caused all of the issues I faced was a faulty push button. So, as confirmation, I attempted to reset the board by shorting the reset pin to GND, and it reset immediately every time I did it. Well, that explains it.

    NASCOM BASIC running on SBC V2

    Next up, I'm going to work on a way to test the CTC and do some basic timing operations.

  • Progress Update: Debugging the Hardware

    Jacob Hahn08/31/2019 at 02:27 0 comments

    Tonight, I got my multimeter and tested my prototype. Surprisingly, I couldn’t find any hardware faults, leaving only software as the culprit. Of course, this confused me, as the exact program had worked on my PCB V1.1.

    So, as a quick test, I wrote a little assembly software that would just send back whatever you typed over serial. After plugging the board in and typing a few characters, I found that it worked flawlessly! In my mind, this is a success: it shows that software, although simple, does run as I would expect it to while interfacing with the DART.

    The working test program running on SBC V2

    Finding this program working, my next step is to flash BASIC to the ROM chip and try to load it again. If it doesn’t work, I’ll have quite a bit of work to do.

    I’ll likely have an update tomorrow.

  • Progress Update #1

    Jacob Hahn08/30/2019 at 01:49 0 comments

    Hey everyone,

    I just thought I’d go ahead and give a quick update on how things are going with the project. Just tonight, I received enough parts to be able to make 2 more PCBs. I still haven’t been able to grab my multimeter to diagnose the non-working prototype, but I should be able to have it by tomorrow evening and test the board then. I’ll also take some time this weekend to solder at least one of the new boards and test it out.

    On another note, thanks for 10 likes. It might not seem like much, but as a sophomore in high school it’s more than I was expecting. I originally posted this project here to have a personal log that I could look at in the future and share with anyone interested. It’s completely outside of school and as such I need to be able to keep tabs on where I go with it, along with balancing time spent on it with schoolwork. It’s been an amazing way to learn about the workings of computers so far, along with being a fun hobby.

    Yesterday, I added a header in the details section for future plans. They’re goals that I want to try and work towards, and while I may not get to all of them, there are a few in there that I really want to try and do.

    Check back in a few days for when I finish soldering!

  • First PCBs and testing

    Jacob Hahn08/27/2019 at 04:56 2 comments

    A few days ago, I received an order of Z80 SBC PCBs for prototyping. I’ve been spending the past few days finding components and soldering, but I finished a board today.

    One of the PCBs I had made

    Unfortunately, I made the mistake of not soldering the large ground terminals of the serial port, thinking I wouldn’t stress the port enough to cause damage. Of course, once I plugged in a serial cable, the port flexed slightly, ripping the pad of pin 5 (ground) of the port off of the board. When I plugged the board in to test the output of BASIC, I got a few recognizable words but with lots of gibberish mixed in. I went ahead a used a enameled wire to connect pin 5 to a different ground pad, but the result was the same, so something else must have happened during the process of soldering or from the port damage.

    A PCB with everything soldered and a few ICs

    I checked the board thoroughly for any damage, such as broken traces, but could only find some scraped solder mask here and there on the back. Nothing major, and certainly nothing that would affect operation.

    Luckily, I already have some new components ordered and I should be able to have a new board made by this weekend.

    I’m also working on updating the PCB layout a bit for v2.1, including moving the ROM to the right a bit (so that I can use my IC prying tool with it!), a larger ground trace on the transistor array, and extended PIO pins. Thanks for the ideas, @Ken Yap!

    Stay tuned, as I’ll be adding details and info throughout the week.

    SBC V2 alongside SBC V1.1, my current working version

View all 5 project logs

Enjoy this project?

Share

Discussions

smartroad wrote 08/30/2019 at 07:17 point

Hi! Just wanted to say I love this project, especially if you can get video for it. It is something I wish more 8bit SBCs would look at! :)

  Are you sure? yes | no

Jacob Hahn wrote 08/30/2019 at 11:03 point

Thanks! I’ll work towards that!

  Are you sure? yes | no

Ken Yap wrote 08/26/2019 at 14:17 point

BTW @Jacob Hahn the inclusion of the ULN2803 is a brilliant idea but I hope you will put a thick ground trace for it, as it is rated for up to 500mA (driving motors etc becomes possible) and it would be a pity if the PCB trace wasn't adequate. Perhaps change from 8 to 10 pin connector to include ground and the common cathodes of the clamping diodes.

  Are you sure? yes | no

Jacob Hahn wrote 08/26/2019 at 15:40 point

Thanks for letting me know. I didn’t realize just how much current it could switch and was really just thinking about LEDs at the time. In the next PCB revision I’ll change the pins and widen the ground trace by a good amount.

  Are you sure? yes | no

Hpag wrote 08/26/2019 at 10:29 point

Hello, do this Z80 computer will support VGA output?

  Are you sure? yes | no

Ken Yap wrote 08/26/2019 at 10:48 point

Obviously you're meant to use the serial interface to talk to it. Or develop an external interface.

  Are you sure? yes | no

Jacob Hahn wrote 08/26/2019 at 11:12 point

Ken is correct here. There’s no video interface built into the board, but you could create a VGA board using the bus expansion pins.

  Are you sure? yes | no

Hpag wrote 08/26/2019 at 12:50 point

Are you guys planning to make a VGA board?

  Are you sure? yes | no

Ken Yap wrote 08/26/2019 at 13:25 point

Jacob can answer but leave me out of it, I'm just an interested observer. I've got most of the components but not sure if I want to make one. I'm guessing the board is > 100x100 mm so will be more expensive.

  Are you sure? yes | no

Hpag wrote 08/26/2019 at 13:31 point

what if you use a prototyping board for it?

  Are you sure? yes | no

Jacob Hahn wrote 08/26/2019 at 14:55 point

I plan to eventually just as a test. I’ll post here when I do.

  Are you sure? yes | no

Jacob Hahn wrote 08/26/2019 at 15:32 point

I just received some PCBs from JLCPCB the other day. This afternoon I’m gonna solder one and create a log based on it. They weren’t too expensive and are good quality.

  Are you sure? yes | no

Ken Yap wrote 08/26/2019 at 13:41 point

Count the number of pins of the ICs, that's 40x3 + 28x3, plus the smaller ones. No thank you, I'm so over point to point wiring. I'd rather pay and wait for PCBs in that case.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates