《DSP开发宝典》PDF下载

  • 购买积分:22 如何计算积分?
  • 作  者:郑阿奇主编;孙承龙编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2012
  • ISBN:9787121150685
  • 页数:813 页
图书介绍:本书以美国TI公司TMS320C6000系列DSP为平台,介绍CPU硬件结构、指令系统(伪指令)、C/C++程序开发基础、C/C++程序开发、线性汇编代码优化、汇编语言工具、软件集成开发、程序调试与实例分析、外部存储器接口、中断系统、直接存储器访问(DMA)、增强型直接存储器访问(EDMA)、多通道缓冲串口(McBSP)、主机并行接口(HPI)、扩展总线、外围设备互联(PCI)端口、定时器、通用输入/输出(I/O)等,是目前国内比较系统介绍TMS320C6000系列DSP的学习、开发应用指南。

第1章TMS320C6000系列DSP概述 1

1.1 DSP产生、特点及其应用 1

1.1.1 DSP的产生 1

1.1.2 DSP的特点 2

1.1.3 DSP的应用 3

1.2 TMS320C6000系列DSP主要特点及其应用 4

第2章TMS320C6000系列CPU、指令系统、伪指令 6

2.1 TMS320C6000系列CPU的结构 6

2.2 TMS320C6000系列CPU的数据通路和控制 8

2.2.1通用寄存器组 10

2.2.2数据通路的功能单元 12

2.2.3寄存器组交叉通路 13

2.2.4存储器存取通路 14

2.2.5数据地址通路 14

2.2.6 TMS320C6000控制寄存器组 14

2.2.7 TMS320C67x控制寄存器扩展 18

2.2.8 TMS320C64x控制寄存器扩展 22

2.3 TMS320C6000系列DSP的存储器 24

2.3.1程序存储器 24

2.3.2内部数据存储器 30

2.3.3二级内部存储器 33

2.4 TMS320C6000系列DSP指令系统 38

2.4.1 TMS320C6000系列DSP指令集 39

2.4.2流水线 51

2.4.3汇编伪指令 64

第3章 程序开发基础 81

3.1软件开发工具概述 81

3.2 C/C++编译器概述 83

3.2.1 ISO标准 83

3.2.2输出文件 83

3.2.3编译器接口 84

3.2.4编译器操作 84

3.2.5编译器工具 84

3.3使用C/C++编译器 85

3.3.1编译器 85

3.3.2调用C/C++编译器 85

3.3.3设置选项改变编译器的行为 87

3.3.4常用选项 91

3.3.5指定文件名 93

3.3.6设置目录 93

3.3.7设置默认的编译选项 94

3.4优化代码 95

3.4.1执行优化 95

3.4.2优化软件流水 97

3.4.3冗余循环 100

3.4.4调试和剖析优化代码 101

3.4.5基于价值的寄存器分配 101

3.4.6别名消除 102

3.4.7优化跳转和简化控制流 102

3.4.8数据流优化 102

3.4.9简化表达式 102

3.4.10内联函数扩展 103

3.4.11寄存器跟踪与分配 104

3.5使用汇编优化器 105

3.5.1增强性能的代码开发流程 105

3.5.2线性汇编知识 106

第4章 C/C++程序开发 112

4.1 TMS320C6000系列C/C++语言实现 112

4.1.1 TMS320C6000系列C语言特点 112

4.1.2 TMS320C6000系列C++语言特点 114

4.1.3 TMS320C6000系列C/C++语言关键字 114

4.1.4 pragma伪指令 119

4.1.5初始化静态变量和全局变量 125

4.2运行时环境 126

4.2.1存储器模型 126

4.2.2对象的表示 129

4.2.3中断处理 134

4.2.4系统初始化 135

4.3运行时支持函数 139

4.3.1编译器包括的库 139

4.3.2 C语言的I/O函数 140

4.3.3运行时支持库函数和宏的描述 148

4.4 TMS320C6000系列C/C++代码优化 151

4.4.1 C/C++语言代码的编写 151

4.4.2编译C/C++代码 152

4.4.3优化C代码 153

4.5 C/C++语言和汇编的混合编程 157

4.5.1在C/C++代码中调用汇编语言模块 157

4.5.2用内嵌函数访问汇编语言 158

4.5.3在C/C++语言中嵌入汇编语言 159

4.5.4在C/C++语言中访问汇编语言变量 159

第5章 线性汇编优化代码 165

5.1汇编优化器选项与伪指令 165

5.2编写并行代码 169

5.2.1点积的C代码 169

5.2.2 C代码转换为线性汇编 170

5.2.3画相关性图 171

5.2.4非并行汇编代码与并行汇编代码 172

5.2.5使用字访问短型数据与使用双字访问 176

5.3软件流水 183

5.3.1模迭代间隔编排表 185

5.3.2使用汇编优化器产生优化循环 189

5.3.3最终汇编 190

5.4多周期循环的模迭代 204

5.4.1转换C代码为线性汇编 204

5.4.2确定最小迭代间隔 204

5.4.3画相关性图 206

5.4.4线性汇编资源分配 207

5.4.5模迭代间隔编排 207

5.4.6使用汇编优化器产生加权矢量和 214

5.4.7最终汇编 215

5.5循环传递路径 216

5.5.1将C代码的内核循环转换为线性汇编 217

5.5.2画相关性图 217

5.5.3确定最小迭代间隔 218

5.5.4线性汇编资源分配 220

5.5.5模迭代间隔安排 220

5.5.6使用汇编优化器处理IIR滤波器 221

5.5.7最终汇编 222

5.6循环中的if-then-else语句 222

5.6.1 if-then-else的C代码 223

5.6.2转换C代码为线性汇编 223

5.6.3画相关性图 224

5.6.4确定最小迭代间隔 224

5.6.5线性汇编资源分配 225

5.6.6最终汇编 226

5.6.7性能比较 226

5.7循环展开 227

5.7.1展开if-then-else的C代码 228

5.7.2 C代码转换为线性汇编 228

5.7.3画相关性图 229

5.7.4确定最小迭代间隔 230

5.7.5线性汇编资源安排 230

5.7.6最终汇编 231

5.8生命太长问题 232

5.8.1具有生命太长问题的C代码 232

5.8.2 C代码转换为线性汇编 233

5.8.3画相关性图 234

5.8.4确定最小迭代间隔 234

5.8.5线性汇编资源安排 235

5.8.6带MV指令的最后汇编 236

5.9消除冗余取数 238

5.9.1转换C代码为线性汇编 239

5.9.2画相关性图 240

5.9.3确定最小迭代间隔 241

5.9.4线性汇编资源分配 241

5.9.5最终汇编 242

5.10存储体 244

5.10.1 FIR滤波器的内核循环 245

5.10.2展开的FIR滤波器的C代码 246

5.10.3将C代码转换为线性汇编 247

5.10.4画相关性图 248

5.10.5含有.mptr命令的展开后FIR线性汇编 249

5.10.6线性汇编资源分配 250

5.10.7确定最小迭代间隔 250

5.10.8最终汇编 251

5.11软件流水外循环 253

5.11.1展开FIR滤波器的C代码 253

5.11.2最终汇编 254

5.12同内循环一起条件地执行外循环 257

5.12.1展开FIR滤波器的C代码 257

5.12.2将内核循环的C代码转换为线性汇编 258

5.12.3将外环的C代码转换为线性汇编 258

5.12.4展开FIR滤波器的C代码 259

5.12.5 C代码转换为线性汇编(内核循环) 260

5.12.6确定最小迭代间隔 262

5.12.7最终汇编 262

5.12.8性能比较 265

5.13通用目标文件格式 265

5.13.1段 265

5.13.2汇编器对段的处理 266

5.13.3连接器对段的处理 271

第6章 汇编语言工具 273

6.1宏语言 273

6.2连接器描述 274

6.3 MEMORY伪指令 277

6.4 SECTIONS伪指令 279

6.4.1 SECTIONS伪指令格式 279

6.4.2绑定 282

6.4.3指定存储器 283

6.4.4指定输入段 284

6.4.5使用多个存储器区域定位 286

6.4.6在非连续的存储器区域自动分裂输出段 286

6.4.7把文档库一个成员分配到输出段 288

6.5指定段的运行地址 289

6.5.1指定加载地址和运行地址 289

6.5.2未初始化段 290

6.5.3使用.label伪指令引用加载地址 290

第7章 软件集成开发 296

7.1应用软件开发流程及工具 296

7.2集成开发环境(CCS) 298

7.2.1 CCS概述 298

7.2.2 CCS开发环境的安装和配置 299

7.2.3文本编辑器 313

7.2.4调试工具 317

7.2.5自动化(项目管理) 320

7.2.6 DSP/BIOS插件 321

7.3开发应用程序 324

7.3.1创建工程文件 324

7.3.2向工程添加文件 325

7.3.3查看源代码 325

7.3.4编译和运行程序 327

7.3.5修改程序选项和纠正语法错误 328

7.3.6使用断点和观察窗口 329

7.3.7测算源代码执行时间 330

7.4开发DSP/BIOS程序 331

7.4.1创建配置文件 331

7.4.2创建用户模板 332

7.4.3为模块设置全局属性 333

7.4.4通过配置工具创建对象 333

7.4.5层次树窗口 334

7.4.6显式DSP/BIOS插件 339

7.4.7内核/对象窗口调试 341

7.4.8线程调度 345

7.4.9利用执行图查看程序的执行 346

第8章 程序调试与实例分析 348

8.1程序调试 348

8.1.1建立调试环境 348

8.1.2内存映射 353

8.1.3仿真(Simulation) 355

8.1.4基础调试 357

8.1.5高级调试特征 367

8.1.6实时调试 371

8.1.7复位芯片 375

8.2实时分析 376

8.2.1数据可视化 376

8.2.2 DSP/BIOS实时分析(RTA)工具 377

8.2.3代码覆盖范围和多事件剖析工具 379

8.3程序调试与分析实例 379

8.3.1打开和查看工程 380

8.3.2查看源程序 380

8.3.3为I/O文件增加探针断点 382

8.3.4显示图形 383

8.3.5执行程序和绘制图形 384

8.3.6调节增益 385

8.3.7观察范围外变量 386

8.3.8使用GEL文件 388

8.3.9调节和测试processing函数 388

8.3.10打开和查看工程 389

8.3.11查看源程序 390

8.3.12修改配置文件 392

8.3.13用Execution Graph查看任务执行情况 394

8.3.14修改和查看load值 395

8.3.15 分析任务的统计数据 397

8.3.16增加STS显式测试 398

8.3.17观察显式测试统计数据 399

8.4应用程序代码调整(ACT) 400

8.4.1调整面板 401

8.4.2高速缓存调整工具(Cache Tune) 403

第9章 外部存储器接口 404

9.1概述 404

9.1.1 SDRAM接口 405

9.1.2 SBSRAM接口 411

9.1.3异步接口 413

9.1.4复位EMIF 419

9.1.5 HOLD接口 420

9.1.6访问EMIF寄存器时的边界条件 421

9.1.7时钟输出使能 421

9.2 TMS320C620x/C670x DSP的EMIF 422

9.2.1概述 423

9.2.2 EMIF接口信号 423

9.2.3 SDRAM接口 426

9.2.4 SBSRAM接口 432

9.2.5 ROM访问模式 434

9.2.6存储器请求优先级 434

9.3 TMS320C621x/C671xDSP的EMIF 435

9.3.1概述 435

9.3.2 EMIF接口信号 435

9.3.3 SDRAM接口 438

9.3.4 SBSRAM接口 445

9.3.5存储器请求优先级 446

9.4 TMS320C64x DSP的EMIF 447

9.4.1概述 447

9.4.2 EMIF接口信号 448

9.4.3 SDRAM接口 449

9.4.4可编程同步接口 456

9.4.5外部设备传输(PDT) 460

9.5 TMS320C6000 DSP的EMIF寄存器 466

9.6时钟输出使能 472

第10章 中断系统 474

10.1 TMS320C6000的中断概述 474

10.1.1中断类型和中断信号 474

10.1.2中断服务表(IST) 476

10.1.3中断控制寄存器 479

10.2中断控制 481

10.2.1中断使能寄存器(IER) 481

10.2.2设置和清除中断的状态(IFR…ISR和ICR) 482

10.2.3中断返回服务 485

10.3编程注意事项 486

10.3.1单任务编程 486

10.3.2嵌套中断 486

10.3.3手动中断处理 487

10.3.4陷阱 487

10.4中断选择器与外部中断 488

10.4.1可用中断源 488

10.4.2中断选择寄存器 489

10.4.3外部中断信号时序 492

10.5中断应用实例 492

第11章 直接存储器访问(DMA) 512

11.1概述 512

11.2 DMA控制寄存器 514

11.2.1 DMA主控制寄存器(PRICTL) 515

11.2.2 DMA从控制寄存器(SECCTL) 517

11.3 DMA的初始化和启动 519

11.3.1初始化一个DMA块传输 519

11.3.2 DMA自动初始化 519

11.3.3 DMA信道重载寄存器 520

11.4传输计数 521

11.5同步传输 521

11.5.1 DMA通道事件的锁定和清除 522

11.5.2同步控制 523

11.6地址的产生 524

11.7通道的分裂操作 525

11.7.1 DMA分裂操作 525

11.7.2 DMA分裂地址产生 526

11.8 DMA控制器 526

11.8.1 TMS320C6201/C6701/C6202器件的DMA结构 526

11.8.2 TMS320C6202B/C6203B/C6204/C6205器件的DMA结构 527

11.8.3 DMA操作 528

11.8.4 DMA性能 528

11.8.5 DMA的外引脚 528

11.9 DMA应用实例 528

第12章 增强型直接存储器访问(EDMA) 547

12.1 EDMA概述 547

12.2 EDMA的控制寄存器 549

12.2.1事件寄存器(ER, ERL, ERH) 550

12.2.2事件使能寄存器(EER, EERL, EERH) 550

12.2.3事件清除寄存器(ECR, ECRL, ECRH) 551

12.2.4事件设置寄存器(ESR, ESRL, ESRH) 552

12.2.5事件编码器 553

12.3参数RAM 553

12.4 EDMA传输参数 555

12.5 EDMA传输 556

12.6 EDMA传输的分类 558

12.6.1一维传输 558

12.6.2二维传输 560

12.7单元大小与对齐 562

12.8传输计数与地址更新 563

12.9 EDMA传输参数的链接 564

12.10终止EDMA传输 565

12.11 EDMA中断 566

12.12事件链接EDMA通道 567

12.12.1 TMS320C621x/C671x EDMA传输链 568

12.12.2 TMS320C64x EDMA传输链 569

12.13 EDMA性能 569

12.14快速DMA (QDMA) 569

12.14.1 QDMA的控制 569

12.14.2 QDMA的性能 571

12.14.3 QDMA的优先级 571

12.15传输请求递交 571

12.15.1请求链 571

12.15.2传输交叉开关 572

12.15.3地址产生/传输逻辑 573

12.16传输实例 574

12.16.1块搬移实例 574

12.16.2子帧提取实例 575

12.16.3数据分类的实例 577

12.16.4非猝发外设 578

12.17 EDMA应用实例 585

12.17.1应用实例分析 585

12.17.2完整的程序代码 589

第13章 多通道缓冲串口(McBSP ) 616

13.1概述 616

13.2 McBSP接口信号和控制寄存器 617

13.3数据发送和接收 619

13.3.1串口的复位 620

13.3.2确定就绪状态 621

13.3.3 CPU中断 621

13.3.4时钟和帧的配置 622

13.4 McBSP的标准操作 627

13.4.1数据接收 627

13.4.2数据发送 628

13.4.3最高帧频率 628

13.5忽略帧同步的传输 629

13.5.1帧同步忽略与非预期的帧同步脉冲 629

13.5.2利用帧同步忽略位的数据打包 630

13.6串行异常的情况 631

13.6.1接收满:RFULL 631

13.6.2非预期的接收帧同步:RSYNCERR 632

13.6.3数据覆盖时的发送 633

13.6.4发送空数据 634

13.6.5非预期的发送帧同步 635

13.7 μ-律/A-律压扩硬件操作 636

13.8可编程时钟与帧同步 637

13.8.1采样率发生器 638

13.8.2 McBSP初始化过程 640

13.9多通道选择操作 641

13.9.1多通道控制寄存器(MCR) 641

13.9.2多通道选择的使能与屏蔽 644

13.9.3增强型多通道选择模式(C64x) 647

13.9.4 DX使能器 650

13.10 SPI协议:CLKSTP 651

13.10.1 McBSP作为SPI主设备 652

13.10.2 McBSP作为SPI从设备 653

13.10.3 SPI初始化 653

13.11 McBSP引脚作为通用I/O 654

13.12 McBSP应用实例 654

第14章 主机并行接口(HPI) 672

14.1概述 672

14.2 HPI外部接口 674

14.2.1 TMS320C620x/C670x DSP的HPI 674

14.2.2 TMS320C621x/C671xDSP的HPI 675

14.2.3 TMS320C64x DSP的HPI16或HPI32 676

14.3 HPI接口信号 677

14.3.1数据总线 678

14.3.2访问控制选择信号 678

14.3.3半字识别选择信号 678

14.3.4地址选通输入信号 679

14.3.5字节使能信号 679

14.3.6读/写选择信号 680

14.3.7选通信号 680

14.3.8就绪信号 681

14.3.9对主机的中断 681

14.4 HPI总线访问 681

14.4.1 TMS320C620x/C670x HPI总线访问 681

14.4.2 TMS320C621x/C671x HPI总线访问 684

14.4.3 TMS320C64x HPI总线访问 686

14.5主机访问顺序 687

14.5.1 HPIC与HPIA的初始化 688

14.5.2固定地址模式下的HPID寄存器读访问 689

14.5.3地址自增模式的HPID读访问 690

14.5.4固定地址模式的HPID寄存器写访问 692

14.5.5地址自增模式的HPID写访问 694

14.5.6半字周期(仅适用于TMS320C620x/C670x) 696

14.5.7 HPI传输优先级队列——TMS320C621 x/C671 x/C64x 697

14.5.8复位时通过HPI的存储器访问 697

14.6 HPI寄存器 697

14.6.1 HPI数据寄存器 697

14.6.2 HPI地址寄存器 698

14.6.3 HPI控制(HPIC)寄存器 698

14.6.4 HPI传输请求控制(TRCTL)寄存器——仅C64xDSP 701

14.7主机并行接口(HPI)应用实例 702

第15章 扩展总线 722

15.1概述 722

15.2扩展总线信号 723

15.3扩展总线I/O端口 724

15.3.1异步模式 726

15.3.2同步FIFO模式 727

15.4扩展总线主接口操作 729

15.4.1同步主机端口模式 730

15.4.2异步主机端口模式 735

15.5扩展总线仲裁 737

15.5.1内部总线仲裁器使能 737

15.5.2内部总线仲裁器禁止 738

15.5.3扩展总线请求器优先级 738

15.6通过扩展总线进行引导 739

15.7扩展总线的寄存器 739

15.7.1扩展总线全局控制(XBGC)寄存器 740

15.7.2扩展总线XCE空间控制寄存器 741

15.7.3扩展总线主机接口控制(XBHC)寄存器 742

15.7.4扩展总线内部主设备地址(XBIMA)寄存器 743

15.7.5扩展总线外部地址(XBEA)寄存器 743

15.7.6扩展总线数据(XBD)寄存器 744

15.7.7扩展总线内部从设备(XBISA)寄存器 744

第16章 外围设备互联端口(PCI) 746

16.1外围设备互联端口(PCI)概述 746

16.2 PCI端口结构 749

16.3 TMS320C6000 PCI存储器映射 751

16.4 PCI存储器服务的特殊考虑 752

16.4.1可预取的读操作 752

16.4.2 PCI与程序存储器之间的数据传输(仅TMS320C62x DSP) 753

16.5从设备传输 753

16.5.1 DSP从设备写 753

16.5.2 DSP从设备读 754

16.6主设备传输 754

16.6.1 DSP主设备写 755

16.6.2 DSP主设备读 755

16.7复位 756

16.8中断与状态报告 757

16.9 PCI端口的启动配置 757

16.10 EEPROM接口 758

16.10.1由EEPROM实现PCI自动初始化 759

16.10.2 EEPROM内存映射 759

16.10.3 EEPROM校验和 760

16.10.4 DSP EEPROM接口 760

16.11错误处理 761

16.11.1 PCI奇偶错误处理 761

16.11.2 PCI系统错误处理 762

16.11.3 PCI主设备终止协议 762

16.11.4 PCI目标设备终止协议 762

16.12电源管理(仅适用于TMS320C62x) 762

16.12.1 PCI电源管理 762

16.12.2 PCI电源管理策略 764

16.12.3 DSP复位 765

16.13 PCI寄存器 765

16.13.1 PCI配置寄存器 766

16.13.2 I/O寄存器 769

16.13.3内存映射寄存器 771

16.14 PCI应用实例 780

第17章 定时器 795

17.1概述 795

17.2定时器的寄存器 795

17.3定时器的启动和停止 799

17.4定时器计数 799

17.5定时器脉冲的产生 799

17.6控制寄存器中的边界情况 800

17.7定时器引脚配置为通用I/O端口 801

第18章 通用输入/输出(I/O) 802

18.1概述 802

18.2通用输入/输出(I/O)端口的功能 803

18.3中断与事件产生 803

18.3.1直通模式 804

18.3.2逻辑模式 805

18.3.3 GPINT与GPO和/或GPINTO的复用 805

18.4中断与事件 806

18.5通用输入/输出(I/O)端口寄存器 806