Prerequisites: ELEN E3910 or COMS W3843 or the equivalent. Embedded
system architecture and programming. I/O, analog and digital
interfacing, and peripherals. Weekly laboratory sessions and term
project on design of a microprocessor-based embedded system including
at least one custom peripheral. Knowledge of C programming and
digital logic required. Lab required.

This is a modernization of ELEN E3940y, Microprocessor Laboratory.
Its goal is to introduce you to issues in hardware/software
interfacing, practical microprocessor-based system design issues such
as bus protocols and device drivers, and practical digital hardware
design using modern logic synthesis tools. You will put all
of this to use in the lab where you will be given the opportunity to
implement, using a combination of C and the VHDL hardware
description langauge, a small embedded system.

The focus of the course will be a lab, which will be in two parts.
During the first half of the class, teams will each implement
the same "canned" project designed by the instructor and be given
substantial guidance. This project is meant as an opportunity for you
to learn the development tools and basic concepts. During
the second half, each team will design and implement a
comparable project of their own with guidance from the instructor and
TAs.

This course is designed to take over the role ELEN 3940 once played in
the EE and Computer Engineering curriculum, i.e., as a "capstone"
class in which students will integrate their knowledge of digital
logic, programming, and system design to produce a real system. It is
intended to complement ELEN 4340, Computer Hardware Design. 4840 will
focus more on system-design issues and include a large section on
hardware/software integration. Students in 4840 will use processors
and peripherals as building blocks. By contrast, students in 4340
have logic gates as building blocks.

Possible second projects include:

Digital tone control (analog audio in/out, digital DSP operations)

Digital sound effects processor (e.g., echo, tone shifting)

Real-time spectrum analyzer (audio in, FFT, VGA display)

Simple video effects processor (e.g., solarization, inversion)

Speech synthesizer (analog audio out, hard-wired vocal tract models)

Digital picture frame (CF to JPEG decoder, VGA out)

Internet radio (digital audio in via Ethernet, analog audio out)

Prerequisites

ELEN E3910 or COMS W3843 or the equivalent. You must understand
digital logic design and C programming. Prior experience with hardware
description languages, FPGAs, or embedded processors is not required.

Deliberately blurs the line between hardware and software implementation
of embedded system components.

Near Columbia, this is available at
Papyrus Booksellers
at the corner of 114th and Broadway. Textbooks are downstairs.

The Project

You'll perform a design-it-yourself project in the second half of
the class. There are five deliverables for the project:

A short project proposal describing in broad terms what you plan
to build and how you plan to build it

A detailed project design describing in detail the architecture of your
project, both hardware and software. This should include
block diagrams, memory maps, lists of registers: everything someone
else would need to understand your design. You should have done some
preliminary implementation work by this point to validate your design.

An early demo of your project. It should be roughly 75% working
and be showing signs of life. This is to make sure you are making
reasonable forward progress.

A presentation on your project to the class

A final project report

Project groups should be three students or more.

The Project Report

This is a critical part of the project and will be a
substantial fraction of the grade.

Include the following sections:

An overview of your project: a revised version of your project
proposal.

The detailed project design documents: a revised version of the project
design.

A section listing who did what and what lessons you learned and
advice for future projects

Complete listings of every file you wrote for the project.
Include C source, VHDL source, and things such as .mhs files. Don't
include any file that was generated automatically.

Include all of this in a single .pdf file (don't print it
out) and email it to me on the due date.

Also create a .tar.gz file (see the online documentation
for the `tar' program to see how to create such a file. Briefly,
create a file called `myfile' with the names of all the files you want
to include in the archive and run

tar zcf project.tar.gz `cat myfiles`

to create the archive.)
that just includes the files necessary to build your project, such as
I did for the labs. Also email this to me by the due date.