Junior Design (ECE 342) · PCB & Mixed-Signal
Dual-Channel 34 MSa/s USB Oscilloscope
A USB-powered, two-channel oscilloscope built by a team of three. I led the schematic and the 4-layer PCB layout across both revisions and designed the microcontroller block. It samples at 34 MSa/s per channel, more than 11× the previous course record of 3 MSa/s.
- per channel
- 34 MSa/s
- previous course record (3 MSa/s)
- 11×
- PCB, BGA microcontroller
- 4-layer
- rev-1 to rev-2 re-spin
- 5 days

The problem
Build a portable oscilloscope as the ECE 342 junior design project. It had to capture two independent analog channels, digitize them and stream them to a laptop. The spec required at least 200 kSa/s per channel and under 100 ms response to user input.
My part
- Schematic and layout. I designed the full schematic and the 4-layer KiCad layout around the BGA NXP LPC4370 (138 components). Parts came from LCSC and the board was fabricated at JLCPCB.
- Analog front end (designed by Cooper Holm; I laid it out). Photo-relay AC/DC coupling and a multiplexer that selects one of four attenuation paths (0.256× to 10×). Op-amp buffer and level-shift stages scale ±10 V inputs into the ADC’s 100–900 mV window, with overvoltage clamping and a ~10 MHz anti-aliasing filter.
- Bring-up. Rev 1 arrived with a mirrored 100-pin microcontroller footprint and the wrong LDO. We validated the power and analog blocks on their own, and I re-spun a smaller rev-2 board within 5 days. We hand-assembled it with a solder stencil.
The LPC4370 firmware (DMA capture and USB 2.0 streaming) and the PyQt5 host app were written by my teammates.
Result
The finished instrument samples at 34 MSa/s per channel, more than 11× the previous course record and over 150× the 200 kSa/s requirement. It streams to the laptop with sub-100 ms response to controls.
What I’d improve: bandwidth. In testing, displayed amplitude began to drift once the input went above about 1 MHz, well below the ~10 MHz anti-aliasing corner. Next step: sweep gain against frequency on each attenuation range to find which stage rolls off first.
Team: Cooper Holm, Luke Neilson, Griffin Ziemer. Project showcase