Time to get serious.
Well, Veronica is alive, and running code that we can put (very slowly) into memory. So far so good, but something has gotta give.
It’s time to starting making some of these bits (pardon the pun) solid, both so I can work on new interesting abilities for Veronica, and so I can have some damn breadboards back.
I spent a lot of time thinking about this, and planning out various strategies. I’ve settled on what’s called a Backplane Design. Essentially, every component of the machine is treated as a module that is plugged into a large master bus. Wikipedia has a nice treatment of this topic. Ideally, everything is completely general, so you could have multiple CPUs, multiple memory systems, or any other weird combination of components. In reality, that’s a lofty goal, and mine won’t be so fancy. This is in contrast to a motherboard design, where most major systems are on one large board, and you have a couple of connectors or slots for expansion in specific ways.
For me, the advantages of a Backplane design are:
- Modularity. Since I’m new at this computer design thing, and I’m definitely not an electrical engineer, it’s
likelyinevitable that I’m going to make a bunch of mistakes. A design like this lets me swap out pieces and rebuild them as I learn better ways to do things.
- Size. By distributing the pieces over a bunch of smaller boards, they all fit into the size limits of the free version of Eagle. I also have practical limits on how big a PCB I can etch.
- Warm fuzzies. The modular nature appeals to my inner engineer. My primary area of expertise is in software, so this way of thinking comes very naturally.
- Ignorance. I have a weird habit of wanting to figure everything out myself, without reading up on how other people solved the same problem. It’s less efficient, but more fun this way. Thus, I chose this idea because I thought it sounded like a good way to do things, then found out later that there’s actually a name for it.
So, my next step for Veronica will be to take all the major systems that I laid out on the breadboard, and convert them to backplane modules. First, I’m going to need the backplane itself. This is a passive backplane design. I had originally designed an active one (where the backplane itself regulates communication between modules), but I simply ran out of physical space on the board. I had to move the bus control logic onto the module cards. Here’s the Eagle file, and the schematic:
The slots are (old) standard IBM ISA connectors (two-sided, 31 pins per side). I’m using physical ISA connectors, but I have no idea how the ISA standard actually works. I’m making up my own bus system as I go along. Each slot has address lines, data lines, power, ground, and some control signals (labelled on the schematic, in the lower right). Of particular interest is the Bus Master pin. Each module must check this pin for permission to use the bus. All those pins are pulled low by default, and routed to a connector. Eventually, some sort of bus arbitration controller will be plugged in there. For now, I can just plug in some switches to get things going. I always try to do the bare minimum that will accomplish something, while allowing room for the future. It’s easy to get trapped in a cycle of analysis paralysis, trying to design the perfect system the first time through. Speaking of the future, there’s also a row of breakout pins at each end of the bus. These will allow for more slots to be added, and will also be great for debugging.
So, on to the PCB (and Eagle file):
I etched this PCB using my usual technique.
Even though the free version of Eagle limits you to about 100mm square, I wanted my backplane to be a little larger, for physical stability. I had the bright idea to simply mask off the extra real estate around my 100mm x 100mm mask, and center it on a 150mm x 150mm PCB. Well, that seemed like a bright idea, anyway.
As sort of an after-thought, I decided to put a little power supply on the backplane as well. Until now, I’ve been using my Juice Bridge on the breadboard, but that will be inconvenient once I start developing modules on this backplane. Having its own power seems like a good idea. The design is the same as I used for Cardio Power.
So, with the backplane out of the way, I can start making real parts for Veronica. Hooray!