ARM Cortex-M4 Combines DSP and microcontroller features

Slides:



Advertisements
Similar presentations
MM Player Supervised by: Dr. Luai Malhis. Prepared by: Mustafa Assaf & Mahmoud Musa.
Advertisements

LOGO Lab Supervisor – Dr. WH Lau EE3271 Design Laboratory.
What is Arduino?  Arduino is a ATMEL 168 micro-controller kit designed specially for small projects  User friendly IDE(Integrated Development Environment)
Guitar Effects Processor Using DSP
Implementation of an Audio Reverberation Algorithm
Audio Processing Unit (APU) Clint Lozinsky Richard Schultz Duncan Campbell Grant Cunningham.
Capstone Fall 2005 GFX-One Guitar Processor Team Carpal Tunnel October 6 th 2005.
How to Build a Digital-Physical System-Lab Assegid Kidané Fall 2014.
Asst. Prof. Dr. Alper ŞİŞMAN
Khaled A. Al-Utaibi  What is Arduino?  Arduino Boards  Arduino Shields  Arduino Uno Hardware.
Team Members Jordan Bennett Kyle Schultz Min Jae Lee Kevin Yeh.
Using Programmable Logic to Accelerate DSP Functions 1 Using Programmable Logic to Accelerate DSP Functions “An Overview“ Greg Goslin Digital Signal Processing.
CS4101 嵌入式系統概論 Freescale Tower System Prof. Chung-Ta King Department of Computer Science National Tsing Hua University, Taiwan ( Materials from
Seminar on Sound Card Presented by:- Guided by:-
LabVIEW Embedded Module for ARM Microcontrollers
Introduction to the Orbit Edu Board Ahmad Rahmati Teaching Assistant, ELEC424 Rice Efficient Computing Group Sep 12, 2007.
Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: CL06B Sensors Fundamentals Dragos Bogdan, MCU Application.
The 6713 DSP Starter Kit (DSK) is a low-cost platform which lets customers evaluate and develop applications for the Texas Instruments C67X DSP family.
Department of Electronic & Electrical Engineering Embedded system Aims: Introduction to: Hardware. Software Ideas for projects ? Robotics/Control/Sensors.
EE 1106: Introduction to EE Freshman Practicum
2.0 EMBEDDED CONTROLLER Engr. Hj. Mohamad Fauzi bin Zakaria Department of Mechatronics and Robotics Engineering Faculty of Electrical and Electronic Engineering.
Digilent System Board Capabilities Serial Port (RS-232) Parallel Port 1 Pushbutton Hint: Good for a reset button Connected to a clock input. See Digilent.
1 SERIAL PORT INTERFACE FOR MICROCONTROLLER EMBEDDED INTO INTEGRATED POWER METER Mr. Borisav Jovanović, Prof.dr Predrag Petković, Prof.dr. Milunka Damnjanović,
DLS Digital Controller Tony Dobbing Head of Power Supplies Group.
Arduino. What is it? A open-source software suite and single-board microcontroller. Allows easy and affordable prototyping of microcontroller applications.
CDR- Digital Audio Recorder/Player Brian Cowdrey Mike Ingoldby Gaurav Raje Jeff Swetnam.
TI MSP430 MICROCONTROLLERS BY ADITYA PATHAK. THE MSP FAMILY Ultra-low power; mixed signal processors Widely used in battery operated applications Uses.
ECE 477 DESIGN REVIEW FEST – FALL OUTLINE  Project overview  Project-specific success criteria  Block diagram  Component selection rationale.
Introduction to the C6713 Laurier Boulianne
Flamewheel UAV EEL4665 Intelligent Machine Design Lab Fall 2012 Matt Thompson.
Our Project Next generation communication system for vehicles ▫Simple, real-time visual communication Multi-touch input ▫Driver’s gestures produce an.
The “Drink Mixer” Design Constraints. Project Success Criteria An ability to digitally mix audio and adjust individual levels An ability to digitally.
Treasure Chess ECE 477 Team 2 - Spring 2013 Parul Schroff, Brock Caley, Sidharth Malik, Jeremy Stork Design Review.
ChibiOS/RT Demo A free embedded RTOS
Sound. Sound Capture We capture, or record, sound by a process called sampling: “measuring” the sound some number of times per second. Sampling rate is.
Eric Glover Steve Andre Shaun Greene Russell Willmot.
Μ [sic] design constraints wesley :: chris :: dave :: josh.
Team 6. Guitar Audio Amplifier Audio Codec DSP Wireless Adapter Motor Array PC LCD Display LED Arrays Pushbutton or RPG Input Device
CEng3361/18 CENG 336 INT. TO EMBEDDED SYSTEMS DEVELOPMENT Spring 2007 Recitation 01.
ENERGY METER TO INDICATE BILLING IN RUPEES FOR LOAD WISE OR DAY WISE
Cypress Roadmap: Platform PSoC®
Introduction to the ARM mbed Platform– A Hands-on Course
Outline Introduction to NuMaker TRIO Programming environment setup
Chapter 1 Introduction.
PROPELLER DISPLAY OF MESSAGE BY VIRTUAL LEDS
Voice Manipulator Department of Electrical & Computer Engineering
The UbER-Badge Beta Hardware Wrap-Up.
PC Mouse operated Electrical Load Control Using VB Application
DSC - fundamente MPU MCU DSP DSC Alternative Freescale
Embedded Systems Design
USING TV REMOTE AS A CORDLESS MOUSE FOR THE COMPUTER
Introduction to the Orbit Edu Board
Microcomputer Systems 1
ECE 3551 Microcomputer Systems 1
The Arduino Microcontroller: Atmel AVR Atmega 328
Subject Name: Microcontroller Subject Code: 10ES42
This chapter provides a series of applications.
Introduction to Microprocessors and Microcontrollers
Future Designs, Inc. Your Development Partner
Designing with ARM Cortex-M4 (and a Real Dev Board)
CSCI1600: Embedded and Real Time Software
Technical Communication Skills Practicum
Lab 2 Part II Instructions
8051 Micro Controller.
CSCI1600: Embedded and Real Time Software
Introduction to 5685x Series
Single Board Computers and Dev Boards
Arduino Board.
Arduino म्हणजे काय?.
Introduction to arduino
Presentation transcript:

ARM Cortex-M4 Combines DSP and microcontroller features Adds instructions, including DSP and SIMD instructions, and FPU to the ARM Cortex-M3 Using these hardware features, together with code optimization strategies, Cortex-M4 C-code can approach the efficiency of DSPs for implementation of DSP algorithms Cortex-M4 is a microcontroller with real-time audio processing capability

Hands-On DSP Teaching Texts

ARM Cortex-M4 Hardware Platform STM32F407 ARM Cortex-M4 168 MHz clock 128 kB RAM 1 MB Flash FPU, 2 x 12-bit DAC 3 x 16-channel 12-bit ADC, 2.4MSPS I2C, I2S MEMS microphone 3-axis accelerometer Accessible i/o pins Audio DAC ST-LINK User push button User LEDs STM32F407 Discovery $15

ARM Cortex-M4 Hardware Platform STM32F401 ARM Cortex-M4 84 MHz clock 96 kB RAM 512 kB Flash FPU 1 x 16-channel 12-bit ADC, 2.4MSPS I2C, I2S Arduino connectivity mbed-enabled Accessible i/o pins ST-LINK User push button User LED STM32F401 Nucleo $10

ARM Cortex-M4 Hardware Platform Wolfson Audio Card WM5102 audio hub codec 192 kHz stereo High quality audio Programmable filters {audio DSP} Class D speaker driver WM8804 SPDIF transceiver Stereo digital MEMS microphones LINE IN, LINE OUT, HEADSET (Samsung, Apple) Can use plain headphones or TRRS-wired microphone $34

Audio Card Connections BCLK WCLK DOUT DIN SCL SDA RESET 5V GND

Audio Card Connections BCLK WCLK DOUT DIN SCL SDA RESET 5V GND

Audio Card Connections Wolfson Audio Card connected to STM32F407 Discovery

ARM Cortex-M4 Hardware Platform Audio Board for STM32F407 Discovery Texas Instruments AIC23 audio codec 8kHz – 48kHz sampling rates LINE IN, LINE OUT, MIC IN, HP OUT audio board for STM32F407 Discovery

ARM Cortex-M4 Hardware Platform $13 Texas Instruments TM4C123 ARM Cortex-M4F 80 MHz clock 32 kB RAM on-chip 256 kB Flash on-chip FPU, I2C, I2S emulation Audio BoosterPack Cirrus Logic WM8731 audio codec 8kHz – 48kHz sampling rates LINE IN, LINE OUT, MIC IN, HP OUT TM4C123 LaunchPad design files available on-line Audio BoosterPack

$45 ARM Cortex-M4 Hardware Platform Cypress FM4 S6E2CC Pioneer Kit Cypress Semiconductor FM4 200 MHz clock 256 kB RAM on-chip 2 MB Flash on-chip FPU, I2C (SPI), I2S Wolfson WM8731 audio codec 8kHz – 96kHz sampling rates LINE IN, MIC IN, HP OUT $45 Cypress FM4 S6E2CC Pioneer Kit

ARM Cortex-M7 Hardware Platform STM32F746G Discovery STM32F746G ARM Cortex-M7F 212 MHz clock FPU, I2C, I2S 2 x 12-bit DAC mbed enabled Cirrus Logic WM8994 audio codec 8kHz – 48kHz sampling rates LINE IN, HP OUT user pushbutton user LED Arduino connectors MEMS digital microphones $45 $45

ARM Cortex-M4 Hardware Platform STM32F746G Discovery STM32F746G ARM Cortex-M7F 212 MHz clock FPU, I2C, I2S 2 x 12-bit DAC mbed enabled Cirrus Logic WM8994 audio codec 8kHz – 48kHz sampling rates LINE IN, HP OUT user pushbutton user LED Arduino connectors MEMS digital microphones 272 x 470 pixel LCD

STM32F746G Discovery Board Connections

ARM University Program DSP Education Kit DSP Education Kit is a resource comprising hardware, software and teaching materials, available from ARM University Program. It aims to enhance DSP teaching by enabling the incorporation of hands-on DSP laboratory exercises into a course. It is based on the use of ARM Cortex-M4 or Cortex-M7 processors. It joins an expanding family of Education Kits ARM University Program donates materials, licences and hardware to professors. Cypress and ST hardware options currently available.

Digital Signal Processing using the ARM Cortex-M4

Digital Signal Processing using the ARM Cortex-M4 Book describes a superset of the program examples in the DSP Education Kit. Includes theory sections. Program examples downloadable for STMicroelectronics, Texas Instruments, and Cypress hardware platforms. Program code is conceptually similar to, but has more functionality and in some details is incompatible with that provided in DSP Education Kit.

Topics Covered (by Education Kit and by book) Introduction Analog Input and Output Finite Impulse Response Filters Infinite Impulse Response Filters Fast Fourier Transform Adaptive Filters

Talk Through Using Interrupt-Based i/o STM32F746G Discovery Board HP program stm32f7_loop_intr.c

Talk Through Using Interrupt-Based i/o // stm32f7_loop_intr.c #include "stm32f7_wm8994_init.h" #include "display.h" #define SOURCE_FILE_NAME "stm32f7_loop_intr.c" extern int16_t rx_sample_L, rx_sample_R; extern int16_t tx_sample_L, tx_sample_R; void BSP_AUDIO_SAI_Interrupt_CallBack(){ tx_sample_L = rx_sample_L; tx_sample_R = rx_sample_R; BSP_LED_Toggle(LED1); return; } int main(void){ stm32f7_wm8994_init(AUDIO_FREQUENCY_48K, IO_METHOD_INTR, INPUT_DEVICE_DIGITAL_MICROPHONE_2, OUTPUT_DEVICE_HEADPHONE, WM8994_HP_OUT_ANALOG_GAIN_0DB, WM8994_LINE_IN_GAIN_0DB, WM8994_DMIC_GAIN_9DB, SOURCE_FILE_NAME, NOGRAPH); while(1) {}

Talk Through Using Interrupt-Based i/o // stm32f7_loop_intr.c #include "stm32f7_wm8994_init.h" #include "display.h" #define SOURCE_FILE_NAME "stm32f7_loop_intr.c" extern int16_t rx_sample_L, rx_sample_R; extern int16_t tx_sample_L, tx_sample_R; void BSP_AUDIO_SAI_Interrupt_CallBack(){ tx_sample_L = rx_sample_L; tx_sample_R = rx_sample_R; BSP_LED_Toggle(LED1); return; } int main(void){ stm32f7_wm8994_init(AUDIO_FREQUENCY_48K, IO_METHOD_INTR, INPUT_DEVICE_DIGITAL_MICROPHONE_2, OUTPUT_DEVICE_HEADPHONE, WM8994_HP_OUT_ANALOG_GAIN_0DB, WM8994_LINE_IN_GAIN_0DB, WM8994_DMIC_GAIN_9DB, SOURCE_FILE_NAME, NOGRAPH); while(1) {}

Talk Through Using Interrupt-Based i/o // stm32f7_loop_intr.c #include "stm32f7_wm8994_init.h" #include "display.h" #define SOURCE_FILE_NAME "stm32f7_loop_intr.c" extern int16_t rx_sample_L, rx_sample_R; extern int16_t tx_sample_L, tx_sample_R; void BSP_AUDIO_SAI_Interrupt_CallBack(){ tx_sample_L = rx_sample_L; tx_sample_R = rx_sample_R; BSP_LED_Toggle(LED1); return; } int main(void){ stm32f7_wm8994_init(AUDIO_FREQUENCY_48K, IO_METHOD_INTR, INPUT_DEVICE_DIGITAL_MICROPHONE_2, OUTPUT_DEVICE_HEADPHONE, WM8994_HP_OUT_ANALOG_GAIN_0DB, WM8994_LINE_IN_GAIN_0DB, WM8994_DMIC_GAIN_9DB, SOURCE_FILE_NAME, NOGRAPH); while(1) {}

Talk Through Using Interrupt-Based i/o STM32F746G Discovery Board HP program stm32f7_loop_intr.c

Talk Through Using Interrupt-Based i/o

Talk Through Using Interrupt-Based i/o // stm32f7_loop_intr.c #include "stm32f7_wm8994_init.h" #include "display.h" #define SOURCE_FILE_NAME "stm32f7_loop_intr.c" extern int16_t rx_sample_L, rx_sample_R; extern int16_t tx_sample_L, tx_sample_R; void BSP_AUDIO_SAI_Interrupt_CallBack(){ tx_sample_L = rx_sample_L; tx_sample_R = rx_sample_R; BSP_LED_Toggle(LED1); return; } int main(void){ stm32f7_wm8994_init(AUDIO_FREQUENCY_48K, IO_METHOD_INTR, INPUT_DEVICE_DIGITAL_MICROPHONE_2, OUTPUT_DEVICE_HEADPHONE, WM8994_HP_OUT_ANALOG_GAIN_0DB, WM8994_LINE_IN_GAIN_0DB, WM8994_DMIC_GAIN_9DB, SOURCE_FILE_NAME, NOGRAPH); while(1) {}

STM32F746G Discovery Board Connections

Sine Wave Generation Using Interrupt-Based i/o // stm32f7_sine_lut_intr.c #include "stm32f7_wm8994_init.h“ #include "stm32f7_display.h" #define SOURCE_FILE_NAME "stm32f7_sine_lut_intr.c" #define LOOPLENGTH 8 extern int16_t rx_sample_L, rx_sample_R, tx_sample_L, tx_sample_R; int16_t sine_table[LOOPLENGTH] = {0, 7071, 10000, 7071, 0, -7071, -10000, -7071}; int16_t sine_ptr = 0; // pointer into lookup table void BSP_AUDIO_SAI_Interrupt_CallBack(){ BSP_LED_On(LED1); tx_sample_L = sine_table[sine_ptr]; sine_ptr = (sine_ptr+1)%LOOPLENGTH; tx_sample_R = tx_sample_L; BSP_LED_Off(LED1); return; } int main(void){ stm32f7_wm8994_init(AUDIO_FREQUENCY_8K, IO_METHOD_INTR, INPUT_DEVICE_INPUT_LINE_1, OUTPUT_DEVICE_HEADPHONE, WM8994_HP_OUT_ANALOG_GAIN_0DB, WM8994_LINE_IN_GAIN_0DB, WM8994_DMIC_GAIN_9DB, SOURCE_FILE_NAME, GRAPH); plotSamples(sine_table, LOOPLENGTH, 32); while(1){}

Sine Wave Generation Using Interrupt-Based i/o LCD start screen for program stm32f7_sine_lut_intr.c.

Sine Wave Generation Using Interrupt-Based i/o 1 kHz sine wave generated using program stm32f7_sine_lut_intr.c.

Comparison of audio DAC with zero-order hold DAC 1 kHz sinusoid generated from 8-value LUT, fs = 8 kHz, using WM8994 codec 1 kHz sinusoid generated from 8-value LUT, fs = 8 kHz, using 12-bit on-chip DAC

Sine Wave Generation Using Interrupt-Based i/o // stm32f7_sine_intr.c float32_t sine_frequency = 367.0; float32_t amplitude = 10000.0; float32_t theta_increment; float32_t theta = 0.0; void BSP_AUDIO_SAI_Interrupt_CallBack(){ theta_increment = 2*PI*sine_frequency/SAMPLING_FREQ; theta += theta_increment; if (theta > 2*PI) theta -= 2*PI; BSP_LED_On(LED1); // tx_sample_L = (int16_t)(amplitude*sin(theta)); // tx_sample_L = (int16_t)(amplitude*sinf(theta)); tx_sample_L = (int16_t)(amplitude*arm_sin_f32(theta)); tx_sample_R = tx_sample_L; BSP_LED_Off(LED1); plotSamplesIntr(tx_sample_L, 32); return; }

Sine Wave Generation Using Interrupt-Based i/o 367Hz sine wave generated using program stm32f7_sine_intr.c.