CPLD LED blinker based on XAPP078

I'm working on a board that will exceed the Eagle freeware limitations, so I am experimenting with gEDA, which includes the schematic capture program gschem and pcb. This is a board I made to try out the workflow.

The board is for a friend of mine who can't resist blinking LEDs. This should force him to learn Verilog, since I plan to deliver it with the CPLD erased. The design is based on my experience designing my first CPLD prototype board several years ago. The keys are:

The resulting board is very similar to the one described in Xilinx appnote XAPP078. Beware their confusing schematic—it has numbers near the pins which are not actually pin numbers. The main difference is a slightly faster clock and an input button connected to GSR.

Construction

Using the 'export to PS' function of PCB with mirroring turned on gave me a printable image that I used to do an iron-on toner transfer to the PCB. You can find lots of how-to sites for toner transfer PCBs. The artwork was modified to include two copies of the board. What I do is print once on paper, then take my clay coated paper and tape it over the image to ensure I have it properly aligned, then use the bypass feed when I do the final print. The new Xerox printers at work are great for this—you can set a job to use the bypass, print it, walk over to it, insert your sheet, and then choose your printjob from a menu of jobs needing special paper.

After etching and drilling (only 17 holes! Yay for surface mount) I use the unmirrored output of pcb to get an assembly diagram to aid in component placement. The schematic is also handy. If you want to look at the original project files instead of PDF output, they are available in a zip file.

Surface mount?!

Another component (heh, heh) of this project was to try surface mount technology at home. I've worked with tiny stuff (down to 0402) at work with a stereo microscope and Metcal solder station. I wanted to see how I'd do with my factory-issue eyes and a temperature controlled solder station. I selected 0805 as my basic size, since resistors are still labelled down to 0603, with the edge going to 0805 because I can usually read those without magnification. I bought a few kits from Nightfire Electronic Kits. For about $50 you can have a few dozen of every common resistor value, capacitor value and transistor.

The project uses several 0805 resistors, a couple low-value 1206 resistors to jump over tracks and some 0603 .1u caps. Ceramic surface mount capacitors are almost never labelled anyway, so 0603 doesn't sacrifice much. I find it's easier to work with the tiny chip cap than to drill the holes and bend/trim the leads of a leaded part. Another advantage of surface mount parts is that you can usually go up or down a package size without much trouble. The LEDs could be replaced by ones that were quite a bit smaller or even slightly bigger. Almost all of the resistors and capacitors could go up or down a package size and still be put on the board.

BOM

(also available as a tab separated file and in the zipfile)

Most values are not cricital. Choose R101-108 to go with your LEDs. The 1206 resistors are just to jump tracks and could really be any small value. The whole thing might work without some or all of the .1u caps, except for C104 which is for the timer. Control the clock frequency by varying R109.

packagerefdesdevicevaluefootprint
C101C101POLARIZED_CAPACITOR4u7TANT_C
C102C102CAPACITOR.47uTANT_A
C103C103CAPACITOR.1u0603
C104C104CAPACITOR.1u0603
C105C105CAPACITOR.1u0603
C106C106CAPACITOR.1u0603
CONN101CONN101PWRJACK JUMPER2
CONN102CONN102CONNECTOR_6 JUMPER6
LED101LED101LED SMD_SIMPLE 130 100
LED102LED102LED SMD_SIMPLE 130 100
LED103LED103LED SMD_SIMPLE 130 100
LED104LED104LED SMD_SIMPLE 130 100
LED105LED105LED SMD_SIMPLE 130 100
LED106LED106LED SMD_SIMPLE 130 100
LED107LED107LED SMD_SIMPLE 130 100
LED108LED108LED SMD_SIMPLE 130 100
R101R101RESISTOR3300805
R102R102RESISTOR3300805
R103R103RESISTOR3300805
R104R104RESISTOR3300805
R105R105RESISTOR3300805
R106R106RESISTOR3300805
R107R107RESISTOR3300805
R108R108RESISTOR3300805
R109R109RESISTOR100k0805
R110R110RESISTOR10k0805
R98R98RESISTOR01206
R99R99RESISTOR511206
S101S101SWITCH_PUSHBUTTON_NO SMD_SIMPLE 270 50
U101U101780x5VTO92
U102U102LM555 DIP-8-300
U103U103XC9536 PLCC 44