Microprocessor Design Laboratory, ECE/CP SC 3710
http://www.cs.utah.edu/classes/cs3710 -- Fall 2006
T,H 3:40 PM - 5:00 PM --- EMCB 104
Prof. Ganesh Gopalakrishnan
School of Computing, University of Utah



TA Office Hours
  Aaron Neal
M 2 - 3.30 3 - 3.30
T 3:30 - 5 3:30 - 5
W 12:30 - 2 4 - 5
H 5 - 7 5 - 6:30
F None 3 - 5

    This Webpage [.pdf] [.tex]    
    Handouts (Including assignments AND FAQs)    
    Grades    
    Grades Explanation    
    Projects    
    ACS Webpage    
    Fall 2004's Webpage for CPSC / ECE 3710    
    Spring 2004's Webpage for CPSC / ECE 3700    



    Xilinx Webpage    
    Xess Corporation's Website    
    XST (Mother board - Xess Inc) Manual    
    XSA (Daughter board - Xess Inc) Manual    
    Excel Spread-sheet of all the XSA/XST pins to make your .UCF files    
    ISE Tutorial With ScreenShots [.doc] [.html]    
    7400 series chip quick reference    
    7400 series chip manuals    
    ZIP file containing 7400-series parts drawn as packaged per chip    
    For those missing unisim libraries, use this unisim folder (see class email)    
    Univ of Michigan EE 427 Spec of CR-16 -- gives table of condition codes for branch instructions    

Table of Contents

1  Introduction

Welcome to 3710! This class is designed to help you master the process of designing and debugging computing systems. You will be designing your machines in groups of four, working over one semester, using an FPGA platform. Most students will end up choosing the XSA/XST-50 board combination for their work. You won't need the higher capacity board combination XSA/XST-100, although we do have a few of them available. You will also be able to integrate material you have learned in previous classes, notably CPSC/ECE 3700. Student kit checkout is supposed to be on Aug 24, 25, and 28th at the DSL. I'll inform the DSL staff to expect you.

We have two half TAs, Aaron Greer and Neal Tew, helping us. They took 3710 during Fall 2004 and did impressive projects -- so I am very happy to have them helping us! Please send all emails to teach-cs3710@cs.utah.edu. That way, all three of us will receive the emails. Please do not send us class related emails directly to us, unless absolutely necessary.

You should form project groups of size four. Since there will be roughly 40 students in our class, there will be altogether about nine project groups.

There will be lectures conducted on Thursdays, and Labs / Meetings conducted on Tuesdays. This pattern will continue till all the lecture material has been gone over, from which point there will only be labs. Some ``labs'' will also include regularly scheduled meetings between students and the TA/instructor.

Project group members must all contribute equally to the overall project, but may individually specialize as they see fit. Each group must maintain a project webpage, and keep it up to date with project updates. Here is what I am requiring each webpage to have: Please protect your webpage using a password set up with the help of the .htaccess facility. (A Google search will provide many tutorials on this topic.)

Point distribution for your work:
  1. 10 points - A take-home final exam given during the exam week, and solved individually by each student. This will test your basic understanding of digital design, including state machine design and the ability to approach the design of a medium-sized digital system.

  2. 45 points - Final project demo + project report. The project demo sessions will be on 12/5/06 and 12/7/06. The project report consists of last minute updates to the project webpage (see below) and a good summary statement of the highlights of the project (also added to the webpage). No printed project report needs to be turned in.

  3. 45 points - Weekly progress updates per group. Since there will be roughly 12 meetings, each week's work is worth roughly 4 points (or each member's work per week is worth roughly one point). I am allowing groups the option to call off meetings, and instead provide extensive updates through the webpages. This way, for routine updates, we don't have to be all dragged in. However, for required checkoffs, I am requiring that the TAs or I witness the checkoffs. The checkoffs can be witnessed during 1-1 meetings (need not happen in the DSL if the students have their laptops and the checkoffs don't need any additional DSL hardware).
Project group formation will be initiated by the TAs. Students who have already decided to be part of a project group should send an email to the TAs informing them of this fact by Monday 8/28. The TAs will also be circulating a handout on 8/24 asking for Your free time slots will be the basis for

2  References

There are no assigned textbooks. A good reference is Fundamentals of Digital Logic with VHDL Design, Second Edition by Brown and Vranesic. Another good reference (to know about the internals of FPGAs) is FPGA-Based System Design by Wayne Wolf. A great source of design ideas is the Xess Corporation website.

3  Administrative Matters

4  Calendar


        August              September             October               November              December
 Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
                                       1  2    1  2  3  4 FB  6  7            1  2  3  4                  1  2
                        3  4  5  6  7  8  9    8  9 10 11 12 13 14   5  6  7  8  9 10 11   3  4  5  6 LD
                       10 11 12 13 14 15 16   15 16 17 18 19 20 21  12 13 14 15 16 17 18
             24 25 26  17 18 19 20 21 22 23   22 23 24 25 26 27 28  19 20 21 22 TG 24 25
 27 28 29 30 31        24 25 26 27 28 29 30   29 30 31              26 27 28 29 30

  
FB = Fall Break
LD = Last Day of classes

5  ADA Statement

ADA Statement: The University of Utah ECE Department and School of Computing (CP SC) seek to provide equal access to its programs, services and activities for people with disabilities. If you will need accommodations in this class, reasonable prior notice needs to be given to the instructor and to the Center for Disability Services, 162 Olpin Union Bldg, 581-5020 (V/TDD) to make arrangements for accommodations. This information is available in alternative format with prior notification.

6  Groups



Group No. Group Name Designer Names Project URL
1 Fantastic 5 Nick Edwards  
1 Fantastic 5 Richard Wright  
1 Fantastic 5 Edward St. Louis  
1 Fantastic 5 Paul Hansen  
1 Fantastic 5 Tyson Ellsworth  
2 BLT Travis Reed  
2 BLT Todd Hummel  
2 BLT Christopher Jones  
2 BLT Spencer Graff  
3 Synapse Toren Monson  
3 Synapse Michael Delisi  
3 Synapse Dariel Marlow  
3 Synapse Matt Stoker  
4 VHDL Squad Steven Tomer  
4 VHDL Squad Nate Decker  
4 VHDL Squad Nick Nielson  
4 VHDL Squad Matt Ricks  
5 RISC Geof Sawaya  
5 RISC Ryan Taylor  
5 RISC Rashin Balkameh  
5 RISC Vahid Massershart  
6 CPU Brian Ashton  
6 CPU Koto Norose  
6 CPU Mike Beck  
6 CPU Dana Young  
6 CPU Matt Fisher  
7 DBS Tyler Hutchinson  
7 DBS Scott Holloway  
7 DBS Dustin Tanner  
7 DBS Jeff Gorton  
8 Indefatigables Don Delamar  
8 Indefatigables Cameron Currey  
8 Indefatigables Ken Dean  
8 Indefatigables Layne Pedersen  

7  Meeting Schedules

Group 1 meets Ganesh
3:40 to 4:00 PM on: Sep 5, Sep 19, Oct 3, Oct 17, Oct 31, Nov 14, Nov 28
Group 1 meets Aaron
3:40 to 4:00 PM on: Sep 12, Oct 10, Nov 7, Nov 28
Group 1 meets Neal
3:40 to 4:00 PM on: Sep 26, Oct 24, Nov 21

Group 2 meets Ganesh
3:40 to 4:00 PM on: Sep 12, Sep 26, Oct 10, Oct 24, Nov 7, Nov 21, Dec 5
Group 2 meets Aaron
3:40 to 4:00 PM on: Sep 5, Oct 3, Oct 31
Group 2 meets Neal
3:40 to 4:00 PM on: Sep 19, Oct 17, Nov 14, Nov 28

Group 3 meets Ganesh
4:00 to 4:20 PM on: Sep 5, Sep 19, Oct 3, Oct 17, Oct 31, Nov 14, Nov 28
Group 3 meets Aaron
4:00 to 4:20 PM on: Sep 12, Oct 10, Nov 7, Nov 28
Group 3 meets Neal
4:00 to 4:20 PM on: Sep 26, Oct 24, Nov 21

Group 4 meets Ganesh
4:00 to 4:20 PM on: Sep 12, Sep 26, Oct 10, Oct 24, Nov 7, Nov 21, Dec 5
Group 4 meets Aaron
4:00 to 4:20 PM on: Sep 5, Oct 3, Oct 31
Group 4 meets Neal
4:00 to 4:20 PM on: Sep 19, Oct 17, Nov 14, Nov 28

Group 5 meets Ganesh
4:20 to 4:40 PM on: Sep 5, Sep 19, Oct 3, Oct 17, Oct 31, Nov 14, Nov 28
Group 5 meets Aaron
4:20 to 4:40 PM on: Sep 12, Oct 10, Nov 7, Nov 28
Group 5 meets Neal
4:20 to 4:40 PM on: Sep 26, Oct 24, Nov 21

Group 6 meets Ganesh
4:20 to 4:40 PM on: Sep 12, Sep 26, Oct 10, Oct 24, Nov 7, Nov 21, Dec 5
Group 6 meets Aaron
4:20 to 4:40 PM on: Sep 5, Oct 3, Oct 31
Group 6 meets Neal
4:20 to 4:40 PM on: Sep 19, Oct 17, Nov 14, Nov 28

Group 7 meets Ganesh
4:40 to 5:00 PM on: Sep 5, Sep 19, Oct 3, Oct 17, Oct 31, Nov 14, Nov 28
Group 7 meets Aaron
4:40 to 5:00 PM on: Sep 12, Oct 10, Nov 7, Nov 28
Group 7 meets Neal
4:40 to 5:00 PM on: Sep 26, Oct 24, Nov 21

Group 8 meets Ganesh
4:40 to 5:00 PM on: Sep 12, Sep 26, Oct 10, Oct 24, Nov 7, Nov 21, Dec 5
Group 8 meets Aaron
4:40 to 5:00 PM on: Sep 5, Oct 3, Oct 31
Group 8 meets Neal
4:40 to 5:00 PM on: Sep 19, Oct 17, Nov 14, Nov 28

8  Meeting Agenda

The following items will be expected from you during our meetings. You may also ask questions pertaining to what you are supposed to demonstrate by the next week's meeting.
Sep 5
  1. Your webpages must be ready. I should be able to login and see the public and private sections.
  2. Evidence of the self-assessment circuit having been finished must be present.

    One submission is sufficient for the whole group. However, I may ask any group member - picked at random - to explain the solution to me. I may also ask that member to explain how the finite-state machine works.


Sep 12
  1. You will be asked to show evidence on the webpage that you have played with the pipelined SDRAM controller and the mock CPU connected to it, and that
    1. You understand how the mock CPU works
    2. You have studied roughly how the rest of the system works
    3. You have changed the mock CPU to read and write different numbers and are still able to confirm its logic


  2. Given three distinct integers situated at locations EFFD, EFFE, and EFFF, you are asked to write an assembly program that starts from location F000 (ORG is F000) such that
    1. The program compares these three integers and finds the maximum
    2. If the largest number is situated at EFFD, it must write into location EFFC the value EFFD
    3. If the largest number is situated at EFFE, it must write into location EFFC the value EFFE
    4. If the largest number is situated at EFFF, it must write into location EFFC the value EFFF
    We will be asking you to discuss the logic of this program and the flag values at various places in the program. Those groups who give nice crisp answers within the allotted time will be rewarded with extra points. Practice your answer to me beforehand, if you wish (highly recommended). Your assembly code and your solution must be present on the webpage by the time you come to meet us.


Sep 19
  1. The group members must show me how they are proceeding with the construction of the assembler and the simulator. I will check your understanding at least as far as the thin-slice instructions are concerned. All the documentation must be there on the webpage also.

  2. We will have given you a dual-port unit with VGA and mock CPU. You must show evidence that you have used this design, and show the extent to which your circuit works.

  3. You must present evidence that you can successfully use the Block RAM memory. I will be assigning a simple design (Fibonacci circuit) that you must show working (evidence on webpage).


Sep 21
I allowed everyone to checkoff the `fib' circuit and the `largest' circuit by the midnight of Sep 21st.

Sep 26
  1. The group members must show detailed hardware flow-charts for the thin-slice hardware and control logic. This means the following (I have also indicated the readings):
    1. Read the excerpts from Tredennick's book handed out in class (the handout that talks about hardware flowcharts). This was also covered in a recent lecture (go find out which).
    2. Additional resources are provided in two textbooks kept in the lab. One book is by Brown and Vranesic - the book used in 3700. The other book is on microprocessor design in VHDL. You may find it useful.
    3. Also look at the last page of
      http://www.cs.utah.edu/classes/cs3710/handouts/3:9-7/ISA.pdf
    4. Based on these readings, you must draw one datapath that supports all the thin-slice instructions.

    5. Then you must show hardware flow-chart sequences (sequences of boxes) for each thin-slice instruction. Each state (rectangle) of these HW flow-charts mentions which mux is set in which direction, which latch is enabled, etc.

    6. On Tuesday, we will ask each group to step through the hardware flow-charts and ask them to explain how each instruction works.


Oct 3
  1. Project options have been listed on the class webpage at

    http://www.cs.utah.edu/classes/cs3710/handouts/6:9-28/project-selections.html

    By the meeting time of this date, you must put on your webpage a 1-page description of the project you have chosen.

  2. You must walk us through your thin-slice schematic and the associated VHDL files.


Oct 10
The thin-slice hardware must be able to simulate using the block RAM. You must present the simulation waveforms, schematics, and explain during our meeting how it all works.

This is a major milestone, carrying a lot of checkoff points.

Note that this milestone requires the thin-slice to work completely under simulation.

Oct 17
There must be evidence on the webpage that your thin-slice hardware is working 100%, at least using the block-RAM as the main memory. (Extra points for those who are able to make use of the SDRAM as the main memory.)

Also the assembler and simulator must be completely working for the thin-slice.

This is a major milestone, carrying a lot of checkoff points.

Note that this milestone requires the thin-slice hardware to work completely. Display the internal state of selected registers and flags using either the LED or the VGA interface.

We will be cancelling all lectures after Oct 24th.

Oct 24
Adequate progress towards the full design

Oct 31


Old version: Adequate progress towards the full design

New version: The hardware must be able to work with the SDRAM and VGA. This is also a major milestone.

I'm sure you wanted this to happen anyhow. This deadline is being posted so that you achieve this milestone sooner rather than later... as it will help you tons:
Ideally the CPU must have advanced a bit more in terms of instructions with respect to the thin-slice (e.g. add a branch).

Requirements for checkoff: Checkoff your CPU hardware with the SDRAM and VGA working in some capacity. The CPU must be able to run a program that modifies the image being displayed by the VGA.

Nov 7
Adequate progress towards the full design

Nov 14
:
For those groups facing HW issues (things not working), they are required to find out exactly what works and exactly what does not, and lead us thru their design and the working/non-working parts with great patience. Then we might be able to help you get the designs to work. Without such fault isolation and ability to explain things to us, we can't help you. You are welcome to do this all well before Nov 14th. The TAs have been ever-available and have lots of experience to put to use. You however have to give them 'bite-sized' problems to debug for you (could be big bites, but still bite-sized).

Nov 21
Everyone must show evidence on their webpage that their CPUs are working along with the VGA controller on at least 6 assembly programs. These programs must be assembled using their own assembler. Their simulator must also be shown to be working on this date (evidence on webpage).
Nov 28
Each group must be able to argue, supported by evidence on webpage, that their CPUs are truly done, and that all that remains is to update the webpages.
Dec 5
Project Demos during extended lab time (3-5). Web pages must be fully updated.
Dec 7
Project Demos during extended lab time (3-5). Only last-minute items to close-off should remain.
Note: By ``evidence on webpage'' (above), I mean some collected evidence such as schematics, simulation results, photographs, short MPEG movies, etc, put on the webpage.


This document was translated from LATEX by HEVEA.