CPLD and FPGA are different from microcontroller concept. Instead of writing programs here you need to configure hardware. With modern tools and programming languages like VHDL or Verilog things are much easier. Pyroelectro has started a series of tutorials where you will lean the very basics of building your own projects with CPLD and so with FPGA. This one is dedicated to turning LED on and off.
There are a list of courses to come where you will learn more advanced topics that will allow to feel the benefit of using CPLD over microcontrollers.
If you want to start learning or is trying to learn very-high-speed integrated circuit hardware description language (VHDL) – then project is perfect for you! It comes with a XC9536XL CPLD – or a complex programmable logic device in a PLCC package that you can replace in a breeze! It also comes with eight red LEDs that will serve as outputs, a dual in line package (DIP) switch that will serve as your inputs for your experiments.
Instead of settling for an ordinary clock source this project comes with a ATtiny2313 to provide the clock source – making the clock source not only accurate but also programmable. The board also features two programming ports the first is a JTAG port for programming the XC9536XL CPLD and the other is a 3×2 AVR programming port for the ATtiny2313. The board also breaks out the pins of the ATtiny2313 and XC9536XL CPLD into female headers when you decide to use just the microcontroller
CPLDs are meant for different tasks than running LEDs but why not. It may be a great starting point to know this type of IC. They are logical programmable devices that can replace a bunch of logical IC’s like 74hcXX. And depending on size of CPLD they can preform large number of operations on single chip this way reducing board space and power demand. So here is a nice project created with gEDA schematic capture.
It is really basic layout where 60Hz clock is generated with 555 timer. There are 8 LEDs connected to XC9536 I/O pins through current limiting resistors. It has one push button for input. Programming is done via JTAG. To get intuition about programming CPLD you can follow this tutorial.