Previous section (2)Next section (4)

Q3: Programmable DSP chips and their software

Q3.1: What are the available DSP chips and chip architectures?

Updated 9/24/98
 
 
The "big four" programmable DSP chip manufacturers are Texas Instruments, with the TMS320 series of chips; Motorola, with the DSP56000, DSP56100, DSP56300, DSP56600, and DSP96000 series; Lucent Technologies (formerly AT&T), with the DSP1600 and DSP3200 series; and Analog Devices, with the ADSP2100 and ADSP21000 series. A good overview of programmable DSP chips is published periodically in EDN and Computer Design magazines.


You may also want to check out Berkeley Design Technology's home page, which has a number of articles on choosing DSP processors, as well as a "Pocket Guide to DSP Processors and Cores" in downloadable PostScript. Brief overviews of various DSP processors, cores, and general-purpose processors can be found at http://www.bdti.com/procsum/index.htm.

Here's a less ambitious chip breakdown by manufacturer:

Analog Devices:

ADSP-21xx:
10 to 50 MIPS 16-bit fixed point DSPs; 40-bit accumulator; 24-bit instructions. Large number of family members with different configurations of on-chip memory and serial ports, timers, and host ports. ADSP-21mspxx members include an on-chip Codec.
ADSP-21020:
20/25/33 MHz floating-point DSP; Supports 32-bit fixed-point, IEEE format 32-bit floating-point, and 40-bit floating-point; 40-bit registers plus an 80-bit accumulator that can be divided into two 32-bit registers and a 16-bit register.
ADSP-2106x ("SHARC"):
40 MIPS, 32-bit floating-point DSPs based on ADSP-21020. 32-bit address bus, 32-bit data bus; 1-4 Mbits on-chip memory; six communication ports, timer, two serial ports.

Lucent Technologies (formerly AT&T Microelectronics):

DSP16xx:
 Up to 120 MIPS 16-bit fixed-point DSPs. 16-bit address bus; 36-bit accumulators. Serial ports, parallel port; timer, bit manipulation unit. Various memory configurations.
DSP16xxx:
 100 MIPS 16-bit fixed-point DSP. 20-bit address bus; eight 40-bit accumulators. Two multipliers and SIMD-like capabilities. Serial ports, parallel port; timer, bit manipulation unit. Various memory configurations.
DSP32C, DSP32xx:
32-bit floating point with 40-bits accumulator and 16/24-bit fixed point. The 32C has three 512 x 32-bit RAMs, while the 3210 has two 1k x 32-bit RAMs and a 256x32-bit boot ROM. 32C: Serial and parallel I/O, 3210: Serial I/O, timer, DMA-controller. 3210 available at 50 and 66MHz. Note: DSP3210 and DSP3207 are discontinued and no longer available.

Motorola:

DSP560xx:
20.5/27/33/40 MHz 24-bit fixed point DSP. 24-bit data bus, 16 bit address bus, 56 bit accumulators (2), host interface port, serial ports (2), general purpose I/O pins, timer.
DSP561xx:
40, 50, or 60 MHz 16-bit fixed-point DSP; 16-bit data bus, 40 bit accumulators (2), host interface port, serial ports (2), timer, Codec. 2K words program RAM, 2K words data RAM on chip.
DSP563xx:
66/80/100 MHz 24-bit fixed-point DSP; 24-bit address bus; 56-bit accumulators (2), timers, serial interface, host interface port. Various memory configurations.
DSP566xx:
60 MHz 16-bit fixed point DSP aimed at low-power applications; 40-bit accumulators (2), timer, serial interface, host interface port.
DSP568xx:
 20 MIPS 16-bit fixed point DSP; 36-bit accumulators (2), three internal address buses (two 16-bit, one 19-bit) and one 16-bit external address bus; three 16-bit internal data buses, one 16-bit external data bus; serial ports, timers.
DSP96002:
IEEE format floating point DSP; two complete 32-bit data and address buses. 1K words program RAM, 64 words bootstrap ROM, 1K words data RAM, 1K words data ROM, host interface ports (2). Available in 33 MHz or 40 MHz.

Texas Instruments:

TMS320C1x:
Family of low cost fixed-point DSPs; 16 bit data, 32 bit registers; Various RAM and ROM configurations; 16 bit I/O bus, serial ports.
TMS320C2x:
50 MHz fixed-point DSPs; 16 bit data, 32 bit registers; 12.5 MIPS @ 50 MHz. The family members have different RAM and ROM configurations.
TMS320C2xx:
A cross between the TMS320C2x and the TMS320C5x families. Same data path as the 'C2x, but pipeline of 'C5x; 16-bit data, 32-bit registers; 20/28/40 MIPS; serial ports. The TMS320C24x are aimed at motor control solutions.
TMS320C3x:
27/33/40 MHz floating point DSPs; 32-bit floating-point, 24-bit fixed-point data, 40-bit registers; DMA controller; serial ports; some support for multi-processor arrays. Various ROM and RAM configurations.
TMS320C4x:
40/50 MHz floating-point DSP; extensive parallel processing support through 6 buffered byte-wide 20 Mb/s links and 6 channel DMA; cache.
TMS320C5x:
50-MIPS enhanced TMS320C25 (double throughput); low overhead looping; 10 Kwords SRAM on chip.
TMS320C54x:
Up to 100 MIPS 16-bit fixed-point DSPs with a large number of specialized instructions. Family members differ in configuration of on-chip ROM/RAM and serial ports, autobuffered serial ports, host ports, and time-division multiplexed ports.
TMS320C62xx:
200 MHz 16-bit fixed-point DSP with VLIW (very large instruction word), load/store architecture; 32 32-bit registers; very deep pipeline; two multipliers, ALUs, and shifters; cache.
TMS320C67xx:
167 MHz 32-bit and 64-bit IEEE-754 floating-point DSP with VLIW (very large instruction word), load/store architecture; 32 32-bit registers; very deep pipeline; two multipliers, ALUs, and shifters; cache.
TMS320C8x:
Four (two on 'C82) 50 MHz 32-bit fixed-point processors combined with a RISC supervisory processor in a single multichip module. 'C80 includes a video controller.

 

 



Q3.2: What is the difference between a DSP and a microprocessor?

Updated 9/24/98
 
 
The essential difference between a DSP and a microprocessor is that a DSP processor has features designed to support high-performance, repetitive, numerically intensive tasks. In contrast, general-purpose processors or microcontrollers (GPPs/MCUs for short) are either not specialized for a specific kind of applications (in the case of general-purpose processors), or they are designed for control-oriented applications (in the case of microcontrollers). Features that accelerate performance in DSP applications include:
While the above differences traditionally distinguish DSPs from GPPs/MCUs, in practise it is not important what kind of processor you choose. What is really important is to choose the processor that is best suited for your application; if a GPP/MCU is better suited for your DSP application than a DSP processor, the processor of choice is the GPP/MCU. It is also worth noting that the difference between DSPs and GPPs/MCUs is fading: many GPPs/MCUs now include DSP features, and DSPs are increasingly adding microcontroller features.

[Ole Wolf, wolf@bdti.com]
 
 



Q3.3: Software for Analog Devices DSPs

Updated 8/16/99

Q3.3.1: Where can I get an assembler for the ADSP-2105?

John Sture has developed an assembler for the Analog Devices ADSP-2105. The latest version can be obtained by sending email to jsture@vcn.bc.ca. The executable and manual will be returned in uuencoded format. Requires Analog Devices' ld21.exe version 5.1 linker or equivalent for linking executables. Source code to the assembler is available under the terms of the GNU public license, from the same address.

[John Sture, jsture@vcn.bc.ca]


Q3.3.2: Where can I get algorithms or libraries for Analog Devices DSPs?

The number for the Analog Devices DSP BBS is (617) 461-4258 (300, 1200, 2400, 9600, 14400 bps), 8N1.

You can also find files on Analog Devices' web site, or at their FTP site at ftp://ftp.analog.com.

[Analog Devices DSP Applications, dsp_applications@analog.com]

Lots of Analog Devices, Inc. DSP software is available in their application books like Digital Signal Processing Applications Using the ADSP-2100 Family. These books are not free, but they're not expensive either. There are some major applications like modems, LPC, GSM codec, speech recognition, etc.

[George Biner, GBiner@bellind.com]


Q3.4: Software for Lucent Technologies (Formerly AT&T) DSPs

Lucent Technologies provides application libraries for their DSPs at http://www.lucent.com/micro/wam/tse/.


Q3.5: Software for Motorola DSPs

Motorola provides free software development tools that may be downloaded from the Motorola Web site at http://www.mot.com/SPS/DSP/software/.


Q3.5.1: Where can I get a free assembler for the Motorola DSP56000?

A free assembler for the Motorola DSP56000 exists, thanks to Quinn Jensen, jensenq@zdomain.com. The current version is 1.2. It is also available at ftp://ftp.zdomain.com/pub/jensenq/a56 and http://www.zdomain.com/~jensenq/a56.html.

Q3.5.2: Where can I get a free C compiler for the Motorola DSP56000?

There are two separate compiler sources for the Motorola DSP56000. One is the port of gcc 1.40 done by Andrew Sterian (asterian@umich.edu) and the other is a port of gcc 1.37.1 done by Motorola and returned to the FSF. Andrew's port has bowed to Motorola's version. Both may be portable to gcc2.x.x with some effort required. Neither of these comes with an assembler, but you can get a free DSP56000 assembler elsewhere (see question 3.5.1, above). The Motorola gcc source is available for FTP from: ftp://nic.funet.fi/pub/ham/dsp/dsp56k-tools/dsp56k-gcc.tar.Z and ftp://mirriwinni.cse.rmit.edu.au/pub/uP/56k/g56k.tar.gz-1996.


From Andrew Sterian, asterian@umich.edu: "My DSP56K compiler, while not supported nor as well tested as Motorola's, implements fixed-point arithmetic rather than floating-point arithmetic. This may be suitable for some applications. The 5615 compiler also implements fixed-point arithmetic. To the best of my knowledge, Motorola does not have a C compiler for the 5615 family, although alternatives may exist. As of this writing (January 1997) I have not worked woth Motorola DSPs or compiler software for nearly 5 years so questions regarding my compilers may well be met with "Ummm... I have no idea."

 Both compilers were posted to alt.sources so any Usenet site that archives this newsgroup will have a copy. I have also found the 5616 compiler at ftp://ftp.funet.fi/pub/ham/dsp/dsp56k-tools/gcc5616.tar.Z.


Q3.5.3 Where can I get a disassembler for the Motorola DSP56000?

Miloslaw Smyk has released an open source (BSD style) 5600x disassembly library. It is available for download at ftp://amiga.com.pl/pub/delfina/lib5600x_disasm.tar.gz. [Miloslaw Smyk, thorgal@amiga.com.pl]

Q3.5.4: Where can I get algorithms and libraries for Motorola DSPs?

Motorola provides a software archive that is available via World-Wide Web from the software page at http://www.mot.com/SPS/DSP/software/. The archive includes macros for filters (FIR, IIR, adaptive) and floating-point functions. [Tim Baggett]

Q3.5.5: Where can I get NeXT-compatible Motorola DSP56001 code?

Try FTP at ccrma-ftp.Stanford.EDU. The /pub/ directory contains free code for the Motorola DSP56001 and the NeXT platform. [bil@ccrma.Stanford.EDU]

Q3.5.6: Where can I get emulators for the 68HC11 (6811) processor?

While the 68HC11 is not a DSP processor, emulators are available for those who might be interested in doing DSP on these processors:

Q3.6: Software for Texas Instruments DSPs

Updated 9/13/99
 
 
Spectron provides a downloadable program called WinConnex, which provides windows connectivity to the TI TMS320C31 DSK. It's available from Spectron's Web site at http://www.spectron.com/. Look under the "products" menu.


Q3.6.1: Where can I get free algorithms or libraries for TI DSPs?

nic.funet.fi has some old, apparently public domain, assembler and related tools from TI for the TMS320 family. The directory is /pub/ham/dsp.


[Antti-Pekka Virtanen, antsu@utu.fi]

For the TMS320C54x and TMS320C6x, try http://www.ti.com/sc/docs/dsps/tools/c54x/softsupp.htm and http://www.ti.com/sc/docs/dsps/products/c6x/benchmk.htm, respectively.

TI's world-wide web site is http://www.ti.com. The TI DSP bulletin board is mirrored on ftp.ti.com, and on mirriwinni.cse.rmit.edu.au. The TI site is the official one, but has no user contributed software. The file: ftp://mirriwinni.cse.rmit.edu.au/mirrors/tibbs/00readme (might be broken) provides further guidance. Please restrict FTP session to outside of 8 am to 6 pm local time (10 pm to 8 am GMT). [Brad Hards, bradh@gil.com.au]

{ If anyone knows of any other sources for TI DSP software, please let us know at comp-dsp-faq@bdti.com. Thanks! }


Q3.6.2: Where can I get free development tools for TI DSPs?

TI development tools are available for free 30 day evaluation on the TI website. Go to http://www.ti.com/sc/docs/tools/index.htm.

Q3.6.3: Where can I get a free C compiler for the TI TMS320C3x/4x?

Dr. Michael P. Hayes has written a GNU C-based compiler for the TMS320C30 and TMS320C40 families, available at http://www.elec.canterbury.ac.nz. The current version patches against gcc-2.8.1; support is moving to egcs-1.2. The compiler is freely redistributable under the terms of the GNU Public Licence. Front-ends are also available for C++, Java, Fortran 77, Pascal, Ada 95, among others.


[Dr. Michael P. Hayes, m.hayes@elec.canterbury.ac.nz]


Q3.6.4: Where can I get a free assembler for the TI TMS320C3x/4x?

Ted Rossin has written an assembler and linker for the TMS320C30. In his words, "It is somewhat limited by the fact that it can't handle expressions but it has worked fine for me over the past few years. There is no manual because it is a clone of the TI assembler and linker. However the linker command files use a different (easier to use) syntax. It runs on HP-UX workstations, Macs, IBM clones and believe it or not the Atari-ST (because I developed the code on it)."

[Ted Rossin, rossin@fc.hp.com]

Dr. Michael P. Hayes has written a GNU-based assembler for the TMS320C30 and TMS320C40 families, available at http://www.elec.canterbury.ac.nz. The current version patches against binutils-2.7. According to Michael Hayes, the assembler syntax is compatible with the Texas Instruments TMS320C30 assembler, although not all the Texas Instruments directives are supported. The binutils include a linker (ld), archiver (ar), disassembler (objdump), and other miscellaneous utilities. The object format of the assembler is compatible with the COFF format used by the Texas Instruments assembler. The assembler and other binary utilities are freely redistributable under the terms of the GNU Public Licence.

[Dr. Michael P. Hayes, m.hayes@elec.canterbury.ac.nz]


Q3.6.5: Where can I get a free simulator for the TI TMS320C3x/4x?

A freely distributable instruction set architecture simulator is available for the TMS320C30 DSP as part of the Web-Enabled Simulation framework from UT Austin at http://anchovy.ece.utexas.edu/~arifler/wetics/.

We have released all of the source code, as well as prebuilt C30 simulators for Windows '95/NT and Solaris 2.5 architectures.

The C30 simulator is bit-, cycle-, and instruction-accurate. The behavior of the C30 simulator has been validated against a C30 DSK board. The C30 simulator correctly reports interlocking and pipeline flushes, so it provides a convenient way to check C30 programs for these hidden delays. The C30 simulator is based on the C30 DSK tools by Keith Larson at Texas Instruments.

[Brian Evans, bevans@combo.ece.utexas.edu]

Herman Ten Brugge (haj.ten.brugge@net.hcc.nl) has also written a GNU debugger (GDB) based simulator for the TMS320C30 and TMS320C40, available via anonymous FTP at http://www.elec.canterbury.ac.nz/c4x. This is freely redistributable under the terms of the GNU Public Licence.

This simulator allows you to debug your programs without having to a connect to a real C[34]x target system. It will also profile your code showing you where the pipeline conflicts are occuring. You can connect I/O ports to files (or TCP/IP sockets), trigger interrupts, examine the cache etc. It will detect different threads of control running and generate a profile summary for each thread, annotating both the C code and assembler code with the number of executed cycles.

[Dr. Michael P. Hayes, m.hayes@elec.canterbury.ac.nz]


Q3.6.6: What is Tick? Where can I get it?

Tick is a TMS320C40 parallel network detection and loader utility.


It is available from: ftp://mirriwinni.cse.rmit.edu.au/mirrors/tibbs/UserContributed.

Supports: Transtech, Hunt, and Traquair boards hosted by DOS, SunOS, Linux (a PC unix)

Previous section (2)Next section (4)