********************************* ** DSP56200 SUPPORT SOFTWARE ** ********************************* GENERAL DESCRIPTION: The DSP56200 is a DSP peripheral, designed for FIR and LMS Adaptive filtering. The DSP56200 is described in Motorola Technical Summary, BR283, and Motorola Advance Information, DSP56200/D. Since the DSP56200 is a peripheral, it must be interfaced to a host processor. The host processor must run a device driver program which initializes the DSP56200 and provides real time input/output to the DSP56200. Each example reflects the usage of the chip in a certain mode and environment. The programs are provided as tools and will need to be modified by the design engineer to fit into an actual application. The device drivers are written in the programming language "C", and all have been tested and verified. Although written in "C", the programs are well com- mented and written in a style which should make sense to users familiar with other high level languages. Comments are included which point out helpful program- ming tricks, and each program is flowcharted. For users uncomfortable with "C", a helpful appendix is included at the end of this document. PROGRAMMING THE HOST PROCESSOR: The four device driver examples described herein can be classified according to the DSP56200's mode and environment as follows: (p2) Interrupt Driven Adaptive Filter -Flowchart (p3) Interrupt Driven Adaptive Filter -"C" Code (p4) Polled I/O Adaptive Filter -Flowchart (p5) Polled I/O Adaptive Filter -"C" Code (p6) Interrupt Driven Dual FIR Filter -Flowchart (p7) Interrupt Driven Dual FIR Filter -"C" Code (p8) Polled I/O Dual FIR Filter -Flowchart (p9) Polled I/O Dual FIR Filter -"C" Code In the interrupt driven environment, the host processor is interrupted every time the DSP56200 receives a ris- ing edge on its START pin. In the polled I/O environ- ment, the host processor polls a pin tied to the DSP56200's START pin. The programs are complete except for the lowest level routines, which perform the I/O for the host processor and are system dependent. Typically, a user would select the correct program for an application and translate it into the assembly language of the host processor, filling in the details such as the I/O routines and other system dependent code. =========================================================================== APPENDIX 1 - READING PROGRAMS WRITTEN IN "C": 1. Commenting in "C": Comments are defined as any text between "/*" and "*/". Below are some examples of comments: /************************\ |* Example of a comment *| \************************/ /* Example of a comment */ /* Example of a comment */ 2. Constants in "C": Constants are always defined at the top of the file, and are defined as follows: #define NAME_OF_CONSTANT value_of_constant Typically, constants have all capital letters, and hex constants are preceded with the characters "0x". Below are 2 examples: #define DEC_CONST 14 /* Example of a decimal constant */ #define HEX_CONST 0xe /* Example of a hex constant */ 3. Looping in "C": The "for" loop in "C" is equivalent to the following flow chart: for (tap=1; tap<=maxval; tap=tap+1) { /* statements in loop */ } Equivalent Flow Chart: | | ------------ | tap = 1 | ------------ | ------------->+ | | | ------------- | / tap <= maxval \______________ | \ ? / No | | ------------- | | | Yes | | | | | ---------------------- | | | Statements in Loop | | | ---------------------- | | | | | | | | --------------- | | | tap = tap+1 | | | --------------- | | | | | | | -------------- | | | ---------------------- | V 4. Logical Operations in "C": "C" has operators which perform logical operations: SYMBOL LOGICAL OPERATION ------ ----------------- AND >> Right Shift << Left Shift Examples: -------- "0xabcd 0x00ff" results in 0x00cd. Grabs lower byte. "0x1234 >> 8" results in 0x0012. Shifts off lower byte. "0xefab << 8" results in 0xab00. Moves lower byte to upper byte. "(0xefab << 8) + 0x00cd" results in 0xabcd. This is one method for combining two bytes into one 16-bit integer.