What this book covers
Chapter 1, Introduction to FPGA Architectures, explains what an ASIC and an FPGA are and gives some background on Boolean logic that will be the building blocks for your designs.
Chapter 2, FPGA Programming Languages and Tools, introduces Hardware Description Language (HDL) and Vivado/ Vitis. A sample design is introduced to showcase the flow and demonstrate the development of a testbench for verification.
Chapter 3, Combinational Logic, looks at writing a complete SystemVerilog module from scratch to perform some basic operations to show how to use combinational logic in your own designs. We’ll also introduce testbenches and how to write one that self-checks.
Chapter 4, Counting Button Presses, builds upon the previous chapter’s combination logic, adding storage—sequential elements. We’ll learn about the capabilities of the Artix-7 and other FPGA devices to store data and design a simple project to count button presses. We’ll also take a look at using clocks and synchronization, one of the few things that can break a design completely if not done correctly.
Chapter 5, Let’s Build a Calculator, looks at how to create more complex design. Inevitably, you need to keep track of the design state. In this chapter, we’ll learn about state machines and use a classic staple of engineering, the traffic light controller. We’ll also enhance our calculator and show how we can design a divider using a state-based design.
Chapter 6, FPGA Resources and How to Use Them, takes a step back after having quickly dived into FPGA designs, examining some of the FPGA resources in more detail. To use these resources, we’ll introduce some of the board resources, the PDM microphone and i2c temperature sensor attached to the FPGA and use them in projects.
Chapter 7, Math, Parallelism, and Pipelined Design, takes a deeper dive into fixed-point and floating-point numbers. We’ll also look at pipelined designs and parallelism for performance.
Chapter 8, Introduction to AXI, covers how Xilinx has adopted the AXI standard to interface its IP and has developed a tool, IP integrator, to easily connect the IP graphically. In this chapter, we’ll look at AXI by taking our temperature sensor and using the IP integrator to integrate the design.
Chapter 9, Lots of Data? MIG and DDR2, looks at how the Artix-7 provides a good amount of memory, but what happens if we need access to megabytes or gigabytes of temporary storage? Our board has DDR2 on it and in anticipation of implementing a display controller, we’ll look at the Xilinx Memory Interface Generator to implement the DDR2 interface and test it in simulation and on the board.
Chapter 10, A Better Way to Display – VGA, looks at implementing a VGA and an easy way to display text. We’ve used LEDs and a seven-segment display to output information from our projects. This does limit us to what can be shown; for example, we can’t display our captured audio data and text.
Chapter 11, Bringing It All Together, covers adding to our inputs. We’ve covered the output with VGA, but we’ll add to our inputs by interfacing to the keyboard using PS/2. We’ll take our temperature sensor and PDM microphone and create a project that uses the VGA to display this data.
Chapter 12, Using the PMOD Connectors – SPI and UART, will explore the PMOD connectors on the Nexys A7 board. By the end of this chapter, we will have created AXI reusable components for a Universal Asynchronous Receiver-Transmitter (UART) and a Serial Peripheral Interface (SPI) bus.
Chapter 13, Embedded Microcontrollers Using the Xilinx MicroBlaze, will introduce the Xilinx Microblaze processor, how to implement one using Vivado and how to develop software for it using Vitis.
Chapter 14, Advanced Topics, wraps things up by looking at some SystemVerilog concepts that I skipped over but you may still find them useful. We’ll look at some of the more advanced verification constructs and finally look at some other gotchas and how to avoid them.