ECE 448

FPGA and ASIC Design with VHDL

Spring 2014

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 section:
Umar Sharif
e-mail: malik.umar.sharif (at) gmail.com

Wednesday & Thursday sections:
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%
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 17 ASIC vs. FPGA. [ppt, pdf]

Instruction Set Class Exercise 2:  text   program analysis

I/O Class Exercise 1:   text   block_diagram   address_decoding

Instruction Set Class Exercise 1:   text   program analysis

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

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

Lecture 14 - PicoBlaze Overview.  [ppt, pdf]

Lecture 13 - FPGA Memories. [ppt, pdf]  (revised 05/01/2014)
 
Lecture 12 - RTL Design Methodology. Part II: SORTING Example. [ppt, pdf]
Lecture 11 - RTL Design Methodology. Part I: STATISTICS Example. [ppt, pdf]
Lecture 10 - VGA Display. Part III: Text Generation. [ppt, pdf]

Lecture 9 - VGA Display. Part II: Animation. [ppt, pdf]

Lecture 8 - VGA Display. Part I: Synchronization and Pixel Generation. [ppt, pdf]

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

Lecture 6 - Finite State Machines. State Diagrams, State Tables, Algorithmic State Machine (ASM) Charts, and VHDL Code. [ppt, pdf] (updated Feb. 24, 2014)

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

Lecture 4 - Sequential-Circuit Building Blocks. 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 2013 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. Fast Sorting.

Lab Assignment 5: Digital Image Processing. Histograms and Image Equalization.

Lab Assignment 4: VGA Display. Mini-Pacman.

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

Lab Assignment 2: Implementing Combinational and Sequential Logic in VHDL: A Two-Decade BCD Addition/Subtraction Unit.

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 2013 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. Fast Sorting.

Lab Lecture 5: Digital Image Processing. Histograms and Image Equalization.

Lab Lecture 4: VGA Display. Mini-Pacman.

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 2013 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 Lab Exams

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