
| 炫出TMS320C6000系列DSP精彩 典藏DSP开发经验和成功案例 见证DSP菜鸟变大师的奇迹 |
| 《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 复位emif419 9.1.5 hold接口420 9.1.6 访问emif寄存器时的边界条件421 9.1.7 时钟输出使能421 9.2 tms320c620x/c670x dsp的emif422 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/c671x dsp的emif435 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的emif447 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 参数ram553 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 接收满:rfull631 13.6.2 非预期的接收帧同步:rsyncerr632 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 增强型多通道选择模式(c64×)647 13.9.4 dx使能器650 13.10 spi协议:clkstp651 13.10.1 mcbsp作为spi主设备652 13.10.2 mcbsp作为spi从设备653 13.10.3 spi初始化653 13.11 mcbsp引脚作为通用i/o654 13.12 mcbsp应用实例654 第14章 主机并行接口(hpi)672 14.1 概述672 14.2 hpi外部接口674 14.2.1 tms320c620x/c670x dsp的hpi674 14.2.2 tms320c621x/c671x dsp的hpi675 14.2.3 tms320c64x dsp的hpi16或hpi32676 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传输优先级队列——tms320c621x/c671x/c64x697 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)寄存器——仅c64xdsp701 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与gp0和/或gpint0的复用805 18.4 中断与事件806 18.5 通用输入/输出(i/o)端口寄存器806 |
商品评论(0条)