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

General Information

Class meets Mondays and Wednesdays, 1:10 - 2:25 PM in 451 CSB.

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

Do the labs in groups of two or three. Project groups should be 3-5 students; aim for 4.

Staff

Name Email Office hours Location
Prof. Stephen A. Edwards sedwards@cs.columbia.edu By appt. Online
Michael Lippe ml5201@columbia.edu W 2:30 - 5:30 1235 Mudd
Ming Gong ming.g@columbia.edu Th 4:00 - 6:00 1235 Mudd
Moises Mata mm6155@columbia.edu F 11:00 - 1:00 1235 Mudd
Aaron Cherian amc2535@columbia.edu M 2:30 - 4:30 1235 Mudd
Xiaoyang Liu xl3561@columbia.edu F 9:00A - 11:00A 1235 Mudd

Overview

Prerequisites: COMS W3827 and COMS W3157 or the equivalent. CSEE W4823 suggested. 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 class will 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 implement a small embedded system using a combination of C and the SystemVerilog hardware description language.

This is a lab course done in two parts. During the first part of the class, you will implement "canned" designs supplied by the instructor and be given substantial guidance. These are meant to teach you the use of the development tools. In the second part of the class, you will divide up into teams and each will design and implement a project of your own with guidance from the instructor and TAs.

This course is a capstone in which students 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, and addresses lower-level issues than COMS 6868 Embedded Scalable Platforms or EECS E4764 Internet of Things. CSEE 4840 focuses on hardware/software integration. Students in 4840 will use gates, processors, peripherals, software, and operating systems as building blocks.

Prerequisites

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, it is strongly encouraged. In it, you will learn advanced logic design and HDL coding, both of which are crucial to success in 4840.

Schedule

Date Lecture Notes Due
Wed Jan 21 Introduction: Embedded Systems
pdf
Mon Jan 26 SystemVerilog
pdf
Wed Jan 28 "

Mon Feb 2 "

Wed Feb 4 Memory
pdf
Mon Feb 9 "

Wed Feb 11 Networking, USB, and Threads
pdf
Fri Feb 13 Lab 1 pdf
Files.tar.gz
Mon Feb 16 Video
pdf
Wed Feb 18 Hardware/Software Interfaces
pdf
Mon Feb 23 "

Wed Feb 25 "

Mon Mar 2 Debugging
pdf
Wed Mar 4 The Avalon Bus
pdf
Fri Mar 6 Lab 2 pdf
Files.tar.gz
16 GB SD Card Image.tar.gz
Mon Mar 9 Device Drivers
pdf
Wed Mar 11 IP Cores and Platform Designer
pdf
Fri Mar 13 Proposal
Mar 16-20 Spring Break
Mon Mar 23

Wed Mar 25 Sprite Graphics
pdfpdf
Mon Mar 30 Audio Waveforms
pdfpdf
Wed Apr 1 (No lectures this day going forward)
Line drawing example
Processors, FPGAs, and ASICs (1/2)
Processors, FPGAs, and ASICs (2/2)

pdfpdf
pdfpdf
pdfpdf
Fri Apr 3 Lab 3 pdf
.tar.gzHardware files
.tar.gzSoftware FIles
.tar.gzKernel Module Env.
Mon Apr 6
Wed Apr 8
Mon Apr 13
Wed Apr 15
Fri Apr 17

Design document
Mon Apr 20 Design reviews

Wed Apr 22 Design reviews

Mon Apr 27
Wed Apr 29
Mon May 4
Wed May 13 Final Project Presentations

The Project

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

  1. A short project proposal describing what you plan to build and how you plan to build it. This is to communicate your plans to the professor and TAs so that we can advise you on how to proceed.
  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, and an analysis of resource usage: everything someone else would need to implement your design. You should have done some preliminary implementation work by this point to validate your design.
  3. A design review during which you discuss and defend the choices you've made in its design and implementation to that point and discuss how you will complete the project. This is to reduce the possibility of questions like "why didn't you do it this much better way?" during your final presentation.
  4. A presentation and demo of your project.
  5. A final project report

Project teams should be three students or more.

The Design Document

This document should explain what you're going to build and how you're going to build it, but does not not need to include code. A corrected version of this document that reflects what you actually built should end up in your final project report.

Include the following:

  1. A block diagram
  2. A description of the algorithms your project will implement
  3. Resource budgets, e.g., for on-chip memory
  4. A detailed plan for the hardware/software interface: every register and bit

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

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 `myfiles' 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.

Sample Project: Wireframe

Tutorial: Tile-based VGA Graphics

Projects

3D-Hardware-Rasterizer:
pdfProposal
Aarush Agarwal, Gianna Belmont Herrera, Srika Chagarlamudi (0892), Shlok Desai (0314), and Venkata Sai Sat Rajampalli (1007)
9x9-Go:
pdfProposal
Maximilian Comfere and Owen Cooper (0351)
AHRS:
pdfProposal
Zongyang Li (1093), Darshan Ramakrishnaiah, Jaxson Robinson, and Anubhav Vandkar
Adaptive-Noise-Cancellation:
pdfProposal
Huda Jafri, Sayem Kamal (0987), and Sharvani Vadlamani
Air-Hockey:
pdfProposal
Derrick Chen (0858), Xuepeng Han, Zening Wang, and Gerald Zhao
BCP-Accelerator: Boolean Satisfiability Solver
pdfProposal
Christian Scaff (1708)
Block-Game:
pdfProposal
Joshua Bernheisel, Mihir Joshi (0974), and Wesley Maa
CNN-Inference-Accelerator:
pdfProposal
Sunny Fang, Opalina Khanna, Henry Minsky (1030), and Aaron Zhu (0879)
Fruit-Ninja-Camera:
pdfProposal
Yitong Bai, Peiheng Li (0383), and Chengrui Li
GridBrawl:
pdfProposal
Siyao Yu, Sitao Zhang (0981), and Anyongyong Zhao
Human-Audio-Interface:
pdfProposal
Derrick Bassey, Carlos Espinoza (0443), and Jayden Lee-Sin
IR-Beacon-Tracking:
pdfProposal
Leen Alshorafa and Kuan Zhang (1002)
LeNet-5-CNN-Accelerator:
pdfProposal
Sirui Chen (0859), Tian Li, Chenxi Shen (0979), Yizheng Tang, and Weiwei Wu
Liquid-Physics-Simulator:
pdfProposal
Aidan Dodge (1198), Daanish Khan, and Da Won Kim
MNIST-Accelerator:
pdfProposal
Colin Jaworowski (1101) and Ifesi Onubogu
Magic-Beans:
pdfProposal
Gurleen Kalra, Linus Lei (1095), and Daolin Li
Market-Data-Parser:
pdfProposal
Sarah Hagan (0844), Shawn Kathuria, Shiyao Lam (1200), and Siddharth Raykar
Medical-Image-Display:
pdfProposal
Nitali Arora (1098), Saha Dev Shanmugam, and Kristine Vergara
N-Body-Accelerator:
pdfProposal
Charlotte Chen (0852), Lucy He, Xiyuan Peng (1199), Pengpeng Wang, and JingZeng Xie
No-Mans-Land:
pdfProposal
Rohit Biswas, Kambinachi Obioha (1277), and Nicola Paparella
Oregon-Trail:
pdfProposal
Adam Auer, Xingcan Chen, and Sunny Carlin Qi (1104)
Pac-Man:
pdfProposal
Austin Gnecco, Connor Marvin, Anastasiia Merkudanova, and Shishir Sharma (1274)
Plants-FPGA-Zombies:
pdfProposal
Hao Cai, Yankun Li, Chenhao Yang (1027), and Zhenghang Zhao (1005)
Popn-Music-Game:
pdfProposal
Vince-Arvin Magno (1076)
Ray-Tracing:
pdfProposal
Tony Giannini, Innokentiy Kaurov, and Matthew Lou (0326)
Real-Time-Room-EQ: Audio
pdfProposal
Jacob Boxerman (1096) and Roland List
Rock-Paper-Scissors: Image Recognition
pdfProposal
Cheng-Wen Chu, Harvey Lu (0697), Linxiao Wu, Chengcheng Xu, and Mingyuan Zheng (1108)
Street-Fighter: Videogame
pdfProposal
Zhewen Guo, Yang Li (1100), and Jiyang Yin
Swarm-Pursuit: Videogame
pdfProposal
Boxiong Li, Kevin Liu, Yen Chung Lo, and Junhao Qu (1031)
TR-909-Drum-Machine:
pdfProposal
Noel Gomez, Jordan Lin, and Aaron Zhu (0879)
Task-Scheduler:
pdfProposal
Teresa Co (1201), Handong He, and Xiao Lu

star My favorites

Resources

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.

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

Links

Class Policies

Grading 30% Labs
20% Design Review
50% 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 groups of three 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