Sunteți pe pagina 1din 42

Practical Audio Experiments using the TMS320C5505 USB Stick

Sine Waves
Texas Instruments University Programme Teaching Materials

2010 Texas Instruments Inc

0-1

Sine Waves

2010 Texas Instruments Inc

Chapter 4 - Slide 2

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).

2010 Texas Instruments Inc

Chapter 4 - Slide 3

Objectives
To generate sine waves from 10Hz to 16000Hz. To introduce the Texas Instruments library of DSP functions DSPLIB.

2010 Texas Instruments Inc

Chapter 4 - Slide 4

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.

2010 Texas Instruments Inc

Chapter 4 - Slide 5

Sine Wave and FFT


A sine wave is a pure tone. It only contains one frequency:

2010 Texas Instruments Inc

Chapter 4 - Slide 6

Complex Waveform and FFT


A complex waveform has several frequency components:

2010 Texas Instruments Inc

Chapter 4 - Slide 7

Generating Sine Waves


There are 3 main ways to generate sine waves:
Look-up Table Recursive Equation Taylor Expansion.

2010 Texas Instruments Inc

Chapter 4 - Slide 8

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];

2010 Texas Instruments Inc

Chapter 4 - Slide 9

About Look-up Tables


Advantages: Fast to implement Values are always accurate

Disadvantages:
Can only be used for exact divisions of sampling frequency.

2010 Texas Instruments Inc

Chapter 4 - Slide 10

Recursive Equation
Uses the following mathematical equation:

y ( n) sin T .z 1 H ( z) x(n) 1 2 cosT .z 1 z 2


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.

2010 Texas Instruments Inc

Chapter 4 - Slide 11

Taylor Series
A sine function can be implemented as a geometric series:

x x x sin( x) x 3! 5! 7!
where

x is the input in radians.

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

2010 Texas Instruments Inc

Chapter 4 - Slide 12

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.

2010 Texas Instruments Inc

Chapter 4 - Slide 13

C Code Implementation

2010 Texas Instruments Inc

Chapter 4 - Slide 14

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.

2010 Texas Instruments Inc

Chapter 4 - Slide 15

Introducing DSPLIB

2010 Texas Instruments Inc

Chapter 4 - Slide 16

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.

2010 Texas Instruments Inc

Chapter 4 - Slide 17

DSP LIB Headers


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

2010 Texas Instruments Inc

Chapter 4 - Slide 18

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

DSPLIB for TMS320C5505 USB Stick.


2010 Texas Instruments Inc Chapter 4 - Slide 19

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.

2010 Texas Instruments Inc

Chapter 4 - Slide 20

Scaling the sine() function


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

Use a scaling factor of 22368.

2010 Texas Instruments Inc

Chapter 4 - Slide 21

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.

2010 Texas Instruments Inc

Chapter 4 - Slide 22

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

2010 Texas Instruments Inc

Chapter 4 - Slide 23

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.

2010 Texas Instruments Inc

Chapter 4 - Slide 24

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.

2010 Texas Instruments Inc

Chapter 4 - Slide 25

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: 0 , 0.0075 , 0.015 , 0.0225 , 0.030 etc.


o o o o o

2010 Texas Instruments Inc

Chapter 4 - Slide 26

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

2010 Texas Instruments Inc

Chapter 4 - Slide 27

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

2010 Texas Instruments Inc

Chapter 4 - Slide 28

Scaling Factor Calculation


The fixed-point scaling factor is:

32767 2* 48000
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.
2010 Texas Instruments Inc Chapter 4 - Slide 29

Scaling Factor Calculation


The fixed-point scaling factor is derived as follows:

32767 22368 2* 2* 48000 32768


The divide by 32768 is implemented as >>15 Here 2/32768 is implemented as >>14. The scaling factor used is therefore 22368.

2010 Texas Instruments Inc

Chapter 4 - Slide 30

Introduction to Laboratory

2010 Texas Instruments Inc

Chapter 4 - Slide 31

USB Stick Setup TMS320C5505


USB to PC
USB Stick

Headphones

2010 Texas Instruments Inc

Chapter 4 - Slide 32

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.

2010 Texas Instruments Inc

Chapter 4 - Slide 33

Create New Project

2010 Texas Instruments Inc

Chapter 4 - Slide 34

Files Used in Project

2010 Texas Instruments Inc

Chapter 4 - Slide 35

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

2010 Texas Instruments Inc

Chapter 4 - Slide 36

Experiments

2010 Texas Instruments Inc

Chapter 4 - Slide 37

Change the Headphone Volume


Reduce gain from 10000 to 5000.

2010 Texas Instruments Inc

Chapter 4 - Slide 38

Change the Frequencies


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

A = 440 Hz

C = 523 Hz

2010 Texas Instruments Inc

Chapter 4 - Slide 39

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

2010 Texas Instruments Inc

Chapter 4 - Slide 40

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?

2010 Texas Instruments Inc

Chapter 4 - Slide 41

References
TMS320C55xx DSP Library Programmers 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.
2010 Texas Instruments Inc

Chapter 4 - Slide 42

S-ar putea să vă placă și