GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • here
  • here
  • Lab 1: Synthesizing birdsong
  • Lab 2: Digital Galton Board
  • Lab 3: PID control of a 1D helicopter
  • Schedule of due dates
  • What makes a good laboratory exercise?
  • here
  • Course demo code
  • RP2350 datasheet
  • RP2040/RP2350 C SDK Hardware APIs
  • RP2040/RP2350 C SDK Guide
  • Pi Pico 2 datasheet
  • Understanding RP2040/RP2350 C SDK architecture

This view

  • Original page
  • New address

GeezerVison is showing ece4760.github.io — index

ECE 4760/5730, Cornell University¶

Digital Systems Design Using Microcontrollers - V. Hunter Adams¶

Design of real-time digital systems using microprocessor-based embedded controllers. Students working in groups of 2-3 design, debug, and construct several systems that illustrate and employ the techniques of digital system design acquired in previous courses. The content focuses on laboratory work. The lectures are used primarily for the introduction of examples, description of specific modules to be designed, and instruction in the hardware and high-level design tools to be employed.

This is a Cumulative Design Experience (CDE) course. As such, lab exercises in this course will draw upon and synthesize as much material from the undergraduate electrical and computer engineering curriculum as possible. Students will implement concepts from differential equations, physics, a variety of coding classes, digital signal processing, analog circuits, control theory, computer graphics, robotics/mechatronics, and more in real, physical projects.

The course is taught by Hunter Adams, who is a staff member in Electrical and Computer Engineering. The course is currently taught using the RP2350 microcontroller on the Raspberry Pi Pico 2 development board.

Please note that this is the new course webpage. If you are looking for the previous one, click here.


Lecture recordings¶

  • 2022 RP2040 lectures linked here.
  • 2025 RP2040 lectures linked here and embedded below.


Assignments¶

Lab exercises, reading, and final project¶

  • Lab 1: Synthesizing birdsong
  • Lab 2: Digital Galton Board
  • Lab 3: PID control of a 1D helicopter
  • Final project: a 4-week, open-ended design project

Metainformation and due dates¶

  • Schedule of due dates
  • What makes a good laboratory exercise?

Student final project demonstrations¶

  • YouTube playlist linked here and embedded below.
  • Student webpages available here

Links (these are our "textbook")¶

Daily-use links¶

  • Course demo code
  • RP2350 datasheet
  • RP2040/RP2350 C SDK Hardware APIs
  • RP2040/RP2350 C SDK Guide
  • Pi Pico 2 datasheet

Course infrastructure¶

  • Understanding RP2040/RP2350 C SDK architecture
  • Using RP2040/RP2350 C SDK (dissecting a simple example)
  • Protothreads on RP2040/RP2350 (from Bruce)
  • Installing toolchain and building demo code
  • Programming the Pico from VSCode
  • Hooking up the debugger
  • Course bill of materials

Algorithms and techniques¶

  • Direct Digital Synthesis
  • Fixed point arithmetic
  • Interfacing with a keypad
  • Fast Fourier Transforms
  • Synchronization of integrate-and-fire oscillators
  • Synthesizing birdsong
  • Boids, plus distributed consensus
  • Boids, plus predator
  • Synthesizing cricket chirps
  • Complementary filters
  • Digital lowpass filters
  • PID control (phenomenological intro)
  • PID control (analytical intro)
  • Particle filters, sigma-point filters, EKF's, UKF's, KF's
  • Worked estimation examples
  • Mechanical construction of inverted pendulum
  • Lattice Boltzmann algorithm
  • Tuning reaction wheel PID
  • Electrically isolating DC motors
  • Picasso, by way of Fourier
  • Discretizing the 2D wave equation
  • The physics of colliding balls
  • The statistics of a Galton Board
  • The RP2040 boot sequence
  • Wireless UART via infrared

Communication protocols¶

  • SPI communication
  • I2C communication
  • UART communication

Lab exercises from previous semesters¶

  • Synthesizing and synchronizing snowy tree cricket chirps
  • Animating leadership and decision-making in animal groups on the move
  • PID control of an inverted pendulum with a reaction wheel
  • Animating murmurations of starlings

Applications and projects¶

Hunter (RP2040)

  • CAN driver implemented with PIO
  • UDP ethernet transmitter implemented with PIO
  • Stepper motor driver
  • VGA driver for RP2040/RP2350 (+Mandelbrot, Barnsley, Game of Life)
  • Audio FFT to VGA
  • Resistive touchscreen to VGA display
  • Direct Digital Synthesis (DDS) via timer interrupt
  • Dual-core Direct Digital Synthesis (DDS) via timer interrupts
  • Simple DMA example
  • PWM-based AM transmitter
  • GATT server on Pi Pico W
  • GATT client on Pi Pico W
  • Connecting to WiFi with the Pi Pico W
  • UDP communication from Pico W to PC
  • Custom serial bootloader for RP2040
  • Worm-like serial bootloader for RP2040

Bruce (RP2040 and RP2350)

  • Start-up message and compile info
  • 16-color VGA and Joystick on RP2040
  • Random number generation
  • 8-bit VGA
  • Wifi setup considerations
  • Making a clean serial command user interface
  • UDP networking with Pico W
  • NTP to RTC
  • Web server access point
  • Interfacing with external memory
  • SD card interface with FAT/FS
  • USB host with keyboard, mouse, and flash drive
  • IIR filter designer
  • FIR filter designer
  • Fixed point experimentation on RP2040
  • DMA computing machine
  • Lattice-Boltzmann on RP2040
  • Micropython experimentation on RP2040
  • MBED for RP2040 (+steppers, NTSC video, DLA, FFT, Specra)
  • Expanding i/o for the RP2040/2350
  • VGA 16 640x480 3D perspective polygon render
  • NTP on both RP2040 and RP2350
  • FFT, signal processing, IFFT while minimizing framing discontinuities
  • Partial differential equation string synthesis on RP2350
  • Gravity particle simulation on RP2350
  • SD card reader for RP2350

Hunter (PIC32)

  • Enigma machine emulated on PIC32
  • Realtime audio spectrogram
  • Birdsong synthesizer

Bruce (PIC32)

  • Digital Signal Processing
  • Sound synthesis
  • Neural modeling
  • Random number generation
  • Pixel strip displays
  • DMA weird machine
  • NTSC video generation

Raspberry Pi technical documentation¶

  • Getting started with Raspberry Pi Pico
  • Hardware design with RP2040

Student-generated documentation¶

  • RP2040 randomness and ring oscillator (Deemo Chen)
  • PIO-based TFT driver (Parth Sharma)

Some useful links and reading¶

  • David Wheeler's review of Debugging by David Agans
  • Bits and Bugs: A scientific and historical review of software failures in computational science
  • A history of computing at Cornell

Course information¶

Teaching staff

  • Instructor: Hunter Adams (Cornell page, personal website)
  • Retired instructor: Bruce Land (website)
  • Teaching Assistants
    • Paige Shelton (pes99)
    • Madelin Prak (mp965)
    • Gebran Kastoun (glk49)
    • Aidan Chan (amc564)
    • Dennis Bui (dnb68)
    • Coby Lai (cl2367)
  • Course dog: Pickles

Lecture and lab schedule

  • Lectures (Phillips 101): MWF, 12:20-1:10
  • Laboratory sections (Phillips 238): WRF, 13:25-17:25 ; R 8:00-11:00 ; R 4:30-7:30
  • Extra open-lab hours (Phillips 238): To be scheduled
  • Office hours: You may come to any lab section and I'll be there. If you'd like to meet individually, please send me an email.
  • Hunter's office is CIS 412

Lecture recordings

  • RP2040 lectures (2025)
  • RP2040 lectures (2022)
  • PIC32 lectures (2021)

Course policy, grading, and lab report expectations

  • Policy page: This is the implicit contract to which you are agreeing by taking this course. Please read it.

Previous course webpage (PIC32)

  • Link here: Contains information that you may find useful and interesting!

Canvas site

  • Link here: Will be used to turn in all assignments

In the news!

  • New cohort of Cornell students turn in their Pico projects (Raspberry Pi)
  • What did computer engineering students at Cornell make with RP2040 last term? (Raspberry Pi)
  • Cornell University’s Digital Systems Design course is taught on RP2040 (Raspberry Pi)
  • Cornell updates their MCU course for the RP2040 (Hackaday)

Life after ECE 4760/5730¶

Publish your project!¶

  • ECE 4920: In this technical writing seminar, we will turn your final report into a magazine article and submit it for publication.
  • Projects published last year
  • Projects published since 2002

Take ECE 5760¶

  • Course webpage: A similar course based on system-on-a-chip and FPGA design

$\hspace{2mm}$ $\hspace{2mm}$ $\hspace{2mm}$ $\hspace{2mm}$
Tweet Code
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.