Digital Signal Processors for Real-Time Embedded Systems

Post on 19-Jan-2016

44 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Digital Signal Processors for Real-Time Embedded Systems. By Jeremy Kohel. Overview. What is a DSP? Common characteristics of DSP’s Software considerations Available tools Example code. What is a DSP?. Definition: - PowerPoint PPT Presentation

Transcript

Digital Signal Processors for Digital Signal Processors for Real-Time Embedded SystemsReal-Time Embedded Systems

By Jeremy Kohel

OverviewOverview

What is a DSP?Common characteristics of DSP’sSoftware considerationsAvailable toolsExample code

What is a DSP?What is a DSP?

Definition:

“A specialized microprocessor designed specifically for the rapid processing of digital signals in real time.”

What does this mean?

Where are they found?

Digital Signal Processing in Digital Signal Processing in ActionAction

Common characteristics of Common characteristics of DSP’sDSP’s

The ability to perform many highly numeric intensive tasks at fast speeds

Efficient instructions (MAC’s)Efficient memory accessEfficient address generation

MAC’sMAC’s

MAC’s = multiply-accumulate instructionsHighly used in DSP applicationsMust be done in at most a single instruction

cycleEquivalent to “a = a + (b x c)” where “a” is

an accumulator register

MAC’s (cont.)MAC’s (cont.)

MAC’s are helpful to calculate the sum of many multiplication operations– Vector dot products used in many algorithms,

i.e. filtering

Some DSP’s have multiple accumulators and multiplier units so they can perform many MAC’s in a single instruction cycle

Basic DSP architectureBasic DSP architecture

MAC exampleMAC example

Efficient Memory AccessEfficient Memory Access

DSP’s must be able to make multiple access to memory in a single instruction cycle

Allows for fetching the next instruction while at the same time fetching operands and/or saving data to memory from a previous instruction

In order for this to happen…In order for this to happen…

Requires multiple on-chip busesRequires multiple on-chip memory banksOnly a few instructions in the entire

instruction set have this ability

Address GenerationAddress Generation

DSP’s require separate generation units in order to find the next address needed

Run in the background outside the main data path

Allows an address of operand access to be calculated at the same time as performing arithmetic operations

Software ConsiderationsSoftware Considerations

How will the program be developed/tested– DSP hardware, simulator

In what language will the program be developed?– Assembly, C/C++, Ada, etc.

Cross Compiler vs. Native Cross Compiler vs. Native CompilerCompiler

DSP object code differs from the object code of a regular, CPU-driven workstation

Cross compiler runs on CPU workstation and creates DSP object code

Native compiler runs on CPU workstation and creates object code for that computer

Either have DSP hardware at hand or test with a simulator to mimic hardware

Language DilemmaLanguage Dilemma

Assembly vs. CCompilers are available for other higher

level languages C is most commonly used in real-time

applicationsAdvantages and disadvantages of each

DSP AssemblyDSP Assembly

More efficient than C codeProvides a more optimal solutionIncludes instructions to make common tasks

more efficiently executed– “Loop” or “Repeat” instruction– Doesn’t waste cycles on checking count

variables or branching back to the top of a loop

Disadvantages of DSP Disadvantages of DSP AssemblyAssembly

Takes longer to write codeMore difficult to write solutionsR7 = Max(R5, R6)LDF R7, R6

COMF R5, R7

LDFLT R7, R5

More DisadvantagesMore Disadvantages

DSP data is stored differently (No integers)Only fractional part of floating point

numbersTherefore you can’t get a number greater

than 1 – $7FFFFF = 0.99999988709

Highest number allowed MSB is the sign bit

Problems?Problems?

There can be numbers larger than 1 or smaller than –1

This is allowed using the accumulator and 56 bits

Accumulator = A2(8 bits):A1(24 bits):A0(24 bits)

Acc (cont.)Acc (cont.)

If the number stored is 24 bits then its stored in A1 with A0 being zeroed out and A2 being sign extended – $FF:834345:000000

Otherwise the MSB of A2 is the sign bit with the other 7 being the integer and the other 48 being the decimal– $00:834345:125345

(Allows for numbers between –128.0 and 127.99)

Embedded CEmbedded C

Easier to write code forPrograms are shorter and less complexCompilers availableC is very versatile, and highly portable

Problems with CProblems with C

The resulting assembly code is not optimal and therefore must be hand optimized

Many compilers claim code optimized for density and execution time– Most of the time this is not the case

Compilers allow for assembly code to be inserted inline

Other issuesOther issues

C requires a large number of external libraries that need to be compiled into the program– I/O libraries– Run-Time libraries (math, string, memory)– DSP libraries (matrix arithmetic, filtering,

image processing)

Software ToolsSoftware Tools

DirectDSP by SignalogicCreates an interface between the DSP

hardware and other well known development environments– Matlab, Visual Studio, .NET

Real-time watchesWaveform generator

DirectDSPDirectDSP

Code Composer StudioCode Composer Studio

Distributed by Texas InstrumentsProvides a user-friendly IDEC/C++ compilerProject ManagerSimulator

CCSCCS

Real-time analysis (similar to DirectDSP)– Cache log – Color codes cache hits to optimize algorithm

placement

Code Coverage– Highlights lines of code not executed– Lists number of times lines are executed

Allows optimization

ANSI C Code GeneratorANSI C Code Generator

Distributed by HyperceptionWorks in coordination with graphical

design environments Creates C code based on the designGood for porting algorithmsDecrease develop time

Problems with code Problems with code generationgeneration

Doesn’t provide optimized code– Must be hand optimized

Won’t generate assembly libraries

Code ExampleCode Example

void UserProc(void* ptrIn, void* ptrOut, long nLen, short int nNumTrace)

{

#ifdef defined(TMS320C3x) || defined(TMS320C4x) || defined(DSP5600x) || defined(ADSP2106x)

#define x ((long*)ptrIn)

#define y ((long*)ptrOut)

#endif

short int n;

More codeMore code

for (n=0; n<nLen; n++)

x[n] = 0.75*x[n] + 1000;

y[n] = x[n];

}

}

Conclusion – Things to Conclusion – Things to rememberremember

DSP’s are not versatile, they are specialized to a specific task– CPU/DSP systems popular

They value efficiency over oscillator frequency

When developing a DSP application higher level languages are easier, but will not give as optimized code as assembly

ReferencesReferences

[1] “Choosing a DSP Processor”, Berkeley Design Technology white paper, http://www.bdti.com/articles/choose_2000.pdf

  [2] Jennifer Eyre and Jeff Bier, “The Evolution of DSP Processors”,

Berkeley Design Technology white paperhttp://www.bdti.com/articles/evolution.pdf

[3] “Adding user defined C routines to real-time DSP code”, Signal Logic, http://www.signalogic.com/index.pl?page=ccode#using

[4] "DSP Algorithm Development Tools" DSP & Multimedia Technology, November 1993

References (cont.)References (cont.)

[5] “Digital Signal Processing, C6000 DSPs”, Texas Instruments, http://focus.ti.com/paramsearch/docs/parametricsearch.tsp?family=dsp&sectionId=2&tabId=57&familyId=132

  [6] “C-Language Programming for DSP”, Pentek Inc white paper,

http://www.pentek.com/deliver/TechDoc.cfm/C_LangProg.pdf?Filename=C_LangProg.pdf

top related