FPGA course v2

From Hamsterworks Wiki!

Jump to: navigation, search

Hello to anybody who stumbles across this! - It is currently a work in progress, so should be ignored.

A few years ago I wrote my FPGA_course, which eventually transformed into a PDF which was a minimal introduction to the Spartan 3E FPGA. It was well received by the wider internet, butit had quite a few flaws. So I'm going to start again, and this time do a better job.

Here are some of the things I want to improve on:

  • it needs to be more fun, with lots of interesting project ideas along the way
  • it needs to be more generic, and less focused on a particular board with a particular set of interface
  • it needs to have more complete examples, not just hint at what you should be doing, but actually show you
  • it needs to be more aligned to current coding practices
  • lots of references to documentation and web sites
  • it want it to be far more approachable for people with limited skill sets

So here goes...

Modules

  1. FPGA:Getting started
    1. Using new your board for the first time
    2. Links to common vendor quick starts and what parts to pay close attention to
  2. FPGA:A quick tour of a few boards
    1. What is on a few different boards
    2. FPGA
    3. Power supply
    4. Clock generator
    5. Host Interface
    6. Configuration flash
    7. Various onboard interfaces or peripherals
    8. Expansion connectors
    9. Project - Creating a cheatsheet for your FPGA
  3. FPGA:Taking a closer look at an FPGA
    1. Introducing what you new wonder-chip can do
    2. What is on the inside
    3. How it connects to the outside world
    4. What happens when you apply power on
    5. What happens when you remove power off
    6. Project - Downloading a few designs, to flash and FPGA.
  4. FPGA:Lighting an LED
    1. Your first design.
    2. Project - Turing lights on and off
  5. FPGA:Using a switch
    1. Using more connections
    2. Project - Making the LED respond to a switch
  6. FPGA:Combining signals
    1. Boolean functions
    2. AND
    3. OR
    4. XOR
    5. NOT
    6. Project - Playing with binary
    7. Project - Adding a bit or two
  7. FPGA:Signal buses
    1. Logical grouping of signals
    2. Project - connecting all the switches to the leds
  8. FPGA:A refresher on binary numbers
    1. Counting in binary
    2. Signed numbers
    3. Unsigned numbers
    4. Project - playing around with conversion functions
  9. FPGA:Synchronous design
    1. What is a clock, why is is so important?
    2. Project - Finding your clock
  10. FPGA:Blinking an LED
    1. Counting ticks of a clock
    2. Project - Flashing lights
    3. Project - Stop and starting using a switch
    4. Project - Beep
  11. FPGA:Using integer numbers
    1. It's not like programming!
    2. Project - Counting seconds
    3. Project - finding out how responsive your eyes are
    4. Project - Reaction timer
    5. Project - Simple pulse width modulation of an LED
    6. Project - Soft fading binary counter
    7. Project - Driving a Servo
  12. FPGA:Conversion of numbers
    1. Project - Counting in decimal
    2. Project - Converting binary to decimal
  13. FPGA:Shift registers
    1. A vital building block
    2. Project - Introducing errors in a design
    3. Project - Introducing these errors with a synchronizer
    4. Project - Persistence of vision fun!
    5. Project - LED scanner
    6. Project - Morse code sender.
  14. FPGA:Talking to your host
    1. A brief introduction to serial communications
    2. Interface options
    3. Project - Saying "Hello World" over RS232
    4. Project - Interfacing your computer to the outside world
  15. Blar blar blar
  16. FPGA:Test benches and simulation
    1. Using the ISIM simulator
  17. FPGA:Memories
    1. The different sorts of memories, and when to use which.
    2. Inference of memory - trying your luck
    3. Project - sequenced lights
    4. Project - Lookup tables
    5. Project - Using 'coe' files
    6. Project - Using primatives
  18. FPGA:Finite state machines
    1. The concepts of a state vector
    2. Project - Combo lock.
  19. FPGA:Reset Signals
    1. Why some FPGAs don't need a reset signals,
    2. Project - how do to it implement it, and prove it doesn't work
    3. Project - how do to it properly implement it
  20. FPGA:Clock management
    1. Adding additonal clocks, or phases
    2. Project - Generating low speed signal.
    3. Project - Generating a high speed signal
  21. FPGA:Clock domains
    1. How to safely cross clocks
    2. Project - Using a FIFO
    3. Project - Handshaking
  22. FPGA:Timing Analysis
    1. What is static timing
  23. FPGA:Multiplication
    1. How to infer DSP blocks
  24. FPGA:I2C Master
    1. Talking to I2C sensors
  25. FPGA:I2C Slave
    1. Being talked at over I2C
  26. FPGA:SPI Master
    1. Talking to an SPI DAC
    2. How SPI works
    3. Project - reading from a DAC
  27. FPGA:Single bit DAC in an FPGA
    1. Using a high speed I/O port to generate analog signals
    2. Project - Tone generation
    3. Project - Guitar tuner tone generator
  28. FPGA:I2S Audio
    1. Project - High quality audio tone generation
    2. Project - Audio Sweep generator
    3. Project - Different wave forms.
  29. FPGA:Quadrature decoding
    1. How it works
    2. Project - LED brightness control
    3. Project - Combination lock
  30. FPGA:Accessing a single bit Flash
    1. Project - Reading back the first few bytes of the design file
    2. Project - Adding your own data to a '.bit' file
    3. Project - Audio playback
  31. FPGA:VGA
    1. How to generate graphical output
    2. Project - Build you own VGA output
    3. Project - STMPE Colour bars
    4. Project - Character mode output
  32. FPGA:SDRAM Controller
    1. Playing Tetris with paper cutouts
    2. A simple, low performance design
    3. Project - reading and writing a few bytes.
  33. Blar blar blar
  34. FPGA:Appendix - number conversions - decimal, binary, hex
  35. FPGA:Appendix - ASCII codes - binary to characters
Personal tools