Preface 1 Introduction to Real-Time Digital Signal Procesing 1.1 Basic Elements of Real-Tiem DSP Systems 1.2 Input and Output Channels 1.2.1 Input Signal Conditioning 1.2.2 A/D Conversion 1.2.3 Sampling 1.2.4 Quantizing and Encoding 1.2.5 D/A Conversion 1.2.6 Imput/Output Devices 1.3 DSP Hardware 1.3.1 DSP Hardware Options 1.3.2 Fixed-and Floating -Point Devices 1.3.3 Real-Time Constraints 1.4 SDP System Decign 1.4.1 Algorithm Development 1.4.2 Selection of DSP Chips 1.4.3 Software Development 1.4.4 High-Level Software Development Tools 1.5 Experiments Using Code Composer Studio 1.5.1 Experiment IA-Using the CCS and the TMS320C55x Simulator 1.5.2 Experiment IB-Debugging Program on the CCS 1.5.3 Experiment IC-File Input and Output 1.5.4 Experiment ID-Code Efficiency Analysis 1.5.5 Experiment IE-General Extension Language References Exercises 2 Introduction to TMS320C55x Digital Signal Processor 2.1 Introduction 2.2 TMS320C55x Architecture 2.2.1 TMS320C55x Architecture Overview 2.2.2 TMS320C55x Buses 2.2.3 TMS320C55x Memory Map 2.3 Software Devielpment Tools 2.3.1 C Compiler 2.3.2 Assembler 2.3.3 Linker 2.3.4 Code Composer Studio 2.3.5 Assembly Statement Syntax 2.4 TMS320C55x Addressing Modes 2.4.1 Direct Addressing Mode 2.4.2 Indirect Addressing Mode 2.4.3 Absolute Addressing Mode 2.4.4 Memory-Mapped Register Addressing Mode 2.4.5 Register Bits Addressing Mode 2.4.6 Circular Addressing Mode 2.5 Pipeling and Parallelism 2.5.1 TMS320C55x Pipeline 2.5.2 Parallel Execution 2.6 TMS320C55x Instruction Set 2.6.1 Arithmetic Instruction 2.6.2 Logic and Bits Manipulation Imstructions 2.6.3 Move Instruction 2.6.4 Proram Flow Control Instructions 2.7 Mixed C and Assembly Language Programming 2.8 Experiments-Assembly Programming Basics 2.8.1 Experiment 2A-Interfacing C with Assembly Code 2.8.2 Experiment 2B-Addressing Mode Experiments References Exercises 3 SDP Fundamentals and Implementation Considerations 3.1 Digital Signals and Systems 3.1.1 Elemethary Digital Signals 3.1.2 Block Diagram Representation of Digital Systems 3.1.3 Impulse Response of Digital Systems 3.2 Introduction to Digital Filters 3.2.1 FIR Filters and Power Estimators 3.2.2 Response of Linear Systems 3.2.3 IIR Filters 3.3 Introduction to Random Variables 3.3.1 Reveiw of Probability and Random Variables 3.3.2 Operations on Random Variables 3.4 Fixed-Point Representation and Arithmetic 3.5 Quantization Errors 3.5.1 Input Quantization Noise 3.5.2 Coefficient Quantization Noise 3.5.3 Roundoff Noise 3.6 Overflow and Solutions 3.6.1 Saturation Arithmetic 3.6.2 Overflow Handling 3.6.3 Scaling of Signals 3.7 Implementation Procedure for Real-Time Applications 3.8 Experiments of Fixed-Point Implementations 3.8.1 Experiment 3S-Quantizatuion of Sinusoidal Signals 3.8.2 Experiment 3B-Quantization of Speech Signals 3.8.3 Experiment 3C-Overflow and Saturation Arithmetic 3.8.4 Experiment 3D-Quantization of Coefficients 3.8.5 Experiment 3E-Synthesizing Sine Function References Exercises 4 Frequency Analysis 4.1 Fourier Series and Transform 4.1.1 Fourier Series 4.1.2 Fourier Transform 4.2 The z-Transforms 4.2.1 Definitions and Basic Properties 4.2.2 Inverse z-Transform 4.3 System Concepts 4.3.1 Transfer Functions 4.3.2 Digital Filters 4.3.3 Poles and Zeros 4.3.4 Frequency Resposes 4.4 Discrete Fourier Transform 4.4.1 Discrete-Time Fourier Series and Transform 4.4.2 Aliasing and Folding 4.4.3 Discrete Fourier Transform 4.4.4 Fast Fourier Transform 4.5 Applicatins 4.5.1 Design of Simple Notch Filters 4.5.2 Analysis of Room Acoustics 4.6 Experiments Using the TMS320C55x 4.6.1 Experiment 4A-Twieddle Facotr Generation 4.6.2 Experiment 4B-Complex Data Operation 4.6.3 Experiment 4C-Implementation of DFT 4.6.4 Experiment 4D-Experiment Using Assembly Routines References Exercises 5 Design and Implementation of FIR Filters 5.1 Introduction to Degital Filters 5.1.1 Filter Characteristics 5.1.2 Filter Types 5.1.3 Filter Specifications 5.2 FIR Filtering 5.2.1 Linear Convolution 5.2.2 Some Simple FIR Filters 5.2.3 Linear Phase FIR Filters 5.2.4 Realization of FIR Filters 5.3 Design of FIR Filters 5.3.1 Filte Design Procedure 5.3.2 Fourier Series Method 5.3.3 Gibbs Phenomenon 5.3.4 Windows Functions 5.3.5 Frequency Sampling Method 5.4 Design of FIR Filters Using MATLAB 5.5 Implementation Considerations 5.5.1 Software Implementations 5.5.2 Quantization Effects in FIR Filters 5.6 Experiments Using the TML320C55x 5.6.1 Experiment 5A-Implementation of Block FIR Filter 5.6.2 Experiment 5B-Implementation of Symmetric FIR Filter 5.6.3 Experiment 5C-Implementation of FIR Filter Using Dual-MAC References Exercises 6 Design and Implementation of IIR Filters 6.1 Laplace Transform 6.1.1 Introduction to the Laplace Transform 6.1.2 Relationships between the Laplace and z-Transforms 6.1.3 Mapping Properties 6.2 Analog Filters 6.2.1 Introduction to Analog Filters 6.2.2 Characteristics of Analog Filters 6.2.3 Frequency Transforms 6.3 Design of IIR Filters 6.3.1 Review of IIR Filters 6.3.2 Impulse-Invariant Method 6.3.3 Bilinear Transform 6.3.4 Filter Design Using Bkinear Transform 6.4 Realization of IIR Filteras 6.4.1 Direct Forms 6.4.2 Cascade Form 6.4.3 Parallel Form 6.4.4 Realization Using MATLAB 6.5 Design of IIR Filters Using MATLAB 6.6 Implementation Consiserations 6.6.1 Stability 6.6.2 Finite-Precision Effects and Solutions 6.6.3 Software Implementations 6.6.4 Practical Applications 6.7 Software Developments and Experiments Using the TMS320C55x 6.7.1 Design of IIF Filter 6.7.2 Experiment 6A-Floating-Point C Implementation 6.7.3 Experiment 6B-Fixed-Point C Implementation Using Intrinsics 6.7.4 Experiment 6C-Fixed-Point C Programmig Considerations 6.7.5 Experiment 6D-Assembly Language Implementations References Exercises 7 Fast Fourier Transform and Its Applications 7.1 Discrete Fourier Transform 7.1.1 Definitions 7.1.2 Important Properties of DFT 7.1.3 Circular Convolution 7.2 Fast Fourier Transforms 7.2.1 Decimation-in-Time 7.2.2 Decimation-in-Frequency 7.2.3 Inverse Fast Fourier Transform 7.2.4 AMTLAB Implementations 7.3 Applications 7.3.1 Spectrum Estimation and Analysis 7.3.2 Spectral Leakage and Resolution 7.3.3 Power Density Spectrum 7.3.4 Fast Convolution 7.3.5 Spectrogram 7.4 Implementation Considerations 7.4.1 Computational Issues 7.4.2 Finite-Precistion Effects 7.5 Experiments Using the TMS320C55x 7.5.1 Experiment 7A-Radix-2 Complex FFT 7.5.2 Experiment 7B-Radix-2 Complex FFT Using Assembly Language 7.5.3 Experiment 7C-FFT and IFFT 7.5.4 Experiment 7D-Fast Convolution References Exercises 8 Adaptive Filtering 8.1 Introduction to Random Processes 8.1.1 Correlation Functions 8.1.2 Frequency-Domain Representations 8.2 Adaptive Filters 8.2.1 Introduction to Adaptive Filtering 8.2.2 Performance Function 8.2.3 Method of Steepest Descent 8.2.4 The LMS Alogrithm 8.3 Performance Analysis 8.3.1 Stability Constraint 8.3.2 Covergence Speed 8.3.3 Excess Mean0Square Error 8.4 Modified LMS Algorithms 8.4.1 Normalized LMS Algorithm 8.4.2 Leaky LMS Algorithm 8.5 Applications 8.5.1 Adaptive System Identification 8.5.2 Adaptive Linear Prediction 8.5.3 Adaptive Noies Cancellation 8.5.4 Adaptive Notch Filters 8.5.5 Adaptive Channel Equalization 8.6 Implementation Considerations 8.6.1 Computational Issues 8.6.2 Finite-Precision Effects 8.7 Experiments Using the TMS320C55x 8.7.1 Experiment 8A-Adaptive System Identification 8.7.2 Experiment 8B-Adaptive Predictor Using the Leaky LMS Algorithm References Exercises 9 Practical DSP Applications in Communications 9.1 Sinewave Generators and Applications 9.1.1 Lookup-Table Method 9.1.2 Linear Chirp Signal 9.1.3 DTMF Tone Generator 9.2 Noise Generators and Applications 9.2.1 Linear Congruential Sequence Generator 9.2.2 Pseudo-Random Binary Sequence Generator 9.2.3 Comfort Noise in Communication Systems 9.2.4 Off-Line System Modeling 9.3 DTMF Tone Detectiong 9.3.1 Specifications 9.3.2 Goertzel Algorithm 9.3.3 Implementation Considerations 9.4 Adaptive Echo Cancellation 9.4.1 Line Echoes 9.4.2 Adaptive Echo Canceler 9.4.3 Practical Considerations 9.4.4 Double-Tald Effects and Solutions 9.4.5 Residual Echo Cancellation 9.5 Introduction 9.5.1 Acoustic Echo Canceler 9.5.2 Implementation Considerations 9.5.3 Speech Enhancement Techniques 9.6 Noise Reduction Techniques 9.6.1 Spectral Subtraction Techniques 9.6.2 Implementation Considerations 9.6.3 Projects Using the TMS320C55x 9.7 Project Suggestions 9.7.1 Project Suggestions 9.7.2 A Project Example-Wireless Application References Appendix A Some Useful Formulas A.1 Trigonometric Identities A.2 Geometric Series A.3 Complex Varables A.4 Impulse Functions A.5 Vector Concepts A.6 Units of Power Reference Appendix B Introduction of MATLAB for DSP Applications B.1 Elementary Operations B.1.1 Initializing Variables and Vectors B.1.2 Graphics B.1.3 Basic Operators B.1.4 Files B.2 Genration and Processing of Digital Signals B.3 DSP Applications B.4 User-Written Functions B.5 Summary of Useful MATLAB Functions References Appendix C Introduction of C Programming of DSP Applications C.1 A Simple C Program C.1.1 Variables and Assignment Operators C.1.2 Numeric Data Types and Conversion C.1.3 Arrays C.2 Arithmetic and Bitwise Operators C.2.1 Arithmetic Operators C.2.2 Bitwise Operators C.3 An FIR Filter Program C.3.1 Command-Line Arguments C.3.2 Pointers C.3.3 C Functions C.3.4 Files and I/O Operations C.4 Control Structures and Loops C.4.1 Control Structures C.4.2 Logical Operators C.4.3 Loops C.5Data Types Used by the TMS320C55x Appendix D About the Software Index