Available:*
Library | Item Barcode | Call Number | Material Type | Item Category 1 | Status |
---|---|---|---|---|---|
Searching... | 30000010148759 | TK5102.9 C424 2005 | Open Access Book | Book | Searching... |
Searching... | 30000003594250 | TK5102.9 C424 2005 | Open Access Book | Book | Searching... |
On Order
Summary
Summary
This book is a tutorial on digital techniques for waveform generation, digital filters, and digital signal processing tools and techniques The typical chapter begins with some theoretical material followed by working examples and experiments using the TMS320C6713-based DSPStarter Kit (DSK) The C6713 DSK is TI's newest signal processor based on the C6x processor (replacing the C6711 DSK)
Author Notes
RULPH CHASSAING, PhD, teaches Real-Time DSP at Worcester Polytechnic Institute (WPI). In addition to offering many DSP training workshops and seminars, he has authored four other books: DSP Applications Using C and the TMS320C6x DSK, Digital Signal Processing: Laboratory Experiments Using C and the TMS320C31 DSK, Digital Signal Processing with C and the TMS320C30, and Digital Signal Processing with the TMS320C25, all published by Wiley.
Table of Contents
Preface | p. xiii |
List of Examples | p. xvii |
Programs/Files on Accompanying CD | p. xxi |
1 DSP Development System | p. 1 |
1.1 Introduction | p. 1 |
1.2 DSK Support Tools | p. 2 |
1.2.1 DSK Board | p. 3 |
1.2.2 TMS320C6713 Digital Signal Processor | p. 5 |
1.3 Code Composer Studio | p. 5 |
1.3.1 CCS Installation and Support | p. 6 |
1.3.2 Useful Types of Files | p. 7 |
1.4 Quick Test of DSK | p. 7 |
1.5 Support Files | p. 8 |
1.6 Programming Examples to Test the DSK Tools | p. 9 |
1.7 Support Programs/Files Considerations | p. 27 |
1.7.1 Initialization/Communication File | p. 27 |
1.7.2 Vector File | p. 30 |
1.7.3 Linker Command File | p. 32 |
1.8 Compiler/Assembler/Linker Shell | p. 33 |
1.8.1 Compiler | p. 33 |
1.8.2 Assembler | p. 34 |
1.8.3 Linker | p. 34 |
1.9 Assignments | p. 35 |
References | p. 36 |
2 Input and Output with the DSK | p. 39 |
2.1 Introduction | p. 39 |
2.2 TLV320AIC23 (AIC23) Onboard Stereo Codec for Input and Output | p. 40 |
2.3 Programming Examples Using C Code | p. 42 |
2.4 Assignments | p. 71 |
References | p. 72 |
3 Architecture and Instruction Set of the C6x Processor | p. 73 |
3.1 Introduction | p. 73 |
3.2 TMS320C6x Architecture | p. 75 |
3.3 Functional Units | p. 76 |
3.4 Fetch and Execute Packets | p. 79 |
3.5 Pipelining | p. 79 |
3.6 Registers | p. 81 |
3.7 Linear and Circular Addressing Modes | p. 82 |
3.7.1 Indirect Addressing | p. 82 |
3.7.2 Circular Addressing | p. 82 |
3.8 TMS320C6x Instruction Set | p. 84 |
3.8.1 Assembly Code Format | p. 84 |
3.8.2 Types of Instructions | p. 85 |
3.9 Assembler Directives | p. 86 |
3.10 Linear Assembly | p. 87 |
3.11 ASM Statement within C | p. 88 |
3.12 C-Callable Assembly Function | p. 89 |
3.13 Timers | p. 89 |
3.14 Interrupts | p. 89 |
3.14.1 Interrupt Control Registers | p. 90 |
3.14.2 Interrupt Acknowledgment | p. 91 |
3.15 Multichannel Buffered Serial Ports | p. 92 |
3.16 Direct Memory Access | p. 92 |
3.17 Memory Considerations | p. 93 |
3.17.1 Data Allocation | p. 93 |
3.17.2 Data Alignment | p. 94 |
3.17.3 Pragma Directives | p. 94 |
3.17.4 Memory Models | p. 95 |
3.18 Fixed- and Floating-Point Format | p. 95 |
3.18.1 Data Types | p. 95 |
3.18.2 Floating-Point Format | p. 96 |
3.18.3 Division | p. 97 |
3.19 Code Improvement | p. 97 |
3.19.1 Intrinsics | p. 97 |
3.19.2 Trip Directive for Loop Count | p. 98 |
3.19.3 Cross-Paths | p. 98 |
3.19.4 Software Pipelining | p. 98 |
3.20 Constraints | p. 99 |
3.20.1 Memory Constraints | p. 99 |
3.20.2 Cross-Path Constraints | p. 99 |
3.20.3 Load/Store Constraints | p. 100 |
3.20.4 Pipelining Effects with More Than One EP within an FP | p. 100 |
3.21 Programming Examples Using C, Assembly, and Linear Assembly | p. 101 |
3.22 Assignments | p. 115 |
References | p. 117 |
4 Finite Impulse Response Filters | p. 119 |
4.1 Introduction to the z-Transform | p. 119 |
4.1.1 Mapping from s-Plane to z-Plane | p. 122 |
4.1.2 Difference Equations | p. 123 |
4.2 Discrete Signals | p. 124 |
4.3 FIR Filters | p. 125 |
4.4 FIR Lattice Structure | p. 127 |
4.5 FIR Implementation Using Fourier Series | p. 131 |
4.6 Window Functions | p. 135 |
4.6.1 Hamming Window | p. 136 |
4.6.2 Hanning Window | p. 136 |
4.6.3 Blackman Window | p. 136 |
4.6.4 Kaiser Window | p. 137 |
4.6.5 Computer-Aided Approximation | p. 137 |
4.7 Programming Examples Using C and ASM Code | p. 137 |
4.8 Assignments | p. 173 |
References | p. 174 |
5 Infinite Impulse Response Filters | p. 177 |
5.1 Introduction | p. 177 |
5.2 IIR Filter Structures | p. 178 |
5.2.1 Direct Form I Structure | p. 178 |
5.2.2 Direct Form II Structure | p. 179 |
5.2.3 Direct Form II Transpose | p. 181 |
5.2.4 Cascade Structure | p. 182 |
5.2.5 Parallel Form Structure | p. 183 |
5.2.6 Lattice Structure | p. 185 |
5.3 Bilinear Transformation | p. 190 |
5.3.1 BLT Design Procedure | p. 191 |
5.4 Programming Examples Using C and ASM Code | p. 192 |
5.5 Assignments | p. 205 |
References | p. 206 |
6 Fast Fourier Transform | p. 208 |
6.1 Introduction | p. 208 |
6.2 Development of the FFT Algorithm with Radix-2 | p. 209 |
6.3 Decimation-in-Frequency FFT Algorithm with Radix-2 | p. 210 |
6.4 Decimation-in-Time FFT Algorithm with Radix-2 | p. 217 |
6.5 Bit Reversal for Unscrambling | p. 221 |
6.6 Development of the FFT Algorithm with Radix-4 | p. 221 |
6.7 Inverse Fast Fourier Transform | p. 224 |
6.8 Programming Examples | p. 225 |
6.8.1 Fast Convolution | p. 237 |
6.9 Assignments | p. 245 |
References | p. 247 |
7 Adaptive Filters | p. 249 |
7.1 Introduction | p. 249 |
7.2 Adaptive Structures | p. 251 |
7.3 Adaptive Linear Combiner | p. 254 |
7.4 Performance Function | p. 257 |
7.5 Searching for the Minimum | p. 259 |
7.6 Programming Examples for Noise Cancellation and System Identification | p. 262 |
References | p. 282 |
8 Code Optimization | p. 284 |
8.1 Introduction | p. 284 |
8.2 Optimization Steps | p. 285 |
8.2.1 Compiler Options | p. 285 |
8.2.2 Intrinsic C Functions | p. 286 |
8.3 Procedure for Code Optimization | p. 286 |
8.4 Programming Examples Using Code Optimization Techniques | p. 286 |
8.5 Software Pipelining for Code Optimization | p. 293 |
8.5.1 Procedure for Hand-Coded Software Pipelining | p. 293 |
8.5.2 Dependency Graph | p. 294 |
8.5.3 Scheduling Table | p. 295 |
8.6 Execution Cycles for Different Optimization Schemes | p. 302 |
References | p. 303 |
9 DSP/BIOS and RTDX Using MATLAB, Visual C++, Visual Basic, and LabVIEW | p. 304 |
9.1 Introduction to DSP/BIOS | p. 306 |
9.2 RTDX Using MATLAB to Provide Interface Between PC and DSK | p. 311 |
9.3 RTDX Using Visual C++ to Interface with DSK | p. 321 |
9.4 RTDX Using Visual Basic to Provide Interface Between PC and DSK | p. 332 |
9.5 RTDX Using LabVIEW to Provide Interface Between PC and DSK | p. 335 |
Acknowledgments | p. 342 |
References | p. 342 |
10 DSP Applications and Student Projects | p. 343 |
10.1 DTMF Detection Using Correlation, FFT, and Goertzel Algorithm | p. 343 |
10.1.1 Using a Correlation Scheme and Onboard LEDs for Verifying Detection | p. 345 |
10.1.2 Using RTDX with Visual C++ to Display Detected DTMF Signals on the PC | p. 348 |
10.1.3 Using FFT and Onboard LEDs for Verifying Detection | p. 350 |
10.1.4 Using Goertzel Algorithm | p. 350 |
10.2 Beat Detection Using Onboard LEDs | p. 352 |
10.3 FIR with RTDX Using Visual C++ for Transfer of Filter Coefficients | p. 355 |
10.4 Radix-4 FFT with Frequency Domain Filtering | p. 357 |
10.5 Radix-4 FFT with RTDX Using Visual C++ and MATLAB for Plotting | p. 357 |
10.6 Spectrum Display Through EMIF Using a Bank of 32 LEDs | p. 360 |
10.7 Spectrum Display Through EMIF Using LCDs | p. 364 |
10.8 Time-Frequency Analysis of Signals with Spectrogram | p. 368 |
10.8.1 Simulation Using MATLAB | p. 368 |
10.8.2 Spectrogram with RTDX Using MATLAB | p. 370 |
10.8.3 Spectrogram with RTDX Using Visual C++ | p. 372 |
10.9 Audio Effects (Echo and Reverb, Harmonics, and Distortion) | p. 373 |
10.10 Voice Detection and Reverse Playback | p. 375 |
10.11 Phase Shift Keying-BPSK Encoding and Decoding with PLL | p. 377 |
10.11.1 BPSK Single-Board Transmitter/Receiver Simulation | p. 377 |
10.11.2 BPSK Transmitter/Voice Encoder with Real-Time Input | p. 381 |
10.11.3 Phase-Locked Loop | p. 383 |
10.11.4 BPSK Transmitter and Receiver with PLL | p. 386 |
10.12 Binary Phase Shift Keying | p. 390 |
10.13 Modulation Schemes-PAM and PSK | p. 393 |
10.13.1 Pulse Amplitude Modulation | p. 393 |
10.13.2 Phase-Shift Keying | p. 396 |
10.14 Selectable IIR Filter and Scrambling Scheme Using Onboard Switches | p. 401 |
10.15 Convolutional Encoding and Viterbi Decoding | p. 404 |
10.16 Speech Synthesis Using Linear Prediction of Speech Signals | p. 414 |
10.17 Automatic Speaker Recognition | p. 418 |
10.18 [mu]-Law for Speech Companding | p. 422 |
10.19 Voice Scrambler Using DMA and User Switches | p. 423 |
10.20 SB-ADPCM Encoder/Decoder: Implementation of G.722 Audio Coding | p. 423 |
10.21 Encryption Using the Data Encryption Standard Algorithm | p. 425 |
10.22 Phase-Locked Loop | p. 429 |
10.23 Miscellaneous Projects | p. 430 |
10.23.1 Multirate Filter | p. 431 |
10.23.2 Acoustic Direction Tracker | p. 436 |
10.23.3 Neural Network for Signal Recognition | p. 437 |
10.23.4 Adaptive Temporal Attenuator | p. 441 |
10.23.5 FSK Modem | p. 442 |
10.23.6 Image Processing | p. 443 |
10.23.7 Filter Design and Implementation Using a Modified Prony's Method | p. 444 |
10.23.8 PID Controller | p. 444 |
10.23.9 Four-Channel Multiplexer for Fast Data Acquisition | p. 444 |
10.23.10 Video Line Rate Analysis | p. 444 |
Acknowledgments | p. 444 |
References | p. 445 |
Appendix A TMS320C6x Instruction Set | p. 450 |
A.1 Instructions for Fixed- and Floating-Point Operations | p. 450 |
A.2 Instructions for Floating-Point Operations | p. 450 |
References | p. 450 |
Appendix B Registers for Circular Addressing and Interrupts | p. 452 |
Reference | p. 452 |
Appendix C Fixed-Point Considerations | p. 455 |
C.1 Binary and Two's-Complement Representation | p. 455 |
C.2 Fractional Fixed-Point Representation | p. 458 |
C.3 Multiplication | p. 458 |
Reference | p. 461 |
Appendix D MATLAB Support Tools | p. 462 |
D.1 SPTool and FDATool for FIR Filter Design | p. 462 |
D.2 SPTool and FDATool for IIR Filter Design | p. 465 |
D.3 MATLAB for FIR Filter Design Using the Student Version | p. 468 |
D.4 MATLAB for IIR Filter Design Using the Student Version | p. 470 |
D.5 BLT Using MATLAB and Support Programs on CD | p. 471 |
D.6 FFT and IFFT | p. 477 |
References | p. 478 |
Appendix E Additional Support Tools | p. 479 |
E.1 Goldwave Shareware Utility as a Virtual Instrument | p. 479 |
E.2 Filter Design Using DigiFilter | p. 480 |
E.2.1 FIR Filter Design | p. 480 |
E.2.2 IIR Filter Design | p. 481 |
E.3 FIR Filter Design Using a Filter Development Package | p. 482 |
E.3.1 Kaiser Window | p. 482 |
E.3.2 Hamming Window | p. 484 |
E.4 Visual Application Builder and LabVIEW | p. 485 |
E.5 Alternative Input/Output | p. 485 |
References | p. 485 |
Appendix F Fast Hartley Transform | p. 486 |
References | p. 492 |
Appendix G Goertzel Algorithm | p. 493 |
G.1 Design Considerations | p. 493 |
References | p. 496 |
Appendix H TMS320C6416 DSK | p. 497 |
H.1 TMS320C64x Processor | p. 497 |
H.2 Programming Examples Using the C6416 DSK | p. 498 |
References | p. 502 |
Appendix I TMS320C6711 DSK | p. 503 |
Reference | p. 503 |
Index | p. 505 |