Field Programmable Devices, such as Field Programmable Gate Arrays (FPGAs) and Complex Programmable Logic Devices (CPLDs) are widely used for rapid prototyping and quick response-time designs. The objective of this course is to introduce the student to digital design using Field Programmable ICs, and to provide an understanding the underlying technologies and architectures of these Integrated Circuits.
The course begins by introducing design alternatives for modern electronic systems; identifying and classifying alternative system solutions, and evaluating when particular design solutions are optimal. These alternatives include microprocessors, microcontrollers, off-the-shelf digital ICs, Programmable logic ICs (FPGAs and CPLDs), and various forms of Application Specific Integrated Circuit (ASIC) designs. A homework assignment requires the student to quantitatively evaluate the cost, complexity, packaging, and time-to-market issues for a complex system design specification.
Next, the underlying Field Programmable Logic IC architectures and technologies are studied in detail. Following a broad survey of available programmable IC vendors and on-chip programming technologies (and their cost/performance trade-offs), several specific case studies are presented in the class. The first is the Xilinx XC4000xl line, because of the target boards used in the CAD laboratory component for this class. The initial lab portions of the class help the students to specify their design using various forms of design entry tools and also allows them to see how their design map on to the underlying FPGA architecture. The students also learn the underlying algorithms used by the design software they use in their Labs.
Next, the systematic top-down method for specifying complex designs using VHDL is introduced. Students are given a supporting homework assignment to develop high-level behavioral models for a simple digital system to reinforce this segment of the course. VHDL behavioral synthesis is now introduced as a preferred path to go from high-level system behavior to actual implementation on the FPGA. The strengths and weaknesses of synthesis are discussed, as are the emerging CAD tool trends. Additional VHDL-based homework assignments reinforce behavioral design and synthesis using commercial CAD tools.
The final segment of the class covers special topics that identify current trends in digital system architecture and programmable logic design. These include such topics as partially reconfigurable architectures and dynamic reconfiguration techniques, system design for testability, and field programmable analog arrays. Applications of FPGAs in special purpose computing environments such as signal processing, Java acceleration and image processing are also introduced. In the laboratory, student design project assignments explore larger and more complete system specifications of such things as controllers, CPU and memory design, and signal processing blocks. These assignments reinforce the lecture content as the students model, synthesize and implement their digital designs on the target Xilinx FPGA boards.