书籍详情
Blackfin系列DSP原理与系统设计(第2版)
作者:陈峰 编著
出版社:电子工业出版社
出版时间:2010-02-01
ISBN:9787121102189
定价:¥39.80
购买这本书可以去
内容简介
Blackfin系列DSP是ADI开发的高性能定点DSP产品,共分为五大系列数十种型号,分别面向不同种类的应用环境。Blackfin 系列DSP的片上系统集成了大部分常见的工业总线与外设接口。Blackfin系列DSP具有强大的处理能力,丰富的外设接口与极低的功耗,使其更易满足各类不同需求。本书主要介绍了采用Blackfin系列DSP开发时所需掌握的知识与技巧,具体内容包括:Blackfin系列芯片的性能、内部结构、外设接口、硬件开发、指令集、开发环境、软件编程与应用实例。
作者简介
暂缺《Blackfin系列DSP原理与系统设计(第2版)》作者简介
目录
第1章 数字信号处理和DSP 1
1.1 数字信号处理的发展 1
1.2 DSP在数字信号处理中的应用 2
1.3 DSP芯片的结构特点 3
1.4 Blackfin系列DSP 5
1.4.1 Blackfin系列DSP的结构特点 5
1.4.2 ADSP-BF51x系列芯片 7
1.4.3 ADSP-BF52x系列芯片 8
1.4.4 ADSP-BF53x系列芯片 9
1.4.5 ADSP-BF54x系列芯片 10
1.4.6 ADSP-BF561双核芯片 12
第2章 Blackfin系列DSP的内部结构 13
2.1 内核结构 13
2.1.1 寄存器组 14
2.1.2 算术逻辑单元(ALU) 15
2.1.3 乘法累加器(MAC) 16
2.1.4 桶形移位器 18
2.2 存储器 19
2.2.1 存储器空间分配 19
2.2.2 内部存储器的详细介绍 21
2.3 系统概述 33
2.3.1 内部总线 33
2.3.2 内部时钟 35
2.3.3 处理器核心概述 35
2.3.4 接口 36
2.3.5 系统总线概述 40
2.4 程序控制器 44
2.4.1 概述 44
2.4.2 相关的寄存器 44
2.4.3 指令流水线 46
2.4.4 程序流的控制 47
2.5 中断 48
2.5.1 概述 48
2.5.2 系统中断过程 49
2.5.3 SIC的寄存器 51
2.5.4 CEC的寄存器 54
2.5.5 中断的全局禁止和使能 55
2.5.6 事件向量表 56
2.5.7 中断服务 60
2.5.8 中断的嵌套 61
2.5.9 异常处理 63
2.6 DMA 64
2.6.1 DMA控制器 65
2.6.2 DMA流程 66
2.6.3 DMA寄存器 69
2.6.4 二维DMA 71
2.6.5 DMA性能优化 72
2.6.6 DMA软件管理 74
2.6.7 DMA异常中断条件 74
第3章 Blackfin系列DSP外部设备 76
3.1 外部总线 76
3.1.1 总线概述 78
3.1.2 EBIU仲裁 78
3.1.3 出错检测 78
3.1.4 异步存储器接口 79
3.1.5 SDRAM控制器(SDC) 80
3.1.6 DDR SDRAM控制器 81
3.2 I/O接口 83
3.2.1 GPIO接口 83
3.2.2 键盘接口 86
3.3 Host DMA接口单元 89
3.3.1 Host DMA接口 89
3.3.2 HOSTDP的工作模式 89
3.3.3 HOSTDP的寄存器 92
3.4 增强型并行外设接口(EPPI) 95
3.4.1 EPPI的结构 95
3.4.2 ITU-656介绍 96
3.4.3 EPPI工作模式 98
3.4.4 EPPI的特性 102
3.4.5 EPPI寄存器 102
3.5 以太网MAC(EMAC) 103
3.5.1 EMAC的接口 103
3.5.2 EMAC的配置 106
3.5.3 基本EMAC代码示例 108
3.5.4 EMAC的工业特性 112
3.5.5 EMAC寄存器 112
3.6 存储器接口 113
3.6.1 ATAPI 113
3.6.2 NAND Flash 119
3.6.3 SDH接口 121
3.7 定时器 124
3.7.1 概述 124
3.7.2 通用定时器 125
3.7.3 内核定时器 126
3.7.4 “看门狗”定时器 127
3.8 串行接口 127
3.8.1 SPI 127
3.8.2 SPORT接口 133
3.8.3 UART接口 138
3.8.4 TWI 140
3.8.5 USBD模块 144
3.9 其他接口简介 151
3.9.1 基于LockBox技术的安全防护 151
3.9.2 像素合成器(PIXC) 152
3.9.3 CAN模块 153
第4章 Blackfin系列DSP硬件开发 156
4.1 引导(BOOT)程序 156
4.1.1 引导模式设定 156
4.1.2 引导过程 157
4.2 PLL与时钟 157
4.2.1 时钟系统概述 158
4.2.2 PLL与时钟控制 158
4.2.3 PLL时钟的倍频因子和分频比 159
4.2.4 PLL的MMR 161
4.3 动态电源管理 163
4.3.1 动态电源管理控制器(DPMC) 163
4.3.2 运行方式 163
4.3.3 运行方式的切换 165
4.3.4 外设的定时 167
4.3.5 动态电源电压控制 167
4.4 处理器内核模式设定 169
4.4.1 概述 169
4.4.2 用户模式 170
4.4.3 监控模式 171
4.4.4 仿真模式 172
4.4.5 空闲状态 173
4.4.6 复位状态 173
4.4.7 系统复位和上电设置 174
4.5 硬件设计 176
4.5.1 引脚处理 176
4.5.2 设计复用时钟引脚 178
4.5.3 中断配置和服务 179
4.5.4 信号量 179
4.5.5 PCI仲裁 180
4.5.6 USB设备连接 180
4.5.7 外部存储器设计 181
4.5.8 高频设计 184
第5章 Blackfin系列DSP指令集 186
5.1 数据寻址方式 186
5.2 Blackfin系列DSP指令系统特点 187
5.2.1 Blackfin系列DSP内核结构与指令 187
5.2.2 Blackfin系列DSP指令说明 188
5.3 程序流程控制指令 192
5.3.1 跳转指令/条件跳转指令 192
5.3.2 调用和返回指令 193
5.3.3 循环指令 193
5.4 加载和存储指令 194
5.4.1 加载指令 194
5.4.2 存储指令 195
5.5 数据转移指令 196
5.5.1 寄存器数据转移指令 196
5.5.2 扩展半个字到一个字的数据转移指令 197
5.6 栈控制指令 197
5.6.1 进栈指令 197
5.6.2 出栈指令 198
5.6.3 连接和撤销连接指令 198
5.7 逻辑运算指令 199
5.7.1 与、或、非、异或 199
5.7.2 位方式异或指令 200
5.8 移位和循环指令 202
5.8.1 算术移位指令 202
5.8.2 逻辑移位指令 203
5.8.3 加后移位指令 204
5.8.4 移位后加指令 204
5.8.5 循环移位指令 205
5.9 算术运算指令 206
5.9.1 加、减、乘、除 206
5.9.2 最大值指令和最小值指令 210
5.9.3 绝对值指令和取补指令 210
5.9.4 舍入指令 211
5.9.5 饱和指令 211
5.9.6 符号位指令 211
5.10 位操作指令 212
5.10.1 位清除指令 212
5.10.2 位置位指令 212
5.10.3 位取反指令 212
5.10.4 位测试指令 213
5.10.5 位域存放指令 213
5.10.6 位域提取指令 214
5.10.7 位复用指令 216
5.10.8 ONES指令 216
5.11 CC位操作指令 217
5.11.1 比较数据寄存器、指针、累加器指令 217
5.11.2 取补CC位指令 217
5.11.3 传输CC位指令 218
5.12 外部事件操作指令 218
5.12.1 空闲指令 218
5.12.2 内核同步指令 218
5.12.3 强制仿真指令 219
5.12.4 中断指令 219
5.12.5 空指令 220
5.13 Cache控制指令 220
5.13.1 数据Cache预取指令 220
5.13.2 数据Cache刷新指令 220
5.13.3 指令Cache无效指令 221
5.14 视频像素操作指令 221
5.14.1 校正指令 221
5.14.2 双16位操作 222
5.14.3 4个字节数操作 223
5.15 向量操作指令 227
5.15.1 加、减、乘 227
5.15.2 向量最大值指令和向量最小值指令 230
5.15.3 向量移位指令 231
5.15.4 其他指令 232
5.16 并行指令 236
第6章 VisualDSP++ 240
6.1 VisualDSP++ 总体介绍 240
6.1.1 VisualDSP++简单介绍 240
6.1.2 开发环境 243
6.2 JTAG仿真器 258
6.2.1 JTAG连接 258
6.2.2 ICE配置与测试 258
6.3 C/C++编译器 259
6.3.1 数据类型 259
6.3.2 运行时环境与运行时库 260
6.3.3 从命令行运行编译器 260
6.3.4 在VisualDSP++中配置编译器 262
6.3.5 优化控制 262
6.4 汇编器 264
6.4.1 汇编器命令 264
6.4.2 汇编程序结构和语法 265
6.4.3 预处理器 267
6.5 链接器 267
6.5.1 链接过程概述 267
6.5.2 链接文件 268
6.5.3 链接器参数选择 269
6.5.4 专家链接器(EL) 271
6.6 加载器 276
6.6.1 从命令行运行加载器 276
6.6.2 在VisualDSP++中配置加载器 279
6.7 操作系统内核(VDK) 280
6.7.1 内核的作用 280
6.7.2 调度 280
6.8 VDK的组成 281
6.8.1 线程 281
6.8.2 调度程序 282
6.8.3 中断服务程序 284
第7章 软件编程 286
7.1 汇编编译器 286
7.1.1 汇编概要 286
7.1.2 支持C语言结构的汇编器 286
7.1.3 汇编语法 287
7.2 C/C++编译器 295
7.2.1 C/C++编译器简介 295
7.2.2 数据类型存储长度 295
7.2.3 C/C++编译语言扩展 296
7.3 预处理指令 301
7.3.1 引用头文件 301
7.3.2 宏的编写 302
7.3.3 条件汇编和编译 302
7.4 C代码优化 307
7.4.1 循环优化 307
7.4.2 内联函数优化 310
7.4.3 使用汇编语言优化 312
7.5 C与汇编混合编程 313
7.5.1 C/C++和汇编接口命名规则 313
7.5.2 C运行时环境下寄存器的使用 314
7.5.3 参数传递和局部堆栈存储分配——LINK和UNLINK指令 314
7.5.4 在C/C++程序中调用汇编子程序 315
7.5.5 在汇编程序中调用C/C++函数 316
7.6 VisualDSP++ 5.0 C/C++运行时库函数介绍 317
7.7 VisualDSP++ 5.0 DSP库函数介绍 319
7.8 VisualDSP++5.0设备驱动库函数简单介绍 321
第8章 应用实例 323
8.1 应用系统设计举例 323
8.1.1 单片DSP系统 323
8.1.2 多片DSP系统 325
8.2 MPEG-4编码系统 326
8.2.1 MPEG-4视频压缩方法简介 326
8.2.2 DCT和IDCT 327
8.2.3 量化 327
8.2.4 运动估计 327
8.2.5 熵编码 328
8.3 代码示例 328
8.3.1 PADDING算法代码的编写和优化 328
8.3.2 DCT算法代码的编写和优化 334
8.3.3 运动矢量预测 335
8.3.4 SAD最小搜索 341
8.4 基于Blackfin ADSP-BF561芯片的CCD摄像头图像处理 342
8.4.1 系统简介 342
8.4.2 系统功能与指标 342
8.4.3 系统概述 343
8.4.4 系统硬件设计 344
8.4.5 系统软件设计 344
8.5 基于Blackfin ADSP-BF561芯片的智能视频监控系统 347
8.5.1 系统简介 347
8.5.2 系统功能与指标 348
8.5.3 系统概述 348
8.5.4 系统硬件设计 349
8.5.5 系统软件设计 350
1.1 数字信号处理的发展 1
1.2 DSP在数字信号处理中的应用 2
1.3 DSP芯片的结构特点 3
1.4 Blackfin系列DSP 5
1.4.1 Blackfin系列DSP的结构特点 5
1.4.2 ADSP-BF51x系列芯片 7
1.4.3 ADSP-BF52x系列芯片 8
1.4.4 ADSP-BF53x系列芯片 9
1.4.5 ADSP-BF54x系列芯片 10
1.4.6 ADSP-BF561双核芯片 12
第2章 Blackfin系列DSP的内部结构 13
2.1 内核结构 13
2.1.1 寄存器组 14
2.1.2 算术逻辑单元(ALU) 15
2.1.3 乘法累加器(MAC) 16
2.1.4 桶形移位器 18
2.2 存储器 19
2.2.1 存储器空间分配 19
2.2.2 内部存储器的详细介绍 21
2.3 系统概述 33
2.3.1 内部总线 33
2.3.2 内部时钟 35
2.3.3 处理器核心概述 35
2.3.4 接口 36
2.3.5 系统总线概述 40
2.4 程序控制器 44
2.4.1 概述 44
2.4.2 相关的寄存器 44
2.4.3 指令流水线 46
2.4.4 程序流的控制 47
2.5 中断 48
2.5.1 概述 48
2.5.2 系统中断过程 49
2.5.3 SIC的寄存器 51
2.5.4 CEC的寄存器 54
2.5.5 中断的全局禁止和使能 55
2.5.6 事件向量表 56
2.5.7 中断服务 60
2.5.8 中断的嵌套 61
2.5.9 异常处理 63
2.6 DMA 64
2.6.1 DMA控制器 65
2.6.2 DMA流程 66
2.6.3 DMA寄存器 69
2.6.4 二维DMA 71
2.6.5 DMA性能优化 72
2.6.6 DMA软件管理 74
2.6.7 DMA异常中断条件 74
第3章 Blackfin系列DSP外部设备 76
3.1 外部总线 76
3.1.1 总线概述 78
3.1.2 EBIU仲裁 78
3.1.3 出错检测 78
3.1.4 异步存储器接口 79
3.1.5 SDRAM控制器(SDC) 80
3.1.6 DDR SDRAM控制器 81
3.2 I/O接口 83
3.2.1 GPIO接口 83
3.2.2 键盘接口 86
3.3 Host DMA接口单元 89
3.3.1 Host DMA接口 89
3.3.2 HOSTDP的工作模式 89
3.3.3 HOSTDP的寄存器 92
3.4 增强型并行外设接口(EPPI) 95
3.4.1 EPPI的结构 95
3.4.2 ITU-656介绍 96
3.4.3 EPPI工作模式 98
3.4.4 EPPI的特性 102
3.4.5 EPPI寄存器 102
3.5 以太网MAC(EMAC) 103
3.5.1 EMAC的接口 103
3.5.2 EMAC的配置 106
3.5.3 基本EMAC代码示例 108
3.5.4 EMAC的工业特性 112
3.5.5 EMAC寄存器 112
3.6 存储器接口 113
3.6.1 ATAPI 113
3.6.2 NAND Flash 119
3.6.3 SDH接口 121
3.7 定时器 124
3.7.1 概述 124
3.7.2 通用定时器 125
3.7.3 内核定时器 126
3.7.4 “看门狗”定时器 127
3.8 串行接口 127
3.8.1 SPI 127
3.8.2 SPORT接口 133
3.8.3 UART接口 138
3.8.4 TWI 140
3.8.5 USBD模块 144
3.9 其他接口简介 151
3.9.1 基于LockBox技术的安全防护 151
3.9.2 像素合成器(PIXC) 152
3.9.3 CAN模块 153
第4章 Blackfin系列DSP硬件开发 156
4.1 引导(BOOT)程序 156
4.1.1 引导模式设定 156
4.1.2 引导过程 157
4.2 PLL与时钟 157
4.2.1 时钟系统概述 158
4.2.2 PLL与时钟控制 158
4.2.3 PLL时钟的倍频因子和分频比 159
4.2.4 PLL的MMR 161
4.3 动态电源管理 163
4.3.1 动态电源管理控制器(DPMC) 163
4.3.2 运行方式 163
4.3.3 运行方式的切换 165
4.3.4 外设的定时 167
4.3.5 动态电源电压控制 167
4.4 处理器内核模式设定 169
4.4.1 概述 169
4.4.2 用户模式 170
4.4.3 监控模式 171
4.4.4 仿真模式 172
4.4.5 空闲状态 173
4.4.6 复位状态 173
4.4.7 系统复位和上电设置 174
4.5 硬件设计 176
4.5.1 引脚处理 176
4.5.2 设计复用时钟引脚 178
4.5.3 中断配置和服务 179
4.5.4 信号量 179
4.5.5 PCI仲裁 180
4.5.6 USB设备连接 180
4.5.7 外部存储器设计 181
4.5.8 高频设计 184
第5章 Blackfin系列DSP指令集 186
5.1 数据寻址方式 186
5.2 Blackfin系列DSP指令系统特点 187
5.2.1 Blackfin系列DSP内核结构与指令 187
5.2.2 Blackfin系列DSP指令说明 188
5.3 程序流程控制指令 192
5.3.1 跳转指令/条件跳转指令 192
5.3.2 调用和返回指令 193
5.3.3 循环指令 193
5.4 加载和存储指令 194
5.4.1 加载指令 194
5.4.2 存储指令 195
5.5 数据转移指令 196
5.5.1 寄存器数据转移指令 196
5.5.2 扩展半个字到一个字的数据转移指令 197
5.6 栈控制指令 197
5.6.1 进栈指令 197
5.6.2 出栈指令 198
5.6.3 连接和撤销连接指令 198
5.7 逻辑运算指令 199
5.7.1 与、或、非、异或 199
5.7.2 位方式异或指令 200
5.8 移位和循环指令 202
5.8.1 算术移位指令 202
5.8.2 逻辑移位指令 203
5.8.3 加后移位指令 204
5.8.4 移位后加指令 204
5.8.5 循环移位指令 205
5.9 算术运算指令 206
5.9.1 加、减、乘、除 206
5.9.2 最大值指令和最小值指令 210
5.9.3 绝对值指令和取补指令 210
5.9.4 舍入指令 211
5.9.5 饱和指令 211
5.9.6 符号位指令 211
5.10 位操作指令 212
5.10.1 位清除指令 212
5.10.2 位置位指令 212
5.10.3 位取反指令 212
5.10.4 位测试指令 213
5.10.5 位域存放指令 213
5.10.6 位域提取指令 214
5.10.7 位复用指令 216
5.10.8 ONES指令 216
5.11 CC位操作指令 217
5.11.1 比较数据寄存器、指针、累加器指令 217
5.11.2 取补CC位指令 217
5.11.3 传输CC位指令 218
5.12 外部事件操作指令 218
5.12.1 空闲指令 218
5.12.2 内核同步指令 218
5.12.3 强制仿真指令 219
5.12.4 中断指令 219
5.12.5 空指令 220
5.13 Cache控制指令 220
5.13.1 数据Cache预取指令 220
5.13.2 数据Cache刷新指令 220
5.13.3 指令Cache无效指令 221
5.14 视频像素操作指令 221
5.14.1 校正指令 221
5.14.2 双16位操作 222
5.14.3 4个字节数操作 223
5.15 向量操作指令 227
5.15.1 加、减、乘 227
5.15.2 向量最大值指令和向量最小值指令 230
5.15.3 向量移位指令 231
5.15.4 其他指令 232
5.16 并行指令 236
第6章 VisualDSP++ 240
6.1 VisualDSP++ 总体介绍 240
6.1.1 VisualDSP++简单介绍 240
6.1.2 开发环境 243
6.2 JTAG仿真器 258
6.2.1 JTAG连接 258
6.2.2 ICE配置与测试 258
6.3 C/C++编译器 259
6.3.1 数据类型 259
6.3.2 运行时环境与运行时库 260
6.3.3 从命令行运行编译器 260
6.3.4 在VisualDSP++中配置编译器 262
6.3.5 优化控制 262
6.4 汇编器 264
6.4.1 汇编器命令 264
6.4.2 汇编程序结构和语法 265
6.4.3 预处理器 267
6.5 链接器 267
6.5.1 链接过程概述 267
6.5.2 链接文件 268
6.5.3 链接器参数选择 269
6.5.4 专家链接器(EL) 271
6.6 加载器 276
6.6.1 从命令行运行加载器 276
6.6.2 在VisualDSP++中配置加载器 279
6.7 操作系统内核(VDK) 280
6.7.1 内核的作用 280
6.7.2 调度 280
6.8 VDK的组成 281
6.8.1 线程 281
6.8.2 调度程序 282
6.8.3 中断服务程序 284
第7章 软件编程 286
7.1 汇编编译器 286
7.1.1 汇编概要 286
7.1.2 支持C语言结构的汇编器 286
7.1.3 汇编语法 287
7.2 C/C++编译器 295
7.2.1 C/C++编译器简介 295
7.2.2 数据类型存储长度 295
7.2.3 C/C++编译语言扩展 296
7.3 预处理指令 301
7.3.1 引用头文件 301
7.3.2 宏的编写 302
7.3.3 条件汇编和编译 302
7.4 C代码优化 307
7.4.1 循环优化 307
7.4.2 内联函数优化 310
7.4.3 使用汇编语言优化 312
7.5 C与汇编混合编程 313
7.5.1 C/C++和汇编接口命名规则 313
7.5.2 C运行时环境下寄存器的使用 314
7.5.3 参数传递和局部堆栈存储分配——LINK和UNLINK指令 314
7.5.4 在C/C++程序中调用汇编子程序 315
7.5.5 在汇编程序中调用C/C++函数 316
7.6 VisualDSP++ 5.0 C/C++运行时库函数介绍 317
7.7 VisualDSP++ 5.0 DSP库函数介绍 319
7.8 VisualDSP++5.0设备驱动库函数简单介绍 321
第8章 应用实例 323
8.1 应用系统设计举例 323
8.1.1 单片DSP系统 323
8.1.2 多片DSP系统 325
8.2 MPEG-4编码系统 326
8.2.1 MPEG-4视频压缩方法简介 326
8.2.2 DCT和IDCT 327
8.2.3 量化 327
8.2.4 运动估计 327
8.2.5 熵编码 328
8.3 代码示例 328
8.3.1 PADDING算法代码的编写和优化 328
8.3.2 DCT算法代码的编写和优化 334
8.3.3 运动矢量预测 335
8.3.4 SAD最小搜索 341
8.4 基于Blackfin ADSP-BF561芯片的CCD摄像头图像处理 342
8.4.1 系统简介 342
8.4.2 系统功能与指标 342
8.4.3 系统概述 343
8.4.4 系统硬件设计 344
8.4.5 系统软件设计 344
8.5 基于Blackfin ADSP-BF561芯片的智能视频监控系统 347
8.5.1 系统简介 347
8.5.2 系统功能与指标 348
8.5.3 系统概述 348
8.5.4 系统硬件设计 349
8.5.5 系统软件设计 350
猜您喜欢