home   |   primer index   |   1. Intro: Why 6502?   |   2. addr decode   |   3. mem map req.s   |   4. IRQ/NMI conx   |   5. 74 families & timing   |   6. clk gen   |   7. RST   |   8. mystery pins   |   9. AC performance construction   |   10. exp bus & interfaces   |   11. get more on a board   |   12. WW Q&A   |   13. custom PCBs   |   14. I/O ICs   |   15. displays   |   16. getting 65xx parts   |   17. project steps   |   18. program-writing   |   19. debugging   |   20. pgm tips   |   21. workbench equip   |   22. circuit potpourri

6502 PRIMER: Building your own 6502 computer

Construction: Avoiding AC-Performance Problems

All links verified or updated 12/13/20.

#1:  Yes, number one!  Avoid plug-in (solderless) breadboards for this kind of work!  These are the worst of all worlds for computer performance.  They require the connecting wires to be the longest of any method (meaning most inductance), have extra capacitance between neighboring tie points, and there's no chance of getting anything even remotely resembling a ground plane.  (And no, a piece of sheet metal underneath, connected to ground, does not qualify.  Not at all!)  Unfortunately people insist on using solderless breadboards for computer construction, and we frequently find the resulting problems reported on the forum with pleas for help to figure it out, when the builder has the connections right but the solderless breadboards' stray inductance and capacitance are keeping his circuit from working.  It causes so much grief, yet the builder has a hard time believing that that's the problem!

#2:  Do not run the processor's own buses off the board (as for an expansion bus) unless you plan to never go over a couple of MHz.  This is expanded on in the next section, Expansion Buses and Interfaces.  (This forum topic, also mentioned elsewhere here, discusses getting good high-speed performance, and, on page 2, taking advantage of synchronous serial interfaces as much as possible.)

#3:  An actual custom PC board is best, preferably a multilayer with at least a ground plane (no, pours & fills don't count—they're pretty worthless for this kind of work).  Otherwise, use wire-wrap.  Admittedly, wire wrap (WW) supplies have become more expensive since I originally wrote this; but WW gives good density and lets you get parts close together so the connections are short and relatively straight, improving AC performance.  Here is the bottom of my primary workbench computer:

bottom of Bench-1

and of a small Commodore 64 expansion board I made 15 years ago:

bottom of C64 expansion board

These don't have any plane (and from the oscilloscope displays of waveforms with lots of ringing, the larger, faster board above could sure use one), but it would be all the better if you have at least a ground plane, which you can get inexpensively with protoboard like Twin Industries' 8100-series boards (see this page and click on "8100 Series Plated Through Holes - Single Power/Ground Plane," if not also a Vcc (or Vdd—same thing) plane (ie, a power plane) which you can get inexpensively with their 8200-series boards (see the same page, and click on "8200 Series Plated Through Holes - Dual Power/Ground Plane"), shown here:

Twin Industries double-plane protoboard

To make the ground plane work for you to best advantage, before you start wire-wrapping an IC socket, connect the ground pin(s) to the ground plane immediately around it by soldering a tiny piece of wire, or a tiny washer if you can get the right size (I think Vector used to sell them), from the base of the pin to the plane around it so the total hop is less than 1/16".  Having longer pieces of wire to make it easier will partly defeat the purpose.

If you go for a power plane (on the component side of the board) in addition to the ground plane (on the wire side of the board), it gets a little trickier.  Probably the best for performance (but hard to do) is to put a strand of wire through the hole before putting the socket in, and solder the strand to the power plane without getting solder in the hole itself.  The strand needs to be small enough that the socked pin will still fit in the hole with it.  After the socket is in, you can solder the strand to the pin (which will then fill the hole with solder) and cut the end of the strand short, or leave it long enough to wrap with the wire-wrap tool.  Keep the solder off the upper part of the pin so you will be able to wire-wrap it later if necessary.

Next, add the wires that distribute the clock signal, before you do the other wires, so that you can make the clock-distribution wires lie flat against the ground plane, rather than elevated somewhat.

You may be asking, "So what's this about groundbounce and other potential problems?  Do I need to worry about it?"

I see a lot of ringing and groundbounce on the oscilloscope with my home-made computers so I know it doesn't take 50 or 100MHz to run into trouble.  What I get is pretty astonishing, and I don't think the rise and fall times could get much faster without bringing orderly operation to a halt.  Note that rise and fall times do come before actual clock frequencies in this regard.  Jack Ganssle's YouTube video, "I Only Probed the Board With a Scope - Why Did My Board Crash?," the part from about 2:20 to 3:00, graphically shows on a high-end oscilloscope that the ugly ringing remains unaffected as he turns the clock frequency up and down.

When I built the one shown above, I did not yet know as much about high-speed digital (or what might be "high-speed" for this type of construction), even though I worked in the mid 1980's in applications engineering at a company that made UHF and VHF power transistors.  (I also initially used slower parts and a lower clock speed on the workbench computer.)  My next, faster one, if not on a multilayer PCB, will be built with PLCCs instead of DIPs, on perfboard with power and ground planes and thru-plated holes.  See the list of links below for explanations.

Reduce your home-made computer's chances of trouble by keeping the parts close together and the wires as short as possible.  Put IC sockets right up against each other with almost no room between them.  For home construction, go for a board no more than 6" (15cm) square (at least the part that is used for the processor's immediate buses).

If you don't have a ground plane, it's good to put a power-and-ground hub in the middle, with a star-type arrangement connecting all the ICs' power and ground pins to the distribution area in the center, then in addition, also daisy-chain them to get short power and ground connections between the various ICs, not just to the center, kind of like a spider web.  Also put a .01µF capacitor across each IC at the power and ground pins with leads as short as possible.  It should be monolithic ceramic or multilayer ceramic.  Things like the temperature coefficient won't really matter for this application.  The distribution area in the center will have such capacitors from +5V to ground as well as a tantalum, or better yet, an OS-CON capacitor.  OS-CON capacitors' high-frequency impedance is much, much lower than electrolytics'— even lower than tantalums'.  OS-CON (Organic SemiCONductive electrolyte) is a capacitor type made by Sanyo and a couple of other companies.

If you later want to get into higher speeds, I strongly recommend this sticky forum topic ("Techniques for reliable high-speed digital circuits") for the why's and how-to's, with a load of links.  Additionally, and partly included there:

    Note 5/4/19: The Fairchild ap. notes went offline after ON Semi took over Fairchild; but I requested that they put them back up, and they did so and sent me the new links, which are below.

If you want to go further in understanding the matter of PCB transmission lines, layering, the importance of the return current's path, etc., here are some more videos I came across.  They're long, but helpful.

(and of course after you've watched one or more, you'll get suggestions for related videos down the right side of your screen.)

mystery pins <--Previous   |   Next--> expansion buses & interfaces

last updated Aug 22, 2021