
Package v1.1 for the CPLD development boards is now available for download. It includes:
- Schematic tutorials
- Verilog tutorials
- VHDL tutorials
- Bus Pirate XSVF programmer firmware and application
- PCBs

Programming instructions for the Bus Pirate and Bus Blaster have been freshened. An updated ISE (X)SVF export tutorial will help you get started with your own projects.
Get the CoolRunner-II development board for $15 and XC9572XL dev-board for $15.
Get a Bus Blaster v2 for $34.95 only at Seeed Studio. Hurry, the first batch is nearly gone!
Get the Bus Pirate for $30, including world-wide shipping. Also available from our friendly distributors.

A brief comment on your verilog examples (puts on verilog implementor’s hat):
always begin
….
end
may synthesize OK but will likely break during simulation because it will loop in 0-time and simulation time will not advance
always begin
LED = BUTTON;
end
suffers the same problem but also (in some synthesis tools) will fail or give errors you need to include all the stuff on the RHS of expression in a trigger list:
always @(BUTTON) begin
LED = BUTTON;
end
or:
always @(*) begin
LED = BUTTON;
end
(best use the last construct if your compilers support it)
Thanks for sharing your experience. You are correct that sims don’t work, we didn’t try on these simple demos.
The always@(*) construct didn’t work with the ISE compiler, but I did add *(BUTTON) to the second and third demos and wiki examples. The LED-only example stimulates OK without an @(*) – it shows the values correctly without a time dimension, which I suppose is exactly what happens…
I would use wires and assign for these simple designs (see the alternate examples), but we wanted to show the always block.
always@(*) was new in V200x (it was my idea :-) I’m surprised there are people who still haven’t implemented it now 10 years later – it makes avoiding those synopsis accidental latches so much easier.
The always statement in the first case is, IMHO, not a good example for a beginner and should be removed (because an always statement without something to constrain it will always hang a simulator) – but in the other cases is perfectly valid (and yes you should show them
couldn’t the bus blaster be another cpld development board?
It is, that’s one of my favorite parts of the design :) It only has a XC2C32A though, so the demos need to be recompiled.
The next minor revision of the BBv2 will have a button and LED like the DEV boards, so it can work as a stand-alone dev board too.