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


Don't miss this year's highlights

General Information

Class meets Tuesdays and Thursdays, 2:40 - 3:55 PM in 717 Hamilton Hall.

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 by yourself. Project groups should be three students or more.


Name Email Office hours Location
Prof. Stephen A. Edwards T 1-2, Th 4-5 462 CSB or 1235 Mudd
Prof. David Lariviere F 10-12 1235 Mudd
Luis Pena W 4-5, Th 6:15-7:15 1235 Mudd
Amandeep Chhabra W 3-4, Th 12-1 1235 Mudd
Stephen Pratt T 11-12, Th 1:30-2:30 1235 Mudd


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.

The goal of this class 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.

This is a lab course done in two parts. During the first part of the class, each student will implement the same "canned" designs designed by the instructor and be given substantial guidance. These are meant as an opportunity for you to learn the development tools and basic concepts. In the second part of the class, you will divide up into teams and each will design and implement a comparable project of their own with guidance from the instructor and TAs.

This course is a capstone 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 focuses more on system-design issues and include a large section on hardware/software integration. Students in 4840 will use gates, processors, peripherals, and software as building blocks.

Possible projects include:


CSEE 3827, Fundamentals of Computer Systems or the equivalent. You must understand digital logic design. Prior experience with hardware description languages, FPGAs, or embedded processors is not required.

COMS 3157, Advanced Programming or the equivalent. Specifically, C programming experience. While 4840 will teach you advanced aspects of embedded C programming, you need to come in with significant C experience.

COMS W4823, Advanced Digital Logic Design. While not a formal prerequisite, you are strongly encouraged to take it. In it, you will learn advanced logic design and VHDL coding, both of which are crucial to success in 4840.



Date Lecture Notes Due
Jan 22 Embedded Systems
History of the Apple II
Jan 24 VHDL
Jan 29 "
Jan 31 "
Feb 5 Embedded C Programming
Feb 7 "
Lab 1 (A-N) pdf .tar.gz
Feb 12 Ethernet
The PS/2 Keyboard
Feb 14 HW/SW Interfaces
Lab 1 (O-Z)
Feb 19 Video
Feb 21 The Avalon Bus
Lab 2 (A-N) pdf .tar.gz
Feb 26 Processors, FPGAs, and ASICs
Feb 28 Memory
Lab 2 (O-Z)
Mar 5 Serial Communication
Mar 7 Drawing Lines
Quartus Project (DE0)
a file
Mar 12 Sprites
Mar 14
Mar 18-22 Spring Break
Mar 26 Design
Mar 28 Lab 3 pdf .tar.gz
Apr 2 Milestone 1
Apr 4
Apr 9
Apr 11
Apr 16 Milestone 2
Apr 18
Apr 23
Apr 25
Apr 30 Milestone 3
May 15 Final Project, Presentations

Recommended Texts

Mark Zwolinski.
Digital System Design with VHDL.
Pearson/Prentice-Hall, 2004. Second Edition.

There are a lot of books about VHDL out there; this is the most practical one I have seen. It focuses on the synthesizable subset of the language and also discusses test benches. Examples, etc., are available from the Author's web site for the book.

Cover of Digital System Design with VHDL

James K. Peckol.
Embedded Systems: A Contemporary Design Tool.
Wiley, 2008.

Many embedded system books are too idiosyncratic or incomplete for my taste, but this one does a nice job covering everything from digital circuit design to interprocess communication in real-time operating systems. Unfortunately, it only discusses the Verilog language and only in an appendix.

Cover of Embedded Systems: A Contemporary Design Tool

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.
    Your design document should also a plan of what you intend to complete by each of the three milestones.
  3. Three milestones that you set for yourself: think of 25%, 50%, and 75% completion
  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.


6502: 6502 Core in VHDL (SE)
pdfProposal pdfDesign pdfReport pdfPresentation ArchiveFiles
Yu Chen, Jaebin Choi, Anthony Erlinger, and Arthy Sundaram
Ah-Ah-Piu: Voice-Controlled Video Game (SP)
pdfProposal pdfDesign pdfReport pdfPresentation ArchiveFiles
Xiaolong Jiang, Nan Li, Junlin Lu, Ji Pei, and Hongsen Yu
BB: Break the Bricks Video Game (SE)
pdfProposal pdfDesign pdfReport pdfPresentation ArchiveFiles
Zimeng Chen, Chong Li, Lianhao Qu, Bin Xie, and Yuanhan Yang
CUDoom: Raycasting Video Game (LP)star
pdfProposal pdfDesign pdfReport pdfPresentation ArchiveFiles
Edward Garcia, Alden Goldstein, Minyun Gu, Yiming Xu, and Wei-Hao Yuan
FIX-FAST: Hardware Accelerated Decoding of FIX/FAST (DL)
pdfProposal pdfReport pdfPresentation
Danqing Hua, Chang Liu, Junkang Ren, and Raghavan Santhanam
Itch: Stock Market Data Processor on the SFA6900 (DL)
pdfProposal pdfDesign pdfReport pdfPresentation
Artem Iakovlev, Naman Parashar, Miles Sherman, Pranav Sood, and Kevin Wong
Pac-HHZ: Pac-Man-like Video Game (LP)
pdfProposal pdfDesign pdfReport pdfPresentation ArchiveFiles
Youwei Hou, Yuedong Huang, and Yizhong Zhang
Pah!: A Voice Activated Video Game (SP)
pdfProposal pdfDesign pdfReport ArchiveFiles
Shaobo He, Hao Hu, Kezhen Liu, Yi Su, and Sheng Zheng
RCS: Rubik's Cube Solver (SE)star
pdfProposal pdfDesign pdfReport pdfPresentation ArchiveFiles
Heather Fisher, Ifeoma Okereke, Zongheng Wang, and Yin-Chieh Wang
SB: Shoot Bubble Video Game (LP)
pdfProposal pdfDesign pdfReport pdfPresentation ArchiveFiles
Weichia Chen, Jun Dai, Michael Shone, and Shuo-Shu Tsai
SE: Save Edwards: A Tower Defense Video Game (AC)star
pdfProposal pdfDesign pdfReport pdfPresentation ArchiveFiles
Zhe Cao, Wei Wei, Zeyang Yang, and Ge Zhao
WMT: A Whac-a-Mole-like Game (DL)
pdfProposal pdfDesign pdfReport pdfPresentation ArchiveFiles
Jian Lu, Lingchuan Mei, Si Wang, and Shuting Yang
frac-ls-gen: Fractal Landscape Generator (AC)
pdfProposal pdfReport pdfPresentation ArchiveFiles
Calvin Hu
kanto: Audio Player (SP)star
pdfProposal pdfDesign pdfReport pdfPresentation ArchiveFiles
Kavita Jain-Cocks, Zhehao Mao, Amrita Mazumdar, Darien Nurse, and Jonathan Yu
kill-switch: Kill Switch: Hardware-Based Line-Rate Filtering and Capture of 10Gb/s Ethernet Network (DL)
pdfProposal pdfReport pdfPresentation ArchiveFiles
Bokai Chen, Qiushi Ding, Jingshu Fang, Yuyang Wang, and Liheng Wang
optical-mouse-scanner: Optical Mouse Scanner (LP)
pdfProposal pdfDesign pdfReport pdfPresentation ArchiveFiles
David Calhoun, Kishore Padmaraju, and Serge Yegiazarov
pool-maniac: Networked American Pool Video Game (AC)star
pdfProposal pdfDesign pdfReport pdfPresentation ArchiveFiles
Yichen Liu, Zeshi Wang, Xunchi Wu, Jiawan Zhang, and Yuhan Zhang
snake+: Snake Plus Video Game (SP)
pdfProposal pdfDesign pdfReport pdfPresentation ArchiveFiles
Nina Berg, Joseph Corbisiero, Ilan Elkobi, Molly Karcher, and Brian Wagner

star My favorites

Altera Documentation

Altera DE2 Tutorials

Datasheets for DE2 Peripherals

Other References


Class Policies

Grading 30% Labs
10% Milestone 1
15% Milestone 2
20% Milestone 3
25% Final Report and presentation
Late Policy Zero credit for anything handed in after it is due without explicit approval of the instructor.
Collaboration Policy Work by yourself on labs. You may consult others, but do not copy files or data. You may collaborate with anybody on the project, but must cite sources if you use code.

Valid HTML 4.01Valid CSS