Designing with FPGAs and CPLDs

This chapter presents design techniques, rules, and guidelines that are critical to FPGA and CPLD design. By understanding these concepts, you increase your chances of producing a working, reliable device that will work for different chip vendor processes and continue to work for the lifetime of your system.
In certain sections of this chapter, I show a number of examples of incorrect or inefficient designs, and the equivalent function designed correctly. I assume that you are using, or will be using, a hardware description language (HDL) like Verilog or VHDL to design your CPLD or FPGA. Most, if not all CPLDs and FPGAs are designed using HDLs. This chapter presents these design examples using schematics, but I also give the equivalent Verilog code for many of these circuits in Appendix B. Although HDLs are much more efficient for creating large designs, schematics are still preferred for illustrating small designs because they give a nice visual representation of what is going on.
Note that EDA tools that enable many of the techniques in this chapter are described in detail in Chapter 7.