• comp.dsp FAQ [1 of 4]

    From comp-dsp-faq@comp-dsp-faq@bdti.com (Kenton Williston) to comp.dsp,comp.answers,news.answers on Monday, November 17, 2003 17:46:27
    From Newsgroup: comp.answers

    Archive-name: dsp-faq/part1
    Last-modified: Mon Nov 17 2003
    URL: http://www.bdti.com/faq/


    FAQs (Frequently asked questions with answers) on Digital Signal Processing

    The world-wide web version of the comp.dsp FAQ is maintained and
    sponsored by Berkeley Design Technology, Inc. For information on BDTI,
    visit the BDTI home page at http://www.bdti.com.

    Version date: Nov 17, 2003

    - Kenton Williston, FAQ maintainer
    _________________________________________________________________

    0. What is comp.dsp?

    0.1 Relevant links
    0.2 Versions of the comp.dsp FAQ
    0.3 DISCLAIMER OF WARRANTY
    0.4 Redistribution permission
    0.5 Note on the list of manufacturers, addresses, and telephone
    numbers

    1. General DSP

    1.1 DSP book and article references

    1.1.1 Bibles of DSP theory

    1.1.2 Adaptive signal processing

    1.1.3 Array signal processing

    1.1.4 Windowing articles

    1.1.5 Digital audio effects processing

    1.1.6 Digital signal processing implementation

    1.1.7 Free online books

    1.2 DSP training

    1.2.1 Courses on DSP

    1.2.2 On-line courses on DSP

    1.3 Where can I get free software for general DSP?

    1.3.1 DSP packages for MATLAB

    1.3.2 DSP packages for Mathematica

    1.3.3 Other DSP libraries

    1.3.4 DSP software

    1.3.5 Text to Speech Conversion Software

    1.3.6 Filter design software

    1.3.7 Audio effects

    2. Algorithms and standards

    2.1 Where can I get public domain algorithms for DSP?
    2.2 What are CELP and LPC? Where can I get source for them?
    2.3 What is ADPCM? Where can I get source for it?
    2.4 What is GSM? Where can I get source for it?
    2.5 How does pitch perception work, and how do I implement it?
    2.6 What standards exist for digital audio? What is AES/EBU?
    What is S/PDIF?

    2.6.1 Where can I get copies of ITU (formerly CCITT)
    standards?

    2.6.2 What standards are there for digital audio?

    2.7 What is mu-law encoding? Where can I get source for it?
    2.8 How can I do CD <=> DAT sample rate conversion?
    2.9 What are wavelets?

    2.9.1 What are wavelets? Where can I get more
    information?

    2.9.2 What are some good books and papers on wavelets?

    2.9.3 Where can I get some software for wavelets?

    2.10 How do I calculate the coefficients for a Hilbert
    transformer?
    2.11 Algorithm implementation: floating-point versus
    fixed-point

    3. Programmable DSP chips and their software

    3.1 What are the available DSP chips and chip architectures?
    3.2 What is the difference between a DSP and a microprocessor?
    3.3 Software for Analog Devices DSPs

    3.3.1 Where can I get a C compiler for the ADSP-21xx and
    ADSP-21xxx?

    3.3.2 Where can I get tools for the ADSP-21xxx?

    3.3.3 Where can I get an assembler for the ADSP-2105?

    3.3.4 Where can I get algorithms or libraries for Analog
    Devices DSPs?

    3.4 Software for Agere Systems (Formerly Lucent Technologies)
    DSPs
    3.5 Software for Motorola DSPs

    3.5.1 Where can I get a free assembler for the Motorola
    DSP56000?

    3.5.2 Where can I get a free C compiler for the Motorola
    DSP56000?

    3.5.3 Where can I get a disassembler for the Motorola
    DSP56000?

    3.5.4 Where can I get algorithms and libraries for
    Motorola DSPs?

    3.5.5 Where can I get NeXT-compatible Motorola DSP56001
    code?

    3.5.6 Where can I get emulators for the 68HC11 (6811)
    processor?

    3.6 Software for Texas Instruments DSPs

    3.6.1 Where can I get free algorithms or libraries for TI
    DSPs?

    3.6.2 Where can I get free development tools for TI DSPs?

    3.6.3 Where can I get a free C compiler for the TI
    TMS320C3x/4x?

    3.6.4 Where can I get a free assembler for the TI
    TMS320C3x/4x?

    3.6.5 Where can I get a free simulator for the TI
    TMS320C3x/4x?

    3.6.6 What is Tick? Where can I get it?

    4. DSP development boards

    5. Operating Systems

    People involved...

    Previous section (Overview) Next section (1)

    Q0: What is comp.dsp?

    Comp.dsp is a worldwide Usenet news group that is used to
    discuss various aspects of digital signal processing. It is
    unmoderated, though we try to keep the signal to noise ratio up
    :-). If you need to ask a question that isn't in the FAQ, and
    can't figure out how to post, consult news.newusers.questions.

    Q0.1: Relevant links

    Other relevant news groups are:

    + comp.arch.embedded
    + comp.compression
    + comp.realtime
    + comp.speech.research
    + sci.image.processing

    Relevant FAQs are:

    + Higher-order statistics FAQ
    + comp.arch.embedded FAQ
    + comp.compression FAQ
    + comp.realtime FAQ
    + comp.speech FAQ
    + sci.image.processing FAQ
    + Audio sampling FAQ

    There is an index of DSP-related mailing lists at:

    + http://www.dsprelated.com/

    Other relevant links:

    + http://weblab.research.att.com/phoaks/comp/dsp/
    + http://www.ncc.com/misc/dsp_sites.html
    + http://www.tasp.org
    + http://www.eg3.com/dsp/index.htm,
    http://www.cera2.com/dsp/index.htm, or
    http://www.eetoolbox.com/dsp/index.htm
    + http://www.dspguru.com
    + http://shoko.calarts.edu/~glmrboy/musicdsp/music-dsp.html

    Q0.2: Versions of the comp.dsp FAQ

    If you're reading this via the World Wide Web:

    Click on http://www.bdti.com/faq/dsp_faq.zip or
    http://www.bdti.com/faq/dsp_faq.tar.Z to download a compressed
    HTML version of the FAQ.

    Click on http://www.bdti.com/faq/dsp_faq.asc.zip or
    http://www.bdti.com/faq/dsp_faq.asc.tar.Z to download a
    compressed ASCII version of the FAQ.

    (When you click on these links, your browser should tell you
    that it can't display the files and then ask you if you want to
    download them instead. Say "yes.")

    If you're reading this as ASCII text:

    Get with the program and get a web browser. The FAQ is
    available on World Wide Web with a much nicer interface. This
    is especially true for information presented in tabular form.
    Try: http://www.bdti.com/faq

    Q0.3: DISCLAIMER OF WARRANTY

    BERKELEY DESIGN TECHNOLOGY, INC. AND THE INDIVIDUAL
    CONTRIBUTORS TO THE FAQ BY NECESSITY ASSUME NO RESPONSIBILITY
    FOR ACCURACY, ERRORS OR OMISSIONS, OR FOR THE USES MADE OF ANY
    INFORMATION AND/OR MATERIAL CONTAINED HEREIN OR ANY DECISION
    BASED ON SUCH USE. NO WARRANTIES ARE MADE, EXPRESS OR IMPLIED,
    WITH REGARD TO THE CONTENTS OF THIS WORK, ITS MERCHANTABILITY,
    OR FITNESS FOR A PARTICULAR PURPOSE. BERKELEY DESIGN
    TECHNOLOGY, INC. AND THE INDIVIDUAL CONTRIBUTORS SHALL NOT BE
    RESPONSIBLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR
    CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE AND/OR RELIANCE ON
    THE CONTENTS OF THIS WORK.

    Additionally, please note that the opinions expressed herein
    are those of the individual contributors, and should not be
    construed to be those of the contributor's employers or
    Berkeley Design Technology, Inc.

    Phew.

    Q0.4: Redistribution Permission

    This FAQ may be redistributed (in either electronic or printed
    form) for non-commercial purposes provided that this notice is
    preserved and that due credit is given to the maintainers and
    contributors.

    Q0.5: Note on the list of manufacturers, addresses, and telephone numbers

    The comp.dsp FAQ no longer includes a list of manufacturers.
    The information becomes outdated in a few months, and we
    believe that the list takes up an inappropriate amount of space
    in the FAQ compared to the interest in the list.

    Previous section (Overview) Next section (1)

    Previous section (0) Next section (2)

    Q1: General DSP

    Q1.1: Summary of DSP books and significant research articles

    Updated 12/17/01

    Q1.1.1: Bibles of DSP theory

    R. E. Crochiere and L. R. Rabiner, Multirate Digital Signal
    Processing, Prentice-Hall, 1983, ISBN 0-13-605162-6.

    This book is the only real reference for filter banks and multirate
    systems, as opposed to being a tutorial.

    Peter Kootsookos notes: this book is most certainly an excellent
    book on multi-rate signal processing, but it came out right before
    perfect reconstruction filter banks hit the streets. Multirate
    Systems and Filter Banks by P. P. Vaidyanathan covers this issue.

    G. H. Golub and C. F. van Loan, Matrix Computations, Third
    Edition, John Hopkins University Press, 1996, ISBN 081085413-X.

    S. M. Kay, Modern Spectral Estimation: Theory and Application,
    Prentice Hall, 1988, ISBN 0-13-598582-X.

    R. G. Lyons, Understanding Digital Signal Processing,
    Addison-Wesley Publishing Co., 1997, ISBN 0-201-63467-8.

    Sanjit K. Mitra and James F. Kaiser, Handbook for Digital
    Signal Processing, John Wiley and Sons, 1993, ISBN
    0-471-61995-7.

    Excellent reference work, but assumes you know a fair amount to
    begin with. [Phil Lapsley]

    A. V. Oppenheim, A. S. Willsky, and S. H. Nawab, Signals &
    Systems, Prentice-Hall, Inc., 1996, ISBN 0-13-814757-4.

    A. V. Oppenheim and R. W. Schafer, Digital Signal Processing,
    Prentice-Hall, Inc., Englewood Cliffs, NJ, 1975, ISBN
    0-13-214635-5.

    A. V. Oppenheim and R. W. Schafer, Discrete-Time Signal
    Processing, Prentice Hall, Englewood Cliffs, New Jersey 07632,
    1989, ISBN 0-13-216292-X.

    This is an updated version of the original, with some old material
    deleted and lots of new material added.

    S. J. Orfanidis, Optimum Signal Processing, Second Edition,
    1989, MacMillan Publishing, USA, ISBN 0-02-9498597.

    An introduction to signal processing methods which have many
    applications including speech analysis, image processing, and oil
    exploration. The author uses optimum Wiener filtering and
    least-squares estimation concepts as unifying themes and includes
    subroutines for FORTRAN and C. [Juergen Kahrs,
    jkahrs@castor.atlas.de]

    T.W. Parks and C. S. Burrus, DFT/FFT and Convolution
    Algorithms: Theory and Implementation, John Wiley and Sons,
    1985, ISBN 0-47-181932-8.

    Thomas Parsons, Voice and Speech Processing, McGraw-Hill, 1987,
    ISBN 0-07-048541-0.

    W. H. Press, S. A. Teukolsky, W. T. Vetterling, and B. P.
    Flannery, Numerical Recipes in C, Second Edition, Cambridge
    University Press, 1992, ISBN 0-52-143108-5.

    The book is also available on-line at http://www.nr.com.

    J. G. Proakis and D. G. Manolakis, Digital Signal Processing:
    Principles, Algorithms, and Applications, MacMillan Publishing,
    New York, NY, 1992, ISBN 0-02-396815-X.

    L. R. Rabiner and R. W. Schafer, Digital Processing of Speech
    Signals, Prentice Hall, 1978, ISBN 0-13-213603-1.

    S. D. Stearns and R. A. David, Signal Processing Algorithms,
    Prentice Hall, Eaglewood Cliffs, NJ, 1988. ISBN

    P. P. Vaidyanathan, Multirate Systems and Filter Banks,
    Prentice-Hall. 911 pp. ISBN 0-13-605718-7.
    _________________________________________________________________

    Q1.1.2: Adaptive signal processing

    S. Haykin, Adaptive Filter Theory, 3rd Ed., Prentice Hall,
    Englewood Cliffs, NJ, 1991. ISBN 0-13-322760-X.

    J. R. Treichler, C. R. Johnson, and M. G. Lawrence, Theory and
    Design of Adaptive Filters, John Wiley & Sons, New York, NY,
    1987, ISBN 0-47-183220-0.

    B. Widrow and S.D. Stearns, Adaptive Signal Processing,
    Prentice-Hall, Inc., Englewood Cliffs, NJ, 1985. ISBN
    0-13-004029-0
    _________________________________________________________________

    Q1.1.3: Array signal processing

    J.E. Hudson, Adaptive Array Principles, IEE London and New
    York, Peter Peregrinus Ltd. Stevenage, UK and NY, 1981. ISBN
    0-86-341143-6.

    R.A. Monzingo and T.W. Miller, Introduction to Adaptive Arrays,
    John Wiley and Sons, NY, 1980.

    S. Haykin, J.H. Justice, N.L. Owsley, J.L. Yen, and A.C. Kak,
    Array Signal Processing, Prentice-Hall, Inc., Englewood Cliffs,
    NJ, 1985.

    D. H. Johnson and D. E. Dudgeon, Array Signal Processing,
    Concepts and Techniques, Prentice-Hall, 1993. ISBN
    0-13-048513-6.

    R. T. Compton, Jr., Adaptive Antennas, Concepts and
    Performance, Prentice-Hall, 1988, ISBN 0-13-004151-3.
    _________________________________________________________________

    Q1.1.4: Windowing articles

    F. J. Harris, "On the Use of Windows for Harmonic Analysis with
    the Discrete Fourier Transform", IEEE Proceedings, January
    1978, pp. 51-83.

    Perhaps the classic overview paper for discrete-time windows. It
    discusses some 15 different classes of windows including their
    spectral responses and the reasons for their development. [Brian
    Evans, bevans@ece.utexas.edu]

    There are several typos in the above paper. The errors are
    corrected in:

    A. H. Nuttall, "Some Windows with Very Good Sidelobe Behavior,"
    IEEE Trans. on Acoustics, Speech, and Signal Processing, Vol.
    ASSP-29, No. 1, February 1981.

    Nezih C. Geckinli and Davras Yavuz, "Some Novel Windows and a
    Concise Tutorial Comparison of Window Families", IEEE
    Transactions on Acoustics, Speech, and Signal Processing, Vol.
    ASSP-26, No. 6, December 1978.

    Lineu C. Barbosa, "A Maximum-Energy-Concentration Spectral
    Window," IBM J. Res. Develop., Vol. 30, No. 3, May 1986, p.
    321-325.

    An elegant method for designing a time-discrete solution for
    realization of a spectral window which is ideal from an energy
    concentration viewpoint. This window is one that concentrates the
    maximum amount of energy in a specified bandwidth and hence
    provides optimal spectral resolution. Unlike the Kaiser window,
    this window is a discrete-time realization having the same
    objectives as the continuous-time prolate spheroidal function; at
    the expense of not having a closed form solution. [Joe Campbell,
    jpcampb@afterlife.ncsc.mil]

    D. J. Thomson, "Spectrum Estimation and Harmonic Analysis,"
    Proc. of the IEEE, vol. 70, no. 9, pp. 1055-1096, Sep. 1982.

    In his classic 1982 paper, David Thompson proposes the powerful
    multiple-window method, which is an elegant and robust technique
    for spectrum estimation. Based on the Cramer representation,
    Thompson's method is nonparametric, consistent, efficient, and
    optimally suited for finite data samples. In addition, it has
    excellent bias control and stability, provides an analysis of
    variance test for line components, and finally, works very well in
    many practical applications. Unfortunately, his important work has
    been neglected in many textbooks and graduate courses on
    statistical signal processing. [Dong Wei,
    wei@vision.ece.utexas.edu, and Brian Evans, bevans@ece.utexas.edu]
    _________________________________________________________________

    Q1.1.5: Digital audio effects processing

    Books:

    Barry Blesser and J. Kates. "Digital Processing in Audio
    Signals." in A. V. Oppenheim, ed., Applications of Digital
    Signal Processing, Englewood Cliffs, NJ: Prentice-Hall, 1978.
    ISBN 0-13-039115-8.

    Hal Chamberlin, Musical Applications of Microprocessors, 2nd
    Ed., Hayden Book Company, 1985.

    Deta S. Davis, Computer Applications in Music: A Bibliography,
    537 pages, ISBN 0-89579-225-7, pub: A-R Editions.

    Charles Dodge and Thomas A. Jerse, Computer Music: Synthesis,
    Composition, and Performance, NY: Schirmer Books, 1985. ISBN
    0-02-873100-X.

    Digital Signal Processing Committee of IEEE Acoustics, Speech,
    and Signal Processing Society, ed., Programs for Digital Signal
    Processing, New York: IEEE Press, 1979.

    F. Richard Moore, Elements of Computer Music, Englewood Cliffs,
    NJ: Prentice-Hall, 1990. ISBN: 0-13252-552-6.

    Recommended. [Juhana Kouhia, jk87377@cc.tut.fi]

    Ken C. Pohlmann, The Compact Disc: A Handbook of Theory and
    Use, 288 pages (cloth) ISBN 0-89579-234-6. (paper) ISBN
    0-89579-228-1, pub: A-R Editions.

    Curtis Roads and John Strawn, ed., The Foundations of Computer
    Music, Cambridge, MA: MIT Press, 1985.

    Contains article on analysis/synthesis by Strawn, recommended; also
    an another article maybe by J.A. Moorer [Juhana Kouhia,
    jk87377@cc.tut.fi]

    Joseph Rothstein, Midi: A Comprehensive Introduction (Computer
    Music and Digital Audio, Vol 7), 2nd Ed., A-R Editions, 1995.
    ISBN 0-89-579309-1.

    Ken Steiglitz, A DSP Primer - With Applications to Digital
    Audio and Computer Music, Addison-Wesley, 1996, 314 pp,
    softcover, ISBN 0-8053-1684-1.

    John Strawn, ed., Digital Audio Engineering, 144 pages, A-R
    Editions. ISBN 0-86576-087-X.

    John Strawn, ed., Digital Audio Signal Processing: An
    Anthology, Los Altos, CA: W. Kaufmann, 1985. ISBN
    0-86-576087-X.

    Contains J.A. Moorer's classic "About This Reverb Business..." and
    contains an article which gives a code for Phase Vocoder -- great
    tool for EQ, for Pitchshifter and more [Juhana Kouhia,
    jk87377@cc.tut.fi]

    John Strawn, ed., Digital Audio Signal Processing, 283 pages,
    ISBN 0-86576-082-9, pub: A-R Editions.

    Recommended. [Quinn Jensen, jensenq@qcj.icon.com]

    Forthcoming books:

    {please let us know at comp-dsp-faq@bdti.com if they are out!}

    Curtis Roads, "A Computer Music History: Musical Automation
    from Antiquity to the Computer Age"

    David Cope, "Computer Analysis of Musical Style"

    Dexter Morrill and Rick Taube, "A Little Book of Computer Music
    Instruments"

    Articles:

    James A. Moorer, About This Reverberation Business, Computer
    Music Journal 3, 20 (1979): 13-28. (Also in Foundations of CM
    below).

    Ok article, but you have to know basic DSP operations. [Juhana
    Kouhia, jk87377@cc.tut.fi]

    Check more articles from Journal of the Audio Engineering
    Society (JAES), for example more articles by Strawn.

    [The above is largely from Quinn Jensen, jensenq@qcj.icon.com;
    Juhana Kouhia, jk87377@cc.tut.fi; William Alves,
    alves@calvin.usc.edu; and Paul A Simoneau, pas1@kepler.unh.edu]
    _________________________________________________________________

    Q1.1.6: Digital signal processing implementation

    User's manuals and data sheets on specific digital signal
    processors are available directly from the manufacturers. The
    works listed below may also be of interest.

    A. Bateman and W. Yates, Digital Signal Processing Design,
    Computer Science Press, MD, 1989.

    R. Chassaing, Digital Signal Processing - Laboratory
    Experiments Using C and the TMS320C31 DSK, Wiley, NY, ISBN
    0-471-29362-8, 1999.

    R. Chassaing, Digital Signal Processing with C and the
    TMS320C30, Wiley, NY, 1992.

    R. Chassaing and D. W. Horning, Digital Signal Processing with
    the TMS320C25, Wiley, NY, 1990.

    R. Chassaing, DSP Applications Using C and the TMS320C6x DSK,
    Wiley, NY, ISBN 0471207543, 2002.

    Y. Dote, Servo Motor and Motion Control Using Digital Signal
    Processors, Prentice Hall, NJ, 1990.

    Mohamed El-Sharkawy, Digital Signal Processing Applications
    with Motorola's 56002 Processor, Prentice Hall, Upper Sadle
    River, NJ, ISBN 0-13-569476-0, 1996.

    Dale Grover and John R. Deller, Digital Signal Processing and
    the Microcontroller, Prentice Hall, NJ, ISBN 0-13-081348-6,
    1999.

    J. L. Hennessy and D. A. Patterson, Computer Architecture: A
    Quantitative Approach, Morgan Kaufmann Publishers, San Mateo,
    CA, 1990, ISBN 1-55-860329-8.

    R. Higgins, Digital Signal Processing in VLSI, Prentice Hall,
    NJ, 1990. ISBN 0-13-212887-X.

    It's a good primer on DSP theory and practice (albeit slightly out
    of date regarding today's chips), aimed at both analog engineers
    entering the digital realm and digital engineers dealing with
    real-world problems. Its hardware orientation is towards components
    and the Analog Devices ADSP-2100 series (just emerging at the time
    of publication), but there is much in it of fundamental tutorial
    value. [DanShein@ix.netcom.com]

    B. A. Hutchins and T. W. Parks, A Digital Signal Processing
    Laboratory Using the TMS320C25, Prentice Hall, NJ, 1990.

    D. L. Jones and T. W. Parks, A Digital Signal Processing
    Laboratory using the TMS32010, Prentice Hall, NJ, 1988.

    P. Lapsley, J. Bier, A. Shoham, and E. A. Lee, DSP Processor
    Fundamentals: Architectures and Features, Berkeley Design
    Technology, Inc., Fremont, CA, 1996.

    Vijay Madisetti, VLSI Digital Signal Processors: An
    Introduction to Rapid Prototyping and Design Synthesis, IEEE
    Press/Butterworth-Heinemann, 1995.

    Henrik V. Sorensen and Jianping Chen, A Digital Signal
    Processing Laboratory Using the TMS320C30, Prentice Hall, Upper
    Sadle River, NJ, ISBN 0-13-741828-0, 1997.

    Steven A. Tretter, Communication system design using DSP
    algorithms: with laboratory experiments for the TMS320C30,
    Plenum Press, Norwell, MA, ISBN 0306450321, 1995.
    _________________________________________________________________

    Q1.1.7: Free online books

    Updated 2/11/02

    The Scientist and Engineer's Guide to Digital Signal Processing

    This introductory DSP book is available for free download at
    http://www.dspguide.com/. Topics covered in this 640-page book
    include: convolution, digital filters, audio processing, data
    compression, and Fourier, Laplace, and z transforms.

    Yehar's sound DSP tutorial for the braindead

    This tutorial is for people with "high school level" math
    knowledge, so you won't have to be a specialized genius to be
    able to read this. There's actually quite a lot information in
    this one, but the best covered subjects are: filters in
    general, FIR and IIR filter design, interpolation, frequency
    shifting.

    http://www.student.oulu.fi/~oniemita/DSP/INDEX.HTM

    [Steve Horne, steve@lurking.demon.co.uk]
    _________________________________________________________________

    Q1.2: DSP training

    Updated 05/06/02

    Q1.2.1: Courses on DSP

    DSP training is available from the following sources:

    1. DSP Made Simple: basic DSP theory and algorithms. Web:
    http://www.bessercourse.com/
    2. DSP without Tears: Z Domain Technologies covers theory and
    applications. Web: http://www.zdt.com/
    3. DSP Workshop: Dr. Bill Gordon, who is located in Austin,
    gives them. He is a former Texas Instruments employee. He can
    be reached at dsp@io.com. Web: http://www.dsp-workshops.com/
    4. Berkeley Design Technology Inc.: BDTI is a DSP consulting and
    independent DSP processor/tools evaluation firm in Berkeley,
    CA. Web: http://www.bdti.com/
    5. Cysip: Courses in DSP, Speech/Image Processing, and
    Communications. Web: http://www.cysip.com/

    [Brian Evans, bevans@ece.utexas.edu; Andreas Spanias,
    spanias@asu.edu]
    _________________________________________________________________

    Q1.2.2: On-line courses on DSP

    Updated Mar 1, 2003

    Prof. Brian Evans: Real-time DSP course online at
    http://www.ece.utexas.edu/~bevans/courses/realtime/.

    TechOnLine (http://www.techonline.com/): Courses on various
    topics.

    Engineering Productivity Tools Ltd.
    (http://www.eptools.com/tn/index.htm): Technical notes on
    various topics (FFT, Sensor arrays, etc.).

    BORES Signal Processing DSP course.
    (http://www.bores.com/courses/intro/index.htm): Introduction
    courses to DSP.

    TI has a centralized training site where DSP designers can
    access all of TI's training webcasts, workshops and seminars.
    It can be found at www.dspvillage.ti.com/trainingpr2. It covers
    TI DSP, tools, software and applications. Analog training is
    also included.

    TI also has a site designed to help new DSP users (primarily
    new TI DSP users) get started with their designs:
    http://www.dspvillage.ti.com/cocostu.
    _________________________________________________________________

    Q1.3: Where can I get free software for general DSP?

    Updated 05/06/02

    The packages listed below are mostly not oriented for use with
    a specific DSP processor. See the later sections in the FAQ for
    software relevant to a particular programmable DSP chip.

    Q1.3.1: DSP Packages for MATLAB

    Updated 05/06/02

    FOR STUDENTS IN THE US AND CANADA: The MATLAB Student Version,
    available from The MathWorks, is a full-featured version of
    MATLAB and includes Simulink (with model sizes up to 300
    blocks) and the Symbolic Math toolbox. It is available for
    Windows and Linux. See
    http://www.mathworks.com/products/studentversion/.

    MATLAB user's group public domain extensions to MATLAB

    Description:
    The MATLAB Digest is issued at irregular intervals based on the
    number of questions and software items contributed by users. To
    subscribe to the newsletter, send mail to
    subscribe@mathworks.com. To make submissions to the digest,
    please send to hwilson@ua1vm.ua.edu with a subject: "DIG" and
    description.

    To obtain:
    Some MATLAB tools are available on the web at
    http://www.mathworks.com, or via anonymous ftp at
    ftp://ftp.mathworks.com/.

    Wavelet Tools

    Description:
    There is a set of Wavelet Tools available for MATLAB, see
    Section 2.9 of this FAQ.

    Communications Toolbox

    Description:
    We have developed a "Communications Toolbox" based on the
    MATLAB code for classroom use. It is used by students taking a
    4th year communications course where the emphasis is on digital
    coding of waveforms and on digital data transmission systems.
    The MATLAB code that constitutes this toolbox has been in use
    for over two years.

    There are close to 100 "M-files" that implement various
    functions. Some of them are quite simple and are based on
    existing MATLAB M-files. But a great many of them has been
    created from scratch. We also prepared a lab manual (in TEX
    format) for the 7 simulations which the students perform as the
    lab component of this course. The topics of these simulations
    are:

    + Probability Theory
    + Random Processes
    + Quantization
    + Binary Signalling Formats
    + Detection
    + Digital Modulation
    + Digital Communication

    To obtain:
    M-files (MATLAB 4.2) is available in:
    ftp://ftp.mathworks.com/pub/contrib/v4/misc/comm_tbx/

    The complete manual in Postscript format is available at
    ftp://ftp.mathworks.com/pub/contrib/v4/misc/comm_tbx/comm_tbx.m
    anual.ps. [Mehmet Zeytinoglu, mzeytin@ee.ryerson.ca]

    Digital Filter Package (DFP)

    Description:
    The Digital Filter Package is a GUI front-end to digital filter
    design with MATLAB. DFP extends the basic digital filter design
    functionality of MATLAB in two important ways:

    + Filter coefficients can be quantized. This feature is
    important if the filter is to be implemented on a fixed-point
    DSP processor.
    + DFP generates assembly-language code for the designed digital
    filter. In the current release of DFP, this option is only
    available for the Motorola DSP56xxx family.

    For
    more information:
    http://www.ee.ryerson.ca:8080/~mzeytin/dfp/index.html. [Mehmet
    Zeytinoglu, mzeytin@ee.ryerson.ca]

    Implementations of the CELP Federal Standard 1016 Speech Coder and LPC-10e
    Speech Coder

    To obtain:
    http://www.cysip.com/dsplinks.html. [Andreas Spanias,
    spanias@asu.edu]

    GSM Routines

    Description:
    Chris Stratford has placed GSM-related MATLAB code online,
    including routines for GMSK modulation and Viterbi
    equalization.

    To obtain:
    http://www.stratfordc.free-online.co.uk.
    _________________________________________________________________

    Q1.3.2: DSP Packages for Mathematica

    Updated 04/03/01

    Note: FOR STUDENTS: A student version of Mathematica is available.
    It includes a copy of the reference manual. The only drawbacks to
    the student version are that the floating point coprocessor is
    disabled and that upgrades cannot be ordered.

    Signal Processing Packages (SPP) and Notebooks, Version 2.9.5

    Description:
    Freely distributable extensions to Mathematica. Enables the
    symbolic manipulation of signal processing expressions: 1-D
    discrete/continuous convolutions and 1-D/m-D linear transforms
    (Laplace, Fourier, z, DTFT, and DFT). For linear transforms,
    you can specify your own transform pairs and see the
    intermediate computations. Great for showing students how to
    take transforms, or for deriving input-output relationships in
    a transform domain. Additional abilities include analog filter
    design, solving DE's using transforms, converting signal
    processing expressions to their equivalent TeX forms, number
    theoretic operations (Bezout numbers, Smith Form
    decompositions, and matrix factors), and multirate operations
    (graphical design of 2-d decimators). Accompanying the SPPs are
    tutorial notebooks on analog filter design, Fourier analysis,
    piecewise convolution, and the z-transform (includes a
    discussion of fundamentals of digital filter design). These
    Notebooks illustrate difficult concepts (such as the
    flip-and-slide view of convolution) through animation.

    To obtain:
    Contact Brian Evans at bevans@ece.utexas.edu, or see
    http://www.ece.utexas.edu/~bevans/projects/symbolic/spp.html.

    Version 3.0 of the SPP (an "overhauled version of 2.x"
    according to the author) is available commercially in two
    products: the Signals and Systems Pack from Wolfram Research,
    and a book entitled "Mathematica Notebooks to Accompany
    Contemporary Linear Systems Using MATLAB" from PWS Publishing
    company.

    EE341

    Description:
    Dr. Roberto H. Bamberger reports: I have developed a series of
    about 30 Lectures that I use for EE341 (Analog Communication
    Systems) here at Washington State University. They use the SPP
    by Brian Evans. They discuss many concepts associated with
    linear systems theory. Topics covered include LTI system
    theory, convolution, AM, FM, PM modulation and demodulation,
    and the sampling theorem. NOTE: All Notebooks were developed
    under NeXTSTEP 3.1 using Mathematica 2.2. I make no guarantees
    about the graphics being able to be rendered on anything other
    than a NeXT.

    Control Systems Analysis Package (COSYPAK) and Notebooks

    Description:
    Public domain extension to Mathematica. Classical and
    state-space control analysis and design methods. The Notebooks
    supplement the material in the textbook "Modern Controls
    Theory" by Ogata. Largely based on the Signal Processing
    Packages (SPP, see above).

    For more information:
    Contact Dr. Sreenath, sree@veda.esys.cwru.edu.

    Other Mathematica DSP Notebooks

    The following Mathematica notebooks can be ftped from
    worldserver.com:

    + pub/malcolm/FilterDesign.math IIR Filter Design (continuous
    and discrete)
    + pub/malcolm/ear.math.Z Implementation of Lyon's Cochlear
    Model
    + pub/malcolm/Gammatone.math Implementation of Gammatone
    Cochlear Model. Printed copies (with floppies) are available
    from the Apple library (corp.lib@applelink.apple.com).
    Pointers to the notebooks are available from Malcolm Slaney's
    homepage at http://www.interval.com/~malcolm/pubs.html.

    The following Mathematica notebooks (from Julius Smith,
    jos@ccrma.stanford.edu) can be ftped from
    ccrma-ftp.stanford.edu:

    + pub/DSP/Tutorials/GenHamming.ma.Z Generalized Hamming windows
    + pub/DSP/Tutorials/Kaiser.ma.Z The Kaiser window
    + pub/DSP/Tutorials/WinFlt.ma.Z Digital filter design by the
    "window method"

    (There are other DSP related items in pub/DSP on ccrma-ftp; see
    other sections of this FAQ for details).
    _________________________________________________________________

    Q1.3.3: Other DSP Libraries

    Updated 05/06/02

    Audio File I/O Routines

    Description:
    The Audio File Signal Processing (AFsp) package is a library of
    routines for reading and writing audio files of various
    formats. It also provides utility programs for comparing audio
    files (speech activity factor, SNR); coping, combining,
    concatenating, and changing the format of audio files;
    resampling (arbitrary sample rate conversion); filtering audio
    files (including ITU-T filters); and generating noise / tones.
    These routines are freely distributable under a license similar
    to the GNU license. They were written by Prof. Peter Kabal of
    the Telecommunications and Signal Processing Library at McGill
    University.

    To obtain:
    The kit is located at: ftp://ftp.tsp.ece.mcgill.ca/TSP/AFsp/

    For more information:
    See http://www.tsp.ece.mcgill.ca/Docs/Software/AFsp/AFsp.html
    [Brian Evans, bevans@ece.utexas.edu]

    FFTW ("Fastest Fourier Transform in the West")

    Description:
    FFTW, a fast C FFT library, along with benchmarks comparing the
    speed and accuracy of many public domain FFTs on a variety of
    platforms.

    To obtain:
    http://www.fftw.org

    For more information:
    fftw@fftw.org.

    Intel Signal Processing Library

    Description:
    The Intel Signal Processing Library provides a set of optimized
    C functions that implement typical signal processing operations
    on Intel processors.

    To obtain:
    http://developer.intel.com/software/products/perflib/spl/index.
    htm

    ISIP Automatic Speech Recognition System

    Description:
    Source code for a public domain automatic speech recognition
    system.

    To obtain:
    http://www.isip.msstate.edu/projects/speech/software/asr/index.
    html

    ISIP Foundation Classes

    Description:
    A large C++ class library for use in signal processing
    research. Includes classes for file I/O, vector and matrix
    operations, signal processing, pattern recognition, and
    automatic speech recognition.

    To obtain:
    http://www.isip.msstate.edu/projects/speech/education/tutorials
    /isip_env/

    Linear Systems Toolbox for Maple

    Description:
    Public domain extension to Maple.

    To obtain:
    ftp://ftp.egr.duke.edu/pub/maple/linsys1.2.tar.Z

    For more information:
    Contact Tony Richardson, amr@mpl.ucsd.edu.

    Signal Processing using C++ (SPUC)

    Description:
    Free C++ classes for DSP & digital communications simulation
    and modeling. Includes:

    + Basic building blocks such as fixed bit width integer
    classes, pure-delay blocks, Gaussian and random noise, etc.
    + DSP building blocks such as FIR, IIR, Allpass, Running
    Average, Lagrange interpolation filters, NCOs (numerically
    controlled oscillators), Cordic rotator.
    + Several communications functions such as timing, phase and
    frequency discriminators for BPSK/QPSK signals and
    raised-cosine type FIR filter functions.

    To obtain:
    http://spuc.sourceforge.net/

    For more information:
    tony_kirke@ieee.org.

    Vector/Signal/Image Processing Library (VSIPL)

    Description:
    VSIPL is an API and library for vector, signal, and image
    processing.

    To obtain:
    http://www.vsipl.org
    _________________________________________________________________

    Q1.3.4: DSP Software

    Updated 10/18/99

    AudioFile System

    Description:
    The AudioFile System (AF) is a device-independent
    network-transparent audio server. The distribution includes
    device drivers and server code for Digital RISC systems running
    Ultrix, Digital Alpha AXP systems running OSF/1, and Sun
    Microsystems SPARCstations running SunOS. Also included are an
    API and library, out-of-the-box core applications, and a number
    of contributed applications. AudioFile allows applications to
    generate and process audio in real-time and at present handles
    up to 48 KHz stereo audio.

    To obtain:
    AudioFile is distributed in source form, with a copyright
    allowing unrestricted use for any purpose except sale (see the
    Copyright notice).

    The kit is located in the at: ftp://crl.dec.com/pub/DEC/AF/

    A sample kit of sound-bites is available as:
    ftp://crl.dec.com/pub/DEC/AF/AF2R2-other.tar

    For more information:
    af@crl.dec.com is a mailing list for discussions of AudioFile.
    Send mail to af-request@crl.dec.com to be added to this list.
    [Larry Stewart, stewart@crl.dec.com]

    Khoros

    Description:
    Visual programming interface for image and video processing.
    See the UseNet group comp.soft-sys.khoros. A free trial version
    is available.

    Platforms:
    Digital UNIX 4.0D, Red Hat Linux 4.2, Irix 6.2 and 6.3, Solaris
    2.5.1, Windows NT 4.0

    To obtain:
    Khoros is found at: http://www.khoral.com/.

    MathViews, WaveXplorer, MathXplorer

    Description:
    MathViews for Windows/32 - Math Software for Windows 3.1
    (version 2.1 only) and Windows 95/NT. Current version is 2.21.
    "MathViews for Windows/32 is MATLAB look-alike. It has a full
    set of linear algebra and signal processing functionality.
    MathViews is highly compatible with the MATLAB language"

    WaveXplorer for Windows 95/NT: version 2.21. "Interactive
    waveform editor (based on the computational engine of
    MathViews)"

    MathXplorer, MathViews ActiveX control: version 2.21.
    "MathXplorer provides easy access to the MathViews
    computational engine that can be embedded in MS Excel, Visual
    Basic, Internet Explorer, etc."

    Author: Dr. Shalom Halevy, shalevy@mathwizards.com, PO BOX
    22564, San Diego, CA 92192 (619) 552-9031 USA (Tel/FAX)
    http://www.mathwizards.com.

    To obtain:
    http://www.mathwizards.com/. No sources. Shareware version
    available.

    PC Convolution

    Description:
    P.C. convolution is a educational software package that
    graphically demonstrates the convolution operation. It runs on
    IBM PC type computers using DOS 4.0 or later. It is currently
    being used in schools of Mathematics, Electrical Engineering,
    Earth Sciences, Aeronautics, Astronomy, Geophysics, and
    Experimental Psychology.

    The current version of this software demonstrates continuous
    time convolution, discrete time, and circular convolution along
    with cross-correlation.

    To obtain:
    ftp://lamarr.ee.umr.edu/pub/pcc5.zip. University instructors
    may obtain a free, fully operational version by contacting Dr.
    Kurt Kosbar at the address listed below.


    Dr. Kurt Kosbar
    117 Electrical Engineering Building
    University of Missouri - Rolla
    Rolla, Missouri, USA 65401, phone: (573) 341-4894
    e-mail: kk@ee.umr.edu

    Ptolemy

    Description:
    Ptolemy is an object oriented framework for the specification,
    simulation, and rapid prototyping of systems. From a flow graph
    description, Ptolemy can generate both C code and DSP assembly
    code for rapid prototyping. Code generation is not yet complete
    and is included in the current release for demonstration
    purposes only.

    Platforms:
    Ptolemy is available for Solaris, HPUX, Digital Unix, Linux,
    and Windows NT.

    To Obtain:
    Ptolemy is available via anonymous ftp. Get the file:
    ftp://ptolemy.eecs.berkeley.edu/pub/README and follow the
    instructions.

    Organizations without Internet access can obtain Ptolemy,
    without support, from ILP. This is often a more stable, less
    featured version than is available by FTP.


    EECS/ERL Industrial Liaison Program Office
    Software Distribution
    205 Cory Hall
    University of California, Berkeley
    Berkeley, CA 94720
    (510) 643-6687
    email: ilpsoftware@eecs.berkeley.edu

    This includes printed documentation, including installation
    instructions, a user's guide, and manual pages. A handling fee
    will be charged.

    For more information about Ptolemy and its successor, Ptolemy II:
    See http://ptolemy.eecs.berkeley.edu and the
    comp.soft-sys.ptolemy Usenet newsgroup.

    SANTIS (now Dataplore)

    Description:
    SANTIS is a tool for Signal ANalysis and TIme Series
    processing. All operations can be executed from a
    mouse-supported graphical user interface. It contains standard
    facilities for signal processing as well as advanced features
    like wavelet techniques and methods of nonlinear dynamics.

    Platforms:
    Supported systems include Microsoft Windows, Linux, Solaris,
    and SGI Irix.

    To obtain:
    You can get the software and more information from the WWW page
    http://datan.de/dataplore/. [Ralf Vandenhouten,
    vanni@Physiology.RWTH-Aachen.DE]

    ScopeDSP

    Description:
    ScopeDSP is a time and frequency signal processing tool for
    Windows 95/NT. It can read and or write real or complex, time
    or frequency sampled data in a variety of file formats. It can
    generate various types of time signals, manipulate data, and
    transform between time and frequency domains. Shareware with a
    60-day test period.

    To obtain:
    http://www.iowegian.com/.

    Sfront

    Description:
    Sfront is a compiler for Structured Audio, the audio signal
    processing language that is a part of the ISO/IEC MPEG 4 Audio
    standard. The output of the compiler is a C program, that when
    compiled and executed generates the audio, with many audio
    input, audio output, and control options, including real-time
    interactive and audio streaming support for some OS's. The
    website also includes an online book for learning how to
    program in Structured Audio, and a reference manual that
    describes how to extend sfront and embed it in applications.

    Platforms:
    The compiler is written in strict ANSI C, and runs on most UNIX
    systems as well as MS Windows.

    To obtain:
    Sfront is distributed under the GNU public license, and is
    available for free download at the website:
    http://www.cs.berkeley.edu/~lazzaro/sa.

    Shorten

    Description:
    Shorten is a compressor/coder for waveform files. It supports
    both lossless coding and lossy coding down to three bits per
    sample. It operates using a linear predictor and Huffman coding
    the prediction residual using Rice codes. A technical report
    shows that this simple scheme is both fast and near optimal.
    Data formats supported are RIFF WAVE plus signed and unsigned
    values at 8 or 16 bits per sample, ulaw, alaw and multiple
    interleaved channels. For lossless compression of speech files
    recorded using 16 bits at 16 kHz the compression ratio is
    typically 2:1. CD audio (44.1 kHz, 16 bit stereo) is near
    transparant at 4:1 or 5:1 lossy compression.

    Platforms:
    The command line version compiles on most UNIX platforms. A
    version is available for MS Windows/NT.

    To obtain:
    http://www.softsound.com/Shorten.html points to all versions.
    [Tony Robinson, ajr@softsound.com]
    _________________________________________________________________

    Q1.3.5: Text to Speech Conversion Software

    Updated 1/7/97

    Free (but not public domain) text to speech conversion software
    is available via anonymous ftp from wilma.cs.brown.edu in the
    pub directory as speak.tar.Z. It will compile and run on a
    SPARC's built-in audio after modifying speak.c with the path of
    your libaudio.h (e.g., /usr/demo/SOUND/libaudio.h). It's a
    simple phoneme concatenation system with commensurate
    synthesized speech quality (a directory of phoneme audio files
    is included). [Joe Campbell, jpcampb@afterlife.ncsc.mil]

    A public domain version of the same Naval Research Lab text to
    phoneme rules can be obtained from:

    ftp://svr-ftp.eng.cam.ac.uk/pub/comp.speech/syntheses/english2p
    honeme.tar.gz

    The comp.speech FTP site includes a speech synthesis directory
    at ftp://svr-ftp.eng.cam.ac.uk/pub/comp.speech/synthesis. The
    main package is "rsynth" which is a complete text to speech
    synthesis system. Several component packages are also present.
    "textnorm" converts non-words such as digit strings into words
    (e.g. 1000 to ONE THOUSAND). "english2phoneme" does some of the
    same but its main functionality is to guess an appropriate
    phoneme sequence for each word. "klatt" takes a parametric form
    that describes each phoneme and converts it to a waveform.
    Other packages exist in the same directory to edit and
    visualise the klatt parameters. [Tony Robinson,
    ajr@softsound.com]
    _________________________________________________________________

    Q1.3.6: Filter Design Software

    Updated 03/30/01

    * There are filter design programs available via anonymous FTP. The
    following are summarized here and discussed in greater detail
    below:
    + August 1992 IEEE Trans. on Signal Processing: METEOR FIR
    filter design program.
    + DFiltFIR and DFiltInt FIR filter design program.
    + Netlib IIR filter design.
    + IEEE Press "Programs for Digital Signal Processing".
    + Tod Schuck's near-optimal Kaiser-Bessel program.
    + Brian Evans' and Niranjan Damera-Venkata's packages for
    Matlab and Mathematica.
    + ScopeFIR.
    + FilterExpress.
    + Charles Poynton's filter design resource page.
    + Juhana Kouhia's hotlist.

    * The August 92 issue of IEEE Transactions on Signal Processing
    includes a paper entitled "METEOR: A Constraint-Based FIR Filter
    Design Program" by Kenneth Steiglitz, Thomas W. Parks and James F.
    Kaiser. The authors describe an FIR design program which allows
    specification of the target frequency response characteristics in
    a fairly generalized and flexible way. As well as designing
    filters, the program can optimize filter lengths and push band
    limits.
    The source for the programs (meteor.p, form.p, meteor.c, and
    form.c) and the METEOR paper as a postscript file may be found at
    http://www. music.Princeton.edu/classes/class.html. The programs
    were originally written in Pascal and then evidentally run through
    p2c to produce the C versions; all the necessary Pascal library
    stuff is included in the C code and they built error-free out of
    the box for me on an SGI machine.
    There is no manual. The paper includes instructions on running the
    programs. [Steve Clift, clift@mail.anacapa.net]
    Weimin Liu has created a Windows 95 interface to the Meteor
    program, which can be downloaded from
    http://www.nyx.net/~wliu/filter.html.

    * Other free filter design packages are DFiltFIR and DFiltInt.
    DFiltFIR designs minimax approximation FIR filters. It uses the
    algorithm developed by McClelland and Parks and incorporates
    constraints on the response as proposed by Grenez. DFiltInt
    designs minimum mean-square error FIR interpolating filters. The
    design specification is in terms of a tabulated power spectrum
    model for the input signal.
    The packages are available from
    http://www.tsp.ece.mcgill.ca/Docs/Software/FilterDesign/FilterDesi
    gn.html or directly via anonymous ftp from
    ftp://ftp.tsp.ece.mcgill.ca/TSP/FilterDesign/.
    Another package, libtsp, is a library of C-language routines for
    signal processing. The package is available from
    http://www.tsp.ece.mcgill.ca/reports/Software/libtsp/libtsp.html
    or directly via anonymous ftp from
    ftp://ftp.tsp.ece.mcgill.ca/pub/libtsp/ [Peter Kabal,
    kabal@ECE.McGill.CA]

    * Another source is netlib: "A free program to design IIR
    Butterworth, Chebyshev, and Cauer (elliptic) filters, in any of
    lowpass, bandpass, band reject, and high pass configurations, is
    available in netlib (e.g., netlib.bell-labs.com) as the file
    netlib/cephes/ellf.shar.Z. By email to netlib@netlib.bell-labs.com
    the request message text is `send ellf from cephes'. The URL is
    http://www.netlib.org. [Stephen Moshier, moshier@world.std.com]

    * The Fortran source code from the IEEE Press book "Programs For
    Digital Signal Processing" is available by anonymous ftp from
    ftp://soma.crl.mcmaster.ca/pub/IEEE/software/dsp.zip or
    ftp://soma.crl.mcmaster.ca/pub/IEEE/software/dsp.tar.gz. It
    includes FIR and IIR filter design software, FFT subroutines,
    interpolation programs, a coherence and cross-spectral estimation
    program, linear prediction analysis programs, and a frequency
    domain filtering program. There is also a C/C++ version of the
    McClellan-Parks-Rabiner FIR filter design program available from
    ftp://ftp.uu.net/usenet/comp.sources.misc/volume22/fir/part01.Z
    This program was created and tested using Borland C++ 2.0. This
    requires a pretty reasonable C++ compiler - it is reported that
    QuickC (not C++) won't do it. [Witold Waldman,
    Witold.Waldman@dsto.defence.gov.au, from Charles Owen at
    mgcbo@uxa.ecn.bgu.au; also Andrew Ukrainec, ukrainec@InfoUkes.com]

    * I have developed a MATLAB (vers 4.0 for Windows) program that
    allows for the frequency domain design of the "near optimal"
    Kaiser-Bessel window. The program is based upon the three closed
    form equations developed by Kaiser and Schafer in 1981 that allow
    for the specification of the time domain window length, and the
    frequency domain mainlobe width and relative sidelobe amplitude.
    For signal processing applications where the spectral content of
    the windowing function is critical so as not to mask adjacent
    spectra such as radar signal processing applications where a weak
    target return adjacent to a strong target return could be easily
    masked by a windowing function that resolves poorly in frequency;
    this program allows complete frequency domain specification of the
    spectral characteristics of the windowing function. The current
    version of this program allows for the user to specify the two
    frequency domain parameters of mainlobe width and relative
    sidelobe amplitude and lets the window length fall out as the
    dependent variable. The program is easily modified to allow for
    any two parameters to be selected and allowing the third to be
    determined as a result.
    This program will output to an ASCII file the window coefficients
    that can be easily dumped to an EPROM or included in a program. It
    also generates both time and frequency domain graphs so that the
    user can visually verify the widow record length and spectral
    content. I will gladly provide any interested parties with my
    MATLAB code.


    Tod M. Schuck
    Lockheed Martin NE&SS
    Moorestown, NJ 08060
    e-mail: tod.m.schuck@lmco.com

    * Filter Optimization Packages for Matlab and Mathematica, version
    1.1 by Brian L. Evans and Niranjan Damera-Venkata, Dept. of ECE,
    The University of Texas at Austin. Available from
    http://www.ece.utexas.edu/~bevans/projects/filters/syn_filter_soft
    ware.html .
    We have released a set of Matlab packages to optimize the
    following characteristics of analog filter designs simultaneously:
    1. magnitude response
    2. linear phase in the passband
    3. peak overshoot in the step response
    4. quality factors (Q)
    subject to constraints on the same characteristics. The Matlab
    packages take about 10 seconds for fourth-order filters and 3
    minutes for eighth-order filters to run on a 167-MHz Sun Ultra-2
    workstation.
    We use the symbolic mathematics environment Mathematica to
    describe the constrained non-linear optimization problem formally,
    derive the gradients of the cost function and constraints, and
    synthesize the Matlab code to perform the optimization. In the
    public release, we provide the Matlab to optimize analog IIR
    filters of fourth, sixth, and eighth orders. Using the Mathematica
    formulation, designers can add new measures and constraints, such
    as capacitance spread for integrated circuit layout, and
    regenerate the Matlab code.
    We describe the framework in [1]. An earlier version of the
    framework is described in [2]. We plan to extend this framework to
    digital IIR filters.
    [1] N. Damera-Venkata, B. L. Evans, M. D. Lutovac, and D. V.
    Tosic, Joint Optimization of Multiple Behavioral and
    Implementation Properties of Analog Filter Designs, Proc. IEEE
    Int. Sym. on Circuits and Systems, Monterey, CA, May 31 - Jun. 3,
    1998, vol. 6, pp. 286-289.
    http://www.ece.utexas.edu/~bevans/papers/1998/filter_optimization/
    .
    [2] B. L. Evans, D. R. Firth, K. D. White, and E. A. Lee,
    Automatic Generation of Programs That Jointly Optimize
    Characteristics of Analog Filter Designs, Proc. of European Conf.
    on Circuit Theory and Design, Istanbul, Turkey, August 27-31,
    1995, pp. 1047-1050.
    http://ptolemy.eecs.berkeley.edu/publications/papers/95/filter_des
    ign_ecctd95/
    [Brian Evans, bevans@combo.ece.utexas.edu]

    * ScopeFIR is a FIR filter design tool for Windows 95/NT which
    designs complex FIR filters using the Parks-McClellan algorithm or
    windowing. It can then mix, scale, quantize, and edit the FIR
    coefficients. It creates a wide variety of impulse and frequency
    response plots, and supports many data file formats, including TI
    assembly and ADI PM. Shareware with a 60-day trial period,
    available from http://www.iowegian.com/scopefir.htm.
    [Grant Griffin, grant.griffin@iowegian.com]

    * FilterExpress is a free filter synthesis tool for Windows. It
    supports the design and analysis of IIR, FIR and multirate FIR
    filters. It is available for download from
    http://www.systolix.co.uk/swdownload.htm.

    * DSP Design Performance provides Java applets generating different
    filters. The applets can be found at
    http://www.nauticom.net/www/jdtaft.

    * Charles Poynton has an extensive list of hot-links to filter
    design resources on the web at
    http://www.inforamp.net/~poynton/Poynton-dsp.html.

    * Juhana Kouhia has an extensive list of links at
    http://www.funet.fi/~kouhia/hotlist-dsp.html.
    _________________________________________________________________

    Q1.3.7: Audio effects

    Updated 2/11/02

    Harmony Central

    Harmony Central publishes some of the source code for its
    synthesis and audio processing program at
    http://www.harmony-central.com/Computer/Programming/. The code
    may be used in public releases, but Harmony Central asks you to
    credit the author and possibly make the product available for
    free or publish any modified code.

    Music-DSP Source Code Archive

    Musicdsp.org is a collection of data gathered for the music dsp
    community. It includes code for wavetable synthesis, dithering,
    guitar feedback, and many other effects and algorithms.

    http://www.musicdsp.org/

    [Steve Horne, steve@lurking.demon.co.uk]
    _________________________________________________________________

    Previous section (0) Next section (2)
    --- Synchronet 3.18b-Win32 NewsLink 1.113
  • From comp-dsp-faq@comp-dsp-faq@bdti.com (Kenton Williston) to comp.dsp,comp.answers,news.answers on Monday, November 17, 2003 17:46:31
    From Newsgroup: comp.answers

    Archive-name: dsp-faq/part2
    Last-modified: Mon Nov 17 2003
    URL: http://www.bdti.com/faq/


    Previous section (1) Next section (3)

    Q2: Algorithms and standards

    Q2.1: Where can I get public domain algorithms for general-purpose DSP?

    Updated 12/31/96

    The following archives contain things such as matrix
    operations, FFT's and generally useful things like that, as
    opposed to complete applications.

    Netlib

    Netlib serves some of this software via email. Try mail to
    netlib@ORNL.GOV with "send help" in the subject field.

    To Obtain:
    For Europe:

    Internet: netlib@nac.no
    EARN/BITNET: netlib%nac.no@norunix.bitnet
    X.400: s=netlib; o=nac; c=no;
    EUNET/uucp: nac!netlib

    For more information:
    See Jack J. Dongarra and Eric Grosse, "Distribution of
    Mathematical Software Via Electronic Mail," Comm. ACM (1987)
    30,403--407.

    A similar collection of statistical software is available from
    statlib@temper.stat.cmu.edu.

    The symbolic algebra system REDUCE is supported by
    reduce-netlib@rand.org.

    NSWC Library

    The Naval Surface Warfare Center has a library of mathematical
    Fortran subroutines that may be of use. The NSWC library is a
    library of general-purpose Fortran subroutines that provide a
    basic computational capability in a variety of mathematical
    activities. Emphasis has been placed on the transportability of
    the codes. Subroutines are available in the following areas:
    Elementary Operations, Geometry, Special Functions,
    Polynomials, Vectors, Matrices, Large Dense Systems of Linear
    Equations, Banded Matrices, Sparse Matrices, Eigenvalues and
    Eigenvectors, l1 Solution of Linear Equations, Least-Squares
    Solution of Linear Equations, Optimization, Transforms,
    Approximation of Functions, Curve Fitting, Surface Fitting,
    Manifold Fitting, Numerical Integration, Integral Equations,
    Ordinary Differential Equations, Partial Differential Equations

    For more information:
    NSWC Library of Mathematical Subroutines
    Report No.: NSWC TR 90-21, January 1990
    by Alfred H. Morris, Jr.
    Naval Surface Warfare Center (E43)
    Dahlgren, VA 22448-5000
    U.S.A.
    [Witold Waldman, Witold.Waldman@dsto.defence.gov.au]

    IEEE Press book "Programs For Digital Signal Processing"

    You can get the Fortran source code from the IEEE Press book
    "Programs For Digital Signal Processing." See question 1.3.6.
    _________________________________________________________________

    Q2.2: What are CELP and LPC? Where can I get the source for CELP and LPC?

    Updated 09/10/01

    CELP stands for "code excited linear prediction". LPC stands
    for "linear predictive coding". They are compression algorithms
    used for low bit rate (2400 and 4800 bps) speech coding.

    The U.S. DoD's Federal-Standard-1016 based 4800 bps code
    excited linear prediction voice coder version 3.2 (CELP 3.2)
    Fortran and C simulation source codes are available for
    worldwide distribution (on DOS diskettes, but configured to
    compile on Sun SPARC stations) from NTIS and DTIC. Example
    input and processed speech files are included. A Technical
    Information Bulletin (TIB), "Details to Assist in
    Implementation of Federal Standard 1016 CELP," and the official
    standard, "Federal Standard 1016, Telecommunications: Analog to
    Digital Conversion of Radio Voice by 4,800 bit/second Code
    Excited Linear Prediction (CELP)," are also available.

    To obtain CELP:
    Available through the National Technical Information Service:


    NTIS
    U.S. Department of Commerce
    5285 Port Royal Road
    Springfield, VA 22161
    USA
    (800) 553-6847

    FS-1016 CELP 3.2 may also be obtained from
    ftp://svr-ftp.eng.cam.ac.uk/pub/comp.speech/coding/celp_3.2a.ta
    r.Z.

    LPC-10 (2.4 Kbps) is available from
    ftp://svr-ftp.eng.cam.ac.uk/pub/comp.speech/coding/lpc10-1.0.ta
    r.gz.

    LPC (4.8 Kbps) can be downloaded in SpeakFreely
    http://www.speakfreely.org/, or in HawkVoice
    http://www.hawksoft.com/hawkvoice/. HawkVoice includes versions
    of OpenLPC, LPC-10, LPC, GSM, and Intel/DVI ADPCM. These
    versions have been rewritten to support multiple encoding and
    decoding streams, and the interfaces have been standardized.
    [Phil Frisbie, Jr., phil@hawksoft.com]

    OpenLPC (1.4 and 1.8 Kbps) can be downloaded from
    ftp://ftp.futuredynamics.com/OpenLPC/.

    MATLAB software for LPC-10 is available from
    http://www.eas.asu.edu/~spanias/srtcrs.html. Also, postscript
    copies of tutorials of speech coding can be found at
    http://www.eas.asu.edu/~spanias/papers.html. [Andreas Spanias,
    spanias@asu.edu]

    For more information:

    * The following articles describe the Federal-Standard-1016 4.8-kbps
    CELP coder (it's unnecessary to read more than one):

    Campbell, Joseph P. Jr., Thomas E. Tremain and Vanoy C. Welch, The
    Federal Standard 1016 4800 bps CELP Voice Coder, Digital Signal
    Processing, Academic Press, 1991, Vol. 1, No. 3, p. 145-155.
    Campbell, Joseph P. Jr., Thomas E. Tremain and Vanoy C. Welch, The
    DoD 4.8 kbps Standard (Proposed Federal Standard 1016), in Advances
    in Speech Coding, ed. Atal, Cuperman and Gersho, Kluwer Academic
    Publishers, 1991, Chapter 12, p. 121-133.
    Campbell, Joseph P. Jr., Thomas E. Tremain and Vanoy C. Welch, The
    Proposed Federal Standard 1016 4800 bps Voice Coder: CELP, Speech
    Technology Magazine, April/May 1990, p. 58-64.
    Additional information on CELP can also be found in the
    comp.speech FAQ.
    * The voicing classifier used in the enhanced LPC-10 (LPC-10e) is
    described in: Campbell, Joseph P., Jr. and T. E. Tremain,
    Voiced/Unvoiced Classification of Speech with Applications to the
    U.S. Government LPC-10E Algorithm, Proceedings of the IEEE
    International Conference on Acoustics, Speech, and Signal
    Processing, 1986, p. 473-6.
    The U. S. Federal Standard 1015 (NATO STANAG 4198) is described
    in: Thomas E. Tremain, The Government Standard Linear Predictive
    Coding Algorithm: LPC-10, Speech Technology Magazine, April 1982,
    pp. 40-49.

    [Most of the above from Joe Campbell, jpcampb@afterlife.ncsc.mil, with
    additions from Dan Frankowski, drankow@winternet.com, and Ed Hall,
    edhall@rand.org]
    _________________________________________________________________

    Q2.3: What is ADPCM? Where can I get source for it?

    Updated: 04/03/01

    ADPCM stands for Adaptive Differential Pulse Code Modulation. It is a
    family of speech compression and decompression algorithms. A
    common implementation takes 16-bit linear PCM samples and
    converts them to 4-bit samples, yielding a compression rate of
    4:1.

    To obtain:
    There is public domain C code available via anonymous ftp at
    ftp://ftp.cwi.nl/pub/audio/adpcm.shar written by Jack Jansen
    (email Jack.Jansen@cwi.nl). It is very programmer-friendly. The
    ADPCM code used is the Intel/DVI ADPCM code which is being
    recommended by the IMA Digital Audio Technical Working Group.
    It allows the following calls:

    adpcm_coder(short inbuf[], char outbuf[], int nsample,
    struct adpcm_state *state);
    adpcm_decoder(char inbuf[], short outbuf[], int nsample,
    struct adpcm_state *state);

    Note that this is NOT a G.722 coder. The ADPCM standard is much
    more complicated, probably resulting in better quality sound
    but also in much more computational overhead.

    Platforms:
    The routines have been tested on numerous platforms, and will
    easily compress and decompress millions of samples per second
    on current hardware.

    For more information:
    The G.721/722/723 packages are available from ITU at
    http://www.itu.ch/.

    This is also available as:
    ftp://svr-ftp.eng.cam.ac.uk/pub/comp.speech/coding/G711_G722_G7
    23.tar.gz

    [From Dan Frankowski, dfrankow@winternet.com; Jack Jansen,
    Jack.Jansen@cwi.nl]
    _________________________________________________________________

    Q2.4: What is GSM? Where can I get source for it?

    Updated 4/27/00

    GSM (Global System for Mobile Communication) is a standard for
    digital cellular telephony used in Europe. GSM also refers to
    the speech coder used in GSM telephones, which is what this
    section of the FAQ is concerned with.

    The Communications and Operating Systems Research Group (KBS)
    at the Technische Universitaet Berlin is currently working on a
    set of UNIX-based tools for computer-mediated telecooperation
    that will be made freely available.

    As part of this effort they are publishing an implementation of
    the European GSM 06.10 provisional standard for full-rate
    speech transcoding, prI-ETS 300 036, which uses RPE/LTP
    (residual pulse excitation/long term prediction) coding at 13
    kbit/s.

    GSM 06.10 compresses frames of 160 13-bit samples (8 kHz
    sampling rate, i.e. a frame rate of 50 Hz) into 260 bits; for
    compatibility with typical UNIX applications, our
    implementation turns frames of 160 16-bit linear samples into
    33-byte frames (1650 Bytes/s). The quality of the algorithm is
    good enough for reliable speaker recognition; even music often
    survives transcoding in recognizable form (given the bandwidth
    limitations of 8 kHz sampling rate).

    The interfaces offered are a front end modeled after
    compress(1), and a library API. Compression and decompression
    run faster than real time on most SPARCstations. The
    implementation has been verified against the ETSI standard test
    patterns.

    Jutta Degener jutta@cs.tu-berlin.de, Carsten Bormann
    cabo@cs.tu-berlin.de)

    Communications and Operating Systems Research Group, TU Berlin
    Fax: +49.30.31425156, Phone: +49.30.31424315

    To obtain:
    ftp://svr-ftp.eng.cam.ac.uk/pub/comp.speech/coding/gsm-1.0.6.ta
    r.gz. An alternative site is
    ftp://ftp.cwi.nl/pub/audio/gsm-1.0.7.tar.gz. Try also:
    http://kbs.cs.tu-berlin.de/~jutta/toast.html.

    [From Dan Frankowski, dfrankow@winternet.com; Jutta Degener,
    jutta@cs.tu-berlin.de]
    _________________________________________________________________

    Q2.5: How does pitch perception work, and how do I implement it on my DSP chip?

    Updated 04/02/01

    Pitch is officially defined as "That attribute of auditory
    sensation in terms of which sounds may be ordered on a musical
    scale." Several good examples illustrating the subtleties of
    pitch perception are included in the "Auditory Demonstrations
    CD" which is available from the Acoustical Society of America,
    Woodbury, NY 10797 for $20.

    Books/papers:
    A good general reference about the psychology of pitch
    perception is the book:

    B.C.J. Moore, An Introduction to the Psychology of Hearing,
    Academic Press, London, 1997.

    This book is available in paperback and makes a good desk
    reference.

    An algorithm implementation that matches a large body of
    psycho-acoustical work, but which is computationally very
    intensive, is presented in the paper:

    Malcolm Slaney and Richard Lyon, "A Perceptual Pitch Detector,"
    Proceedings of the International Conference of Acoustics, Speech,
    and Signal Processing, 1990, Albuquerque, New Mexico. Available for
    ftp at ftp://worldserver.com/pub/malcolm/ICASSP90.psc.Z

    The definitive papers describing the use of such a perceptual
    pitch detector as applied to the classical pitch literature is
    in:

    Ray Meddis and M. J. Hewitt. "Virtual pitch and phase sensitivity
    of a computer model of the auditory periphery. " Journal of the
    Acoustical Society of America 89 (6 1991): 2866-2682. and
    2883-2894.

    The current work that argues for a pure spectral method starts
    with the work of Goldstein:

    J. Goldstein, "An optimum processor theory for the central
    formation of the pitch of complex tones," Journal of the Acoustical
    Society of America 54, 1496-1516, 1973.

    Two approaches are worth considering if something approximating
    pitch is appropriate. The people at IRCAM have proposed a
    harmonic analysis approach that can be implemented on a DSP:

    Boris Doval and Xavier Rodet, "Estimation of Fundamental Frequency
    of Musical Sound Signals," Proceedings of the 1991 International
    Conference on Acoustics, Speech, and Signal Processing, Toronto,
    Volume 5, pp. 3657-3660.

    The classic paper for time domain (peak picking) pitch
    algorithms is:

    B. Gold and L. Rabiner, "Parallel processing techniques for
    estimating pitch periods of speech in the time domain," Journal of
    the Acoustical Society of America, 46, pp 441-448, 1969.

    Finally, a word of caution:
    Pitch is not single-valued. We can hear a sound and match it to
    several different pitches. Imagine the number of instruments in
    an orchestra, each with its own pitch. Even a single sound can
    have more than one pitch. See for example Demonstration 27 from
    the ASA Auditory Demonstrations CD.

    [The above from Malcolm Slaney, Interval Research, and John
    Lazzaro, U.C. Berkeley.]

    Another interesting piece of information on pitch perception
    can be found at
    http://www.dspdimension.com/html/timepitch.html. [Stephan M.
    Sprenger, sms@prosoniq.com]
    _________________________________________________________________

    Q2.6: What standards exist for digital audio? What is AES/EBU? What is S/PDIF?

    Updates 1/8/97

    Q2.6.1: Where can I get copies of ITU (formerly CCITT) standards?

    Try the ITU (International Telecommunication Union) homepage at
    http://www.itu.ch/.
    _________________________________________________________________

    Q2.6.2: What standards are there for digital audio?

    AES/EBU

    The "AES/EBU" (Audio Engineering Society / European Broadcast
    Union) digital audio standard is probably the most popular
    digital audio standard today. Most consumer and professional
    digital audio devices (CD players, DAT decks, etc.) that
    feature digital audio I/O support AES/EBU.

    AES/EBU is a bit-serial communications protocol for
    transmitting digital audio data through a single transmission
    line. It provides two channels of audio data (up to 24 bits per
    sample), a method for communication control and status
    information ("channel status bits"), and some error detection
    capabilities. Clocking information (i.e., sample rate) is
    derived from the AES/EBU bit stream, and is thus controlled by
    the transmitter. The standard mandates use of 32 kHz, 44.1 kHz,
    or 48 kHz sample rates, but some interfaces can be made to work
    at other sample rates.

    AES/EBU provides both "professional" and "consumer" modes. The
    big difference is in the format of the channel status bits
    mentioned above. The professional mode bits include
    alphanumeric channel origin and destination data, time of day
    codes, sample number codes, word length, and other goodies. The
    consumer mode bits have much less information, but do include
    information on copy protection (naturally). Additionally, the
    standard provides for "user data", which is a bit stream
    containing user-defined (i.e., manufacturer-defined) data.
    According to Tim Channon, "CD user data is almost raw CD
    subcode; DAT is StartID and SkipID. In professional mode, there
    is an SDLC protocol or, if DAT, it may be the same as consumer
    mode."

    The physical connection media are commonly used with AES/EBU:
    balanced (differential), using two wires and shield in
    three-wire microphone cable with XLR connectors; unbalanced
    (single-ended), using audio coax cable with RCA jacks; and
    optical (via fiber optics).

    S/P-DIF

    "S/P-DIF" (Sony/Philips Digital Interface Format) typically
    refers to AES/EBU operated in consumer mode over unbalanced RCA
    cable. Note that S/P-DIF and AES/EBU mean different things
    depending on how much of a purist you are in the digital audio
    world; see the Finger article below.

    References:
    Finger, Robert, AES3-199X: The Revised Two Channel Digital
    Audio Interface (DRAFT), presented at the 91st Convention of
    the Audio Engineering Society, October 4-8, 1991. Reprints:
    AES, 60 East 42nd St., New York, NY, 10165.

    [The above from Phil Lapsley and Tim Channon,
    tchannon@black.demon.co.uk]

    Painter, E. M., and Spanias, A. S. (1997 and revised 1999). A
    Review of Algorithms for Perceptual Coding of Digital Audio
    Signals. (PostScript, 3MB)
    http://www.eas.asu.edu/~spanias/papers.html

    [Andreas Spanias, spanias@asu.edu]
    _________________________________________________________________

    Q2.7: What is mu-law encoding? Where can I get source for it?

    Updated 9/13/99

    Mu-law (also "u-law") encoding is a form of logarithmic
    quantization or companding. It's based on the observation that
    many signals are statistically more likely to be near a low
    signal level than a high signal level. Therefore, it makes more
    sense to have more quantization points near a low level than a
    high level. In a typical mu-law system, linear samples of 14 to
    16 bits are companded to 8 bits. Most telephone quality codecs
    (including the Sparcstation's audio codec) use mu-law encoded
    samples.

    Desktop Sparc machines come with routines to convert between
    linear and mu-law samples. On a desktop Sparc, see the man page
    for audio_ulaw2linear in /usr/demo/SOUND/man.

    To obtain:
    Craig Reese posted the source of similar routines to comp.dsp
    in August '92. These are archived on
    ftp://mirriwinni.cse.rmit.edu.au/pub/dsp/misc/ulaw_reese.

    References:
    ITU-T (formerly CCITT) Recommendation G.711 (very difficult to
    follow).

    Michael Villeret, et. al, A New Digital Technique for
    Implementation of Any Continuous PCM Companding Law, IEEE Int.
    Conf. on Communications, 1973, vol. 1, pp. 11.12-11.17.

    MIL-STD-188-113, Interoperability and Performance Standards for
    Analog-to-Digital Conversion Techniques, 17 February 1987.

    TI Digital Signal Processing Applications with the TMS320
    Family (TI literature number SPRA012A), pp. 169-198.

    [From Joe Campbell; Craig Reese, cfreese@super.org; Sepehr
    Mehrabanzad, sepehr@falstaff.dev.cdx.mot.com; Keith Kendall,
    KLK3%mimi@magic.itg.ti.com]
    _________________________________________________________________

    Q2.8: How can I do CD <=> DAT sample rate conversion?

    Updated 9/13/99

    CD players use a 44.1 kHz sample rate, whereas DAT uses a 48
    kHz sample rate. This means that you must do sample rate
    conversion before you can get data from a CD player directly
    into a DAT deck.

    [From Ed Hall, edhall@rand.org:]

    For a start, look at Multirate Digital Signal Processing by
    Crochiere and Rabiner (see FAQ section 1.1).

    Almost any technique for producing good digital low-pass
    filters will be adaptable to sample-rate conversion. 44.1:48
    and vice-versa is pretty hairy, though, because the lowest
    whole-number ratio is 147:160. To do all that in one go would
    require a FIR with thousands of coefficients, of which only
    1/147th or 1/160th are used for each sample--the real problem
    is memory, not CPU for most DSP chips. You could chain several
    interpolators and decimators, as suggested by factoring the
    ratio into 3*7*7:2*2*2*2*2*5. This adds complexity, but reduces
    the number of coefficients required by a considerable amount.

    [From Lou Scheffer:]

    Theory of operation: 44.1 and 48 are in the ratio 147/160. To
    convert from 44.1 to 48, for example, we (conceptually):

    1. interpolate 159 zeros between every input sample. This raises
    that data rate to 7.056 MHz. Since it is equivalent to
    reconstructing with delta functions, it also creates images
    of frequency f at 44.1-f, 44.1+f, 88.2-f, 88.2+f, ...
    2. We remove these with an FIR digital filter, leaving a signal
    containing only 0-20 KHz information, but still sampled at a
    rate of 7.056 MHz.
    3. We discard 146 of every 147 output samples. It does not hurt
    to do so since we have no content above 24 KHz. In practice,
    of course, we never compute the values of the samples we will
    throw out.

    So we need to design an FIR filter that is flat to 20 KHz, and
    down at least X db at 24 KHz. How big does X need to be? You
    might think about 100 db, since the max signal size is roughly
    +-32767, and the input quantization +- 1/2, so we know the
    input had a signal to broadband noise ratio of 98 db at most.
    However, the noise in the stopband (20KHz-3.5MHz) is all folded
    into the passband by the decimation in step 3, so we need
    another 22 db (that's 160 in db) to account for the noise
    folding. Thus 120 db rejection yields a broadband noise equal
    to the original quantizing noise. If you are a fanatic, you can
    shoot for 130 db to make the original quantizing errors
    dominate, and a 22.05 KHz cutoff to eliminate even ultrasonic
    aliasing. You will pay for your fanaticism with a penance of
    more taps, however.

    To obtain:
    There's a free implementation of Julius O. Smith III and
    someone else's "bandwidth-limited interpolation" rate
    conversion algorithm.

    A paper available as
    ftp://ccrma-ftp.stanford.edu/pub/DSP/Tutorials/BandlimitedInter
    polation.eps.Z explains the algorithm. Free source code, as
    well as an HTML discussion of the algorithm, is available at
    http://ccrma-www.stanford.edu/~jos/resample/. It all works
    quite well.

    [From Kevin Bradley, kb+@andrew.cmu.edu:]

    There is an implementation of polyphase resampling for various
    rates as a part of the Sox audio toolkit at
    http://home.sprynet.com/~cbagwell/sox.html. See file polyphas.c
    for details.

    Sox also contains an implementation of bandlimited
    interpolation and linear interpolation, and serves as a ready
    vehicle for module experimentation.

    [From Fritz M. Rothacher, f.rothacher@ieee.org:]

    You can add my Ph.D. thesis on sample-rate conversion to the
    FAQ:

    Fritz M. Rothacher, Sample-Rate Conversion: Algorithms and VLSI
    Implementation, Ph.D. thesis, Integrated Systems Lab, Swiss
    Federal Institute of Technology, ETH Zuerich, 1995, ISBN
    3-89191-873-9

    It can also be downloaded from my homepage at
    http://www.guest.iis.ee.ethz.ch/~rota.
    _________________________________________________________________

    Q2.9: Wavelets

    Updated 6/3/98

    Q2.9.1 What are wavelets? Where can I get more information?

    In short, wavelets are a way to analyze a signal using base
    functions which are localized both in time (as diracs, but
    unlike sine waves), and in frequency (as sine waves, but unlike
    diracs). They can be used for efficient numerical algorithms
    and many DSP or compression applications.

    Sources of information on wavelets include:

    + a newsletter, "Wavelet Digest". Subscriptions for Wavelet
    Digest: E-mail to wavelet@math.scarolina.edu with "subscribe"
    as subject. The Wavelet Digest can also be found at
    http://www.wavelet.org/.
    + http://www.amara.com/current/wavelet.html
    _________________________________________________________________

    Q2.9.2 What are some good books and papers on wavelets

    The best introduction to wavelet transforms is in:

    Wavelets and Signal Processing- Oliver Rioul and Martin Vetterli,
    IEEE Signal Processing magazine, Oct. 91, pp 14-38

    A good introductory book on wavelets:

    Randy K. Young, Wavelet Theory and Its Applications, Kluwer
    Academic Publishers, ISBN 0-7923-9271-X, 1993.

    A more thorough book:

    Ali N. Akansu and Richard A. Haddad, Multiresolution Signal
    Decomposition Transforms, Subbands, Wavelets Academic Press, Inc.,
    ISBN 0-12-047140-X

    A couple more interesting papers:

    Wavelets and Filter banks: Theory and Design, IEEE Transactions on
    Signal Processing, Vol. 40, No.9, Sept. 1992, pp 2207-2232

    Mac Cody's articles in Dr. Dobb's Journal, April 1992 and April
    1993
    Paper by Ingrid Daubechies in IEEE Trans. on Info. theory , vol 36.
    No.5 , Sept 1990 and a book titled " Ten lectures on Wavelets" deal
    with the mathematical aspects of the WT.
    _________________________________________________________________

    Q2.9.3: Where can I get some software for wavelets?

    ftp://pascal.math.yale.edu/pub/wavelets/software/xwpl

    Binaries are available for the following platforms: Sun
    Sparcstations running SunOS 4.1 or Solaris 2.3, NeXT machines
    running NeXTstep 3.0 or higher, with an X server, Silicon
    Graphics machines (IRIS), DEC Alpha AXP running OSF/1 1.2 or
    higher, i386/i486 PC compatible with Linux 0.99.

    There is also a sample data directory containing interesting
    signals.

    More information:
    http://www.math.yale.edu/users/majid/

    [From Fazal Majid majid@math.yale.edu]:

    Rice Wavelet Tools

    Description:
    The Rice Wavelet Toolbox (RWT) is a collection of Matlab
    M-files and C MEX-files for 1D and 2D wavelet and filter bank
    design, analysis, and processing. The toolbox provides tools
    for denoising and interfaces directly with our Matlab code for
    wavelet domain hidden Markov models and wavelet regularized
    deconvolution. Also included is a simple converter to the data
    format used by the official Matlab wavelet toolbox.

    The current distribution, Version 2.3 (Dec 1, 2000), has been
    streamlined and packaged for different systems, including
    Solaris, Linux, and Microsoft Windows. Functions omitted in
    Version 2.3 can be found in the Version 2.01 distribution.

    To obtain:
    See http://www-dsp.rice.edu/software/RWT/.

    Send mail to wlet-tools@rice.edu (or ramesh@dsp.rice.edu)
    _________________________________________________________________

    Q2.10: How do I calculate the coefficients for a Hilbert transformer?

    Updated 6/3/98

    For all the gory details, I suggest the paper: Andrew Reilly
    and Gordon Frazer and Boualem Boashash: Analytic signal
    generation---tips and traps, IEEE Transactions on Signal
    Processing, no. 11, vol. 42, Nov. 1994, pp. 3241-3245.

    For comp.dsp, the gist is:

    1. Design a half-bandwidth real low-pass FIR filter using
    whatever optimal method you choose, with the principle design
    criterion being minimization of the maximum attenuation in
    the band f_s/4 to f_s/2.
    2. Modulate this by exp(2 pi f_s/4 t), so that now your
    stop-band is the negative frequencies, the pass-band is the
    positive frequencies, and the roll-off at each end does not
    extend into the negative frequency band.
    3. either use it as a complex FIR filter, or a pair of I/Q real
    filters in whatever FIR implementation you have available.

    If your original filter design produced an impulse response
    with an even number of taps, then the filtering in 3 will
    introduce a spurious half-sample delay (resampling the real
    signal component), but that does not matter for many
    applications, and such filters have other features to recommend
    them.

    Andrew Reilly [Reilly@zeta.org.au]
    _________________________________________________________________

    Q2.11: Algorithm implementation: floating-point versus fixed-point

    According to the WWWebster Dictionary, an algorithm is "a
    procedure for solving a mathematical problem (as of finding the
    greatest common divisor) in a finite number of steps that
    frequently involves repetition of an operation; broadly: a
    step-by-step procedure for solving a problem or accomplishing
    some end especially by a computer."

    Typical (although by no means the only) operations are those of
    addition and multiplication. When expressing the algorithm with
    pencil and paper, these operations are commonly taken to be
    within an algebraically complete number system such as the
    integers or the reals. However, when the time comes to
    implement the algorithm on a computer, these "ideal" number
    systems must be exchanged for something realizable. The number
    systems available today on common processors and digital
    hardware are broadly categorized as floating-point and
    fixed-point.

    In a floating-point representation, the total number of bits
    availabl
    are partitioned into an exponent and mantissa.
    Generally speaking, the mantissa stores the "significant
    digits" of the value while the exponent scales the significant
    digits to the desired magnitude. The action of the exponent is
    to move, or "float," the decimal point depending on the
    magnitude being represented; thus the term "floating-point."

    Because floating-point representations are typically at least
    32 bits long (IEEE-754 is a popular standard for 32-bit and
    64-bit floating-point numbers), there exists simultaneously
    high precision and high dynamic range. These traits of
    floating-point numbers allow most algorithms to be ported
    directly to floating-point implementations with little or no
    change, and this is the key reason floating-point
    representations are highly desirable. The disadvantage of
    floating-point implementations is that they require a
    significant amount of extra hardware over fixed-point
    implementations, which translates to higher parts costs, higher
    power consumption, slower execution, larger chip area, or a
    combination of these.

    As the term "fixed-point" implies, fixed-point representations
    have the binary point at a fixed location. There are two
    subsets of fixed-point implementations: fractional and integer.
    In a fractional fixed-point implementation, such as that
    provided on the Motorola 56K series of DSPs, the binary point
    is always assumed to be to the left of the most-significant
    digit. In an integer fixed-point implementation, such as that
    provided by the Texas Instruments TMS320C54xx series of DSPs,
    the binary point is to the right of the least-significant
    digit. In either case, the arithmetic operations implemented in
    the hardware are essentially integer, which results in a much
    simpler arithmetic logic unit in hardware that allows lower
    cost, lower power consumption, faster execution, smaller chip
    area, or a combination of these, over that of floating-point
    implementations.

    For more information on the IEEE-754 format, see James Carr's
    "Numerical Analysis" class notes at Florida State University,
    http://www.scri.fsu.edu/~jac/MAD3401/Backgrnd/ieee.html.

    Fixed-Point Arithmetic: The Basics

    In essence, a fixed-point representation is a simple integer
    scaled (divided) by a power of two. If we denote an unscaled
    integer variable by upper case "X" and the scaled, fixed-point
    variable by lower case "x," then x = X/2^b, where b is the
    number of digits the binary point is shifted left. For example,
    if X is a 16-bit, two's complement integer, and b=4, then "X"
    has values ranging from -2^(15) to +2^(15)-1 and with minimum
    step size of 1, while the scaled value "x" ranges from -2^(11)
    to +2^(11) - 1/(2^4) with a minimum step size of 1/(2^4).

    Note that the value of "b" is not part of the representation.
    You won't see it in a register or as part of the data anywhere;
    it is a parameter that the algorithm implementer must determine
    and maintain.

    Fixed-point representations place some very different rules on
    operations than their floating-point counterparts. For example,
    two variables must be scaled the same in order to be added (or
    subtracted). Thus it may be necessary to shift one or the other
    operand prior to adding. Another example is that when
    multiplying two N-bit values with scale factors b0 and b1, the
    result is scaled (b0+b1) and requires 2*N bits in general in
    order to avoid overflow and maintain precision.

    There are several other rules and considerations for
    fixed-point arithmetic that are commonly encountered when
    implementing algorithms. For more information, see
    http://personal.lig.bellsouth.net/~yatesc/papers.htm.

    Randy Yates [yates@ieee.org]

    Previous section (1) Next section (3)

    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 05/07/02

    The "big four" programmable DSP chip manufacturers are Texas
    Instruments, with the TMS320C2000, TMS320C5000, and TMS320C6000
    series of chips; Motorola, with the DSP56300, DSP56800, and
    MSC8100 (StarCore) series; Agere Systems (formerly Lucent
    Technologies), with the DSP16000 series; and Analog Devices,
    with the ADSP-2100 and ADSP-21000 ("SHARC") 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 both HTML and PDF formats. 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:

    Agere Systems (formerly Lucent Technologies):

    DSP16xxx:
    100 to 170 MHz 16-bit fixed-point DSP. The DSP16000 core
    features two multipliers with SIMD-like capabilities, a 20-bit
    address bus, a 32-bit address bus, and eight 40-bit
    accumulators. The chips feature two serial ports and two
    timers.

    The first-generation processor, the DSP16210, contains a single
    DSP16000 core and 120 KB of internal RAM. The second-generation
    DSP16410 incorporates two DSP16000 cores and 386 KB of internal
    RAM.

    Analog Devices:

    ADSP-21xx:
    10 to 80 MHz 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-219x:
    160 MHz 16-bit fixed point DSPs; 40-bit accumulator; 24-bit
    instructions. Based on the ADSP-21xx family, and is is mostly,
    but not completely, assembly source-code upward compatible with
    the ADSP-21xx Adds new addressing modes and an instruction
    cache, expands address space, and lengthens pipeline (six
    stages compared to three on the ADSP21xx). Family includes
    members containing multiple ADSP-219x cores.

    ADSP-21xxx ("SHARC"):
    33 to 100 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.

    The first-generation SHARC, the ADSP-2106x, features a single
    data path, a 32-bit address bus, and 40-bit data bus. Versions
    are available with up to 512 KB of on-chip memory, up to six
    communication ports, and up to 10 DMA channels.

    The second-generation ADSP-2116x has two parallel data paths, a
    32-bit address bus, and a 64-bit data bus. Versions are
    available with up to 512 KB of on-chip memory; up to six
    communication ports, and up to 14 DMA channels.

    Analog Devices also sells the AD14000 series, which contain
    four ADSP-2106x SHARC processors in a single-chip package.

    ADSP-2153x:
    200 to 300 MHz 16-bit fixed point DSPs that can execute two MAC
    instructions per cycle; based on the ADI/Intel MSA core. Uses a
    mix of 16-, 32-, and 64-bit instructions. Features include
    ability to operate over a wide range of frequencies and
    voltages.

    Motorola:

    DSP563xx:
    66 to 160 MHz 24-bit fixed-point DSP; most family members have
    24-bit address and data busses. The DSP563xx also features
    56-bit accumulators (2), timers, serial interface, host
    interface port. The DSP56307 and DSP56311 contain a filter
    co-processor. Up to 1 MB of internal RAM.

    DSP568xx:
    40 MHz 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. 4-12 KB of
    internal RAM. Most family members include an on-chip A/D.

    DSP5685x:
    160 MHz 16-bit fixed point DSP based on the DSP568xx. Adds an
    exponent detector and two accumulators, extends shifter and the
    logic unit to 32 bits, and widens internal address and data
    buses. The DSP5685x uses a 1X master clock rate rather than the
    2X master clock rate used by the DSP568xx.

    MSC81xx:
    The 300 MHz MSC8101 is the first processor based on the
    StarCore SC140 core. It contains four parallel ALU units that
    can execute up to four MAC operations in a single clock cycle.
    The MSC8101 uses variable-length instructions. Features
    include: 512 KB on-chip RAM; 16 DMA channels; an on-chip filter
    co-processor; and interfaces for ATM, Ethernet, E1/T1 and
    E3/T3, and the PowerPC bus.

    Texas Instruments:

    TMS320C2xxx:
    20-40 MHz 16-bit fixed-point DSPs oriented toward low-cost
    control applications; 16 bit data, 32 bit registers. The family
    members have a variety of peripherals, such as A/D converters,
    41 I/O pins, and 16 PWM outputs. A variety of RAM and ROM
    configurations are available

    TI also sells the TMS320C2x family, an older version of the
    chip with fewer features.

    TMS320C3x:
    33-75 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.

    TMS320C54xx:
    40 to 160 MHz 16-bit fixed-point DSPs with a large number of
    specialized instructions. Many family members; the processors
    differ in configuration of on-chip ROM/RAM, serial ports,
    autobuffered serial ports, host ports, and time-division
    multiplexed ports. On-chip RAM ranges from 10 KB to over 1 MB.

    TMS320C55xx:
    144 to 200 MHz dual-ALU variant of the TMS320C54xx that can
    execute two MAC instructions per cycle. Variable instruction
    word width. Features include up to 320 KB internal RAM; 6 DMA
    channels; 2 serial ports; and 2 timers.

    TMS320C62xx:
    150-300 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.

    TMS320C64xx:
    400-600 MHz 16-bit fixed-point DSP based on the TMS320C62xx.
    Adds SIMD support to most execution units, including extensive
    8-bit SIMD support. Also doubles data bandwidth and increases
    size of on-chip memory.

    TMS320C67xx:
    100-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.
    _________________________________________________________________

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

    Updated 04/02/01

    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:

    + Single-cycle multiply-accumulate capability; high-performance
    DSPs often have two multipliers that enable two
    multiply-accumulate operations per instruction cycle; some
    DSP have four or more multipliers
    + Specialized addressing modes, for example, pre- and
    post-modification of address pointers, circular addressing,
    and bit-reversed addressing
    + Most DSPs provide various configurations of on-chip memory
    and peripherals tailored for DSP applications. DSPs generally
    feature multiple-access memory architectures that enable DSPs
    to complete several accesses to memory in a single
    instruction cycle
    + Specialized execution control. Usually, DSP processors
    provide a loop instruction that allows tight loops to be
    repeated without spending any instruction cycles for updating
    and testing the loop counter or for jumping back to the top
    of the loop
    + DSP processors are known for their irregular instruction
    sets, which generally allow several operations to be encoded
    in a single instruction. For example, a processor that uses
    32-bit instructions may encode two additions, two
    multiplications, and four 16-bit data moves into a single
    instruction. In general, DSP processor instruction sets allow
    a data move to be performed in parallel with an arithmetic
    operation. GPPs/MCUs, in contrast, usually specify a single
    operation per instruction

    While the above differences traditionally distinguish DSPs from
    GPPs/MCUs, in practice 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 05/08/02

    Q3.3.1: Where can I get a C compiler for the ADSP-21xx and ADSP-21xxx?

    The G21 package collects the free source code for the Analog
    Devices GCC-based C compilers for their 21xxx (SHARC) and 21xx
    series DSPs. These compilers are all based on GCC version
    2.3.3. Full source code for the compiler, assembler, linker,
    etc. is available at http://www.kvaleberg.com/g21.html.

    The C compilers are available for the 210x series as well as
    for the SHARC. The assemblers and linkers are only available
    for the SHARC. The source code is based on what is released
    under GPL by ADI, but is adapted for use with Linux and other
    Unix variants.

    [Egil Kvaleberg, egil@kvaleberg.no]
    _________________________________________________________________

    Q3.3.2: Where can I get tools for the ADSP-21xxx?

    SHARC development tools are avaiable for Acorn/BSD, Linux, and
    other platforms. The tools include frontend/preprocessor ,
    assembler, linker, archiver, a utility to generate ROM images
    for eprom burners, and other utilities The supplied assembler
    is not part of the gnu archive, but is based on a assembler
    originaly written by P. Lantto. Source code and binaries are
    available at
    http://www.ww.tu-freiberg.de/~pberg/fgm/support/index.html.

    [Theo Markettos atm26@cam.ac.uk]
    _________________________________________________________________

    Q3.3.3: 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 from
    http://www.suresoft.ca. (Follow the links to the FTP site and
    select beta0.4.1src.tar.gz.) Requires Analog Devices' ld21.exe
    version 5.1 linker or equivalent for linking executables.
    Source code to the assembler is included under the terms of the
    GNU public license.

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

    Q3.3.4: 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 at
    http://www.analog.com/support/Design_Support.html, or at their
    FTP site at ftp://ftp.analog.com.

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

    Q3.4: Software for Agere Systems (Formerly Lucent Technologies) DSPs

    Agere Systems provides application libraries for their DSPs at
    http://www.lucent.com/micro/wam/tse/.
    _________________________________________________________________

    Q3.5: Software for Motorola DSPs

    Updated 05/07/02

    Motorola provides free software development tools that may be
    downloaded from the Motorola Web site at
    http://e-www.motorola.com/webapp/sps/site/prod_summary.jsp?code
    =MSW3SDK000AA&nodeId=01M983916044937.

    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/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 with 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.
    <<<<<<< 3.htm

    Pete gray has announced the availability of a Small C
    cross-compiler (with source) and assembler for the Motorola
    DSP56800, available for download from
    http://home.attbi.com/~petegray. Targetting a simple DOS-box
    host, developed and tested using djgpp
    (http://www.delorie.com/djgpp/) and Metrowerks CodeWarrior, in
    conjunction with NMI's (www.newmicros.com) IsoPod(TM) - based
    on the DSP56F805. The assembler generates output suitable for
    Motorola's free JTAG flash loader.

    Small C language reference available online at
    http://www.ddjembedded.com/languages/smallc/

    Pete also asks for comments and feedback to be sent to
    petegray@ieee.org =======

    Pete Gray has announced the availability of a Small C
    cross-compiler (with source) and assembler for the Motorola
    DSP56800, available for download from
    http://home.attbi.com/~petegray. Targetting a simple DOS-box
    host, developed and tested using djgpp
    (http://www.delorie.com/djgpp/) and Metrowerks CodeWarrior, in
    conjunction with NMI's (www.newmicros.com) IsoPod(TM) - based
    on the DSP56F805. The assembler generates output suitable for
    Motorola's free JTAG flash loader.

    Small C language reference available online at
    http://www.ddjembedded.com/languages/smallc/

    Pete also asks for comments and feedback to be sent to
    petegray@ieee.org >>>>>>> 1.5
    _________________________________________________________________

    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
    https://sourceforge.net/projects/lib5600x [Miloslaw Smyk,
    thorgal@wmfh.org.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:

    + New Mexico State University (NMSU) simulator engine,
    ftp://crl.nmsu.edu/pub/non-lexical/6811/ (Unix). Simulator
    engine with a command-line interface.
    + Sim6811,
    ftp://cherupakha.media.mit.edu/pub/projects/6811/sim6811/
    (Mac). Screen-oriented user interface based on the NMSU
    simulator engine (plus bug fixes).
    + THRSim11, http://programfiles.com/index.asp?ID=8366 allows
    you to edit, assemble, simulate and debug programs for the
    68HC11 on Windows 95/98. THRSim11 simulates the CPU, ROM,
    RAM, all memory mapped I/O ports, and the on board
    peripherals.
    _________________________________________________________________

    Q3.6: Software for Texas Instruments DSPs

    Updated 05/07/02

    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]

    TI has a number of free algorithms available on their website
    at
    http://dspvillage.ti.com/docs/sdstools/sdscommon/showsdsinfo.jh
    tml?templateId=57&path=templatedata/cm/ccstudio/data/free_tools
    .

    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?

    The GNU binutils 2.11 and later have been ported to the TI
    C54xx/IBM C54DSP. Most of the binutils tools are supported,
    including the assembler, linker and objdump. The assembler is
    source-compatible with the TI assembler. The GNU binutils are
    available from http://sources.redhat.com/binutils/ GDB ports
    for c25/c5x/c54x are also available.

    [Timothy Wall]

    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/c4x. 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 License. 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/c4x. 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 License.

    [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 License.

    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
    occurring. 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)
    --- Synchronet 3.18b-Win32 NewsLink 1.113
  • From comp-dsp-faq@comp-dsp-faq@bdti.com (Kenton Williston) to comp.dsp,comp.answers,news.answers on Monday, November 17, 2003 17:46:35
    From Newsgroup: comp.answers

    Archive-name: dsp-faq/part3
    Last-modified: Mon Nov 17 2003
    URL: http://www.bdti.com/faq/


    Previous section (3) Next section (5)

    Q4: DSP Development Boards

    Updated 05/08/2002

    Note: This information was mainly supplied by vendor
    catalogues. It is in no way definitive, and some of the
    information may well be out of date or simply wrong. Beware!
    _________________________________________________________________

    CAPTION: DSP Development Boards

    |-----------------------------------------------------------------------------| |Vendor |Analog Devic|Agere System|Motorola |Texas Instru|Other | | |es |s (formerly |DSP56K |ments | | | |ADSP-21xx |Lucent Techn|or |TMS320Cxx | | | |or ADSP |ologies) |DSP96002 | | | | |210xx |DSP16xx | | | | | |or ADSP |or | | | | | |2153x |DSP32xx | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-----------------------------------------------------------------------------| |Analog Devic|Standalone |- |- |- |- | |es | | | | | | |-----------------------------------------------------------------------------| |Ariel Corp |VME |- |- |ISA, PCI, |- | | | | | |VME | | |-----------------------------------------------------------------------------| |Atlanta |- |- |- |ISA, |- | |Signal | | | |Standalone | | |Processors, | | | | | | |Inc. | | | | | | |-----------------------------------------------------------------------------| |Berkeley |- |- |SBus, |- |- | |Camera | | |SCSI bus, | | | |Engineering | | |standalone, | | | | | | |Peckbus | | | | | | |Eurocard | | | | | | | | | | | | | | | | | |-----------------------------------------------------------------------------| |BittWare, |ISA, PCI, |- |- |- |- | |Inc. |PC/104, | | | | | | |Compact PCI | | | | | | | | | | | | | |PMC | | | | | |-----------------------------------------------------------------------------| |Blue Wave |ISA, PCI, |- |PCM |ISA, PCI, |- | |Systems |VME, PMC | | |VME, PMC | | | | | | | | | |-----------------------------------------------------------------------------| |Bridgenorth |- |- |- |ISA |- | |Signal Proce| | | | | | |ssing | | | | | | |-----------------------------------------------------------------------------| |Catalina |- |- |- |- |Sharp LH9124| |Research, | | | | |/9320 on | |Inc. | | | | |VMEbus | | | | | | | | |-----------------------------------------------------------------------------| |CMS GmbH |ISA |- |- |- |- | |-----------------------------------------------------------------------------| |Communicatio|- |ISA, |- |- |- | |n | |VMEbus | | | | |Automation | | | | | | |and Control | | | | | | | Inc. | | | | | | |-----------------------------------------------------------------------------| |Computer |ISA |- |- |- |- | |Continuum | | | | | | |-----------------------------------------------------------------------------| |Creative |- |- |VMEbus |- |- | |Electronic | | | | | | |Systems | | | | | | |-----------------------------------------------------------------------------| |Current |(part of |- |- |- |- | |Technology, |FF2 DSP | | | | | |Inc. |frame grabbe| | | | | | |r) | | | | | |-----------------------------------------------------------------------------| |Dalanco |- |- |- |ISA |- | |Spry | | | | | | |-----------------------------------------------------------------------------| |Danville |Standalone |- |- |- |- | |Signal Proce| | | | | | |ssing | | | | | | |-----------------------------------------------------------------------------| |Data Transla|- |- |- |ISA |- | |tion | | | | | | |-----------------------------------------------------------------------------| |Dicon Lab, |- |- |- |ISA, PCI, |- | |Inc. | | | |standalone | | | | | | | | | |-----------------------------------------------------------------------------| |DigiDesign, |- |- |Mac Nubus |- |- | |Inc. | | | | | | |-----------------------------------------------------------------------------| |DIPIX Techno|- |- |- |ISA |- | |logies, Inc | | | | | | | | | | | | | |-----------------------------------------------------------------------------| |DSP Research|- |- |- |ISA, SBus, |- | | | | | |standalone, | | | | | | |proprietary | | | | | | | | | |-----------------------------------------------------------------------------| |EnterTec, |ISA |- |- |- |- | |Inc. | | | | | | |-----------------------------------------------------------------------------| |Eonic System|standalone |- |- |- |- | |s |TSC21020E: | | | | | | |radiation | | | | | | |tolerant | | | | | | |ADSP-21020 | | | | | | |compatible | | | | | | | | | | | | | | | | | | | |-----------------------------------------------------------------------------| |Hollis |ISA |- |- |- |- | |Electronics | | | | | | |-----------------------------------------------------------------------------| |Hunt |- |- |- |- |ISA, PCI, | |Engineering | | | | |cPCI,VME, | | | | | | |PC/104, | | | | | | |standalone | | | | | | | | |-----------------------------------------------------------------------------| |Hyperception|ISA |- |ISA |ISA, PCI, |- | |, Inc. | | | |PCMCIA | | |-----------------------------------------------------------------------------| |Image and |- |- |- |VMEbus |- | |Signal | | | | | | |Processing | | | | | | |-----------------------------------------------------------------------------| |Innovative |Standalone |- |- |- |- | |Devices | | | | | | |-----------------------------------------------------------------------------| |Integrated |- |- |- |Standalone |- | |Motions, | | | | | | |Inc. | | | | | | |-----------------------------------------------------------------------------| |Intellibit |- |- |- |Standalone |- | |-----------------------------------------------------------------------------| |Integrated |- |- |ISA |- |- | |Technologies| | | | | | | | | | | | | |Solutions, | | | | | | |Inc. | | | | | | |-----------------------------------------------------------------------------| |Ixthos, Inc |VME |- |- |VME |- | | | | | | | | |-----------------------------------------------------------------------------| |Kinetic |- |SBus |- |- |- | |Systems | | | | | | |-----------------------------------------------------------------------------| |Logabex |ISA |- |- |- |- | |-----------------------------------------------------------------------------| |Momentum |- |- |ISA |- |- | |Data Systems| | | | | | | | | | | | | |-----------------------------------------------------------------------------| |Motorola |- |- |ISA, |- |Motorola | |Corp. | | |Mac Nubus | |68HC16 as | | | | | | |standalone | | | | | | | | |-----------------------------------------------------------------------------| |National |- |ISA |- |Mac Nubus |- | |Instruments | | | | | | |-----------------------------------------------------------------------------| |Natural |- |- |- |ISA |- | |Microsystems| | | | | | |, Inc. | | | | | | |-----------------------------------------------------------------------------| |N.E.L. |- |- |Standalone |Standalone |- | |-----------------------------------------------------------------------------| |ND Tech |- |- |- |Standalone |- | |North Market| | | | | | |ing, Inc. | | | | | | | | | | | | | |-----------------------------------------------------------------------------| |Oxford Micro|- |- |- |- |A236 Video | | | | | | |DSP | |Devices, | | | | | | |Inc. | | | | | | |-----------------------------------------------------------------------------| |Pacific |- |- |- |VMEbus |- | |Cyber/Metric| | | | | | |, Inc. | | | | | | |-----------------------------------------------------------------------------| |Pentek |- |- |- |VMEbus |- | |-----------------------------------------------------------------------------| |Petsoff |- |- |Amigabus |- |- | |Limited | | | | | | |Partnership | | | | | | |-----------------------------------------------------------------------------| |Precision |- |- |Standalone |- |- | |Design Servi| | | | | | |ces | | | | | | |-----------------------------------------------------------------------------| |Prime Ideal |ISA |- |- |- |- | |-----------------------------------------------------------------------------| |Quantawave |- |ISA |- |- |- | |-----------------------------------------------------------------------------| |RCN Realtime|- |- |ISA, NeXT, |- |- | | | | |Standalone | | | |Computing | | | | | | |and Nets | | | | | | |-----------------------------------------------------------------------------| |Saddle Point|ISA |- |- |- |- | | | | | | | | |Systems | | | | | | |-----------------------------------------------------------------------------| |Sample Rate |- |- |standalone, |- |- | |Systems Oy | | |home theater| | | |Inc.) | | | EVM | | | | | | | | | | |-----------------------------------------------------------------------------| |Signal-Data |ISA |- |- |- |- | |-----------------------------------------------------------------------------| |SKY Computer|VME, |- |- |- |PowerPC or | |s, Inc. |standalone | | | |i860 on VME | | | | | | |or standalon| | | | | | |e | |-----------------------------------------------------------------------------| |Sonitech |- |- |- |ISA, Sbus, |- | |Internationa| | | |VMEbus | | |l | | | | | | |-----------------------------------------------------------------------------| |Southwest |- |- |- |- |TI 6xxx DSK | |Software & | | | | |EVM daughter| |Systems | | | | |board | | | | | | | | |-----------------------------------------------------------------------------| |Specom Techn|Standalone |- |- |- |- | |ologies | | | | | | |-----------------------------------------------------------------------------| |Spectrum |- |- |ISA, |VMEbus |PDSP-16488 | |Signal Proce| | |VMEbus | | | |ssing | | | | | | |-----------------------------------------------------------------------------| |Spectral |- |Mac Nubus |- |- |- | |Innovations | | | | | | |-----------------------------------------------------------------------------| |Texas Instru|- |- |- |ISA, |- | |ments | | | |Standalone | | |-----------------------------------------------------------------------------| |Townshend |- |SCSI |- |- |- | |Computer | | | | | | |Tools | | | | | | |-----------------------------------------------------------------------------| |Transtech |- |- |- |ISA, Sbus, |- | |Parallel | | | |VMEbus, | | |Systems | | | |Standalone | | |Corp. | | | | | | | | | | | | | |-----------------------------------------------------------------------------| |Traquair |- |- |- |ISA, PCI, |- | |Data | | | |PC/104, | | |Systems, | | | |VME, SBus, | | |Inc. | | | |standalone | | | | | | | | | | | | | | | | |-----------------------------------------------------------------------------| |Tucker-Davis|- |ISA |- |- |- | | Technologie| | | | | | |s | | | | | | |-----------------------------------------------------------------------------| |Valley Techn|- |VMEbus |- |- |- | |ologies | | | | | | |-----------------------------------------------------------------------------| |Vigra |- |- |Sbus, |- |- | | | | |VMEbus | | | |-----------------------------------------------------------------------------| |Wavetron |ISA |- |- |- |- | |Microsystems| | | | | | | | | | | | | |-----------------------------------------------------------------------------| |Wintriss |- |- |- |ISA, |- | |Engineering | | | |Standalone | | |Corp. | | | | | | | | | | | | | |-----------------------------------------------------------------------------|

    Previous section (3) Next section (5)

    Previous section (4)

    Q5: What DSP operating systems are available?

    [Researched and written by Chuck Corley chuckc@sr.hp.com. Last updated
    11/22/96]

    Some designers need to use an operating system with a DSP
    processor and others don't. The need for DSP operating system
    seems to depend on the task(s) to be performed.

    For simple DSP tasks where a single function or a few simple
    functions are being performed, an operating system is usually
    not needed and could get in the way.

    When the number and complexity of DSP tasks increase, an
    operating system of some type may be needed in order to
    allocate system resources (RAM, etc.) and to perform
    multi-tasking, where several tasks take turns executing.

    Some people have chosen to write their own DSP 'task-switching'
    or 'job allocating' operating system. Whether this is the right
    choice for you depends on how involved your operating system
    needs to be, and how much time you have available to spend
    writing it.

    Many companies offer pre-written operating systems that execute
    on DSP processors. In exchange for your money they offer to
    save you the time and effort of writing and debugging your own
    'operating system' or 'task switcher'.

    These companies describe their products as 'real-time'
    operating systems. What 'real-time' means can be debated, but
    it normally means that the maximum time for the operating
    system to respond to an external event is known. The
    calculation for measuring this time involves adding together
    interrupt response time, task switching time, and other
    processor and operating system benchmarks. 'Real-time' also
    usually means 'fast'. Embedded CPU or DSP tasks often require a
    'real-time' response time.

    Prices and features vary. Most companies charge for purchasing
    their 'development environment', which allows you to develop
    code which will run on their operating system. Some companies
    also charge a fee for each product you build that includes
    their operating system software. This is usually called a
    'target fee' or 'runtime license' fee. Some operating systems
    have no 'runtime license' fees.

    It is *very* important to negotiate what the runtime license
    fee will be *in advance*. This is not nearly as big a problem
    as it used to be, but be careful! If this runtime license fee
    is not agreed upon in writing when the development system is
    purchased, you could be in a bad position later. You will have
    invested a lot of time and effort writing software to work with
    a particular operating system, and when your creation is

    produced you could discover that the 'runtime license fee' has
    increased or is more than you can afford. Considering the
    amount of work you would have invested in that operating
    system, you would be in a very poor bargaining position.

    You will also need to decide if having the source code for the
    operating system is important to you. Some companies include it
    for free, while others may charge extra.

    Features for the DSP operating systems are listed below. Some
    vendors claim that a 'No' listing for a feature doesn't
    necessarily mean that their operating system is missing
    something you need. Many companies state that particular
    features were not appropriate for either a 'DSP' or a
    'real-time' operating system, and so they did not implement
    them. Other companies stated that some features were not
    appropriate for their targeted users.

    One suggestion for comparing features: Make a list of the
    features you *really* need and compare it against the list
    below.

    Disclaimer: Any opinions I've expressed are mine, and not my
    employer's. I've tried to make this information current,
    accurate, and impartial, but I can't guarantee this. This
    document is provided "as is", with no warranty of any kind. You
    should contact the vendors listed below for the best and most
    up-to-date information. Corrections and suggestions for this
    section on DSP operating systems should be addressed to
    chuckc@sr.hp.com.

    CAPTION: Key To Abbreviations

    |-----------------------------------------------------------------------------| |Abbreviation |Explanation | |-----------------------------------------------------------------------------| |Yes |Included with operating | | |system | |-----------------------------------------------------------------------------| |No |NOT available with operating | | |system | |-----------------------------------------------------------------------------| |Soon |Not yet available | |-----------------------------------------------------------------------------| |? |Don't know if this is | | |available | |-----------------------------------------------------------------------------| |Opt |Extra-cost option, cost not | | |available | |-----------------------------------------------------------------------------| |Number |Cost of a feature or size of a | | |feature. Costs are in dollars $$. | | |Code sizes are in bytes. Numbers may | | |have been rounded to only 2 or 3 | | |significant digits. A range (example: | | |2-5K) means the size or cost varies, | | |depending on options chosen or which | | |code libraries are used | | | | | | | |-----------------------------------------------------------------------------| |Disk |Program is supplied on floppy | | |disk | |-----------------------------------------------------------------------------| |FTP |Program is supplied by FTPing it over | | |the network | |-----------------------------------------------------------------------------|

    CAPTION: Operating System Features (1/2)

    |---------------------------------------------------------------------|
    |Op Sys|Byte- |Nucleu|RXTC |SPOX |Helios|Parall|VCOS |Virtuo| |
    |tem |BOS |s | | | |el | |so | | |Featur| | | | | |C | |Nan/Cl| |
    |e | | | | | | | |as* | |
    | | | | | | | | | | |
    | | | | | | | | | | | |---------------------------------------------------------------------| |Preemt|Yes |Yes |Yes |Yes |Yes |Yes |No |No |Yes |
    |. | | | | | | | | | |
    |Task | | | | | | | | | |
    |Sched | | | | | | | | | |
    | | | | | | | | | | | |---------------------------------------------------------------------|
    |Time |Yes |Yes |Yes |Yes |Yes |Yes |Yes |No |Yes | |Sliced| | | | | | | | | |
    | | | | | | | | | | | |Schedu| | | | | | | | | |
    |le | | | | | | | | | | |---------------------------------------------------------------------|
    |Round |? |Yes |Yes |Yes |Yes |Yes |Yes |Yes |Yes |
    |Robin | | | | | | | | | | |Schedu| | | | | | | | | |
    |le | | | | | | | | | |
    | | | | | | | | | | | |---------------------------------------------------------------------| |Parall|No |No |No |Opt |Yes |Yes |Yes |Yes? |Yes |
    |el | | | | | | | | | | |Proces| | | | | | | | | |
    |sing | | | | | | | | | |
    | | | | | | | | | | | |---------------------------------------------------------------------|
    |Inter |Yes |Yes |Yes |Yes |Yes |Yes |Yes |Yes |Yes |
    |Task | | | | | | | | | | |Messag| | | | | | | | | |
    |es | | | | | | | | | |
    | | | | | | | | | | | |---------------------------------------------------------------------| |Memory|Yes |Yes |Yes |Yes |Yes |Yes |Yes |No |Yes |
    | | | | | | | | | | | |Manage| | | | | | | | | |
    |ment | | | | | | | | | | |---------------------------------------------------------------------| |Interr|Yes |No |Yes |Yes |Yes |Yes |Yes |Yes |Yes |
    |upt | | | | | | | | | | |Manage| | | | | | | | | |
    |ment | | | | | | | | | |
    | | | | | | | | | | | |---------------------------------------------------------------------|
    |Timer |Yes |Yes |Yes |Yes |Yes |Yes |Yes |Yes |Yes | |Manage| | | | | | | | | |
    |ment | | | | | | | | | |
    | | | | | | | | | | | |---------------------------------------------------------------------|
    |OS Siz|5-40K |4-20K |12-16K|6K+ |80K+ |11K+ |2K |.8K |40K |
    |e | | | | | | | | | | |(Bytes| | | | | | | | | |
    |) | | | | | | | | | |
    | | | | | | | | | | | |---------------------------------------------------------------------|

    CAPTION: Operating System Features (2/2)

    |-----------------------------------------------------------------------------| |Operating System Feature |Precise MQX(+M) |DspTask | | | | | |-----------------------------------------------------------------------------| |Preemptive Task Sched. |Yes |Yes | | | | | |-----------------------------------------------------------------------------| |Time-Sliced Scheduling |Yes |No | | | | | |-----------------------------------------------------------------------------| |Round-Robin Scheduling |Yes |No | | | | | |-----------------------------------------------------------------------------| |Parallel Processing |Yes |No | | | | | |-----------------------------------------------------------------------------| |Inter-Task Messages |Yes |Yes | | | | | |-----------------------------------------------------------------------------| |Memory Management |Yes |No | | | | | |-----------------------------------------------------------------------------| |Interrupt Management |Yes |Yes | | | | | |-----------------------------------------------------------------------------| |Timer Management |Yes |Yes | | | | | |-----------------------------------------------------------------------------| |OS Size (Bytes) |23K+ |5-20K | | | | | |-----------------------------------------------------------------------------|

    CAPTION: Features and Cost (1/2)

    |---------------------------------------------------------------------| |Featur|Byte- |Nucleu|RXTC |SPOX |Helios|Parall|VCOS |Virtuo| |
    |es |BOS |s | | | |el | |so | |
    |and Co| | | | | |C | |Nan/Cl| |
    |sts | | | | | | | |as* | |
    | | | | | | | | | | |
    | | | | | | | | | | | |---------------------------------------------------------------------| |Includ|No |No |No |No |Yes |Yes |No |No |No |
    |es C | | | | | | | | | | |Compil| | | | | | | | | |
    |er | | | | | | | | | | |---------------------------------------------------------------------| |Includ|No |No |No |No |Yes |Yes |Yes |No |No |
    |es Ass| | | | | | | | | | |embler| | | | | | | | | |
    | | | | | | | | | | | |---------------------------------------------------------------------| |Source|Yes |Yes |Yes |No |No |No |No |Opt |Opt |
    | Code | | | | | | | | | | |Includ| | | | | | | | | |
    |ed | | | | | | | | | | |---------------------------------------------------------------------| |Source|C |C |Asm&C |Asm&C |Asm&C |Asm&C |Asm |Asm |Asm&C |
    | Code | | | | | | | | | |
    |Type | | | | | | | | | |
    | | | | | | | | | | |
    | | | | | | | | | | | |---------------------------------------------------------------------| |Run-Ti|0 |0 |0 |25-200|25-300|50-300|TBD |<32|<11|
    |me Lic| | | | | | | | |2 |
    |ense | | | | | | | | | |
    |$ | | | | | | | | | | |---------------------------------------------------------------------| |Develo|2K |5K |1-4.2K|6-12K |1-5.4K|1.5-7 |0 |3.2K |11K |
    |p Lice| | | | | |6K | | | |
    |nse $ | | | | | | | | | |
    | | | | | | | | | | |
    | | | | | | | | | | | |---------------------------------------------------------------------| |Develo|Site |Produc|Site |Node |Node |Node |N/A |Site |Site |
    |p Lice| |t | | | | | | | |
    |nse Ty| | | | | | | | | |
    |pe | | | | | | | | | |
    | | | | | | | | | | |
    | | | | | | | | | | | |---------------------------------------------------------------------|
    |Demo |? |Yes |Yes |No |No |No |No |No |Yes |
    |Disk | | | | | | | | | | |Availa| | | | | | | | | |
    |ble | | | | | | | | | | |---------------------------------------------------------------------|

    CAPTION: Features and Cost (2/2)

    |-----------------------------------------------------------------------------| |Operating System Feature |Precise MQX(+M) |DspTask | | | | | |-----------------------------------------------------------------------------| |Includes C Compiler |No |No | | | | | |-----------------------------------------------------------------------------| |Includes Assembler |No |No | | | | | |-----------------------------------------------------------------------------| |Source Code Included |Yes |Yes | | | | | |-----------------------------------------------------------------------------| |Source Code Type |C & Asm |C | | | | | |-----------------------------------------------------------------------------| |Run-Time License $$ |$0 |$0 | | | | | |-----------------------------------------------------------------------------| |Develop License $$ |$6K |$120 | | | | | |-----------------------------------------------------------------------------| |Develop License Type |Product |Company | | | | | |-----------------------------------------------------------------------------| |Demo Pgm Available |Disk & FTP |FTP | | | | | |-----------------------------------------------------------------------------|

    CAPTION: Libraries (1/2)

    |---------------------------------------------------------------------| |Availa|Byte- |Nucleu|RXTC |SPOX |Helios|Parall|VCOS |Virtuo| |
    |ble |BOS |s | | | |el | |so | | |Librar| | | | | |C | |Nan/Cl| |
    |ies | | | | | | | |as* | |
    | | | | | | | | | | |
    | | | | | | | | | | | |---------------------------------------------------------------------|
    |C Run |No |No |No |2K |Yes |Yes |No |Yes |Yes |
    |Time | | | | | | | | | | |Librar| | | | | | | | | |
    |y | | | | | | | | | | |---------------------------------------------------------------------|
    |DSP Ma|No |1K |No |4K |0-2K |1-2K |100 |1.8K |1.8K |
    |th Lib| | | | | | | | | |
    |rary | | | | | | | | | |
    |s) | | | | | | | | | |
    | | | | | | | | | | | |---------------------------------------------------------------------|
    |Image |No |No |No |No |No |2K |No |5K |5K | |Proces| | | | | | | | | |
    |sing | | | | | | | | | |
    |Lib | | | | | | | | | |
    | | | | | | | | | | | |---------------------------------------------------------------------|
    |JPEG |No |No |No |No |No |No |Opt |No |No | |Librar| | | | | | | | | |
    |y | | | | | | | | | | |---------------------------------------------------------------------|
    |X Wind|No |No |No |No |930 |No |No |No |No |
    |ows Li| | | | | | | | | |
    |brary | | | | | | | | | |
    |$ | | | | | | | | | | |---------------------------------------------------------------------|
    |PC Win|No |No |No |Opt |730 |No |No |No |3K |
    |dows | | | | | | | | | | |Librar| | | | | | | | | |
    |y $ | | | | | | | | | | |---------------------------------------------------------------------| |Ethern|No |9.5K |No |No |1-1.3K|No |No |No |No |
    |et Lib| | | | | | | | | |
    | Cost | | | | | | | | | |
    |$ | | | | | | | | | | |---------------------------------------------------------------------|

    CAPTION: Libraries (2/2)

    |-----------------------------------------------------------------------------| |Available Libraries |Precise MQX(+M) |DspTask | | | | | |-----------------------------------------------------------------------------| |C Run-Time Library |No |No | | | | | |-----------------------------------------------------------------------------| |DSP Math Library(s) |No |No | | | | | |-----------------------------------------------------------------------------| |Image Processing Lib |No |No | | | | | |-----------------------------------------------------------------------------| |JPEG Library |No |No | |-----------------------------------------------------------------------------| |X Windows Library $ |No |No | | | | | |-----------------------------------------------------------------------------| |PC Windows Library $ |No |No | | | | | |-----------------------------------------------------------------------------| |Ethernet Lib Cost $ |$10K |No | | | | | |-----------------------------------------------------------------------------|

    CAPTION: Debugging (1/2)

    |---------------------------------------------------------------------|
    |OS Sys|Byte- |Nucleu|RXTC |SPOX |Helios|Parall|VCOS |Virtuo| |
    |tem |BOS |s | | | |el | |so | |
    |Level | | | | | |C | |Nan/Cl| | |Debugg| | | | | | | |as* | |
    |er | | | | | | | | | |
    | | | | | | | | | | |
    | | | | | | | | | | | |---------------------------------------------------------------------|
    |Basic |Yes |Yes |Yes |Yes |Yes |Yes |Yes |No |Yes | |Debugg| | | | | | | | | |
    |ing | | | | | | | | | | |---------------------------------------------------------------------| |Perfor|Yes |Yes |No |Yes |Yes |No |Yes |No |Yes |
    |mance | | | | | | | | | |
    |Timer | | | | | | | | | |
    | | | | | | | | | | | |---------------------------------------------------------------------| |Debugg|$295 |$750 |$0 |$3.8K |$900 |$950 |TBD |N/A |$0 |
    |er Cos| | | | | | | | | |
    |t | | | | | | | | | |
    | | | | | | | | | | | |---------------------------------------------------------------------|

    CAPTION: Debugging (2/2)

    |-----------------------------------------------------------------------------| |OS System Level Debugger |Precise MQX(+M) |DspTask | | | | | |-----------------------------------------------------------------------------| |Basic Debugging |Yes |Soon | | | | | |-----------------------------------------------------------------------------| |Performance Timer |Yes |No | | | | | |-----------------------------------------------------------------------------| |Debugger Cost |$2K |$0 | | | | | |-----------------------------------------------------------------------------|

    * Note that only Virtuoso "Nano" and "Classico" products are
    shown in the comparison charts. There is also an intermediate
    "Micro" product.

    Previous section (4)
    --- Synchronet 3.18b-Win32 NewsLink 1.113
  • From comp-dsp-faq@comp-dsp-faq@bdti.com (Kenton Williston) to comp.dsp,comp.answers,news.answers on Monday, November 17, 2003 17:46:37
    From Newsgroup: comp.answers

    Archive-name: dsp-faq/part4
    Last-modified: Mon Nov 17 2003
    URL: http://www.bdti.com/faq/


    Contributors to the comp.dsp FAQ
    _________________________________________________________________

    This FAQ was originally developed by Brad Hards in the early 1990s.
    Phil Lapsley and Brad Hards traded off maintenance of the FAQ during
    the first several years of its life. Brad was also responsible for
    converting the FAQ to HTML. Franz Weller helped maintain the FAQ
    during 1995. (Brad and Franz are no longer involved with the FAQ, but
    we appreciate their help! Thanks, guys.) Phil Lapsley maintained the
    list in 1996. Ole Wolf took over next, and served until 1999; Laurent
    Bonetto maintained the list from then until 2001.

    The FAQ is currently maintained by Kenton Williston and Adam Lins.
    Chuck Corley is the "guest editor" of the DSP real-time operating
    system section.

    Questions, comments, suggestions, and new material should be sent to
    comp-dsp-faq@bdti.com.

    Most of the information in this FAQ comes from the generous people who
    supplied the resources and expertise required. We are grateful to the
    following contributors:

    |-----------------------------------------------------------------------------| |Ben Abbott |abbott@vuse.vanderbilt | | |edu | |-----------------------------------------------------------------------------| |Mark Ainsworth |ma@sundance.com | |-----------------------------------------------------------------------------| |William Alves |alves@calvin.usc.edu | |-----------------------------------------------------------------------------| |Tim Baggett | | |-----------------------------------------------------------------------------| |Phil Bangayan |bangayan@gobruins.icsl.ucla | | |edu | |-----------------------------------------------------------------------------| |Pradeep Bardia |pbardia@ti.com | |-----------------------------------------------------------------------------| |Peter Barszczewski |barsz@bnr.ca | |-----------------------------------------------------------------------------| |Harry Bates |transtech!hjb@tc.cornell | | |edu | |-----------------------------------------------------------------------------| |George Biner |GBiner@bellind.com | |-----------------------------------------------------------------------------| |Michail Bletsas |mbletsas@cdsp.neu.edu | |-----------------------------------------------------------------------------| |Neil Bowers |neilb@chama.eece.unm | | |edu | |-----------------------------------------------------------------------------| |Kevin Bradley |kb+@andrew.cmu.edu | |-----------------------------------------------------------------------------| |Annard Brouwer |annard@stack.urc.tue | | |nl | |-----------------------------------------------------------------------------| |James Brundell |james@physics.otago.ac | | |nz | |-----------------------------------------------------------------------------| |Dennis W. Brown |browndw@ece.nps.navy | | |mil | |-----------------------------------------------------------------------------| |Sarah Buckley |sarah@khoral.com | |-----------------------------------------------------------------------------| |Joe Campbell |jpcampb@afterlife.ncsc | | |mil | |-----------------------------------------------------------------------------| |Ralph Campbell |ralph.campbell@eng.sun | | |com | |-----------------------------------------------------------------------------| |Brian Carlson |bcarlson@lsil.com | |-----------------------------------------------------------------------------| |Harold Carbonneau |carbonneau@lucent.com | |-----------------------------------------------------------------------------| |Tim Channon |tchannon@black.demon.co | | |uk | |-----------------------------------------------------------------------------| |Steve Clift |clift@mail.anacapa.net | |-----------------------------------------------------------------------------| |Howard Cohen |cda!hcohen@uunet.uu.net | |-----------------------------------------------------------------------------| |Joel Coltoff |joel@wmi.com | |-----------------------------------------------------------------------------| |Chuck Corley | | |-----------------------------------------------------------------------------| |Jutta Degener |jutta@cs.tu-berlin.de | |-----------------------------------------------------------------------------| |William J. Delveaux |delveaux@infoserv.com | | | | |-----------------------------------------------------------------------------| |Malachy Devlin |m.devlin@nallatech.com | |-----------------------------------------------------------------------------| |John Edwards |johned@cix.compulink.co | | |uk | |-----------------------------------------------------------------------------| |Kenneth Ekman |kenneth.ekman@nokia.com | |-----------------------------------------------------------------------------| |Cole Erskine |cole@voicepump.com | |-----------------------------------------------------------------------------| |Brian Evans |bevans@ece.utexas.edu | |-----------------------------------------------------------------------------| |John C. Fisher |johnf@dsp.sps.mot.com | |-----------------------------------------------------------------------------| |Dan Frankowski |dfrankow@winternet.com | |-----------------------------------------------------------------------------| |Mark Gallagher |M.Gallagher@e-eng.hull.ac | | |uk | |-----------------------------------------------------------------------------| |Robert Gammon |5692330@mcimail.com | |-----------------------------------------------------------------------------| |Kevin Gardner |gardner@zinc.med.yale | | |edu | |-----------------------------------------------------------------------------| |Maurice Givens |maury@tellabs.com | |-----------------------------------------------------------------------------| |Stephen A Glow |sag@world.std.com | |-----------------------------------------------------------------------------| |Willy Gonnason |gonnasow@cuug.ab.ca | |-----------------------------------------------------------------------------| |Bill Grenoble |BILLG@radixii.com | |-----------------------------------------------------------------------------| |Peter Gutmann |pgut1@cs.aukuni.ac.nz | |-----------------------------------------------------------------------------| |Ed Hall |edhall@rand.org | |-----------------------------------------------------------------------------| |Michael Hayes |m.hayes@irl.cri.nz | |-----------------------------------------------------------------------------| |Sverre Holm |sverre@ifi.uio.no | |-----------------------------------------------------------------------------| |Joseph Hora |hora@galileo.ifa.hawaii | | |edu | |-----------------------------------------------------------------------------| |Eric Jacobsen |ericj@hwcae.honeywell | | |com | |-----------------------------------------------------------------------------| |Richard Jaenicke | | |-----------------------------------------------------------------------------| |Jack Jansen |Jack.Jansen@cwi.nl | |-----------------------------------------------------------------------------| |Pete Janzow |pjanzow@prenhall.com | |-----------------------------------------------------------------------------| |Quinn Jensen |jensenq@qcj.icon.com | |-----------------------------------------------------------------------------| |Robert Jonsson |Robert.Jonsson@ludd.luth | | |se | |-----------------------------------------------------------------------------| |Peter Kabal |kabal@ECE.McGill.CA | |-----------------------------------------------------------------------------| |Mohammed Kabir | | |-----------------------------------------------------------------------------| |Alan Kamas |alan@kamas.com | |-----------------------------------------------------------------------------| |Ken Karnofsky |karnofsky@mathworks.com | |-----------------------------------------------------------------------------| |Keith Kendall |klk3%mimi@magic.itg.ti | |
    |com | |-----------------------------------------------------------------------------| |Richard Kim |richard@math.mit.edu | |-----------------------------------------------------------------------------| |Gints Klimanis |gints@roadkill.esd.sgi | | |com | |-----------------------------------------------------------------------------| |Greg Koker |dsp_applications@analog | | |com | |-----------------------------------------------------------------------------| |Peter Kootsookos |p.kootsookos@ieee.org | |-----------------------------------------------------------------------------| |Kurt Kosbar |kosbar@ee.umr.edu | |-----------------------------------------------------------------------------| |Juhana Kouhia |jk87377@cc.tut.fi | |-----------------------------------------------------------------------------| |Mark M. Lacey |lacey@dsp.sps.mot.com | |-----------------------------------------------------------------------------| |Weimin Liu |wliu@nyx.net | |-----------------------------------------------------------------------------| |John Lazzaro |lazzaro@boom.CS.Berkeley.EDU | | | | |-----------------------------------------------------------------------------| |Sergio Liberman |sergio@msil.sps.mot.com | |-----------------------------------------------------------------------------| |Fazal Majid |majid-fazal@math.yale | | |edu | |-----------------------------------------------------------------------------| |Stan McClellan |mcclella@ee.tamu.edu | |-----------------------------------------------------------------------------| |Paul McMahan |mcmahan@cs.utk.edu | |-----------------------------------------------------------------------------| |Renzo Mercanzin |aire@sabrina.dei.unipd | | |it | |-----------------------------------------------------------------------------| |Theresa Meuse |theresa@imaging.com | |-----------------------------------------------------------------------------| |Stephen Moshier |moshier@world.std.com | |-----------------------------------------------------------------------------| |Andrew Mullhaupt |amullhau@ix.netcom.com | |-----------------------------------------------------------------------------| |Phillip Musumeci |p.musumeci@ieee.org | |-----------------------------------------------------------------------------| |Lance Norskog |thinman@netcom.com | |-----------------------------------------------------------------------------| |Bill Novak | | |-----------------------------------------------------------------------------| |Jose Luis Pino |pino@gamow.eecs.berkeley | | |edu | |-----------------------------------------------------------------------------| |Nina Pinto |ninapint@ix.netcom.com | |-----------------------------------------------------------------------------| |Gerrit Polder |g.polder@cpro.agro.nl | |-----------------------------------------------------------------------------| |Jim Prater |Jim.Prater@FtCollins.NCR | | |COM | |-----------------------------------------------------------------------------| |Bill Ralston |wtr@mitre.org | |-----------------------------------------------------------------------------| |C.S. Ramalingam |ramli@mizar.ele.uri.edu | |-----------------------------------------------------------------------------| |Craig F. Reese |cfreese@super.org | |-----------------------------------------------------------------------------| |Andrew Reilly |[Reilly@zeta.org.au] | |-----------------------------------------------------------------------------| |Tony Richardson |amr@mpl.ucsd.edu | |-----------------------------------------------------------------------------| |J.S. Robertson |robertson@euler.math.usma | | |edu | |-----------------------------------------------------------------------------| |Tony Robinson |ajr@softsound.com | |-----------------------------------------------------------------------------| |Lee Rogers |Lee_Rogers@aplmail.jhuapl | | |edu | |-----------------------------------------------------------------------------| |Ted Rossin |rossin@hpfcrd.fc.hp.com | |-----------------------------------------------------------------------------| |Fritz Rothacher |f.rothacher@ieee.org | |-----------------------------------------------------------------------------| |Paul Rubin |phr@america.telebit.com | |-----------------------------------------------------------------------------| |Paul Russell |paulr@syma.sussex.ac | | |uk | |-----------------------------------------------------------------------------| |Stanley Sasaki |stans@tekig7.pen.tek | | |com | |-----------------------------------------------------------------------------| |Jeff Sasmor |jeff@janix.com | |-----------------------------------------------------------------------------| |Louis K. Scheffer |lou@cadence.com | |-----------------------------------------------------------------------------| |Bill Schottstaedt |bil@ccrma.Stanford.EDU | |-----------------------------------------------------------------------------| |W. F. Schroeder |schro@norton.sni.de | |-----------------------------------------------------------------------------| |Tod Schuck |Tod_Schuck@idsmail.combat-edt.navy | | |mil | |-----------------------------------------------------------------------------| |Paul Simoneau |pas1@kepler.unh.edu | |-----------------------------------------------------------------------------| |Malcolm Slaney |malcolm@apple.com | |-----------------------------------------------------------------------------| |Greg Smart |rcogs@citri.edu.au | |-----------------------------------------------------------------------------| |Henry B. Smith |hbs@crl.com | |-----------------------------------------------------------------------------| |Andreas Spanias |spanias@asu.edu | |-----------------------------------------------------------------------------| |Stephan M. Sprenger |sms@prosoniq.com | |-----------------------------------------------------------------------------| |Andrew Sterian |asterian@umich.edu | |-----------------------------------------------------------------------------| |Larry Stewart |stewart@crl.dec.com | |-----------------------------------------------------------------------------| |John Sture |jsture@vcn.bc.ca | |-----------------------------------------------------------------------------| |Derek H. Thille |dht260@dvinci.usask.ca | |-----------------------------------------------------------------------------| |Andrew Ukrainec |ukrainec@InfoUkes.com | |-----------------------------------------------------------------------------| |Peter Ullrich |peter.ullrich@kapsch.co | | |at | |-----------------------------------------------------------------------------| |Ralf Vandenhouten |vanni@Physiology.RWTH-Aachen | | |DE | |-----------------------------------------------------------------------------| |Antti-Pekka Virtanen |antsu@utu.fi | | | | |-----------------------------------------------------------------------------| |Jarkko Vuori |Jarkko.Vuori@hut.fi | |-----------------------------------------------------------------------------| |Witold Waldman |Witold.Waldman@dsto.defence.gov | | |au | |-----------------------------------------------------------------------------| |George Warner |warnergt@lucent.com | |-----------------------------------------------------------------------------| |Phil Woodland |pcw@eng.cam.ac.uk | |-----------------------------------------------------------------------------| |Ronnin Yee | | |-----------------------------------------------------------------------------| |Randy Yates |yates@ieee.org | |-----------------------------------------------------------------------------|

    We would also like to express our gratitude to the contributors who
    are not in the list above, but are mentioned in the body of the FAQ.
    Apologies if we inadvertantly left anybody out! (Please let us know if
    so).

    Get your name here - contribute something! (If you don't want your
    email address listed in your contribution, please indicate so.)
    --- Synchronet 3.18b-Win32 NewsLink 1.113