Escolar Documentos
Profissional Documentos
Cultura Documentos
Second Edition
Real-Time Digital Signal Processing: Implementations and Applications, 2nd Edition S.M. Kuo, B.H. Lee, and W. Tian 2006 John Wiley & Sons, Ltd ISBN: 0-470-01495-4
Sen M Kuo
Northern Illinois University, USA
Bob H Lee
Ingenient Technologies Inc., USA
Wenshun Tian
UTStarcom Inc., USA
Copyright
2006
John Wiley & Sons Ltd, The Atrium, Southern Gate, Chichester, West Sussex PO19 8SQ, England Telephone (+44) 1243 779777
Email (for orders and customer service enquiries): cs-books@wiley.co.uk Visit our Home Page on www.wileyeurope.com All Rights Reserved. No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning or otherwise, except under the terms of the Copyright, Designs and Patents Act 1988 or under the terms of a licence issued by the Copyright Licensing Agency Ltd, 90 Tottenham Court Road, London W1T 4LP, UK, without the permission in writing of the Publisher. Requests to the Publisher should be addressed to the Permissions Department, John Wiley & Sons Ltd, The Atrium, Southern Gate, Chichester, West Sussex PO19 8SQ, England, or emailed to permreq@wiley.co.uk, or faxed to (+44) 1243 770620. Designations used by companies to distinguish their products are often claimed as trademarks. All brand names and product names used in this book are trade names, service marks, trademarks or registered trademarks of their respective owners. The Publisher is not associated with any product or vendor mentioned in this book. This publication is designed to provide accurate and authoritative information in regard to the subject matter covered. It is sold on the understanding that the Publisher is not engaged in rendering professional services. If professional advice or other expert assistance is required, the services of a competent professional should be sought. Other Wiley Editorial Ofces John Wiley & Sons Inc., 111 River Street, Hoboken, NJ 07030, USA Jossey-Bass, 989 Market Street, San Francisco, CA 94103-1741, USA Wiley-VCH Verlag GmbH, Boschstr. 12, D-69469 Weinheim, Germany John Wiley & Sons Australia Ltd, 42 McDougall Street, Milton, Queensland 4064, Australia John Wiley & Sons (Asia) Pte Ltd, 2 Clementi Loop #02-01, Jin Xing Distripark, Singapore 129809 John Wiley & Sons Canada Ltd, 22 Worcester Road, Etobicoke, Ontario, Canada M9W 1L1 Wiley also publishes its books in a variety of electronic formats. Some content that appears in print may not be available in electronic books.
Library of Congress Cataloging-in-Publication Data Kuo, Sen M. (Sen-Maw) Real-time digital signal processing : implementations, applications and experiments with the TMS320C55X / Sen M Kuo, Bob H Lee, Wenshun Tian. 2nd ed. p. cm. Includes bibliographical references and index. ISBN 0-470-01495-4 (cloth) 1. Signal processingDigital techniques. 2. Texas Instruments TMS320 series microprocessors. I. Lee, Bob H. II. Tian, Wenshun. III. Title. TK5102 .9 .K86 2006 621.382 2-dc22 British Library Cataloguing in Publication Data A catalogue record for this book is available from the British Library ISBN-13 978-0-470-01495-0 ISBN-10 0-470-01495-4 Typeset in 9/11pt Times by TechBooks, New Delhi, India Printed and bound in Great Britain by Antony Rowe Ltd, Chippenham, Wiltshire This book is printed on acid-free paper responsibly manufactured from sustainable forestry in which at least two trees are planted for each one used for paper production. 2005036660
Contents
Preface 1 Introduction to Real-Time Digital Signal Processing
1.1 1.2 Basic Elements of Real-Time DSP Systems Analog Interface 1.2.1 Sampling 1.2.2 Quantization and Encoding 1.2.3 Smoothing Filters 1.2.4 Data Converters 1.3 DSP Hardware 1.3.1 DSP Hardware Options 1.3.2 DSP Processors 1.3.3 Fixed- and Floating-Point Processors 1.3.4 Real-Time Constraints 1.4 DSP System Design 1.4.1 Algorithm Development 1.4.2 Selection of DSP Processors 1.4.3 Software Development 1.4.4 High-Level Software Development Tools 1.5 Introduction to DSP Development Tools 1.5.1 C Compiler 1.5.2 Assembler 1.5.3 Linker 1.5.4 Other Development Tools 1.6 Experiments and Program Examples 1.6.1 Experiments of Using CCS and DSK 1.6.2 Debugging Program Using CCS and DSK 1.6.3 File I/O Using Probe Point 1.6.4 File I/O Using C File System Functions 1.6.5 Code Efciency Analysis Using Proler 1.6.6 Real-Time Experiments Using DSK 1.6.7 Sampling Theory 1.6.8 Quantization in ADCs References Exercises
xv 1
2 3 3 7 8 9 10 10 13 15 16 17 18 19 20 21 22 22 23 24 25 25 26 29 32 35 37 39 42 44 45 45
vi
CONTENTS
49
49 50 50 53 53 55 55 58 60 60 61 62 65 65 65 66 68 70 70 71 72 73 73 74 76 76 77 78 78 82 82 84 86 86 87 89 90 93 93 94 97 103 105 106 109 111 115 115
CONTENTS
vii
121
121 121 123 126 126 130 132 135 138 141 142 142 144 147 147 151 151 153 153 154 157 157 158 158 159 159 160 161 162 164 167 175 180 180
185
185 185 187 189 191 194 196 197 198 201
4.2
viii
CONTENTS 4.2.4 Design of FIR Filters Using MATLAB 4.2.5 Design of FIR Filters Using FDATool 4.3 Implementation Considerations 4.3.1 Quantization Effects in FIR Filters 4.3.2 MATLAB Implementations 4.3.3 Floating-Point C Implementations 4.3.4 Fixed-Point C Implementations 4.4 Applications: Interpolation and Decimation Filters 4.4.1 Interpolation 4.4.2 Decimation 4.4.3 Sampling-Rate Conversion 4.4.4 MATLAB Implementations 4.5 Experiments and Program Examples 4.5.1 Implementation of FIR Filters Using Fixed-Point C 4.5.2 Implementation of FIR Filter Using C55x Assembly Language 4.5.3 Optimization for Symmetric FIR Filters 4.5.4 Optimization Using Dual MAC Architecture 4.5.5 Implementation of Decimation 4.5.6 Implementation of Interpolation 4.5.7 Sample Rate Conversion 4.5.8 Real-Time Sample Rate Conversion Using DSP/BIOS and DSK References Exercises 206 207 213 213 216 218 219 220 220 221 221 224 225 226 226 228 230 232 233 234 235 245 245
249
249 249 251 252 254 255 256 257 258 258 260 262 263 264 264 267 268 271 271 273 275
5.2
5.3
5.4
5.5
CONTENTS Practical Applications 5.6.1 Recursive Resonators 5.6.2 Recursive Quadrature Oscillators 5.6.3 Parametric Equalizers 5.7 Experiments and Program Examples 5.7.1 Floating-Point Direct-Form I IIR Filter 5.7.2 Fixed-Point Direct-Form I IIR Filter 5.7.3 Fixed-Point Direct-Form II Cascade IIR Filter 5.7.4 Implementation Using DSP Intrinsics 5.7.5 Implementation Using Assembly Language 5.7.6 Real-Time Experiments Using DSP/BIOS 5.7.7 Implementation of Parametric Equalizer 5.7.8 Real-Time Two-Band Equalizer Using DSP/BIOS References Exercises 5.6
ix 279 279 282 284 285 285 286 287 289 290 293 296 297 299 299
303
303 303 304 305 305 307 310 313 314 316 317 317 317 318 318 320 322 322 323 325 328 332 332 332 336 338 339 343 345 347 347 348
CONTENTS
7 Adaptive Filtering
Introduction to Random Processes Adaptive Filters 7.2.1 Introduction to Adaptive Filtering 7.2.2 Performance Function 7.2.3 Method of Steepest Descent 7.2.4 The LMS Algorithm 7.2.5 Modied LMS Algorithms 7.3 Performance Analysis 7.3.1 Stability Constraint 7.3.2 Convergence Speed 7.3.3 Excess Mean-Square Error 7.3.4 Normalized LMS Algorithm 7.4 Implementation Considerations 7.4.1 Computational Issues 7.4.2 Finite-Precision Effects 7.4.3 MATLAB Implementations 7.5 Practical Applications 7.5.1 Adaptive System Identication 7.5.2 Adaptive Linear Prediction 7.5.3 Adaptive Noise Cancelation 7.5.4 Adaptive Notch Filters 7.5.5 Adaptive Channel Equalization 7.6 Experiments and Program Examples 7.6.1 Floating-Point C Implementation 7.6.2 Fixed-Point C Implementation of Leaky LMS Algorithm 7.6.3 ETSI Implementation of NLMS Algorithm 7.6.4 Assembly Language Implementation of Delayed LMS Algorithm 7.6.5 Adaptive System Identication 7.6.6 Adaptive Prediction and Noise Cancelation 7.6.7 Adaptive Channel Equalizer 7.6.8 Real-Time Adaptive Line Enhancer Using DSK References Exercises 7.1 7.2
351
351 354 354 355 358 360 361 362 362 363 363 364 364 365 365 366 368 368 369 372 374 375 377 377 379 380 383 387 388 392 394 396 397
401
401 401 404 405 405 407 409 409 409 410 411 412 412 413
8.2
8.3
8.4
CONTENTS 8.4.3 Wail Siren Generator Using C5510 DSK 8.4.4 DTMF Generator Using C5510 DSK 8.4.5 DTMF Generator Using MATLAB Graphical User Interface References Exercises
421
421 422 422 423 426 428 431 432 432 434 435 439 441 442
443
443 444 445 446 447 447 448 450 453 453 453 454 454 456 457 459 459 460 461 461 464 468 469 472 472
xii
CONTENTS
11 Speech-Coding Techniques
11.1 11.2 Introduction to Speech-Coding Overview of CELP Vocoders 11.2.1 Synthesis Filter 11.2.2 Long-Term Prediction Filter 11.2.3 Perceptual Based Minimization Procedure 11.2.4 Excitation Signal 11.2.5 Algebraic CELP 11.3 Overview of Some Popular CODECs 11.3.1 Overview of G.723.1 11.3.2 Overview of G.729 11.3.3 Overview of GSM AMR 11.4 Voice over Internet Protocol Applications 11.4.1 Overview of VoIP 11.4.2 Real-Time Transport Protocol and Payload Type 11.4.3 Example of Packing G.729 11.4.4 RTP Data Analysis Using Ethereal Trace 11.4.5 Factors Affecting the Overall Voice Quality 11.5 Experiments and Program Examples 11.5.1 Calculating LPC Coefcients Using Floating-Point C 11.5.2 Calculating LPC Coefcients Using C55x Intrinsics 11.5.3 MATLAB Implementation of Formant Perceptual Weighting Filter 11.5.4 Implementation of Perceptual Weighting Filter Using C55x Intrinsics References Exercises
475
475 476 477 481 481 482 483 484 484 488 490 492 492 493 496 496 497 497 497 499 504 506 507 508
509
509 510 511 511 513 515 515 515 516 516 518 518 519 519 519 522 522 522 526 529 529
CONTENTS
xiii
531
531 531 533 536 538 539 540 541 542 544 544 544 547 549 549 553 553
555
555 556 558 562 563 564 564 564 566 569 569 570 571 572 573 575 576 577
579
579 579 580 581 584 584 585
15.2 15.3
xiv
CONTENTS 15.3.3 YIQ Color Space 15.3.4 HSV Color Space 15.4 YCb Cr Subsampled Color Spaces 15.5 Color Balance and Correction 15.5.1 Color Balance 15.5.2 Color Adjustment 15.5.3 Gamma Correction 15.6 Image Histogram 15.7 Image Filtering 15.8 Image Filtering Using Fast Convolution 15.9 Practical Applications 15.9.1 JPEG Standard 15.9.2 2-D Discrete Cosine Transform 15.10 Experiments and Program Examples 15.10.1 YCb Cr to RGB Conversion 15.10.2 Using CCS Link with DSK and Simulator 15.10.3 White Balance 15.10.4 Gamma Correction and Contrast Adjustment 15.10.5 Histogram and Histogram Equalization 15.10.6 2-D Image Filtering 15.10.7 Implementation of DCT and IDCT 15.10.8 TMS320C55x Image Accelerator for DCT and IDCT 15.10.9 TMS320C55x Hardware Accelerator Image/Video Processing Library References Exercises 585 585 586 586 587 588 589 590 591 596 597 597 599 601 601 604 607 610 611 613 617 621 623 625 625
627
627 628 628 630 631
633 639
Preface
In recent years, digital signal processing (DSP) has expanded beyond ltering, frequency analysis, and signal generation. More and more markets are opening up to DSP applications, where in the past, real-time signal processing was not feasible or was too expensive. Real-time signal processing using general-purpose DSP processors provides an effective way to design and implement DSP algorithms for real-world applications. However, this is very challenging work in todays engineering elds. With DSP penetrating into many practical applications, the demand for high-performance digital signal processors has expanded rapidly in recent years. Many industrial companies are currently engaged in real-time DSP research and development. Therefore, it becomes increasingly important for todays students, practicing engineers, and development researchers to master not only the theory of DSP, but also the skill of real-time DSP system design and implementation techniques. This book provides fundamental real-time DSP principles and uses a hands-on approach to introduce DSP algorithms, system design, real-time implementation considerations, and many practical applications. This book contains many useful examples like hands-on experiment software and DSP programs using MATLAB, Simulink, C, and DSP assembly languages. Also included are various exercises for further exploring the extensions of the examples and experiments. The book uses the Texas Instruments Code Composer Studio (CCS) with the Spectrum Digital TMS320VC5510 DSP starter kit (DSK) development tool for real-time experiments and applications. This book emphasizes real-time DSP applications and is intended as a text for senior/graduate-level college students. The prerequisites of this book are signals and systems concepts, microprocessor architecture and programming, and basic C programming knowledge. These topics are covered at the sophomore and junior levels of electrical and computer engineering, computer science, and other related engineering curricula. This book can also serve as a desktop reference for DSP engineers, algorithm developers, and embedded system programmers to learn DSP concepts and to develop real-time DSP applications on the job. We use a practical approach that avoids numerous theoretical derivations. A list of DSP textbooks with mathematical proofs is given at the end of each chapter. Also helpful are the manuals and application notes for the TMS320C55x DSP processors from Texas Instruments at www.ti.com, and for the MATLAB and Simulink from Math Works at www.mathworks.com. This is the second edition of the book titled Real-Time Digital Signal Processing: Implementations, Applications and Experiments with the TMS320C55x by Kuo and Lee, John Wiley & Sons, Ltd. in 2001. The major changes included in the revision are: 1. To utilize the effective software development process that begins from algorithm design and verication using MATLAB and oating-point C, to nite-wordlength analysis, xed-point C implementation and code optimization using intrinsics, assembly routines, and mixed C-and-assembly programming
xvi
PREFACE on xed-point DSP processors. This step-by-step software development and optimization process is applied to the nite-impulse response (FIR) ltering, innite-impulse response (IIR) ltering, adaptive ltering, fast Fourier transform, and many real-life applications in Chapters 815.
2. To add several widely used DSP applications such as speech coding, channel coding, audio coding, image processing, signal generation and detection, echo cancelation, and noise reduction by expanding Chapter 9 of the rst edition to eight new chapters with the necessary background to perform the experiments using the optimized software development process. 3. To design and analyze DSP algorithms using the most effective MATLAB graphic user interface (GUI) tools such as Signal Processing Tool (SPTool), Filter Design and Analysis Tool (FDATool), etc. These tools are powerful for lter designing, analysis, quantization, testing, and implementation. 4. To add step-by-step experiments to create CCS DSP/BIOS applications, congure the TMS320VC5510 DSK for real-time audio applications, and utilize MATLABs Link for CCS feature to improve DSP development, debug, analyze, and test efciencies. 5. To update experiments to include new sets of hands-on exercises and applications. Also, to update all programs using the most recent version of software and the TMS320C5510 DSK board for real-time experiments.
There are many existing DSP algorithms and applications available in MATLAB and oating-point C programs. This book provides a systematic software development process for converting these programs to xed-point C and optimizing them for implementation on commercially available xed-point DSP processors. To effectively illustrate real-time DSP concepts and applications, MATLAB is used for analysis and lter design, C program is used for implementing DSP algorithms, and CCS is integrated into TMS320C55x experiments and applications. To efciently utilize the advanced DSP architecture for fast software development and maintenance, the mixing of C and assembly programs is emphasized. This book is organized into two parts: DSP implementation and DSP application. Part I, DSP implementation (Chapters 17) discusses real-time DSP principles, architectures, algorithms, and implementation considerations. Chapter 1 reviews the fundamentals of real-time DSP functional blocks, DSP hardware options, xed- and oating-point DSP devices, real-time constraints, algorithm development, selection of DSP chips, and software development. Chapter 2 introduces the architecture and assembly programming of the TMS320C55x DSP processor. Chapter 3 presents fundamental DSP concepts and practical considerations for the implementation of digital lters and algorithms on DSP hardware. Chapter 4 focuses on the design, implementation, and application of FIR lters. Digital IIR lters are covered in Chapter 5, and adaptive lters are presented in Chapter 7. The development, implementation, and application of FFT algorithms are introduced in Chapter 6. Part II, DSP application (Chapters 815) introduces several popular real-world applications in signal processing that have played important roles in the realization of the systems. These selected DSP applications include signal (sinewave, noise, and multitone) generation in Chapter 8, dual-tone multifrequency detection in Chapter 9, adaptive echo cancelation in Chapter 10, speech-coding algorithms in Chapter 11, speech enhancement techniques in Chapter 12, audio coding methods in Chapter 13, error correction coding techniques in Chapter 14, and image processing fundamentals in Chapter 15. As with any book attempting to capture the state of the art at a given time, there will certainly be updates that are necessitated by the rapidly evolving developments in this dynamic eld. We are certain that this book will serve as a guide for what has already come and as an inspiration for what will follow.
SOFTWARE AVAILABILITY
xvii
Software Availability
This text utilizes various MATLAB, oating-point and xed-point C, DSP assembly and mixed C and assembly programs for the examples, experiments, and applications. These programs along with many other programs and real-world data les are available in the companion CD. The directory structure and the subdirectory names are explained in Appendix B. The software will assist in gaining insight into the understanding and implementation of DSP algorithms, and it is required for doing experiments in the last section of each chapter. Some of these experiments involve minor modications of the example code. By examining, studying, and modifying the example code, the software can also be used as a prototype for other practical applications. Every attempt has been made to ensure the correctness of the code. We would appreciate readers bringing to our attention (kuo@ceet.niu.edu) any coding errors so that we can correct, update, and post them on the website http://www.ceet.niu.edu/faculty/kuo.
Acknowledgments
We are grateful to Cathy Wicks and Gene Frantz of Texas Instruments, and to Naomi Fernandes and Courtney Esposito of The MathWorks for providing us with the support needed to write this book. We would like to thank several individuals at Wiley for their support on this project: Simone Taylor, Executive Commissioning Editor; Emily Bone, Assistant Editor; and Lucy Bryan, Executive Project Editor. We also thank the staff at Wiley for the nal preparation of this book. Finally, we thank our families for the endless love, encouragement, patience, and understanding they have shown throughout this period. Sen M. Kuo, Bob H. Lee and Wenshun Tian