以高速数字信号处理器(DSPs)为基础的实时数字信号处理技术近年来发展迅速,并获得了广泛的应用。TMS320C6000是得州仪器公司(Texas Instrument)推出的定点、浮点系列DSPs,其中定点产品峰值处理能力达到4800MIPS,浮点产品峰值处理能力达到1350MFLOPS,是目前国际上性能最高的DSPs之一。\r\n 本书全面介绍了C6000系列的芯片结构、软件开发、硬件设计等内容。在第1版的基础上对内容作了大量的修改调整,修订了有关的技术资料,增加了对C621x/C671x/C64x等新芯片以及Code Composer Studio集成开发环境的介绍,并对C6000系统设计中的主要问题和技术进行了总结。\r\n 本书的读者对象是从事信号处理的科研和工程技术人员,以及通信、信息与信号处理专业的研究生、高年级本科生。
第1章 实时数字信号处理与数字信号处理器\r\n\r\n1.1 实时数字信号处理\r\n1.1.1 信号处理领域的巨大变革\r\n1.1.2 实时信号处理的概念\r\n1.1.3 DSPs在实时数字信号处理中的应用\r\n1.2 实时DSP系统的构成\r\n1.2.1 实时DSP系统的构成\r\n1.2.2 DSP子系统\r\n1.2.3 以通用DSPs为核心的实时DSP子系统\r\n1.3 DSPs芯片\r\n1.3.1 DSPs芯片概述\r\n1.3.2 DSPs芯片的特点\r\n1.3.3 性能指标\r\n1.4 TMS320C6000系列DSPs\r\n1.4.1 TMS320C6000简介\r\n1.4.2 TMS320C6000的结构特点\r\n1.4.3 TMS320C6000的应用\r\n\r\n第2章 TMS320C6000系列CPU结构与指令集\r\n\r\n2.1 C6000系列CPU结构\r\n2.1.1 中央处理器(CPU)结构\r\n2.1.2 CPU数据通路与控制\r\n2.2 TMS320C62xx/C64xx/C67xx公共指令集\r\n2.2.1 TMS320C6000公共指令集概述\r\n2.2.2 寻址方式及Load/Store类指令\r\n2.2.3 算术运算类指令\r\n2.2.4 逻辑及位域操作指令\r\n2.2.5 搬移(MV、MOV)类指令\r\n2.2.6 程序转移类指令\r\n2.2.7 资源对公共指令集的限制\r\n2.3 TMS320C67x浮点运算指令\r\n2.3.1 IEEE标准的浮点数表示法\r\n2.3.2 C67x的浮点运算控制寄存器\r\n2.3.3 C67x特有的运算指令\r\n2.3.4 C67x指令的延迟间隙,资源对C67x指令的约束\r\n2.4 TMS320C64x扩展的定点运算指令\r\n2.4.1 扩展的寻址方式及Load/Store类指令\r\n2.4.2 扩展的算术运算指令\r\n2.4.3 扩展的逻辑及位域操作指令\r\n2.4.4 数据打包与解包类指令\r\n2.4.5 扩展的控制转移类指令\r\n2.4.6 资源对C64x指令的限制\r\n2.5 流水线\r\n2.5.1 TMS320C6000流水线概述\r\n2.5.2 TMS320C6000指令的流水线操作\r\n2.5.3 C6000流水线运行的几个问题\r\n2.6 中断\r\n2.6.1 中断类型和中断信号\r\n2.6.2 中断服务表(IST)\r\n2.6.3 中断控制寄存器\r\n2.6.4 中断性能和编程考虑事项\r\n\r\n第3章 TMS320C6000的软件开发环境\r\n\r\n3.1 软件开发流程和开发工具\r\n3.1.1 开发流程和开发工具\r\n3.1.2 C6000程序基本结构\r\n3.1.3 其他代码开发工具\r\n3.2 集成开发环境 Code Composer Studio\r\n3.2.1 CCS概述\r\n3.2.2 CCS的设置\r\n3.2.3 CCS项目的创建\r\n3.2.4 源程序的编辑\r\n3.2.5 CCS项目的构建(Build)\r\n3.2.6 程序调试的基本操作\r\n3.2.7 多处理器调试\r\n3.2.8 断点和探测点(Break Points and Probe Points)\r\n3.2.9 文件输入输出与探测点\r\n3.2.10 图形窗口\r\n3.2.11 存储器映射(Memory Maps)\r\n3.2.12 变量观察窗口(Watch Window)\r\n3.2.13 代码剖析(Profile)\r\n3.2.14 GEL语言\r\n3.3 实时操作系统DSP/BIOS\r\n3.3.1 实时操作系统基本概念\r\n3.3.2 DSP/BIOS概述\r\n3.3.3 程序生成\r\n3.3.4 监测(Instrumentation)\r\n3.3.5 任务调度\r\n3.3.6 输入/输出和管道\r\n3.3.7 其他DSP/BIOS模块\r\n3.3.8 其他C6000实时操作系统\r\n3.4 eXpressDSPTM 算法标准\r\n\r\n第4章 TMS320C6000的软件编程及代码优化\r\n\r\n4.1 概述\r\n4.2 TMS320C6000的C语言编程及优化\r\n4.2.1 TMS320C6000 C/C++编译器简介\r\n4.2.2 编写及编译C语言程序\r\n4.2.3 优化C语言程序\r\n4.3 线性汇编语言简介\r\n4.3.1 线性汇编语句的基本结构\r\n4.3.2 线性汇编中的伪指令\r\n4.3.3 汇编优化器选项\r\n4.4 通过线性汇编优化汇编代码\r\n4.4.1 写并行代码\r\n4.4.2 使用字访问短型数据和使用双字访问字(数据打包处理)\r\n4.4.3 软件流水\r\n4.4.4 多周期循环的模编排\r\n4.4.5 循环传递路径\r\n4.4.6 循环中的If-Then-Else语句\r\n4.4.7 循环展开\r\n4.4.8 生命太长问题(Live-Too-Long)\r\n4.4.9 消除冗余取\r\n4.4.10 避免存储体(Bank)访问冲突\r\n4.4.11 软件流水外环\r\n4.4.12 同内环一起条件地执行外环\r\n4.5 C64x编程的几点考虑\r\n4.5.1 C64x的打包数据处理\r\n4.5.2 C64x线性汇编的几点考虑\r\n\r\n第5章 C6000系列DSPs的集成外设与硬件开发\r\n\r\n5.1 综述\r\n5.2 片内存储器\r\n5.2.1 简介\r\n5.2.2 C620x/C670x的片内程序存储器\r\n5.2.3 C620x/C670x的片内数据存储器\r\n5.2.4 C621x/C671x/C64x的片内2级存储器\r\n5.3 外部存储器接口的设计\r\n5.3.1 概述\r\n5.3.2 接口信号与控制寄存器\r\n5.3.3 同步接口设计\r\n5.3.4 异步接口设计\r\n5.3.5 PDT传输接口\r\n5.3.6 HOLD接口\r\n5.3.7 EMIF访问的仲裁\r\n5.4 直接存储器访问(DMA)\r\n5.4.1 概述\r\n5.4.2 DMA的初始化和启动\r\n5.4.3 DMA的传输控制\r\n5.4.4 单一通道的分裂操作\r\n5.4.5 资源仲裁和优先级设置\r\n5.4.6 DMA 通道的状态\r\n5.5 扩展的直接存储器访问(EDMA)\r\n5.5.1 概述\r\n5.5.2 EDMA的控制机制\r\n5.5.3 EDMA的传输操作\r\n5.5.4 优先级\r\n5.5.5 快速DMA(QDMA)\r\n5.6 多通道缓冲串口(McBSP)\r\n5.6.1 概述\r\n5.6.2 信号接口和控制寄存器\r\n5.6.3 数据的收发\r\n5.6.4 m-律/A-律硬件压扩\r\n5.6.5 多通道传输接口\r\n5.6.6 SPI协议的接口\r\n5.6.7 通用I/O口\r\n5.7 主机口(HPI)\r\n5.7.1 概述\r\n5.7.2 有关信号与控制寄存器\r\n5.7.3 主机口的存取操作\r\n5.7.4 HPI的加载操作\r\n5.8 C6000的扩展总线\r\n5.8.1 概述\r\n5.8.2 信号接口与控制寄存器\r\n5.8.3 扩展总线上的I/O口工作方式\r\n5.8.4 扩展总线的主机口工作方式\r\n5.8.5 扩展总线的仲裁\r\n5.8.6 通过扩展总线引导DSP芯片\r\n5.9 PCI接口\r\n5.9.1 概述\r\n5.9.2 接口的结构与控制寄存器\r\n5.9.3 从模式数据传输\r\n5.9.4 主模式数据传输\r\n5.9.5 中断与状态报告\r\n5.9.6 PCI的复位和加载\r\n5.9.7 EEPROM接口\r\n5.9.8 电源管理(C62x/C67x)\r\n5.10 UTOPIA接口\r\n5.10.1 概述\r\n5.10.2 接口信号与控制寄存器\r\n5.10.3 从模式ATM控制器\r\n5.10.4 UTOPIA接口的访问控制\r\n5.10.5 UTOPIA 时钟和时钟检测\r\n5.10.6 UTOPIA接口的其他控制\r\n5.11 芯片的设置\r\n5.11.1 概述\r\n5.11.2 芯片的设置管脚\r\n5.11.3 芯片的设置选项\r\n5.11.4 芯片的引导过程\r\n5.12 其他片内集成外设\r\n5.12.1 定时器\r\n5.12.2 中断控制\r\n5.12.3 power-down逻辑\r\n5.12.4 GPIO\r\n\r\n第6章 C6000系列DSPs的应用开发\r\n\r\n6.1 概述\r\n6.2 C6000系列DSPs的板级设计\r\n6.2.1 电源系统\r\n6.2.2 JTAG控制\r\n6.2.3 调试(Debugging)考虑点\r\n6.2.4 BGA 封装\r\n6.2.5 高速数字电路设计\r\n6.3 DSK套件和EVM板\r\n6.3.1 DSK套件\r\n6.3.2 EVM评估板\r\n6.4 C6000 DSP 应用系统实例\r\n6.4.1 视频信号处理系统\r\n6.4.2 双C6201的并行处理系统\r\n6.4.3 基于PCI总线的双处理器视频信号处理系统\r\n6.4.4 基于CompactPCI总线的多处理器并行系统\r\n\r\n附录A TMS3200C6000的指令集及对应的C/C++ Compiler Intrinsics\r\n附录B 与存储器操作有关的Intrinsics及对应的汇编指令\r\n参考文献
TMS320C6000系列DSP芯片是目前最先进、性能价格比最优的DSP芯片之一。本书第1版写于TMS320C6000系列第一代产品刚引进到我国不久。从本书第1版出版至今的两年多时间内,TMS320C6000系列又取得了长足的发展。为适应C6000系列DSP芯片的开发需要,我们重新编写了《TMS320C6000系列DSPs原理与应用(第2版)》。与第1版比较,第2版做了如下改动:
1.对近两年来新推出的C621x、C671x系列以及C64xx系列DSP芯片做了全面的介绍。
2.在软件开发方面,以阐述C6000的CCS(Code Composer Studio)集成开发环境为主线。应用于C6000的CCS是C6000系列DSPs的主流开发工具,目前已推出 2.1版本。
3.根据TI公司文献资料的变动,对本书第1版原有内容作了大幅度的修改调整。以“TMS320C6000 CPU and Instruction Set Reference Guide”为例,从本书第1版编写至今,该文献已改了6版,编号从SPRU189A一直修正到SPRU189F。又如C6000的C/C++编译器,原文献对独立的指针变量建议采用const关键字,而新版则要求用restrict关键字,还特别提醒用户不要用const关键字。对于TI文献中的这些重大变化,本书相应地予以反映。
4.在内容编排上重新作了调整。如第2章增加了对指令集的介绍,而把芯片内硬件资源的内容全部放到第5章中。第4章在介绍C程序优化前,增加了对C语言程序编写和C编译器使用的描述。
与第1版一样,本书由北京理工大学雷达技术研究所组织编写,由李方慧博士负责,王飞博士、何佩琨教授参与。第1章、第5章及第6章第1~3节由李方慧博士编写;第3章、第6章第4节由王飞博士编写;第2章、第4章由何佩琨教授编写。全书由高梅国教授审校。博士研究生沈光、吴琼之、姚迪参与了资料整理工作。
本书编写受到北京理工大学雷达技术研究所在DSP教学和科研工作方面的支持,反映了雷达技术研究所在C6000芯片开发方面的技术水平。从这个意义上讲,本书也是雷达技术研究所集体努力的结晶之一。
本书第1版、第2版的出版都得到美国得州仪器(中国)公司与北京理工大学建立的DSPs联合实验室的支持。从1996年DSPs联合实验室建立以来,TI公司对推动北京理工大学DSP技术的开发、教学做了许多有益的工作。这也是促使本书能够编写出版的条件之一。在此,我们对美国得州仪器(中国)公司及其大学计划表示感谢。
本书的出版得到电子工业出版社领导的大力支持,责任编辑段颖付出了巨大努力,我们在此表示深深的谢意。
由于编者的学术水平有限,编写时间紧迫,本书在取材、编写中可能还存在一些问题,敬请读者批评指正。
编著者
2002年7月