digital signal processors for real-time embedded systems by jeremy kohel
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§ionId=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