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