![]() |
![]() |
|
CSEE 4840 Embedded System Design Spring 2014 |
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 | Office hours | Location | |
---|---|---|---|
Prof. Stephen A. Edwards | sedwards@cs.columbia.edu | 462 CSB or 1235 Mudd | |
Prof. David Lariviere | dal2103@columbia.edu | F 10-12 | 1235 Mudd |
Amrita Mazumdar | am3210@columbia.edu | M, W 1:30-2:30 | 1235 Mudd |
Qiushi Ding | qd2119@columbia.edu | T, Th 11-12 | 1235 Mudd |
Jian Lu | jl3946@columbia.edu | 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.
You'll perform a design-it-yourself project in the second half of the class. There are five deliverables for the project:
Project groups should be three students or more.
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) 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)![]() ![]() ![]() ![]() John Chaiyasarikul, Yumeng Xu, Shuguan Yang, and Jian Zhong |
BallBalance:
Ball Balancer Videogame (QD)![]() ![]() ![]() ![]() ![]() Earvin Caceres, Annjana Ramesh, Garvit Singh, and Gautham Vunnam |
CME:
Hardware accelerated Margin Calculations based on CME SPAN (DL)![]() ![]() ![]() ![]() ![]() Vidhatre Gathey, Pramod Nayak, Ankit Pradhan, and Bhargav Sethuram |
Chopin:
Piano with a Virtual Keyboard (AM)![]() ![]() ![]() ![]() ![]() Daran Cai, Linjun Kuang, Wei Xia, and Wenyuan Zhao |
ColaCan:
Parkour-inspired videogame (SE)![]() ![]() ![]() ![]() Siyu Li, Yuechen Qin, Qifei Wang, and Miaoqiong Wang |
Half-fast:
Bitcoin Miner (DL)![]() ![]() ![]() ![]() ![]() Matheus Candido, Benjamin Nappier, Patrick Taylor, and Peter Xu |
IKSwift:
Inverse Kinematics Accelerator (SE)![]() ![]() ![]() ![]() ![]() ![]() Yi-Peng Huang, Lianne Lairmore, and Richard Townsend |
Kingdom:
Columbia Defense Video Game (AM)![]() ![]() ![]() ![]() Yang Bai, Chao Li, Zhefeng Xu, and Tianlei Zhou |
Leap-Motion:
Leap Motion Controller-based on-screen piano (DL)![]() ![]() ![]() ![]() ![]() ![]() Patrice Liang, Matthew Patey, Vanshil Shah, and Kevin Walters |
MDP-tickerplant:
MDP3.0 Tickerplant and Implied Order Book Generator (DL)![]() ![]() ![]() Mirza Ali, Daron Lin, Jonathan Liu, and Giovanni Ortuno Urquidi |
Memcached:
UDP Memcached on an FPGA (DL)![]() ![]() ![]() Chia-Kai Chou, Meng-Yi Hsu, and Chen Wen |
Mudd-Adventure:
3D RPG Game (SE)![]() ![]() ![]() ![]() ![]() Wei Cao, Bowen Dang, Shijie Hu, and Mingrui Xu |
MuseBox:
Audio equalizer/visualizer (DL)![]() ![]() ![]() ![]() ![]() Mark Aligbe and Sabina Smajlaj |
NUNY:
Ninja University in the City of New York Videogame (SE)![]() ![]() ![]() ![]() ![]() ![]() Kshitij Bhardwaj, Van Bui, Vinti Vinti, and Kuangya Zhai |
Parking-Maid:
Auto-Parking System (QD)![]() ![]() ![]() ![]() ![]() ![]() Po-Yen Chou, Ruoqing Fu, and Hao-Yu Hsieh |
Penrose:
Penrose World Videogame (QD)![]() ![]() ![]() ![]() ![]() Yao Luo, Yuanhui Luo, and Cong Zhu |
Pottery:
3D Pottery Game (QD)![]() ![]() ![]() ![]() ![]() Xiaowen Han, Hao Jin, Muqing Liu, and Chengxue Qian |
Risk:
FIX protocol parser (QD)![]() ![]() ![]() ![]() ![]() Kaixi Ji and Modi Yan |
Smoke:
Target-Driven Smoke Simulator (AM)![]() ![]() ![]() ![]() ![]() Jonathan Chang, Yun Fei, Guanduo Li, and Tianming Miao |
StarWars:
Video Game based on Geometry Wars (AM)![]() ![]() ![]() ![]() ![]() Fang Fang, Jiaxuan Shang, Xiao Xiao, and Zhenyu Zhu |
TOE:
TCP Offloading Engine (DL)![]() ![]() ![]() ![]() Clementine Barbet, Christine Chen, and Qi Li |
Tank:
Battle Tank-inspired Multidirectional Shooter videogame (SE)![]() ![]() ![]() ![]() ![]() Lupeng Fan, Yinshen Wang, Di Yang, and Yichen Zhu |
WormCraft:
Worms-like videogame (AM)![]() ![]() ![]() ![]() ![]() Ning Li, Tianyi Zhang, Yuxuan Zhang, and Ziwei Zhang |
dpu:
Accelerated Database Processor![]() ![]() Andrea Lottarini |
sorter:
Insertion Sorting Module for a Database Processor![]() Timothy Paine |
My favorites
Mark Zwolinski. |
![]() |
James K. Peckol. |
![]() |
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. |