第1章 多核DSP技术 1
1.1 DSP概述 1
1.2 TI公司DSP器件的发展 1
1.2.1 C2000系列DSP 2
1.2.2 C5000系列DSP 3
1.2.3 C6000单核系列DSP 3
1.2.4 达芬奇系列DSP 3
1.2.5 多核系列DSP 4
1.3 高性能多核TI DSP性能 6
1.4 KeyStone Ⅰ多核DSP处理器 8
1.4.1 KeyStone Ⅰ概述 8
1.4.2 应用领域 11
1.5 KeyStone Ⅱ多核DSP处理器 13
1.5.1 KeyStone Ⅱ概述 13
1.5.2 KeyStone Ⅱ多核架构 14
1.5.3 专用服务器应用 15
1.5.4 企业和工业应用 16
1.5.5 绿色能效网络处理 16
1.5.6 产品优势 17
第2章 TMS320C66x的多核处理器架构 18
2.1 C 66x内核 18
2.1.1 概述 18
2.1.2 C66x DSP架构指令增强 20
2.1.3 C66x内核中CPU数据通路和控制 22
2.2 TMS320C66x DSP内核 24
2.2.1 C66x内核介绍 24
2.2.2 C66x内核内部模块概述 25
2.2.3 IDMA 31
2.2.4 中断控制器 33
2.3 多核导航器 39
2.3.1 概述 39
2.3.2 多核导航器的功能 43
2.3.3 多核导航器的基本概念 44
2.4 高速通信接口 49
2.4.1 HyperLink接口 51
2.4.2 RapidIO接口 57
2.4.3 PCIe接口 62
2.5 多核共享资源 70
2.5.1 存储器资源分配 70
2.5.2 EDMA资源 71
2.5.3 硬件信号量 72
2.5.4 IPC中断 76
第3章 C66x片内外设、接口与应用 77
3.1 EDMA3 77
3.1.1 EDMA3概述 77
3.1.2 EMDA3传输类型 81
3.1.3 EDMA功能实例 83
3.2 Ethernet/MDIO 86
3.3 AIF2天线接口 87
3.3.1 概述 87
3.3.2 OBSAI协议概述 88
3.3.3 AIF2硬件框图 90
第4章 CCS5集成开发环境 92
4.1 CCS5的安装和配置 93
4.1.1 CCS V5.5的下载 93
4.1.2 CCS V5.5的安装 94
4.1.3 CCS V5.5的使用 97
4.2 CCS V5操作小技巧 107
4.2.1 更改显示 107
4.2.2 多线程编译 107
4.2.3 多核断点调试 108
4.2.4 L1P、L1D、L2cache分析工具 110
4.3 GEL的使用 110
4.3.1 GEL功能简介 110
4.3.2 实现GEL脚本的基本要素 110
4.3.3 GEL脚本应用技巧 116
第5章 多核软件开发包 125
5.1 多核软件开发包概述 125
5.2 Linux/MCSDK 127
5.3 BIOS-MCSDK 129
5.3.1 BIOS-MCSDK简介 129
5.3.2 BIOS- MCSDK 2.x开发 133
5.3.3 MCSDK2.x使用指南 135
5.3.4 运行演示应用程序 142
5.4 CSL与底层驱动 145
5.4.1 CSL介绍 145
5.4.2 LLDs介绍 145
5.4.3 EDMA3驱动介绍 147
5.5 算法处理库 147
5.5.1 数字信号处理库(DSPLIB) 147
5.5.2 图像处理库(IMGLIB) 148
5.5.3 数学函数库(MATHLIB) 149
5.6 网络开发工具NDK 150
5.6.1 NDK概述 151
5.6.2 NDK组织结构 152
5.6.3 NDK实现过程 153
5.6.4 CCS创建NDK工程 155
5.6.5 配置NDK 157
5.6.6 NDK开发中应注意的问题 157
5.7 HUA实例 158
5.7.1 概述 158
5.7.2 软件设计 161
5.8 Image Processing实例讲解 162
5.8.1 概述 162
5.8.2 软件设计 162
5.8.3 软件实例介绍 165
第6章 SYS/BIOS 168
6.1 SYS/BIOS基础 168
6.1.1 SYS/BIOS概述 168
6.1.2 SYS/BIOS与DSP/BIOS的区别 169
6.1.3 XDCtools概述 170
6.1.4 SYS/BIOS开发流程 173
6.2 IPC核间通信 174
6.2.1 IPC功能架构 174
6.2.2 IPC主要模块介绍 176
6.2.3 使用IPC需要解决的问题 183
6.3 SYS/BIOS组成 183
6.4 SYS/BIOS工程创建和配置 189
6.4.1 用TI资源管理器创建SYS/BIOS工程 189
6.4.2 用CCS工程向导创建SYS/BIOS工程 191
6.5 SYS/BIOS启动过程 196
第7章 硬件设计指南 198
7.1 电源设计、节电模式和功耗评估 198
7.1.1 功耗分析 198
7.1.2 系统总体方案设计 199
7.1.3 电源滤波设计 201
7.1.4 电源控制电路 201
7.1.5 3.3V辅助电路 203
7.1.6 上电时序控制电路 203
7.1.7 在线软件控制 205
7.2 时钟设计 206
7.2.1 时钟需求 206
7.2.2 时钟电路设计 208
7.3 复位电路设计 215
7.3.1 复位需求统计 215
7.3.2 复位电路及时序设计 215
7.4 DDR3接口设计 216
7.4.1 DDR3技术综述 216
7.4.2 TMS320C6678的DDR3控制器 217
7.4.3 DDR3-SDRAM选型 217
7.4.4 DDR3电路设计 218
7.4.5 PCB设计中的注意事项 219
7.5 EMIF16接口设计 222
7.5.1 EMIF16接口介绍 222
7.5.2 EMIF16存储空间分配 223
7.5.3 NOR Flash接口设计 223
7.5.4 NAND Flash接口设计 225
7.6 SRIO接口设计 226
7.6.1 设计原理 226
7.6.2 PCB设计中的注意事项 227
7.6.3 GbE设计 228
7.7 SPI接口设计 233
7.8 I2C接口设计 233
7.9 外中断设计 234
7.10 JTAG仿真 235
7.11 硬件设计检查表 235
7.12 电路设计小技巧 240
7.12.1 Ultra Librarian的使用 240
7.12.2 Cadence模块化复用 243
第8章 TIC66x多核DSP自启动开发 253
8.1 概述 253
8.1.1 DSP启动过程 255
8.1.2 多核启动原理 256
8.1.3 启动数据的生成 258
8.2 EMIF16方式 259
8.3 主从I2C方式 259
8.3.1 单核启动模式 260
8.3.2 多核启动模式 261
8.4 SPI方式 261
8.4.1 SPI总线的工作原理 262
8.4.2 SPI启动的实现 263
8.4.3 SPI NOR启动步骤及注意事项 264
8.5 SRIO方式 266
8.6 以太网方式 268
8.7 PCIe方式 270
8.7.1 PCIe启动原理 270
8.7.2 PCle启动分析 271
8.7.3 单模式加载启动实现 271
8.7.4 多核启动实现 272
8.7.5 DDR3多模代码加载启动实现 273
8.8 HyperLink方式 274
第9章 C66x多核编程指南 275
9.1 应用程序编程框架 275
9.1.1 XDAIS标准 275
9.1.2 IALG接口 275
9.1.3 XDM标准 277
9.1.4 VISA API 279
9.2 应用程序映射到多核导航器 279
9.2.1 并行处理模型 280
9.2.2 识别并行任务 282
9.3 多核通信 284
9.3.1 数据迁移 285
9.3.2 多核导航器数据移动 286
9.3.3 通知和同步 287
9.3.4 多核导航器的通知方法 288
9.4 数据传输引擎 290
9.5 共享资源管理 291
9.6 存储器管理 292
9.7 C66x代码优化 295
9.7.1 使用内嵌函数 295
9.7.2 软件流水 296
9.7.3 混合编程 297
9.8 线性汇编 300
9.8.1 C代码改写为线性汇编 300
9.8.2 线性汇编使用SIMD指令 304
9.8.3 循环展开 305
9.8.4 解决存储器冲突 307
9.9 TI代码优化设计文档 309
第10章 C66x多核DSP软件开发实例 317
10.1 IPC核间通信实例 317
10.1.1 概述 317
10.1.2 实例详解 318
10.1.3 源代码详解 319
10.2 VLFFT 326
10.2.1 概述 326
10.2.2 软件设计 328
10.2.3 VLFFT实验实例 330
10.2.4 运行结果分析 333
第11章 TMDSEVM6678L EVM及视频编解码实现 335
11.1 EVM概述 335
11.1.1 TMDSEVM6678L概述 336
11.1.2 TMDSEVM66781电路介绍 338
11.2 多相机视频编解码实现 344
11.2.1 系统介绍 344
11.2.2 开发包支持 344
11.2.3 性能评估 344
第12章 KeyStone Ⅰ自测程序指南 348
12.1 自测程序概述 348
12.1.1 程序框架 349
12.1.2 通用测试方案 350
12.1.3 测试范围 352
12.1.4 EVM板测试步骤 352
12.1.5 移植程序注意事项 354
12.1.6 自动执行测试程序 354
12.1.7 测试程序特性总结 360
12.2 存储器测试 365
12.2.1 存储器系统概述 365
12.2.2 存储器测试算法 367
12.2.3 存储器测试CCS工程项目 369
12.2.4 测试配置 371
12.2.5 测试时间分析 372
12.3 存储器性能测试 372
12.3.1 测试算法 373
12.3.2 CCS工程项目 373
12.3.3 测试配置 374
12.4 EMIF接口存储器测试 376
12.4.1 CCS工程项目 376
12.4.2 测试配置与程序移植 377
12.5 通用模块测试 379
12.5.1 GPIO模块测试 379
12.5.2 I2C模块测试 380
12.5.3 SPI模块测试 383
12.5.4 Timer模块测试 386
12.5.5 UART模块测试 389
12.6 AIF模块测试 393
12.6.1 概述 393
12.6.2 测试算法 394
12.6.3 AIF2调试 396
12.6.4 CCS工程项目 398
12.6.5 测试工程配置 399
12.7 HyperLink模块测试 400
12.7.1 概述 400
12.7.2 HyperLink配置 401
12.7.3 HyperLink性能考虑 403
12.7.4 CCS工程项目 404
12.7.5 测试配置 405
12.8 多核导航器模块测试 406
12.8.1 多核导航器介绍 406
12.8.2 测试算法 408
12.8.3 CCS工程项目 410
12.8.4 测试配置 411
12.9 鲁棒性测试 411
12.9.1 概述 411
12.9.2 测试算法 412
12.9.3 CCS工程项目 415
12.9.4 测试配置 417
第13章 星载毫米波SAR-GMTI系统数字中频接收机 419
13.1 总体设计 419
13.1.1 设计原则 419
13.1.2 硬件架构 420
13.1.3 软件架构 421
13.1.4 接口设计 421
13.2 硬件设计 423
13.3 软件设计 426
13.3.1 概述 426
13.3.2 A/D采集及存储模块 426
13.3.3 数据传输模块 427
13.3.4 数据处理模块 428
附录 多核DSP开发网络资源 432
参考文献 433