ECE 448

FPGA and ASIC Design with VHDL

Spring 2015

 

Quick Links

Organization

Lecture

Lab

Instructor

Kris Gaj
The Nguyen Engineering Building, room 3225
e-mail:  kgaj (at) gmu.edu
             Please start a subject of your e-mail from "ECE 448:"
 

Teaching Assistants


Monday and Wednesday section:
Umar Sharif
e-mail: malik.umar.sharif (at) gmail.com

Thursday section:
Rabia Shahid
e-mail: rabia.shahid4 (at) gmail.com

Lecture and Lab Time

Lecture:

Monday, Wednesday, 1:30-2:45 PM, Robinson Hall A, room 412

Labs:

Monday, 4:30-7:10pm, Engineering Building, Room 3208
Wednesday, 7:20-10:00pm, Engineering Building, Room 3208
Thursday, 7:20-10:00pm, Engineering Building, Room 3208

All students will obtain access to the ECE Labs 3208 and 3204, and are welcome to work on their experiments at any time.
Experiment demonstrations will be accepted exclusively during the class time for a particular lab section.

Office Hours:

Umar Sharif:

Rabia Shahid:

Kris Gaj:

All office hour sessions are open to all students, independently of their assignment to a particular lab section.

Course credit:

4 hours

Grading

Lab assignments (Part I):   20%
Midterm exam for the lecture:  10%
Midterm exam for the lab:  15%
Quizzes & homework  10%
Lab assignments (Part II):    20% + 2% bonus
Final exam:  25%

Lecture

Textbooks

Required textbooks

Pong P. Chu, FPGA Prototyping by VHDL Examples: Xilinx Spartan-3 Version, Wiley-Interscience, 2008, ISBN: 978-0-470-18531-5.

Recommended textbooks

  1. Stephen Brown and Zvonko Vranesic, Fundamentals of Digital Logic with VHDL Design, McGraw-Hill  © 3rd edition.
  2. Clive "Max" Maxfield, The Design Warrior's Guide to FPGAs: Devices, Tools and Flows, Newnes 2004

Lecture Slides

Final Exam Exercise:   text   analysis   block diagram   ASM chart

Final Exam - general types of problems that are likely to appear on the final exam

Lecture 18 - PicoBlaze Instruction Set & Assembler Directives. [ppt, pdf]

Lecture 17 - PicoBlaze I/O & Interrupt Interface.  [ppt, pdf]

Lecture 16 - PicoBlaze Overview.  [ppt, pdf]

Lecture 15 - RTL Design Methodology. Part II: SORTING Example. [ppt, pdf]

Lecture 14 - RTL Design Methodology. Part I: STATISTICS Example. [ppt, pdf]

Lecture 13 - VGA Display. Part 5: The Complete Pong Game. [ppt, pdf]

Lecture 12 - VGA Display. Part 4: Text Generation. [ppt, pdf]

Lecture 11 - VGA Display. Part 3: Animation. [ppt, pdf]

Lecture 10 - VGA Display. Part 2: Pixel Generation. [ppt, pdf]

Lecture 9 - VGA Display. Part 1: VGA Synchronization. [ppt, pdf]

Lecture 8 - Modeling of Circuits with Regular Structure. [ppt, pdf]

Lecture 7 - Algorithmic State Machine (ASM) Charts: VHDL Code and Timing Diagrams [ppt, pdf]

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

Lecture 5 - FPGA Devices & FPGA Design Flow. [ppt, pdf]

Lecture 4 - Sequential-Circuit Building Blocks. Constants & Packages. Mixing Description Styles. [ppt, pdf]

Lecture 3 - Combinational-Circuit Building Blocks. Data Flow Modeling of Combinational Logic. [ppt, pdf]

Lecture 2 - VHDL Refresher [ppt, pdf]

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

Posted gradually typically one day before a given lecture.

See Course Webpage from Spring 2014 for slides from the previous year.
 

Homework

      Posted gradually typically one week before a given homework is due.

Labs

General Laboratory Rules

Lab Assignments

Lab Assignment 6: Using PicoBlaze. Speed Punching Game.

Lab Assignment 5: Mandelbrot Fractal Viewer.

Lab Assignment 4: VGA Display. The Frogger.

Lab Assignment 3: Finite State Machines. Automated Teller Machine.

Lab Assignment 2: Implementing Combinational and Sequential Logic in VHDL. - with Fig. 3 revised on 02/09/2015

Lab Assignment 1: Developing Effective Testbenches.

The specifications of lab assignments will be posted gradually here at least one day before a given assignment is introduced.

See Course Webpage from Spring 2014 for specifications of experiments from the previous year.

Lab Slides & Examples

Lab Lecture 7: Troubleshooting and Data Analysis using Logic Analyzer

Lab Lecture 6: Using PicoBlaze. Speed Punching Game.

Lab Lecture 5: Mandelbrot Set Fractal.

Lab Lecture 4: VGA Display. The Frogger.

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

Lab Lecture 2: Implementing Combinational and Sequential Logic in VHDL. Simulation using Aldec Active-HDL.

Lab Lecture 1: Developing Effective Testbenches. Simulation using Xilinx ISim.

Lab slides and examples will be posted gradually at least one day before a given experiment is introduced.

See Course Webpage from Spring 2014 for lab slides from the previous year.


Software

Please see Tutorials available on the page: Tutorials and Lab Manuals.
Use "448" or "ECE 448" as a filter.

The FPGA design process will be based on the following design tools:

- Design Entry and Simulation: ISim from Xilinx, Active HDL from Aldec, ModelSim PE from Mentor Graphics
- Logic Synthesis: Xilinx XST from Xilinx or Synplify Premier DP from Synopsys
- Implementation: Xilinx ISE Design Suite or Xilinx ISE WebPACK from Xilinx.

Hardware

The boards will be distributed to the students for free by the TA during the lab sessions in the fourth or fifth week of the semester. The boards should be returned to the TA during the last lab sessions of the semester. In case the board you received appears to be out-of-order at the end of the semester, it will be your responsibility to replace it by a new board of the same type.

Alternatively, you can decide against using a departmental board, and purchase a board directly from Digilent Inc.

Useful References

VHDL

VHDL Instructions: Templates & Examples

OpenCores Coding Guidelines

The Low Carb VHDL Tutorial - by Bryan Mealy

Frequently Asked Questions about VHDL from comp.lang.vhdl

FPGAs & FPGA Boards

Documentation for Xilinx FPGA devices, and in particular for the Spartan 6 family

Digilent Nexys3 FPGA Board

Xilinx ISE

Xilinx manuals for ISE software.

Related course web pages:

ECE 448:   Spring 2013   Spring 2012   Spring 2011   Spring 2010   Spring 2009    Spring 2008    Spring 2007    Spring 2006

ECE 449:    Spring 2005  Spring 2004    Spring 2003

ECE 545:     Fall 2013   Fall 2012   Fall 2011   Fall 2010   Fall 2009   Fall 2006

Past Exams

Past Lab Exams

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

In-Class 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  

In-Class Midterm Exam from Spring 2014:
Text of the exam  

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

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

In-Class 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
 
In-Class Midterm Exam from Spring 2010
Solutions: Task 1: bsm.vhd   Task 2: bsm_tb.vhd  Task 3: solution
 
In-Class Midterm Exam from Spring 2009
In-Class Midterm Exam from Spring 2008
In-Class Midterm Exam from Spring 2007

Hands-on Midterm Exam from Spring 2004:
Solutions to the Midterm Exam - Tuesday section
Solutions to the Midterm Exam - Thursday section
 
Hands-on Midterm Exam from Spring 2005:
Solutions to the Midterm Exam - Monday section
Solutions to the Midterm Exam - Tuesday section
Solutions to the Midterm Exam - Thursday section
 
Practice Midterm Exam from Spring 2006
Practice Hands-on Midterm Exam

 

Past Final Exams

Practice Final Exam from Spring 2006
Practice final exam - Parts I & II
Solutions to Practice final exam - Part I
Solution to Part 2 Problem 3 - 2to1mux.vhd, 16to1mux.vhd
 
Final Exam from Spring 2006
Final Exam Part I - version 1
Final Exam Part II - version 1
Final Exam Part I - version 2
Final Exam Part II - version 2
 
Final Exam from Spring 2007
Final Exam Part I - version 1
Final Exam Part II - version 1
Final Exam Part I - version 2
Final Exam Part II - version 2
 
Final Exam from Spring 2008
Final Exam Part I
Final Exam Part II
 
Final Exam from Spring 2009
Final Exam Part I
Final Exam Part II
 
Final Exam from Spring 2010
Final Exam Part I
Final Exam Part II
 
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

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 2013: Part 1, Part 2
Solutions: Part 1, Part 2

Final Exam from Spring 2014: Part 1, Part 2