Project Selections and Further Instructions
CPSC / ECE 3710, Fall 2006 - First Given 9/26/06
1 General Instructions
To help you avoid falling behind, I would like to provide you with some gentle reminders.
- Get the most out of this class - it will truly help you become a very good Computer Engineer.
Past experience indicates that most students who did very well and got a lot out of this class did so
by starting early, and by spending a considerable number of hours outside of the ``class time.''
- It is also very important that all group members are caught up, and show sufficient drive and
committment.
- Each project group member is expected to learn everything about a project.
We have a final exam in this class, worth 10% of the points.
In this exam, we will be asking you two kinds of questions:
-
General design questions involving finite-state machines, CPU, peripherals, etc.
- Questions specific to your own project.
Note that the exam has to be answered individually.
- There will be periodic updates to the list of milestones against various dates posted at
our class webpage (under the heading ``Meeting Agenda'').
You are responsible for noting these updates.
- There is a final project to be demonstrated at the end of this class.
I have mentioned during my lectures what the projects could be.
Section 2 provides a listing of project types.
You must choose one of these project types by the date indicated on the class
webpage under ``Meeting Agenda'' (list of milestones).
You are also required to have, on your webpage, a one-page writeup of your chosen project
by the indicated date (Oct 3rd).
- New item added: There are many already developed designs in www.xess.com and other places
(e.g., entire IDE controllers are provided). Still, for maximal learning, it is best to try and
design your own controllers and designs (even the VGA was not given to the class in previous years).
However, in the real world, a designer does integrate existing designs. So,
-
If you build a controller for a peripheral all by yourselves, you get full credits
- If you assemble several existing peripherals, thus producing a larger and overall
more capable design, then also you get full credits.
Rule of thumb:
``One original controller is roughly worth two such adapted from somewhere and integrated!''
- New item added: Get it all working as a simple baseline processor before you add
the peripherals (i.e., seek a simple working design first).
The project selections requested below are to help team members plan ahead
regarding support software, extra readings, etc.
2 Project Selections
I would like to propose three classes of projects. I am also allowing you to define
your own project if you have something well thought out. I offer some details of
what you might do under each category. Clearly, every project will involve elements
of these tips (e.g., instruction set enhancements are helpful, no matter what project
you choose).
Remember that we also have XSA-100 systems (100K gates - twice the capacity). So if you
think your project is fun but you are worried about fitting it under 50K gates, we can
check out the 100K gate boards for you.
- A project involving the Xess board peripherals:
-
-
- Read the documentation on Codecs, IDE devices, PS2 devices, and other
peripherals supported by the Xess board you have. Then build a project involving
these devices.
- You may wish to add I/O oriented instructions in support of these peripherals.
- Design of a computer gaming system:
-
-
- Many computer games are possible to build. This will involve enhancing the
graphics capabilities. By employing caching, it is possible to reduce the VGA
bandwidth needs, which can make your CPU run faster, in addition to giving rise
to more stable VGA images.
- You may make another copy of your processor, and then use a dual-core design, with
one CPU serving as a graphics co-processor.
You may specialize this processor to be heavily memory operation oriented (e.g., support
a block-move instruction, serve as a DMA engine, etc).
You can read about ``bit blit'' on Wikipedia and generate some ideas.
- Instruction set enhancement, plus targeting a compiler:
-
-
- You may wish to add new instructions. Then you may target a compiler to generate code
for your processor. I had suggested using ``lcc'' or modifying the ``Mustang'' compiler
put online.
- Some of the old ``MC 68000''-type instructions are handy for supporting procedure calls.
- A project involving some instruction set enhancements + compiler support would be great.
- Adding Extra Processor Hardware Features:
Some choices in this area are:
-
- Add interrupts (handy in game programming)
- Incorporate pipelining
- Add interrupts
- Incorporate prefetch
- Build a branch predictor
- Provide hardware multipilication
You can then study the area/time tradeoffs involved.
- Your own project proposal:
- Define what you would like to do, discuss with us, and then
propose by the due date.
This document was translated from LATEX by
HEVEA.