You can only go so far with a breadboard. Those things are great for quick and dirty prototypes and experimentation. But there comes a point when a breadboard is an unhealthy basis for a project.
And yes, I’m aware that many people have followed Ben Eater‘s lead in building 8-bit processors and 6502-based computers on breadboards. I include myself among them. But Ben’s an educator (and also amazingly gifted at wiring) and his main aim is imparting knowledge rather than building robust hardware. I’m sure he’d be the first to say that a breadboard is not the right foundation for long-term projects.
The breadboard incarnation of the Zolatron 64 already looks like a robot threw up in a recycling bin. The idea of adding anything else to this rat’s nest, in order to extend the Zolatron’s capabilities, fills me with dread. It’s time to get the basic hardware into a more solid form.
Back to KiCad
I’d started down this road some time back, having drawn the schematic for the main board – which carries the 6502 microprocessor, the RAM, the EEPROM, some address decoding and reset circuitry. But I abandoned my first attempt to design the PCB itself because … well, life.
I decided to give it another go. After a couple of false starts, it went so well that I ended up designing three more boards – a serial board, a 6522 VIA board and a backplane to connect them all together.
I’m not going to bore you with endless detail, but I do think it’s worth mentioning a few design decisions I made, some of which may turn out to be wrong.
The core of the machine
Above is the main board – the core of the machine. It has sockets for the 65C02 microprocessor, a socket for the AT28C64 RAM chip and a zero insertion force (ZIF) socket for the EEPROM.
This board has some things in common with the serial and VIA boards. They are all made to the same basic template, with the DIN 41612 connector at the bottom and, just above that, a row of pin headers breaking out the address bus, data bus and a few other signals. Those headers are there to make it easy to attach an oscilloscope or multimeter probe for debugging purposes. Also on that score, there’s a row of four header pins all connected to ground – for the probe ground wire.
All the boards are also equipped with four mounting holes in the same places. It occurred to me that if I couldn’t, or didn’t want to, use a backplane, I could always stack the boards using long headers in the holes intended for the DIN 41612 connectors. The mounting holes would make it easy to employ standoffs.
The final detail that all three boards have in common is that they are the same dimensions – a smidgen under 100x100mm – which makes them eligible for the cheapest fabrication cost at JLCPCB.
The right address
What you see above is the layout for the VIA board. This carries a single 65C22 chip from which I’m breaking out the two eight-bit ports, but not the CA/CB lines (I may add those on a later version).
The key feature here – which you’ll also find on the ACIA serial board – is the address decoding. The Zolatron’s address map includes eight 1KB areas that are decoded using a 74HC138 three-to-eight line decoder.
In theory, only one of these chips is required in the whole computer. And I did think about putting it (and an accompanying 74HC00 chip) on the main board. I would then have to run the eight selection signals over the backplane. And there are pins to spare. I could have done that. But I didn’t.
Instead, I decided that each I/O board would have its own decoding. So, you’ll find a 74HC00 and a 74HC138 on both the serial board and the VIA board, doing the exact same job. If that sounds wasteful, it gets worse.
The 74HC00 is a quad NAND gate chip, but I’m using only one gate, as an inverter for address line A13. Three-quarters of the chip is unused.
But there is one advantage to this approach. The output pins are connected to a row of header pins. Alongside this is a second row of pins, all of which are connected to the enable pin on the 65C22 VIA or 6551 ACIA chip, depending on which board you’re looking at. Using a jumper, I can select the address for the I/O board, So, for example, I could have three or four VIA boards all using the same PCB but mapped to different addresses. Same goes for the serial board.
The 74HC00 is still a bit wasteful. Maybe I could have put this on the main board and run a single line over the backplane. I might do that on the Zolatron Mk.II.
Here’s the serial board, by the way.
One board to bring them together
Finally, we come to the backplane. I had been looking at commercial products for this, but they were eye-wateringly expensive – a minimum for about €85 and quickly spiralling up from there. And they are frequently out of stock. So I figured I’d make my own.
There’s not much to this. Six DIN 41612 sockets, a barrel jack connector for the 5V power, a power LED (because, so far, the Zolatron is sadly lacking in blinkenlights) and lots of places to put capacitors, just in case. I’ve also broken out the address and data buses, plus some other signals. Cost? Under $12 for five boards (plus shipping).
This is the one board that really concerns me. I may have spaced the sockets a little too far apart (it’s 27mm spacing).. And none of the lines have termination resistors. I need to do more research on that topic. I’m hoping that, with a 1MHz clock speed, ringing caused by echoes on these lines won’t be too bad. But I can definitely see a more sophisticated backplane, with termination, in my future.
Combining all four boards, this represents the most complex PCB design project I’ve ever done.
The boards are ordered from JLCPCB and I can’t wait for them to arrive.
Will they work? It seems unlikely, doesn’t it?
How did the backplane design work out for you? Any changes you would make?
I’m considering a similar design
Actually, I’m in the process of preparing a new post about some upgrades to the various boards, including the backplane. But the short version is that it’s working out very well, even the version 1 board. That said, I’m running this machine at only 1MHz, so things like line echoes aren’t that big a deal. However, I’m glad I went for the backplane design because it has allowed me to iterate the other boards independently.