Stephen A. Edwards Columbia University Crown
  CSEE 4840
Embedded System Design
Spring 2006

General Information

Class meets Tuesdays and Thursdays, 11:00 AM - 12:15 PM in Room 227, Mudd.

Mudd 1235 is the lab, which is filled with Linux workstations and FPGA boards. Registered students will receive accounts on these machines and 24-hour badge access to this room.

Do the labs in groups of three. Project groups should be three students or more.

Staff

Name Email Office hours Location
Prof. Stephen A. Edwards sedwards@cs.columbia.edu T 3-4, Th 4-5 1235 Mudd
Cristian Soviani soviani@cs.columbia.edu W 6-8, Th 5-7 1235 Mudd

Overview

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:

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.

You are strongly encouraged to take COMS W4823, Advanced Programming. In it, you will learn logic design and VHDL coding, both of which are crucial to success in 4840.

Tutorials

Schedule

Date Lecture Notes Due
January 17 Embedded Systems pdf pdf
January 19 Low-Level C Programming pdf pdf
January 24 HW/SW Interfaces pdf pdf
January 26 VHDL 1 pdf pdf
January 31 VHDL 2
February 2 VHDL 3 Lab 1pdf .tar.gz
February 7 Video pdf pdf
February 9 The OPB pdf pdf Lab 2pdf .tar.gz
February 14 Video Controller 1 pdf pdf
February 16 Video Controller 2 Lab 3pdf .tar.gz
February 21 Serial Communication 1 pdf pdf Proposal
February 23 Serial Communication 2 Lab 4pdf .tar.gz
February 28 VHDL coding hints pdf pdf
March 2 (no lecture) Lab 5pdf .tar.gz
March 7 (no lecture)
March 9 (no lecture)
March 14 Spring Break
March 16 Spring Break
March 21 Memory pdf pdf Lab 6pdf .tar.gz
March 23 Processors, FPGAs, and ASICs pdf pdf Design
March 28 Hardware/software tradeoffs pdf pdf
March 30 The PS/2 Keyboard pdf pdf .zip
April 4 Sprite Graphics pdf pdf
April 6
April 11
April 13 75% Demo
April 18
April 20
April 25
April 27
May 9 Final Presentations, reports due Project

The Project

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

  1. A short project proposal describing in broad terms what you plan to build and how you plan to build it
  2. 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.
  3. 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.
  4. A presentation on your project to the class
  5. 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:

  1. An overview of your project: a revised version of your project proposal.
  2. The detailed project design documents: a revised version of the project design.
  3. A section listing who did what and what lessons you learned and advice for future projects
  4. 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.

Projects

DVoiceR: (CS)
Proposal    PDF fileDesign    PDF fileFinal Report    Compressed Tar ArchiveProject Files   
Neil Sarkar    Adegoke Adediran    Stephanie Maryon   
popi: (SE)
Proposal    PDF fileDesign    PDF fileFinal Report    Compressed Tar ArchiveProject Files   
Yashket Gupta    Javier Coca    Adam Lehenbauer    Alexander Robertson   
SNAKE: (CS)
Proposal    PDF fileDesign    PDF fileFinal Report    Compressed Tar ArchiveProject Files   
Wei-Chung Hsu    Chiali Liang    Xunzhou Zhang    David Lau   
VGLR: (SE)
Proposal    PDF fileDesign    PDF fileFinal Report    Compressed Tar ArchiveProject Files   
Dawit Bekele    Alison Leonard    Han Cheng Liang    Edward Mung   
Hera: (SE)
Proposal    PDF fileDesign    PDF fileFinal Report    Compressed Tar ArchiveProject Files   
David Lariviere    Deum Jik Park    Bryan Gwin    Michael Verbalis   
Fortune-Teller: (CS)
Proposal    PDF fileDesign    PDF fileFinal Report    Compressed Tar ArchiveProject Files   
Leo Gertsenshteyn    Russel Santillanes    Kathryn Hagan   
Internet-Radio: (CS)
Proposal    PDF fileDesign    PDF fileFinal Report    Compressed Tar ArchiveProject Files   
Yingjian Gu    Qiutao Yu    Chun-Chuen Li    Imran Quyyum   
spycam: (CS)
Proposal    PDF fileDesign    PDF fileFinal Report    Compressed Tar ArchiveProject Files   
Amit Mehta    Kshitij Misra    Ken Tang   
Picture-Frame: (CS)
Proposal    PDF fileDesign    PDF fileFinal Report    Compressed Tar ArchiveProject Files   
Alan Rabinowitz    Mothler Dalexis    Rafael Guevara   
Web-Server: (SE)
Proposal    PDF fileDesign    PDF fileFinal Report    Compressed Tar ArchiveProject Files   
Franklin Ma    Howard Wang    Victor Wang    William Wong   
VoIP: (SE)
Proposal    PDF fileDesign    PDF fileFinal Report    Compressed Tar ArchiveProject Files   
Ari Klein    George Sirois    Ashish Sharma    Sambuddho Chakravarty   

Xilinx Documentation

OPB documents

XSB Manual and Peripheral Datasheets

Links

Class Policies

Grading 30% Labs
70% Project
Late Policy Zero credit for anything handed in after it is due without explicit approval of the instructor.
Collaboration Policy You may collaborate with your group members on the labs, but not with other groups. You may collaborate with anybody on the project, but must cite sources if you use code.

Valid HTML 4.01 Valid CSS