This introductory VHDL course uses a Xilinx CPLD board to teach the basics of logic design using VHDL. The course starts at a very basic level for absolute beginners in VHDL, but does assume some knowledge of digital electronics such as gates, truth tables, registers, etc.
This is a very practical course and consists of a brief introduction to CPLDs and VHDL, followed by a series of tutorials that teach VHDL by implementing various VHDL designs on the CPLD board.
The hardware for the course (a CPLD board and a programming cable) can be built at home on home-made single sided PCBs. The software can be downloaded for free.
The course consists of these articles and tutorials:
- VHDL CPLD Course Introduction – course information, hardware and software prerequisites.
- Introduction to VHDL and CPLD Devices – basic information on what a CPLD is and what VHDL is.
- Tutorial 1: VHDL Inverter and Buffer Code – how to make an inverter and buffer in VHDL and implement it in a CPLD. This tutorial also explains the basic structure and elements of VHDL.
- Tutorial 2: AND Gates, OR Gates and Signals in VHDL – make an AND logic gate, OR gate and learn about signals in VHDL.
- Tutorial 3: NAND, NOR, XOR and XNOR Gates in VHDL – implement NAND, NOR, XOR and XNOR logic gates in VHDL.
- Tutorial 4: Multiplexers in VHDL – implementing a 2 to 1 and 4 to 1 multiplexer in VHDL.
- Tutorial 5: Decoders in VHDL – implementing a 2 to 4 decoder with enable pin in VHDL.
- Tutorial 6: VHDL clock divider – divide a clock source down to a slower frequency
- Tutorial 7: VHDL binary counter – an 8-bit binary counter displayed on 8 LEDs
- Tutorial 8: Knight rider display in VHDL – implements an 8 LED knight rider display and shows how to initialize a register in VHDL
- Tutorial 9: S-R latch in VHDL – design a S-R latch using VHDL code
- Tutorial 10: Gated D Latch in VHDL – two ways of implementing a gated D latch in VHDL code
- Tutorial 11: Shift Registers in VHDL – two ways of coding a shift register in VHDL
- Tutorial 12: Ring Counters in VHDL – a ring counter in VHDL as well as a look at the VHDL ror, rol, srl and sll operators
- Tutorial 13: VHDL Data Types and Operators – a look at some of the data types and operators in VHDL
- Tutorial 14: Addition in VHDL – using the VHDL addition operator to add two 4-bit numbers and display the 5-bit result on LEDs
- Tutorial 15: VHDL SPI Receiver / Output Expander – a SPI receiver is written in VHDL and implemented on a CPLD, interfaces to a microcontroller
- Tutorial 16: Tristate Buffers in VHDL – single and quad tristate buffers written in VHDL code
- Tutorial 17: Forcing the State of a Pin in VHDL – force the logic state of a pin to high or low, or write a fixed bit pattern to a set of pins on a CPLD or FPGA
- Tutorial 18: Routing I/O Signals in VHDL – route microcontroller pins through a CPLD to connect them to peripherals
- Tutorial 19: Up/Down Counter in VHDL – up/down counters, also demonstrates VHDL “while” loop and VHDL generic values
- Tutorial 20: VHDL Case Statement LED Display Sequencer – uses the VHDL “case” statement to sequence patterns on a set of LEDs
- VHDL CPLD Course Conclusion – end of the VHDL CPLD course