![]() |
![]() |
|
CSEE 4840 Embedded System Design Spring 2025 |
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.
Name | Office hours | Location | |
---|---|---|---|
Prof. Stephen A. Edwards | sedwards@cs.columbia.edu | By appt. | Online |
Donovan Sproule | das2313@columbia.edu | Th 4-6 | 1235 Mudd |
Adwyck Gupta | ag5016@columbia.edu | F 10A-12P | 1235 Mudd |
Peiran Wang | pw2593@columbia.edu | Th 1-3 | 1235 Mudd |
Sean Stothers | sps2308@columbia.edu | F 1-3 | 1235 Mudd |
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.
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.
Date | Lecture | Notes | Due |
---|---|---|---|
Wed Jan 22 | Introduction: Embedded Systems |
![]() |
|
Mon Jan 27 | SystemVerilog |
![]() |
|
Wed Jan 29 | " |
||
Mon Feb 3 | " |
||
Wed Feb 5 | Memory |
![]() |
|
Mon Feb 10 | " |
||
Wed Feb 12 | Networking, USB, and Threads |
![]() |
|
Fri Feb 14 | Lab 1
![]() Files ![]() |
||
Mon Feb 17 | " |
||
Wed Feb 19 | (no lecture) |
||
Mon Feb 24 | Video |
![]() |
|
Wed Feb 26 | Hardware/Software Interfaces |
![]() |
|
Mon Mar 3 | Debugging |
![]() |
|
Wed Mar 5 | The Avalon Bus |
![]() |
|
Fri Mar 7 | Lab 2
![]() Files ![]() 16 GB SD Card Image ![]() |
||
Mon Mar 10 | Device Drivers |
![]() |
|
Wed Mar 12 | |||
Fri Mar 14 | Proposal | ||
Mar 17-21 | Spring Break | ||
Mon Mar 24 | IP Cores and Platform Designer |
![]() |
|
Wed Mar 26 | Sprite Graphics |
![]() ![]() |
|
Mon Mar 31 | Line drawing example Processors, FPGAs, and ASICs (1/2) Processors, FPGAs, and ASICs (2/2) |
![]() ![]() ![]() ![]() ![]() ![]() |
|
Wed Apr 2 | Audio Waveforms |
![]() ![]() |
|
Fri Apr 4 | Lab 3
![]() ![]() ![]() ![]() |
||
Mon Apr 7 | |||
Wed Apr 9 | |||
Mon Apr 14 | |||
Wed Apr 16 | |||
Mon Apr 21 | Design reviews |
||
Wed Apr 23 | Design reviews |
||
Mon Apr 28 | |||
Wed Apr 30 | |||
Mon May 5 | |||
Wed May 14 | Final Project Presentations |
You'll perform a design-it-yourself project in the second half of the class. Here are the deliverables:
Project teams should be three students or more.
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:
This is a critical part of the project and will be a substantial fraction of the grade.
Include the following sections:
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.
AirplaneBattle:
(AG)![]() Hiroki Endo, Noah Hartzfeld, Zhengtao Hu, Jingyi Lai, and Mingzhi Li |
Autotune:
(PW)![]() Millie Chen, Amanda Jenkins, Charlie Mei, and Meng Fan Wang |
Barcode:
(AG)![]() Helen Bovington, Ananya Haritsa, Matthew Modi, Rahul Pulidindi, and Kamil Zajkowski |
BatMachine:
(AG)![]() Nicholas Bykhovsky-Gonzalez and Lourdes Sanchez Medina |
BrickBreaker:
(SE)![]() Pranav Asuri, Venkat Bitra, Varsha Keshava Prasad, and Doreen Sisanalli |
Chess:
(SE)![]() Hooman Khaloo, Hongchi Liu, and Pengfei Yan |
CircuitSim:
(SE)![]() Faustina Cheng, Ming Gong, Case Schemmer, Jary Tolentino, and Andrew Yang |
DinoRun:
(AG)![]() Swapnil Banerjee, Roshan Prakash, and Anne Rose Sankar Raj |
FPGA-MPC:
(PW)![]() Godwill Agbehonou, Alexander Du, Roy Hwang, and Apurva Reddy |
FlappyBird:
(AG)![]() Tianshuo Jin, Sijun Li, Zidong Xu, and Ethan Yang |
ForestFireIce:
(SS)![]() Yang Cao, Zhenqi Li, Yonghao Lin, Yifan Mao, and Weijie Wang |
GeometryDash:
(SS)![]() Charles Chen, Riju Dey, Sasha Isler, and Rachinta Marpaung |
Gesture:
(DS)![]() Yangfan Wang, Xincheng Yu, and Fengze Zhong |
MMT:
(SS)![]() Kyle Edwards, William Freedman, Sadie Freisthler, Madeline Skeel, and Jake Torres |
MNIST:
(DS)![]() Connor Espenshade, Bradley Jocelyn, Aymen Norain, and Stephen Ogunmwonyi |
N-Body:
(PW)![]() Adib Khondoker, Moises Mata, Kristian Nikolov, Robert Pendergrast, and William Trost |
Pac-Man:
(DS)![]() Caiwu Chen, Emma Li, Haoming Ma, and Tz-Jie Yu |
PacketFilter:
(SE)![]() Michael Grieco, Adwyck Gupta, and Harry Zhang |
PianoHeroes:
(SE)![]() Anita Bui-Martinez, Michael John Flynn, Zakiy Manigo, and Robel Wondwossen |
Poker:
(SS)![]() Mahdi Ali-Raihan, Mario Carrillo, Timothy Melendez, and Julio Ramirez |
Rhythm-Master:
(PW)![]() Hongrui Huang, Yangyang Zhang, and Junfeng Zou |
ScreamJump:
(SS)![]() Sharwari Bhosale, Ananya Maan Singh, and Kamala Vennela Vasireddy |
SonicSecurity:
(PW)![]() Tyler Chang, Jaewon Lee, and Joshua Mathew |
Systolic:
(DS)![]() Sicheng Hua, Yu Jia, Siyuan Li, Hang Ye, and Xuanmin Zheng |
Tetris:
(DS)![]() Michael Lippe, Bhargav Sriram, and Garvit Vyas |
My favorites
Mark Zwolinski. |
![]() |
James K. Peckol. |
![]() |
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. |