A Hybrid Approach to Embedded DSP Laboratory

David Jun, Douglas Jones, Minh Do [email protected] Embedded DSP • Streaming vs. batch data processing Embedded DSP • Streaming vs. batch data processing

Cannot interrupt and change filter on-the-fly! Real-me Data Processing • Sample-by-sample processing

Digital- Analog- Signal Processing to- to-Digital Analog

• Block-based processing

Digital- Analog- Buffers Signal Processing Buffers to- to-Digital Analog A New Hybrid Course

Lab! Platform! Language! FIR filtering! TI c55x DSP! ASM! Sample-by-sample Multi-rate processing! TI c55x DSP! C! IIR filtering! TI c55x DSP! C! Spectrogram! Nexus 7! C/C++! Block-based Image Equalization! Nexus 7! C/C++! Independent group projects begin! Graphical user interfaces! Nexus 7! Java! Group projects continue until end of semester! Embedded Plaorms Processor Power 1000 mW Applicaon Processors

100 mW Performance Processors

10 mW Processor Speed 1MHz – 300MHz 100MHz – 1GHz >1GHz, mulcore • Simple sensing/processing • Motor control • Mobile consumer • Embedded interfaces • DSP • Retail point-of-sale • • Industrial automaon •

• TI MSP430 • TI C2000 • Snapdragon • Atmel • Microchip PIC32 • TI OMAP • ARM Cortex-M0 • ARM Cortex-M4 • Embedded Plaorms Processor Power This course 1000 mW Applicaon Processors

100 mW Performance Processors 7

10 mW Microcontrollers TI c55x DSP Processor Speed 1MHz – 300MHz 100MHz – 1GHz >1GHz, mulcore • Simple sensing/processing • Motor control • Mobile consumer • Embedded interfaces • DSP • Retail point-of-sale • Arduino • Industrial automaon • Raspberry PI

• TI MSP430 • TI C2000 • • Atmel • Microchip PIC32 • TI OMAP • ARM Cortex-M0 • ARM Cortex-M4 • NVIDIA Tegra A New Hybrid Course

Lab! Platform! Language! FIR filtering! TI c55x DSP! ASM! Multi-rate processing! TI c55x DSP! C! IIR filtering! TI c55x DSP! C! Spectrogram! Nexus 7! C/C++! Image Equalization! Nexus 7! C/C++! Independent group projects begin! Graphical user interfaces! Nexus 7! Java! Group projects continue until end of semester!

How do you learn development tools in a week? Simplifying Development

Challenge: accelerate new platform adoption by minimizing extraneous overhead and exposure to irrelevant complexities!

Signal Signal Processing Processing Setup in C Code in Nave C code Code Memory Memory Exposed ! NDK SDK Setup Code Android OS Audio ADC DMA Interrupts Touch Codec Mic Cam Wireless

Hidden ! screen TI c55x DSP! Google Nexus 7! Experiences from Spring 2013 • Everyone completed structured Android labs Prior Programming Experience 28

14 12 7 6 5

vhdl asm c/c++ java matlab other • Independent project – use the plaorm that fits the project!

Nexus Tablet C55x DSP FPGA VST on PC 11 3 1 1 Independent Projects 2013

Groups that used systemac debugging tended to be successful, regardless of the chosen plaorm

Image Processing! Audio Processing! § Image filtering! § Chessboard annotator! § Adaptive acoustic § Image halftoning! § Hand gesture LMS filtering! recognition! § Video enhancement § Karaoke! in dimly lit Multimodal Processing! § Audio equalizer! environments! § Visual head tracking for § Speech-based person § Handwritten zip code 3d audio! ID! parser! § Music visualizer! § Sheet music reader! Communications! § Multimodal person ID! § FM transceiver!