ECE 448 in Spring 2021

FPGA and ASIC Design with VHDL

Monday, Wednesday, 1:30-2:45 PM
Online, in synchronous mode, using Blackboard Collaborate Ultra.
In order to join the lecture, please go to myMason, log in to Blackboard (Mason Bb Login), choose the course ECE-448-001 (Spring 2021), and click on Collaborate Ultra in the left menu.
In order to join your lab session, choose the course ECE-448-201 (Wednesday section), ECE-448-202 (Tuesday section), or ECE-448-203 (Friday section).
Please also see Blackboard Collaborate: Quick Start Guide for Students.

 

Quick Links

Organization

Lecture

Lab

Instructor

Kris Gaj
e-mail:  kgaj (at) gmu.edu

Please start a subject of your e-mail from "ECE 448:"
 

Teaching Assistant

Javad Bahrami
e-mail: jbahrami (at) masonlive.gmu.edu

Please start a subject of your e-mail from "ECE 448:"

Office Hours

Javad Bahrami:

Kris Gaj:

Please send an e-mail request or private Piazza request, including the day and time slot suitable for you.

Grading

Lab assignments:   40%
Lab exercises:     4%
Midterm exam for the lab:  15%
Homework:    6%
Midterm exam for the lecture:  10%
Final exam:  25%
Class & Piazza activity:    5% bonus

Textbooks

Required textbooks

Pong P. Chu, FPGA Prototyping by VHDL Examples: Xilinx MicroBlaze MCS SoC , Wiley, 2017, 2nd edition, ISBN-13: 978-1119282747.

Recommended textbooks

  1. Stephen Brown and Zvonko Vranesic, Fundamentals of Digital Logic with VHDL Design, McGraw-Hill, 2008  © 3rd edition.
  2. Pong P. ChuRTL Hardware Design Using VHDL: Coding for Efficiency, Portability, and Scalability, Wiley-IEEE Press, 2006.
  3. Ricardo Jasinski, Effective Coding with VHDL: Principles and Best Practice, The MIT Press, 2016  © 1st edition.

Lecture Slides

Typical Final Exam Problems. Remaining Deadlines. Special Grades.

Lecture 26 - RTL Design Methodology - Exercise.

Lecture 25 - Video Cores. [pptx, pdf]

Announcements - April 21, 2021

Lecture 24 - The FPro Video Subsystem: On-Screen Display (OSD) Core and Its Driver. [pptx, pdf]

Lecture 23 - The FPro Video Subsystem: VGA Display & Frame Buffer Core. [pptx, pdf]

Lecture 22 - Timing Analysis. [pptx, pdf]

Lecture 21 - Software/Hardware Co-design Using the FPro System. Part 3: Dual-Port Block Memory, Driver of the Sorting Core, and the Main Application [pptx, pdf]

Lecture 20 - Software/Hardware Co-design Using the FPro System. Part 2: I/O Register Map & a Wrapper of the Sorting Core. [pptx, pdf]

Lecture 19 - Software/Hardware Co-design Using the FPro System. Part 1: Sorting Core. [pptx, pdf]

Lecture 18 - I/O Register Map of an MMIO Core. Address Decoding. [pptx, pdf]

Lecture 17 - Developing User MMIO Cores & Drivers. [pptx, pdf]

Lecture 16 - The LED-MUX Core & Its Instantiation in the Code of the Sampler FPro System. [pptx, pdf]

Lecture 15 - Drivers of the LED-MUX Core & Debouncing Core. [pptx, pdf]

Lecture 14 - Bare Metal System Software Development. [pptx, pdf]

Lecture 13 - Introduction to the FPro System. [pptx, pdf]

Lecture 12 - Programmable Logic Memories. [pptx, pdf]

Lecture 11 - RTL Design Methodology. [pptx, pdf]

Lecture 10 - ASM Charts: Timing Diagrams & VHDL Code - Part 2. [pptx, pdf]

Lecture 9 - ASM Charts: Timing Diagrams & VHDL Code - Part 1. [pptx, pdf]

Lecture 8 - Finite State Machines. State Diagrams vs. Algorithmic State Machine (ASM) Charts. [pptx, pdf]

Lecture 7 - Modeling of Circuits with Regular Structure - Part 1. [pptx, pdf]

Lecture 6 - Sequential-Circuit Building Blocks - Part 2. [pptx, pdf]

Lecture 5 - Sequential-Circuit Building Blocks - Part 1. [pptx, pdf]

Lecture 4 - Combinational-Circuit Building Blocks - Part 2. [pptx, pdf]

Lecture 3 - Combinational-Circuit Building Blocks - Part 1. [pptx, pdf]

Lecture 2 - VHDL Refresher [pptx, pdf]

Lecture 1 - Objectives, Scope, and Organization of the Course [pptx, pdf]

Posted gradually, typically one day before a given lecture.

See Course Webpage from Spring 2020 for slides from one of the previous years.
 

Homework

    Homework 3 - due Monday, May 3, 11:59pm (submission using Blackboard, section ECE-448-001).

    Homework 3 solutions (except Task 4; mm=4)

    Homework 2 - due Monday, April 26, 11:59pm (submission using Blackboard, section ECE-448-001).

    Homework 2 solutions (by Robert Wallace)

    Homework 1 - due Saturday, April 10, 11:59pm (submission using Blackboard, section ECE-448-001).

    Homework 1 solutions (mm=10, dd=6; by Ethan Li)

General Laboratory Rules

Lab Assignments

Please submit all solutions using Blackboard.

Lab Assignment 6: The LightsOut Puzzle with the Display on a Monitor Screen

Lab Assignment 5: Using an FPro SoC with Custom Hardware Accelerators: Fast Sorting.

Lab Assignment 4: The LightsOut Puzzle Implemented Using the FPro System.

Lab Assignment 3: Finite State Machines. Bus Ticket Dispensing Machine.

Lab Assignment 2: Implementing Combinational and Sequential Logic in VHDL.

Lab Assignment 1: Developing and Using Effective Testbenches.

The specifications of lab assignments will be posted gradually here on the days when each lab assignment is introduced for the first time (typically Tuesdays).

Lab Slides & Examples

Lab Lecture 6: Implementing the LightsOut Puzzle with the display on a monitor screen.

Lab Lecture 5: Software/Hardware Co-design Using the FPro System.

Lab Lecture 4: Developing an FPro SoC with standard & custom hardware IP cores.

Lab Lecture 3: FPGA Design Flow. Using Seven-Segment Displays, Buttons, and Switches. Design of Controllers Using ASM Charts.

Lab Lecture 2: Implementing Combinational and Sequential Logic in VHDL. Simulation using ModelSim Intel FPGA.

Lab Lecture 1: Developing Effective Testbenches. Simulation using Xilinx Vivado Simulator.

Lab slides and examples will be posted gradually here on the days when each lab assignment is introduced for the first time (typically Tuesdays).

Software

FREE versions can be installed on your laptops and home workstations.

Hardware

Useful References

VHDL

VHDL Instructions: Templates & Examples

VHDL-2008: Why It Matters

Vivado Design Suite User Guide: Synthesis

OpenCores Coding Guidelines

The Low Carb VHDL Tutorial - by Bryan Mealy

Frequently Asked Questions And Answers about VHDL (Part 1): General from comp.lang.vhdl

Frequently Asked Questions And Answers about VHDL (Part 4): VHDL Glossary from comp.lang.vhdl

C

Top 10 C Language resources that will turn you into a better programmer

C Tutorial

 

Past Exams

Past Lab Exams

Lab Midterm Exam from Spring 2021 - Tuesday Section
Solutions by Javad Bahrami: Deliverables 

Lab Midterm Exam from Spring 2021 - Wednesday Section
Solutions by Robert DeCoito: Deliverables 

Lab Midterm Exam from Spring 2021 - Friday Section
Solutions by Javad Bahrami: Deliverables 

Lab Midterm Exam from Spring 2020 - Tuesday Section
Solutions by Javad Bahrami: Source_files  Timing Waveform 1  Timing Waveform 2  Timing Waveform 3  Resource Utilization 

Lab Midterm Exam from Spring 2020 - Wednesday Section
Solutions by Jamil Al Kallas (with corrections and extensions by the instructors): Source_files  Timing Waveforms  Resource Utilization 

Lab Midterm Exam from Spring 2020 - Friday Section
Solutions by Timothy Bullock (with corrections and extensions by the instructors): Source_files  Timing Waveforms  Resource Utilization 

Lab Midterm Exam from Spring 2019 - Tuesday Section
Solutions by Kevin Riley: toplevel.vhd  testbench.vhd  Basys-3-Master.xdc  Functional Waveform  Timing Waveform  Midterm Report 

Lab Midterm Exam from Spring 2019 - Wednesday Section
Solutions by Spencer Lombardo: toplevel.vhd  datapath.vhd  asm.vhd  toplevel_tb.vhd  Functional Waveform  Timing Waveform  Timing Report 

Lab Midterm Exam from Spring 2016 - Monday Section
Solutions: Datapath.vhd  Controller.vhd  Statistics.vhd  testbench.vhd 

Lab Midterm Exam from Spring 2016 - Tuesday Section
Solutions: Reg.vhd  Counter.vhd  ram.vhd  Datapath.vhd  Controller.vhd  Sort.vhd  Sort_tb.vhd 

Lab Midterm Exam from Spring 2016 - Wednesday Section
Solutions: vrot.vhd  vrot_tb.vhd  sqrt_CORDIC.vhd  sqrt_CORDIC_tb.vhd 

Lab Midterm Exam from Spring 2014 - Monday Section
Solutions: up_counter.vhd  shiftn.vhd  datapath.vhd  controller.vhd  top.vhd  top_tb.vhd  func_sim_waveform.pdf

Lab Midterm Exam from Spring 2014 - Thursday Section
Solutions: regn.vhd  lfsr.vhd  counter.vhd  datapath.vhd  controller.vhd  midterm_thursday.vhd  midterm_thursday_tb.vhd  func_sim_waveform.pdf  solutions_to_tasks_4-6.pdf

Lab Midterm Exam from Spring 2013 - Wednesday Section
Solutions: regn.vhd  counter.vhd  lfsr.vhd  PISO.vhd  SIPO.vhd  midterm_wednesday.vhd  midterm_wednesday_TB.vhd  Functional_simulation_waveforms.pdf  Timing_simulations_waveforms_ISim.pdf  Timing_simulations_waveforms_Aldec.pdf  Tasks_4-6.pdf

Lab Midterm Exam from Spring 2013 - Thursday Section
Solutions: regn.vhd  counter.vhd  midterm_thursday.vhd  midterm_Thursday_TB.vhd  Functional_simulation_waveforms.pdf  Tasks_4-6.pdf

Lab Midterm Exam from Spring 2012 - Tuesday Section
Solutions: reg.vhd  shiftn.vhd  MidTerm_201.vhd  MidTerm_201_TB.vhd  Waveform.pdf  Report.pdf

Lab Midterm Exam from Spring 2012 - Thursday Section
Solutions: reg.vhd  shift1.vhd  shiftn.vhd  counter.vhd  datapath.vhd  controller.vhd  MidTerm_203.vhd  MidTerm_203_TB.vhd  Waveform.pdf  Report.pdf
 
Lab Midterm Exam from Spring 2011 - Monday Section
Solutions:  ma_ppd_pkg.vhd   ma_ppd.vhd   ma_ppd_tb.vhd
 
Lab Midterm Exam from Spring 2011 - Tuesday Section
 
Lab Midterm Exam from Spring 2011 - Wednesday Section
Solutions:   regn.vhd   AV4.vhd   AV4_test.vhd
 
Lab Midterm Exam from Spring 2011 - Thursday Section
Solutions:  regn.vhd  full_adder.vhd  half_adder.vhd  madd.vhd  avg.vhd  avg_tb.vhd
 
Lab Midterm Exam from Spring 2010 - Monday Section
Solutions:   dgs.vhd   dgs_tb.vhd
 
Lab Midterm Exam from Spring 2010 - Tuesday Section
Solutions:   int-comb.vhd   cic.vhd   cic_tb.vhd
 
Lab Midterm Exam from Spring 2010 - Wednesday Section
Solutions:   grain128_pkg.vhd   grain128.vhd   grain128_tb.vhd
 
Lab Midterm Exam from Spring 2010 - Thursday Section
Solutions:   systolic_block.vhd   systolic_mult.vhd   systolic_mult_tb.vhd
 
Lab Midterm Exam from Spring 2008 - Tuesday Section
Lab Midterm Exam from Spring 2008 - Wednesday Section
Lab Midterm Exam from Spring 2008 - Thursday Section

Lab Midterm Exam from Spring 2007 - Tuesday Section
Lab Midterm Exam from Spring 2007 - Wednesday Section
 




Past Quizzes

Quizzes from Spring 2006
Quiz 1
Quiz 2 with solutions
Quiz 3
Quiz 4 with solutions
Quiz 5 with solutions
 
Quizzes from Spring 2013
Quiz 1
Quiz 2, Quiz 2 solutions
Quiz 3 Quiz 3 solutions

Past Midterm Exams for the Lecture

Midterm Exam from Spring 2021:
Text of the exam  Grading scheme    Solutions

Midterm Exam from Spring 2020:
Text of the exam for Group 1  Solutions for Group 1
Text of the exam for Group 2  Solutions for Group 2

Midterm Exam from Spring 2019:
Text of the exam for Group 1  Solutions for Group 1
Text of the exam for Group 2  Solutions for Group 2

Midterm Exam from Spring 2016:
Text of the exam  Answer sheet   Solutions

Midterm Exam from Spring 2015:
Text of the exam  Answer sheet   Solutions
Source Codes:  
Controller (Problems 1 & 4):   controller.vhd   controller_tb.vhd  
Variable Arithmetic Shifter Right (Problem 3): fixed_shifter_right.vhd   variable_shifter_right.vhd   variable_shifter_right_tb.vhd  

Midterm Exam from Spring 2014:
Text of the exam  

Midterm Exam from Spring 2013:
Text of the exam  Answer sheet   Solutions

Midterm Exam from Spring 2012
Solutions: Problem 1, Problem 2, Problem 3, Problem 4: piso.vhd, piso_inst.vhd

Midterm Exam from Spring 2011:    Group 1    Group 2    distribution of grades
Solutions for Group 1:  Problem 1, Problem 2: NFSR_1.vhd, F.vhd, NFSR_1_tb.vhd   Resource Utilization
Solutions for Group 2:  Problem 1, Problem 2: NFSR_2.vhd, F.vhd, NFSR_2_tb.vhd   Resource Utilization
 
Midterm Exam from Spring 2010
Solutions: Task 1: bsm.vhd   Task 2: bsm_tb.vhd  Task 3: solution
 

Past Final Exams

Final Exam from Spring 2020
Exam

Final Exam from Spring 2019
Group 1
Group 2

Final Exam from Spring 2015: Part 1, Part 2

Final Exam from Spring 2014: Part 1, Part 2

Final Exam from Spring 2013: Part 1, Part 2
Solutions: Part 1, Part 2

Final Exam from Spring 2012
Final Exam Part I - Group 1
Final Exam Part I - Group 2
Final Exam Part II
Solutions: P1_1.jpg, P1_2.jpg, P2.jpg, P3_Task1_1.jpg, P3_Task1_2.jpg, P3_Task2.pdf

Final Exam from Spring 2011
Final Exam Part I - Group 1
Final Exam Part I - Group 2
Final Exam Part II 
Solutions: P1_Block_diagram.jpg, P2_ASM_chart.jpg, P3_PicoBlaze_program.jpg