42
0 - 0 - 1 © 2010 Texas Instruments Inc Practical Audio Experiments using the TMS320C5505 USB Stick “Sine WavesTexas Instruments University Programme Teaching Materials

0 - 1 © 2010 Texas Instruments Inc Practical Audio Experiments using the TMS320C5505 USB Stick “Sine Waves” Texas Instruments University Programme Teaching

Embed Size (px)

Citation preview

0 - 0 - 11

© 2010 Texas Instruments Inc

Practical Audio Experiments using the TMS320C5505 USB Stick

“Sine Waves”

Texas Instruments University Programme

Teaching Materials

Chapter 4 - Slide Chapter 4 - Slide 22© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

Sine Waves

Chapter 4 - Slide Chapter 4 - Slide 33© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

Introduction

• DSP can be used to generate sine waves

• Sine waves can be used in audio to:

– Generate musical tones and complex waveforms

– Generate tones for touch phones (DTMF)

– Modulate audio signals (alien voices)

– Control audio effects (chorus/phasing/flanging).

Chapter 4 - Slide Chapter 4 - Slide 44© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

Objectives

• To generate sine waves from 10Hz to 16000Hz.

• To introduce the Texas Instruments library of DSP functions DSPLIB.

Chapter 4 - Slide Chapter 4 - Slide 55© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

Knowledge Required

• Some understanding of fixed-point and floating-point numbers is required.

• Details of two useful articles from www.cnx.org are given in the References Section.

Chapter 4 - Slide Chapter 4 - Slide 66© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

Sine Wave and FFT• A sine wave is a pure tone. It only contains one

frequency:

Chapter 4 - Slide Chapter 4 - Slide 77© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

Complex Waveform and FFT• A complex waveform has several frequency

components:

Chapter 4 - Slide Chapter 4 - Slide 88© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

Generating Sine Waves

• There are 3 main ways to generate sine waves:

– Look-up Table

– Recursive Equation

– Taylor Expansion.

Chapter 4 - Slide Chapter 4 - Slide 99© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

Look-up Table

• This is the simplest way to generate a sine wave.

• Put known values into a table:

• Values are read using an offset e.g. sinetable[3];

Chapter 4 - Slide Chapter 4 - Slide 1010© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

About Look-up Tables

• Advantages:

– Fast to implement

– Values are always accurate

• Disadvantages:

– Can only be used for exact divisions of sampling frequency.

Chapter 4 - Slide Chapter 4 - Slide 1111© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

Recursive Equation

• Uses the following mathematical equation:

• The next sine output is derived from the previous values

• We shall look at this in more detail in Chapter 7, Infinite Impulse Response (IIR) filters.

21

1

.cos21

.sin

)(

)()(

zzT

zT

nx

nyzH

Chapter 4 - Slide Chapter 4 - Slide 1212© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

Taylor Series

• A sine function can be implemented as a geometric series:

where x is the input in radians.

• This method is used by the Texas Instruments DSP Library DSPLIB.

!7!5!3)sin(

753 xxxxx

Chapter 4 - Slide Chapter 4 - Slide 1313© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

About Taylor Series

• Advantages:

– Can generate any frequency

• Disadvantages:

– Not as accurate as look-up table because there are rounding errors

– Care needs to be taken to avoid overflow during multiplications.

Chapter 4 - Slide Chapter 4 - Slide 1414© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

C Code Implementation

Chapter 4 - Slide Chapter 4 - Slide 1515© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

Sine Function in C

• As standard, C comes with the function sin(x) in “math.h”.

• This uses floating-point maths.

• It is not efficient for real-time applications.

• A better way is to use DSPLIB.

Chapter 4 - Slide Chapter 4 - Slide 1616© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

Introducing DSPLIB

Chapter 4 - Slide Chapter 4 - Slide 1717© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

About DSPLIB

• Texas Instruments provides a library containing a whole range of useful functions used in DSP:

• Fast Fourier Transform (FFT)

• Sine, Cosine and Tangent

• Exponentials and logs.

• Each function is optimised for the processor, in this case the TMS320C55xx.

Chapter 4 - Slide Chapter 4 - Slide 1818© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

DSP LIB Headers

• When using DSPLIB, you need to add the two following #include statements to your code:

Chapter 4 - Slide Chapter 4 - Slide 1919© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

DSPLIB Library

• The library file 55xdsph.lib must be present in the build.

DSPLIB for TMS320C5505

USB Stick.

Chapter 4 - Slide Chapter 4 - Slide 2020© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

DSPLIB Sine Function

• Is written in TMS320C55xx assembly language.

• The function takes 3 parameters:

– Parameter 1. Address of location containing the frequency

– Parameter 2. Address of location to store calculated sine

– Parameter 3. Always 1.

Chapter 4 - Slide Chapter 4 - Slide 2121© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

Scaling the sine() function

• Need to convert frequency in Hz to value for sine() function.

• Use a scaling factor of 22368.

Chapter 4 - Slide Chapter 4 - Slide 2222© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

Magic Numbers

• Where did the magic number 22368 come from?

• The TMS320C5505 is a 16-bit fixed-point processor that uses:

– 32767 to represent 1.000

– –32767 to represent –1.000

• Here 22368 represents 0.682 decimal.

• We shall now look at how this magic number was obtained.

Chapter 4 - Slide Chapter 4 - Slide 2323© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

DSPLIB sine() function

• The DSPLIB function sine() calculates the sine of an angle.

• The input to the function is a fixed-point number that represents an angle:

– 0 => 0o

– 16383 => 90o

– 32767 => 180o

– 2 * 32767 => 360o

Chapter 4 - Slide Chapter 4 - Slide 2424© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

Sine 90o

• To generate a waveform using 4 values we use:

– sin 0o

– sin 90o

– sin 180o

– sin 270o.

• If Fs = 48000 Hz, the frequency generated will be:

– 48000/4 = 12000 Hz.

Chapter 4 - Slide Chapter 4 - Slide 2525© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

Sine 45o

• To generate a waveform using 8 value use:

– sin 0o

– sin 45o

– sin 90o

– sin 135o etc.

• If Fs = 48000 Hz, the frequency generated will be:

– 48000/8 = 6000 Hz.

Chapter 4 - Slide Chapter 4 - Slide 2626© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

Generate 1 Hz Sine Wave

• To generate a 1 Hz sine wave we work backwards:

– 48000/value = 1 Hz

– value = 1/48000

• There corresponding angle will be:

– 360o/48000 = 0.0075o

• To implement a 1 Hz sine wave we use:

• 0o, 0.0075o, 0.015o, 0.0225o, 0.030o etc.

Chapter 4 - Slide Chapter 4 - Slide 2727© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

Fixed-Point Implementation

• For 1 Hz we require each angle to be multiples of:

– 360o/48000 = 0.0075o

• For 1 Hz using fixed-point using DSPLIB we require:

– 2 * 32767 / 48000

Chapter 4 - Slide Chapter 4 - Slide 2828© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

Scaling Factor

• We can use the value for 1 Hz as a scaling factor to calculate other frequencies:

• SCALING FACTOR = 360o/48000 = 0.0075o

• For 2 Hz:

– 2 * SCALING FACTOR = 2 * 360o/48000 = 0.015o

• For 10 Hz:

– 10 * SCALING FACTOR = 10 * 360o/48000 = 0.075o

Chapter 4 - Slide Chapter 4 - Slide 2929© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

Scaling Factor Calculation• The fixed-point scaling factor is:

• In fixed-point maths, to divide by 48000 is awkward

• However, to divide by 32768 is easy because 32768 = 215

• Example: To divide 3FFFFFFFh by 32768d shift right 15 places. Result = 7FFFh

• In C code, divide by 32768 is implemented as >> 15.

48000

32767*2

Chapter 4 - Slide Chapter 4 - Slide 3030© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

Scaling Factor Calculation

• The fixed-point scaling factor is derived as follows:

• The divide by 32768 is implemented as >>15

• Here 2/32768 is implemented as >>14.

• The scaling factor used is therefore 22368.

32768

22368*2

48000

32767*2

Chapter 4 - Slide Chapter 4 - Slide 3131© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

Introduction to Laboratory

Chapter 4 - Slide Chapter 4 - Slide 3232© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

USB Stick Setup TMS320C5505

USB to PC

Headphones

USB Stick

Chapter 4 - Slide Chapter 4 - Slide 3333© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

Installing the Application

• Use the code given in Application 4, Sine Waves

• Follow the steps previously given in Chapter 1 to set up the new project.

Chapter 4 - Slide Chapter 4 - Slide 3434© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

Create New Project

Chapter 4 - Slide Chapter 4 - Slide 3535© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

Files Used in Project

Chapter 4 - Slide Chapter 4 - Slide 3636© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

Console

• Sampling frequency and Gain are shown in the Console window.

Chapter 4 - Slide Chapter 4 - Slide 3737© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

Experiments

Chapter 4 - Slide Chapter 4 - Slide 3838© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

Change the Headphone Volume

• Reduce gain from 10000 to 5000.

Chapter 4 - Slide Chapter 4 - Slide 3939© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

Change the Frequencies

• Rather than 200 Hz and 500 Hz, use two musical notes:

A = 440 Hz C = 523 Hz

Chapter 4 - Slide Chapter 4 - Slide 4040© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

Change the Sampling Frequency

• Change the sampling frequency to 24000 Hz.

• The output frequencies will have changed.

• You will need to alter the scaling factor in sinewaves.c

Chapter 4 - Slide Chapter 4 - Slide 4141© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

Questions

• What are 3 ways to generate sine waves?

• Which method is best suited to the TMS320C5505 USB Stick?

• What are 3 applications of sine waves?

Chapter 4 - Slide Chapter 4 - Slide 4242© © 2010 Texas Instruments Inc 2010 Texas Instruments Inc

References

• TMS320C55xx DSP Library Programmer’s Reference. SPRU 422.

• Digital Signal Processing with C and the TMS320C30 by Rulph Chassaing. ISBN 0-471-55780-3.

• www.cnx.org Fixed Point Arithmetic and Format (m10919) by Hyeokho Choi.

• www.cnx.org Fixed Point Arithmetic (m11054) by Hyeokho Choi.