EECE-4740/5740 Advanced VHDL and FPGA Design

Course Introduction

Catalog Description
Present the background, abstractions, and techniques for advanced digital circuits design and optimization. Emphasis is placed on specification and synthesis using VHDL and on prototyping using FPGAs of complex systems. Such systems represent examples from various application domains, including processors, image and video processing, filtering and other DSPs, and power electronics.

Instructor
Cristinel (Cris) Ababei
cristinel.ababei@marquette.edu
Phone: 414-288-5720
Office: Haggerty Hall, #220

Syllabus
For course goals and objectives, policies, and a tentative outline please see the syllabus on D2L.

Textbook

[1] Pong P. Chu, FPGA Prototyping by VHDL Examples: Xilinx Spartan-3 Version, Willey, 2008. (Required).

Hardware

DE1-SoC FPGA development board.


Lectures

Lecture Slides, Readings
VHDL Code, Additional Readings
Videos - Takeaways, Demos
Lecture 1: FPGAs (field programmable gate arrays)
-- Light introduction to FPGAs: lec01_fpga_intro_part1.pdf
-- FPGA Details, Slides: lec01_fpga_details_part2.pdf
-- Readings:
   [1] DE1-SoC User Manual
   [2] An Introduction to Reconfigurable Computing
How to install Quartus Prime
How to program the DE1-SoC board
How to copy HPS executable to microSD card
Lecture 2: Introduction to Quartus II Software via Examples
-- Example #1: Four bit adder (structural vs. functional/behavioral) - lec02_fourbit_adder.pdf
-- Example #2: Edge detection circuit (Mealy vs. Moore FSMs) - lec02_edge_detector_mealy_moore.pdf, block diagram
-- Example #3: Fourbit counter (uses a clock divider) - lec02_fourbit_counter.pdf
-- Readings:
  [1] Pong P. Chu, FPGA Prototyping by VHDL Examples, Wiley, 2008. (Chapters 1,2,3)
  [2] Supplemental material for lecture 2: lec02_supplemental_VHDL.pdf
fourbit_adder_vhdl.zip
fourbit_adder_vhdl_behavioral.zip
edge_detection_vhdl.zip
fourbit_counter_vhdl.zip
fourbit_counter_vhdl_behavioral.zip
Takeaway #1: Structural vs. Functional Description
Takeaway #2: Pin Assignments
Takeaway #3: Two process coding style
Demo #1: Edge detection circuit
Lecture 3: Concepts of VHDL (from A to Z)
-- VHDL Basics (entity, behavioural, structural): lec03_a_VHDL_intro.pdf
-- Concurrent and sequential statements (component, concurrency, process): lec03_b_conc_seq.pdf
-- Combinational and sequential circuits I (muxes, coders, decoders, registers, counters, FSMs): lec03_c_sequential_1.pdf
-- Sequential circuits II (FSMs, if-then-else, case, for-loop, wait, etc.): lec03_d_sequential_2.pdf
-- Functions, Procedures, Packages: lec03_e_packages_1.pdf, lec03 e_packages_2.pdf, lec03_e_packages_3
-- VHDL coding for synthesis: coding_for_synthesis.pdf
-- Readings:
  [1] Pong P. Chu, FPGA Prototyping by VHDL Examples, Wiley, 2008. (Chapters 4,5)
VHDL code on GitHub: Examples from Pong Chu's book
Takeaway #4: Concurrent statements
Demo #2: Hexadecimal to seven-segment
Demo #3: StopWatch
Lecture 4: FSM, ASM, FSMD, ASMD
-- Finite State Machine with Datapath (FSMD): lec04_fsmd.pdf
-- More on FSMs: lec04_more_on_FSMs.pdf
-- Example #4: Digital clock, digital_clock_diagram.pdf
-- Example #5: Fibonacci number generator - See lec04_fsmd.pdf, fibonacci_diagram.pdf
-- Example #6: BCD to Excess-3 converter - See lec04_more_on_FSMs.pdf, BCD_to_Excess3_diagram.pdf
-- Example #7: Bit difference calculator - See lec04_more_on_FSMs.pdf
-- Example #8: UART controller example_uart_echo.pdf
-- Example #9: Period counter - See lec04_fsmd.pdf
-- Example #10: Division circuit - See lec04_fsmd.pdf
-- Example #11: Binary to BCD converter - See lec04_fsmd.pdf
-- Example #12: Accurate low-frequency counter - See lec04_fsmd.pdf
-- Example #13: Fourbit multiplier - See lec04_fsmd.pdf
-- Readings:
   [1] Pong P. Chu, FPGA Prototyping by VHDL Examples, Wiley, 2008. (Chapters 6,7)
   [2] Samary Baranov, Algorithmic State Machines and Finite State Machines
digital_clock_de1soc.zip
fibonacci.zip
bcd_to_excess3_converter_vhdl.zip
bit_difference_calculator_vhdl.zip
uart_test_impl1_de1soc.zip
Takeaway #5: Block diagrams
Takeaway #6: Adding IPs
Takeaway #7: FSM vs. ASM
Demo #4: Digital Clock
Demo #5: Fibonacci Number Generator
Demo #6: UART controller
Lecture 5: VHDL Simulation. Testbenches
-- Aldec Active-HDL Simulator: lec05_aldec_simulator.pdf
-- More on Testbenches: lec05_testbenches.pdf
-- Example #14: Testbench for fourbit adder
-- Example #15: Testbench for fourbit counter
-- Example #16: Testbench for edge  detection circuit
-- Example #17: Testbench for linear feedback shift registers (LFSRs): slides1, slides2
-- Example #18: Testbench for first-input first output (FIFO) buffer
-- Example #19: Testbench for UART
-- Example #20: Package for bit8_adder
-- Example #21: Package for simple ALU
-- Readings:
   [1] Pong P. Chu, FPGA Prototyping by VHDL Examples, Wiley, 2008. (Chapters 12-13)
fourbit_adder_testbench_vhdl.zip
fourbit_counter_testbench_vhdl.zip
edge_detection_testbench_vhdl.zip
lfsr_testbench_vhdl.zip
fifo_testbench_vhdl.zip
uart_testbench_vhdl.zip
packages_example1.zip
packages_example2.zip
Takeaway #8: Simulation with testbenches
Lecture 6: Additional Examples
-- Example #22: Mano's single-cycle computer (SCC) readme_SCC_slides.pdf
-- Example #23: Digital camera (DE2-115 FPGA board) - webpage
-- Example #24: "Pong" Game from Ch. 12-13 of Pong P. Chu book
single_cycle_computer_SCC
digital_camera_impl1.zip
pong_top.zip
Demo #7: Pong game
Lecture 7: HPS+FPGA Systems on DE1-SoC Board
-- Basics of working with HPS+FPGA projects: lec07_HPS_FPGA.pdf 
-- HPS+FPGA projects tutorial - Part1 
-- HPS+FPGA projects tutorial - Part2 
-- HPS+FPGA projects tutorial - Part3 
HPS_FPGA_EXAMPLES_PART1.zip
HPS_FPGA_EXAMPLES_PART2.zip
HPS_FPGA_EXAMPLES_PART3.zip  
     

Lecture 8: Selected Topics
-- Timing analysis
-- Instantiation, VHDL vs. Verilog
-- OpenCL   
lecture9_timing_analysis.zip

Projects

Examples of projects from previous editions of this course:
Spring 2023
Examples of selected projects: Connect four, Pac man, Heart rate monitor, Karaoke machine.
Spring 2022
Examples of selected projects: Clock and stop watch combined, 64x64 RGB matrix display, Black Jack adviser.
Spring 2021
Examples of selected projects: Tic-tac-toe, Guitar pedal, Dual player pong game, Whac-a-mole, Musical keyboard, Simon says.
Spring 2020
Examples of selected projects: Tetris, PONG 2.0, Snake Game, Abstract Art Generator, FPGA-based signal generator.
Spring 2019
Examples of selected projects: RSA on FPGA; CrisCoin cryptocurrency; Blackjack card counter; Camera controlled game; FPGA platformer; Bop it; FM synthesizer; Chinese numbers recognition on FPGA.
Spring 2018
Examples of selected projects: reaction timer; stop watch; magic mirror; ANN for basic logic gates; memory game; tone matrix; bluetooth remote for laptop; hands free lights switch; tuner on audio frequency.
Spring 2017
FPGA Mandelbrot:
Generate Mandelbrot fractals on DE2-115 development board and display them on an VGA monitor.
Spring 2016
Three different projects implemented using the DE1-SoC board:
1) Voicilloscope: voice controlled oscilloscope (DE1-SoC board, bluetooth, Android app with voice recognition and display of signals); Photo1, Photo2
2) Harry Potter Weasley clock: if a Harry Potter fan, then you know what I mean! :-) (De1-SoC board, ESP01 with ESP8266 WiFi module, internet server, Android and iPhone apps for location capture and recording to server); Photo1, Photo2
3) Snoopy, server monitoring with FPGAs: internet traffic monitor; (HPS+FPGA system on DE1-SoC, Linux, Ethernet, security, VGA monitor); Photo1
In addition, the digital camera project from last year, 2015, was used to develop a senior design project (SDP), which implemented the Viola Jones face detection algorithm entirely on the DE2-115 board. Details and a video demonstration of it can be found on the Hardware webpage: http://www.dejazzer.com/hardware.html
Spring 2015
Digital camera implemented on DE2-115; used OV7670 CMOS sensor; SDRAM memory storage; grey filter; edge detection;


Here is an additional video that showcases the edge detection in video mode:


Spring 2014
Basic Network-on-Chip (NoC) prototyping on FPGAs; implemented on DE2-115 and ZedBoard.


Resources

Here are examples of projects that may serve as inspiration, to help you develop your own project idea:
-- Final Projects - Cornell ECE 5760
-- Project ideas - Cornell ECE 5760
-- Favorite projects from Cornell - Hackster
-- Projects examples - Columbia CS 4840