Book Image

FPGA Programming for Beginners

By : Frank Bruno
5 (1)
Book Image

FPGA Programming for Beginners

5 (1)
By: Frank Bruno

Overview of this book

Field Programmable Gate Arrays (FPGAs) have now become a core part of most modern electronic and computer systems. However, to implement your ideas in the real world, you need to get your head around the FPGA architecture, its toolset, and critical design considerations. FPGA Programming for Beginners will help you bring your ideas to life by guiding you through the entire process of programming FPGAs and designing hardware circuits using SystemVerilog. The book will introduce you to the FPGA and Xilinx architectures and show you how to work on your first project, which includes toggling an LED. You’ll then cover SystemVerilog RTL designs and their implementations. Next, you’ll get to grips with using the combinational Boolean logic design and work on several projects, such as creating a calculator and updating it using FPGA resources. Later, the book will take you through the advanced concepts of AXI and show you how to create a keyboard using PS/2. Finally, you’ll be able to consolidate all the projects in the book to create a unified output using a Video Graphics Array (VGA) controller that you’ll design. By the end of this SystemVerilog FPGA book, you’ll have learned how to work with FPGA systems and be able to design hardware circuits and boards using SystemVerilog programming.
Table of Contents (16 chapters)
1
Section 1: Introduction to FPGAs and Xilinx Architectures
3
Section 2: Introduction to Verilog RTL Design, Simulation, and Implementation
9
Section 3: Interfacing with External Components

Questions

  1. When might you use an FPGA?

    a) You are prototyping an application that may eventually be an ASIC.

    b) You will only have very small volumes.

    c) You need something that you can easily change the algorithms on in the future.

    d) All of the above.

  2. When would you use an ASIC?

    a) You are developing a very specialized application, with just a small number to be built and the budget is tight.

    b) You've been asked to design a calculator that will be mass produced and that requires a custom processor.

    c) You need something extremely low power and cost is not a consideration.

    d) You are developing an imaging satellite and want the ability to update the algorithms over the lifetime of the satellite.

    e) a and b.

  3. We have seen a full adder in the chapter. A half adder is a circuit that can add two inputs, in other words, no carry in. Can you write the truth table for the sum and carry for a half adder?
  4. Modify the code and testbench to test the following gates: NAND (not AND), NOR (not OR), and XNOR (not XOR). Hint: You can invert a unary operator by adding a ~ operator in front of it, in other words, NAND is ~&. Try it on the board.

Challenge

  1. Open CH1/build/challenge.prj.
  2. Modify the lines in challenge.sv to implement a full adder:
      assign LED[0]  = ; // Write the code for the Sum
      assign LED[1]  = ; // Write the code for the Carry 
  3. Modify tb_challenge.sv to test it:
        if () begin // Modify for checking

Hint: You may want to jump ahead in the book to look at addition or do a quick web search.