| Overview of the Hardware and Software Tools | p. 1 |
| Some DSP Chip History and Typical Applications | p. 2 |
| The TMS320C6701 and 6711 Floating-Point DSP's | p. 6 |
| The 'C6000 Central Processing Unit (CPU) | p. 6 |
| Memory Organization for the TMS320C6701 | p. 12 |
| Memory Organization for the TMS320C6711 | p. 13 |
| Direct Memory Access Controllers | p. 13 |
| Serial Ports | p. 14 |
| Other Internal Peripherals | p. 15 |
| Brief Description of the TMS320C6000 Instruction Set | p. 15 |
| Parallel Operations and Pipelining | p. 16 |
| The TMS320C6701 Evaluation Module (EVM) | p. 20 |
| The CS4231A Stereo Codec Interface | p. 22 |
| The TMS320C6711 DSP Starter Kit (DSK) | p. 24 |
| The Audio Interface Onboard the 'C6711 DSK | p. 25 |
| The PCM3003 Audio Daughter Card | p. 26 |
| Software Support for the EVM and DSK Boards and 'C6x DSP's | p. 28 |
| Software Support for the 'C6701 EVM | p. 28 |
| Software Support for the 'C6711 DSK | p. 30 |
| Code Composer Studio | p. 31 |
| Project Files and Building Programs | p. 31 |
| The Optimizing Compiler and Assembler | p. 31 |
| The Linker | p. 33 |
| Building Programs from Command Line Prompts | p. 33 |
| The Archiver | p. 34 |
| Additional Code Composer Studio Features | p. 34 |
| Other Software | p. 34 |
| Digital Filter Design Programs | p. 35 |
| Commercial Software | p. 35 |
| Introductory Experiments | p. 36 |
| Learning to Use the Hardware and Software Tools | p. 37 |
| Getting Started with a Simple Audio Loop Through Program | p. 37 |
| A Beginning C Program and Linker Command File | p. 37 |
| Creating a CCS Project for evmstart.c | p. 44 |
| Testing evmstart.out | p. 45 |
| More Details on the McBSP Serial Ports and Codecs | p. 46 |
| Basic McBSP Transmitter and Receiver Operation | p. 47 |
| Useful Functions in the C6x Peripheral Support Library | p. 48 |
| Example C Code for Reading and Writing the EVM Codec | p. 49 |
| The 'C6000 Timers | p. 51 |
| Method 1: Generating a Sine Wave by Polling DXR | p. 52 |
| Instructions for the Polling Experiment | p. 53 |
| Method 2: Generating a Sine Wave Using Interrupts | p. 54 |
| The CPU Interrupt Priorities and Sources | p. 55 |
| What Happens When an Interrupt Occurs | p. 56 |
| TI Extensions to Standard C Interrupt Service Routines | p. 59 |
| Using the Peripheral Support Library for Interrupts | p. 60 |
| Instructions for the Experiment of Generating Sine Waves by Using Interrupts | p. 62 |
| Method 3: Generating a Sine Wave by DMA From a Table | p. 64 |
| The DMA Control Registers | p. 65 |
| Major Steps for Setting Up a DMA Transfer | p. 65 |
| DMA Autoinitialization | p. 67 |
| Triggering DMA Transfers | p. 68 |
| Split-Channel Operation | p. 68 |
| Priorities | p. 70 |
| Peripheral Support Library Functions for DMA | p. 70 |
| Instructions for the Experiment of Generating Sine Waves by Using the DMA Controller | p. 71 |
| Digital Filters | p. 75 |
| Discrete-Time Convolution and Frequency Responses | p. 75 |
| Finite Duration Impulse Response (FIR) Filters | p. 76 |
| Block Diagram for Most Common Realization | p. 76 |
| Two Methods for Finding the Filter Coefficients to Achieve a Desired Frequency Response | p. 77 |
| Using Circular Buffers to Implement FIR Filters in C | p. 80 |
| Circular Buffers Using the 'C6000 Hardware | p. 82 |
| How the Circular Buffer is Implemented | p. 83 |
| Indirect Addressing Through Registers | p. 83 |
| Interfacing C and Assembly Functions | p. 84 |
| Responsibilities of the Calling and Called Function | p. 84 |
| Using Assembly Functions with C | p. 86 |
| Linear Assembly Code and the Assembly Optimizer | p. 87 |
| A Linear Assembly Convolution Function that Uses a Circular Buffer and Can be Called from C | p. 88 |
| Infinite Duration Impulse Response (IIR) Filters | p. 96 |
| Realizations for IIR Filters | p. 96 |
| A Program for Designing IIR Filters | p. 100 |
| Two Methods for Measuring a Phase Response | p. 102 |
| Laboratory Experiments for Digital Filters | p. 103 |
| Laboratory Experiments for FIR Filters Entirely in C | p. 103 |
| Laboratory Experiments for FIR Filters Using C and Assembly | p. 105 |
| Laboratory Experiments for IIR Filters | p. 105 |
| Additional References | p. 106 |
| The FFT and Power Spectrum Estimation | p. 109 |
| The Discrete-Time Fourier Transform | p. 109 |
| Data Window Functions | p. 110 |
| The Discrete Fourier Transform and its Inverse | p. 111 |
| The Fast Fourier Transform | p. 111 |
| Using the FFT to Estimate a Power Spectrum | p. 119 |
| Laboratory Experiments | p. 120 |
| FFT Experiments | p. 120 |
| Experiments for Power Spectrum Estimation | p. 121 |
| Additional References | p. 124 |
| Amplitude Modulation | p. 125 |
| Theoretical Description of Amplitude Modulation | p. 125 |
| Mathematical Formula for an AM Signal | p. 125 |
| Example for Single Tone Modulation | p. 126 |
| The Spectrum of an AM Signal | p. 127 |
| Demodulating an AM Signal by Envelope Detection | p. 127 |
| Square-Law Demodulation of AM Signals | p. 128 |
| Hilbert Transforms and the Complex Envelope | p. 129 |
| Laboratory Experiments for AM Modulation and Demodulation | p. 131 |
| Making an AM Modulator | p. 132 |
| How to Capture EVM Output Samples with CCS for Plotting | p. 133 |
| Making a Square-Law Envelope Detector | p. 134 |
| Making an Envelope Detector Using the Hilbert Transform | p. 135 |
| Additional References | p. 136 |
| DSBSC Amplitude Modulation and Coherent Detection | p. 137 |
| Mathematical Form for a DSBSC-AM Signal | p. 137 |
| The Ideal Coherent Receiver | p. 138 |
| The Costas Loop as a Practical Approach to Coherent Demodulation | p. 140 |
| Exercises and Experiments for the Costas Loop | p. 142 |
| Theoretical Design Exercises | p. 143 |
| Hardware Experiments | p. 144 |
| Additional References | p. 145 |
| Single-Sideband Modulation and Frequency Translation | p. 147 |
| Single-Sideband Modulators | p. 147 |
| Coherent Demodulation of SSB Signals | p. 149 |
| Frequency Translation | p. 150 |
| Laboratory Experiments | p. 151 |
| Making an SSB Modulator | p. 152 |
| Coherent Demodulation of an SSB Signal | p. 152 |
| Additional References | p. 154 |
| Frequency Modulation | p. 155 |
| The FM Signal and Some of its Properties | p. 155 |
| Definition of Instantaneous Frequency and the FM Signal | p. 155 |
| Single Tone FM Modulation | p. 156 |
| Narrow Band FM Modulation | p. 157 |
| The Bandwidth of an FM Signal | p. 158 |
| FM Demodulation by a Frequency Discriminator | p. 158 |
| An FM Discriminator Using the Pre-Envelope | p. 159 |
| A Discriminator Using the Complex Envelope | p. 160 |
| Using a Phase-Locked Loop for FM Demodulation | p. 161 |
| Laboratory Experiments for Frequency Modulation | p. 164 |
| Experimentally Measuring the Spectrum of an FM Signal | p. 164 |
| FM Demodulation Using a Frequency Discriminator | p. 165 |
| Using a Phase-Locked Loop for FM Demodulation | p. 165 |
| Additional References | p. 166 |
| Pseudo-Random Binary Sequences and Data Scramblers | p. 167 |
| Using Shift Registers to Generate Pseudo-Random Binary Sequences | p. 168 |
| The Linear Feedback Shift Register Sequence Generator | p. 168 |
| The Connection Polynomial and Sequence Period | p. 169 |
| Properties of Maximal Length Sequences | p. 170 |
| Self Synchronizing Data Scramblers | p. 171 |
| The Scrambler | p. 171 |
| The Descrambler | p. 172 |
| Theoretical and Simulation Exercises | p. 173 |
| Exercises for a Shift Register Sequence Generator with a Primitive Connection Polynomial | p. 173 |
| Exercises for a Shift Register Sequence Generator with an Irreducible but not Primitive Connection Polynomial | p. 174 |
| Exercises for a Shift Register Sequence Generator with a Reducible Connection Polynomial | p. 174 |
| Additional References | p. 175 |
| The RS-232C Protocol and a Bit-Error Rate Tester | p. 177 |
| The EIA RS-232C Serial Interface Protocol | p. 177 |
| Error Rate for Binary Signaling on the Gaussian Noise Channel | p. 179 |
| The Navtel Datatest 3 Bit Error Rate Tester | p. 181 |
| Bit-Error Rate Test Experiment | p. 181 |
| Additional References | p. 186 |
| Digital Data Transmission by Pulse Amplitude Modulation | p. 187 |
| Description of a Baseband Pulse Amplitude Modulation System | p. 187 |
| Baseband Shaping and Intersymbol Interference | p. 190 |
| The Nyquist Criterion for No ISI | p. 190 |
| Raised Cosine Baseband Shaping Filters | p. 191 |
| Splitting the Shaping Between the Transmit and Receive Filters | p. 192 |
| Eye Diagrams | p. 192 |
| Implementing the Transmit Filter by an Interpolation Filter Bank | p. 194 |
| Symbol Error Probability with Additive Gaussian Noise | p. 194 |
| Symbol Clock Recovery | p. 196 |
| Simulation and Theoretical Exercises for PAM | p. 198 |
| Generating Four-Level Pseudo-Random PAM Symbols | p. 198 |
| Eye Diagram for a PAM Signal Using a Raised Cosine Shaping Filter | p. 199 |
| Eye Diagram for a PAM Signal Using a Square-Root of Raised Cosine Shaping Filter | p. 199 |
| Theoretical Error Probability for a PAM System | p. 200 |
| Hardware Exercises for PAM | p. 200 |
| Generating a PAM Signal and Eye Diagram | p. 200 |
| Testing the Square-Law Symbol Clock Frequency Generator | p. 201 |
| Optional Team Exercise | p. 202 |
| Additional References | p. 203 |
| Variable Phase Interpolation | p. 205 |
| Continuously Variable Phase Interpolation | p. 205 |
| Computing the Least-Squares Fits | p. 208 |
| Quantized Variable Phase Interpolation | p. 208 |
| Closing the Tracking Loop | p. 209 |
| Changing the Sampling Rate by a Rational Factor | p. 211 |
| Experiments for Variable Phase Interpolation | p. 213 |
| Open Loop Phase Shifting Experiments | p. 213 |
| Making a Symbol Clock Tracking Loop | p. 213 |
| Additional References | p. 214 |
| Fundamentals of Quadrature Amplitude Modulation | p. 215 |
| A Basic QAM Transmitter | p. 215 |
| Two Constellation Examples | p. 218 |
| The 4x4 16-Point Constellation | p. 218 |
| A 4-Point Four Phase Constellation | p. 221 |
| A Modulator Structure Using Passband Shaping Filters | p. 221 |
| Ideal QAM Demodulation | p. 223 |
| QAM Modulator Experiments | p. 224 |
| Steps to Follow in Making a Transmitter | p. 225 |
| Testing Your Transmitter | p. 226 |
| Optional Exercise - Testing Your Transmitter by Sending to a Commercial Modem | p. 227 |
| Additional References | p. 230 |
| QAM Receiver I - Clock Recovery and Other Front-End Subsystems | p. 231 |
| Overview of a QAM Receiver | p. 231 |
| Details About the Receiver Front-End Subsystems | p. 233 |
| Automatic Gain Control | p. 233 |
| The Carrier Detect Subsystem | p. 234 |
| Symbol Clock Recovery | p. 234 |
| Experiments for the QAM Receiver Front-End | p. 241 |
| Additional References | p. 242 |
| QAM Receiver II - Equalizer and Carrier Recovery System | p. 243 |
| The Complex Cross-Coupled Passband Adaptive Equalizer | p. 243 |
| The LMS Method for Adjusting the Equalizer Tap Values | p. 244 |
| Theoretical Behavior of the LMS Algorithm | p. 249 |
| Adding Tap Leakage to the LMS Algorithm | p. 250 |
| The Phase-Splitting Fractionally Spaced Equalizer | p. 251 |
| Decision Directed Carrier Tracking | p. 253 |
| Blind Equalization | p. 255 |
| Blind Equalization with the Complex Cross-Coupled Equalizer | p. 256 |
| Blind Equalization with the Phase-Splitting Equalizer | p. 257 |
| Complex Cross-Coupled Equalizer and Carrier Tracking Experiments | p. 258 |
| Implementing the Slicer | p. 258 |
| Making a Demodulator and Carrier Tracking Loop | p. 260 |
| Making a Complex Cross-Coupled Adaptive Equalizer | p. 261 |
| Bit-Error Rate Test | p. 261 |
| Optional Experiment - Receiving the 16-Point V.22bis Constellation | p. 261 |
| Optional Experiment - Ideal Reference Training | p. 262 |
| Optional Phase-Splitting Fractionally Spaced Equalizer Experiment | p. 262 |
| Optional Blind Equalization Experiment | p. 263 |
| Additional References | p. 264 |
| Echo Cancellation for Full-Duplex Modems | p. 265 |
| The Echo Sources in a Dialed Telephone Line Circuit | p. 265 |
| The Data-Driven, Nyquist, In-Band Echo Canceler | p. 267 |
| General Description | p. 267 |
| The Near-End Echo Canceler | p. 269 |
| The Far-End Echo Canceler | p. 271 |
| Far-End Frequency Offset Compensation | p. 272 |
| Echo Canceler Experiments | p. 273 |
| Making a Near-End Echo Canceler | p. 273 |
| Making a Far-End Echo Canceler with Frequency Offset Correction | p. 273 |
| Additional References | p. 274 |
| Suggestions for Additional Experiments | p. 275 |
| Elementary Modem Handshake Sequence | p. 275 |
| Make an ITU-T V.21 Frequency Shift Keyed (FSK) Modem | p. 275 |
| Fast Equalizer Training Using Periodic Sequences | p. 276 |
| Trellis Coded Modulation | p. 277 |
| V.34 Constellation Shaping by Shell Mapping | p. 277 |
| Nonlinear Precoding for V.34 | p. 278 |
| Multi-Tone Modulation for ADSL and Wireless Systems | p. 278 |
| Speech Codecs | p. 278 |
| Generating Gaussian Random Numbers | p. 279 |
| A TTL/RS-232C Interface for McBSP1 | p. 281 |
| Equipment List for Each Station | p. 283 |
| References | p. 285 |
| List of Manuals | p. 285 |
| Selected Reference Books and Papers | p. 286 |
| DSP Laboratory Books Using DSP Hardware | p. 286 |
| DSP Laboratory Books Using Software Simulation | p. 286 |
| Books and Papers on Digital Signal Processing | p. 287 |
| Books and Papers on Communications | p. 288 |
| Books and Papers on Error Correcting Codes | p. 291 |
| Interesting Web Sites | p. 292 |
| Index | p. 293 |
| Table of Contents provided by Ingram. All Rights Reserved. |