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

General Information

Class meets Tuesdays and Thursdays, 2:40 - 3:55 PM in 602 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 in pairs. Project groups should be three students or more.


Name Email Office hours Location
Prof. Stephen A. Edwards 462 CSB or 1235 Mudd
Prof. David Lariviere F 10-12 1235 Mudd
Amrita Mazumdar M, W 1:30-2:30 1235 Mudd
Qiushi Ding T, Th 11-12 1235 Mudd
Jian Lu M, W 3-4 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 SystemVerilog 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, software, and operating systems as building blocks.


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 HDL coding, both of which are crucial to success in 4840.


Date Lecture Notes Due
Jan 21 Introduction: Embedded Systems
Jan 23 SystemVerilog
Jan 28 "
Jan 30 "
Feb 4 Video
Feb 6 Memory
Lab 1 pdf .tar.gz
Feb 11 Networking, USB, and Threads
Feb 13 Snow Day; no lecture
Feb 18
Feb 20 Hardware/Software Interfaces
Lab 2 pdf .tar.gz
Feb 25 The Avalon Bus
Feb 27 Device Drivers
Mar 4 "
Mar 6 Qsys and IP Core Integration
Mar 11 Sprite Graphics
Mar 13 Processors, FPGAs, and ASICs
Lab 3 pdf .tar.gz .tar.gz
Mar 17-21 Spring Break
Mar 25
Mar 27 Design
Apr 1 Guest Lecture: David Dembeck of Stone Ridge Technology
Apr 3 Milestone 1
Apr 8 Guest Lecture: John Lockwood of AlgoLogic
Apr 10
Apr 15 Milestone 2
Apr 17
Apr 22
Apr 24
Apr 29 Milestone 3
May 14 Final Project, Presentations

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, SystemVerilog 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.


10Gbs: 10 GB/s Packet Processing (DL)
pdfProposal pdfReport pdfPresentation ArchiveFiles
John Chaiyasarikul, Yumeng Xu, Shuguan Yang, and Jian Zhong
BallBalance: Ball Balancer Videogame (QD)
pdfProposal pdfDesign pdfReport pdfPresentation ArchiveFiles
Earvin Caceres, Annjana Ramesh, Garvit Singh, and Gautham Vunnam
CME: Hardware accelerated Margin Calculations based on CME SPAN (DL)star
pdfProposal pdfReport pdfPresentation ArchiveFiles
Vidhatre Gathey, Pramod Nayak, Ankit Pradhan, and Bhargav Sethuram
Chopin: Piano with a Virtual Keyboard (AM)
pdfProposal pdfDesign pdfReport pdfPresentation ArchiveFiles
Daran Cai, Linjun Kuang, Wei Xia, and Wenyuan Zhao
ColaCan: Parkour-inspired videogame (SE)
pdfProposal pdfReport pdfPresentation ArchiveFiles
Siyu Li, Yuechen Qin, Qifei Wang, and Miaoqiong Wang
Half-fast: Bitcoin Miner (DL)
pdfProposal pdfDesign pdfReport pdfPresentation ArchiveFiles
Matheus Candido, Benjamin Nappier, Patrick Taylor, and Peter Xu
IKSwift: Inverse Kinematics Accelerator (SE)star
pdfProposal pdfDesign pdfReport pdfPresentation ArchiveFiles
Yi-Peng Huang, Lianne Lairmore, and Richard Townsend
Kingdom: Columbia Defense Video Game (AM)
pdfProposal pdfDesign pdfReport pdfPresentation
Yang Bai, Chao Li, Zhefeng Xu, and Tianlei Zhou
Leap-Motion: Leap Motion Controller-based on-screen piano (DL)star
pdfProposal pdfDesign pdfReport pdfPresentation ArchiveFiles
Patrice Liang, Matthew Patey, Vanshil Shah, and Kevin Walters
MDP-tickerplant: MDP3.0 Tickerplant and Implied Order Book Generator (DL)
pdfProposal pdfReport pdfPresentation
Mirza Ali, Daron Lin, Jonathan Liu, and Giovanni Ortuno Urquidi
Memcached: UDP Memcached on an FPGA (DL)
pdfProposal pdfDesign pdfReport
Chia-Kai Chou, Meng-Yi Hsu, and Chen Wen
Mudd-Adventure: 3D RPG Game (SE)
pdfProposal pdfDesign pdfReport pdfPresentation ArchiveFiles
Wei Cao, Bowen Dang, Shijie Hu, and Mingrui Xu
MuseBox: Audio equalizer/visualizer (DL)
pdfProposal pdfDesign pdfReport pdfPresentation ArchiveFiles
Mark Aligbe and Sabina Smajlaj
NUNY: Ninja University in the City of New York Videogame (SE)star
pdfProposal pdfDesign pdfReport pdfPresentation ArchiveFiles
Kshitij Bhardwaj, Van Bui, Vinti Vinti, and Kuangya Zhai
Parking-Maid: Auto-Parking System (QD)star
pdfProposal pdfDesign pdfReport pdfPresentation ArchiveFiles
Po-Yen Chou, Ruoqing Fu, and Hao-Yu Hsieh
Penrose: Penrose World Videogame (QD)
pdfProposal pdfDesign pdfReport pdfPresentation ArchiveFiles
Yao Luo, Yuanhui Luo, and Cong Zhu
Pottery: 3D Pottery Game (QD)star
pdfProposal pdfReport pdfPresentation ArchiveFiles
Xiaowen Han, Hao Jin, Muqing Liu, and Chengxue Qian
Risk: FIX protocol parser (QD)
pdfProposal pdfDesign pdfReport pdfPresentation ArchiveFiles
Kaixi Ji and Modi Yan
Smoke: Target-Driven Smoke Simulator (AM)
pdfProposal pdfDesign pdfReport Powerpoint FilePresentation ArchiveFiles
Jonathan Chang, Yun Fei, Guanduo Li, and Tianming Miao
StarWars: Video Game based on Geometry Wars (AM)
pdfProposal pdfDesign pdfReport pdfPresentation ArchiveFiles
Fang Fang, Jiaxuan Shang, Xiao Xiao, and Zhenyu Zhu
TOE: TCP Offloading Engine (DL)
pdfProposal pdfReport pdfPresentation ArchiveFiles
Clementine Barbet, Christine Chen, and Qi Li
Tank: Battle Tank-inspired Multidirectional Shooter videogame (SE)
pdfProposal pdfDesign pdfReport pdfPresentation ArchiveFiles
Lupeng Fan, Yinshen Wang, Di Yang, and Yichen Zhu
WormCraft: Worms-like videogame (AM)
pdfProposal pdfDesign pdfReport Powerpoint FilePresentation ArchiveFiles
Ning Li, Tianyi Zhang, Yuxuan Zhang, and Ziwei Zhang
dpu: Accelerated Database Processor
pdfReport ArchiveFiles
Andrea Lottarini
sorter: Insertion Sorting Module for a Database Processor
Timothy Paine

star My favorites



Other References

Recommended Texts

Mark Zwolinski.
Digital System Design with SystemVerilog.
Prentice-Hall, 2010.

SystemVerilog is relatively new, so there are not too many books out there for it. This is one of the better ones. It focuses on the sythesizable subset of the language and also discusses test benches. Examples, etc., are available from the Author's web site..

Cover of Digital System Design with SystemVerilog

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. It only discusses the Verilog language and only in an appendix.

Cover of Embedded Systems: A Contemporary Design Tool


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 in pairs on the 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