上篇 AD-21xx系列16位定点数字信号处理器 3
第1章 定点DSP概述 3
1.1 功能单元 3
目录 3
1.2 存储器和系统接口 4
1.3 指令集 4
1.4 DSP性能 4
1.5 核心结构 5
1.6 片内外设 6
1.7 ADSP-21xx系列的开发工具 6
2.1 概述 7
第2章 ADSP-21xx计算单元 7
2.2 算术/逻辑单元(ALU) 9
2.2.1 ALU的框图 9
2.2.2 ALU标准功能 11
2.2.3 ALU的输入/输出寄存器 12
2.2.4 多精度能力 12
2.2.5 ALU的饱和模式 12
2.2.6 ALU的溢出锁存模式 12
2.2.7 除法 13
2.3 乘法/累加器(MAC) 15
2.2.8 ALU的状态位 15
2.3.1 MAC框图的讨论 16
2.3.2 MAC操作 17
2.4 桶形移位器 21
2.4.1 移位器框图讨论 21
2.4.2 移位器的操作 26
第3章 ADSP-21xx程序控制和数据地址产生 31
3.1 程序控制器 31
3.1.1 下一个程序地址选择逻辑 31
3.1.2 程序计数器和PC堆栈 31
3.1.4 循环比较器及其堆栈 33
3.1.3 循环计数器和堆栈 33
3.2 程序控制指令 35
3.3 中断 37
3.3.1 中断服务的过程 38
3.3.2 设置中断 38
3.3.3 中断响应时间 40
3.4 状态寄存器和状态堆栈 41
3.4.1 算术状态寄存器(ASTAT) 41
3.4.2 堆栈状态寄存器(SSTAT) 42
3.4.3 模式状态寄存器(MSTAT) 43
3.5 条件指令 44
3.6 TOPPCSTACK 45
3.7 数据地址的生成 46
3.7.1 数据地址发生器(DAG) 46
3.7.2 数据存取的编程 49
3.7.3 PMD-DMD总线交换 50
3.8 定时器 51
第4章 ADSP-21xx串口 54
4.1 端口的基本情况 54
4.2 同步串口的编程 56
4.3 SPORT的使能 58
4.4 串行时钟 59
4.5 串口字长 60
4.6 串行字成帧选项 60
4.7 串口设置举例 61
4.8 时序举例 62
4.9 压扩和数据格式 67
4.10 自动缓冲 68
4.11 多通道功能 71
4.12 SPORT的定时 73
5.1 HIP管脚介绍 79
第5章 ADSP-21xx主机接口 79
5.2 HIP功能描述 80
5.3 HIP的操作 82
5.4 HIP中断 84
5.5 主机接口的时序 85
5.6 通过HIP的引导加载 88
第6章 ADSP-21xx模拟接口 91
6.1 A/D转换 92
6.1.1 模拟输入 92
6.1.2 ADC 92
6.2.1 DAC 94
6.2 D/A转换 94
6.2.2 差分输出放大器 95
6.3 模拟接口的操作 95
6.3.1 存储器映射的控制寄存器 95
6.3.2 存储器映射的数据寄存器 96
6.3.3 ADC和DAC中断 97
6.4 电路设计中的考虑 100
6.4.1 模拟信号接口 100
6.4.2 模拟信号输出 101
6.4.3 参考电压滤波电容 102
7.1 程序存储器接口 103
第7章 ADSP-21xx存储器接口 103
7.1.1 片外程序存储器的读和写 104
7.1.2 程序存储器映像 105
7.1.3 ROM程序存储器映像 107
7.2 数据存储器接口 109
7.3 引导存储器接口 112
7.4 总线请求/总线响应 115
7.5 ADSP-2181的存储器接口 117
7.5.1 ADSP-2181程序存储器接口 118
7.5.2 ADSP-2181的数据存储器接口 121
7.5.4 ADSP-2181的I/O存储器空间 122
7.5.3 ADSP-2181的字节存储器接口 122
7.5.5 ADSP-2181复合存储器选择 123
7.5.6 外部存储器读 124
7.5.7 外部存储器写 124
第8章 ADSP-21xx DMA接口 126
8.1 BDMA接口 127
8.1.1 BDMA接口的功能 127
8.1.2 BDMA控制寄存器 128
8.1.3 字节存储器字的格式 130
8.1.4 BDMA引导 131
8.2.1 IDMA接口的管脚 132
8.2 IDMA接口 132
8.2.2 IDMA接口功能 133
8.2.3 通过IDMA修改控制寄存器 135
8.2.4 IDMA接口时序 135
8.2.5 通过IDMA接口的引导装载 139
8.2.6 DMA周期窃取、DMA延迟和?确认 139
第9章 ADSP-21xx系统接口 141
9.1 时钟信号 141
9.3 软件强制重引导 143
9.2 复位 143
9.4 外部中断 144
9.5 标志管脚 144
9.6 休眠 145
9.6.1 休眠控制 146
9.6.2 进入休眠 146
9.6.3 退出休眠状态 147
9.6.4 唤醒后的启动时间 148
9.6.5 休眠期间处理器的运行 149
9.6.7 PWDACK管脚 151
9.6.8 不可屏蔽的休眠中断 151
9.6.6 最低功耗的条件 151
第10章 ADSP-21xx的硬件设计和软件编程 153
10.1 系统开发过程 153
10.2 ADSP-2100的内部寄存器 154
10.2.1 数据地址发生器 156
10.2.2 程序控制器 156
10.2.3 计算单元 157
10.2.6 串口 158
10.2.8 主机接口 158
10.2.7 存储器接口和SPORT使能 158
10.2.5 定时器 158
10.2.4 总线交换 158
10.2.9 模拟接口 159
10.3 编程实例 159
10.3.1 对设置程序的讨论 161
10.3.2 对中断程序的讨论 162
10.4 硬件设计实例 162
10.4.1 利用总线请求和确认信号从主机引导 162
10.4.2 串口和编解码器的接口 164
10.4.3 串口和DAC接口 165
10.4.4 串口和ADC接口 165
10.4.6 80C51和主机接口的连接 167
10.4.5 串口和串口接口 167
下篇 ADSP-2106x系列32位浮点数字信号处理器 171
第11章 浮点DSP概述 171
第12章 ADSP-2106x的计算单元 174
12.1 概述 174
12.2 IEEE浮点数的运算 175
12.3 定点运算 176
12.4 舍入方式 176
12.5 算术逻辑单元(ALU) 176
12.5.2 ALU的操作模式 177
12.5.1 ALU运算 177
12.5.3 ALU的状态标志 178
12.6 乘法器 180
12.6.1 乘法器的运算 180
12.6.2 定点结果 181
12.6.3 定点运算 182
12.6.4 浮点操作模式 182
12.6.5 乘法器的状态标志 183
12.7 移位器 184
12.7.1 移位器的操作 185
12.7.2 位段的放置和截取指令 185
12.7.3 移位器状态标志 187
12.8 多功能计算 188
12.9 数据寄存器组 188
第13章 ADSP-2106x的程序控制 190
13.1 概述 190
13.1.1 指令周期 190
13.1.2 程序控制器的结构 191
13.2 程序控制器的操作 193
13.3 条件指令的执行…………………………………? 194
13.4 分支(CALL,JUMP,RTS,RTI) 196
13.5 循环(DO UNTIL) 198
13.5.1 循环的限制和短循环 199
13.5.2 循环地址堆栈 201
13.5.3 循环计数器和堆栈 202
13.6 中断 203
13.6.1 中断响应时间 204
13.6.2 中断向量表 206
13.6.3 中断锁存寄存器(IRPTL) 207
13.6.4 中断优先级 207
13.6.5 中断屏蔽和控制 207
13.6.6 状态堆栈的保存和恢复 208
13.6.8 为再次使用而清除当前中断 209
13.6.7 软件中断 209
13.6.10 多处理器的向量中断(VIRPT) 210
13.6.9 外部中断时序和触发 210
13.7 定时器 211
13.8 堆栈标志 213
13.9 IDLE和IDLE16指令 214
13.10 指令缓冲器 214
第14章 ADSP-2106x的数据寻址 218
14.1 概述 218
14.2 DAG寄存器 219
14.3.1 地址的输出和修改 220
14.3 DAG操作 220
14.3.2 循环缓冲区的寻址 221
14.3.3 位反序寻址 223
14.4 DAG寄存器的传送 224
第15章 ADSP-2106x存储器 226
15.1 概述 226
15.2 ADSP-2106x存储器图 230
15.3 内部存储器组织和字长 237
15.3.1 32位字和48位字 237
15.3.3 32位字和48位字混合的基本示例 239
15.3.2 32位字和48位字混合块 239
15.3.4 16位短字 241
15.3.5 具有更佳间隔尺寸的32位字和48位字混合 242
15.3.6 为32位数据和40位数据配置存储器 245
15.4 外部存储器接口 246
15.4.1 外部存储器组 247
15.4.2 未分组的存储器和引导存储器选择线(BMS) 248
15.4.3 等待状态和应答 248
15.4.4 DRAM页边界检测 251
15.5 外部存储器访问时序 253
第16章 ADSP-2106x的DMA 256
16.1 概述 256
16.2 DMA控制寄存器 259
16.2.1 外部口DMA控制寄存器 260
16.2.2 串口DMA控制 263
16.2.3 链路口DMA控制 263
16.2.4 共享DMA通道的端口选择 265
16.2.5 DMA通道状态寄存器(DMASTAT) 265
16.3 DMA控制器操作 266
16.3.1 DMA通道参数寄存器 267
16.3.3 DMA通道优先级 269
16.3.2 内部请求和应答 269
16.3.4 为DMA链 271
16.3.5 DMA中断 274
16.3.6 启动和停止DMA序列 275
16.4 外部口DMA 275
16.4.1 外部口先进先出缓冲区(EPBx) 275
16.4.2 内部和外部地址的产生 276
16.4.3 外部口DMA模式 277
16.4.4 ADSP-2106x处理器间DMA的系统配置 281
16.4.5 DMA硬件接口 282
16.5 DMA传输量 283
16.6 二维DMA 284
第17章 ADSP-2106x多处理器系统 286
17.1 概述 286
17.2 多处理器系统的结构 288
17.3 多处理器总线仲裁 290
17.3.1 总线仲裁协议 291
17.3.2 总线仲裁优先权(RPBA) 294
17.3.3 总线控制权的时限 294
17.3.4 核优先访问 295
17.3.5 复位后的总线同步 296
17.5.1 单字传输 298
17.4 直接读写从处理器 298
17.5 通过EPBx缓冲的数据传输 298
17.5.2 DMA传输 299
17.6 总线锁定和信号量 299
17.7 处理器间消息传递和向量中断 301
17.7.1 消息传递(MSGRx) 301
17.7.2 向量中断(VIRPT) 302
17.8 SYSTAT寄存器中的状态位 303
第18章 ADSP-2106x主机接口 304
18.1 概述 304
18.2.1 总线请求 306
18.2 主机对ADSP-2106x的控制 306
18.2.2 异步传输 308
18.2.3 同步传输 310
18.2.4 用?解决主机接口死锁 310
18.3 直接读写从机 311
18.4 通过EPBx的数据传输 313
18.4.1 单字节数据的传输 313
18.4.2 DMA传输 314
18.5 数据打包 314
18.8 系统总线接口 318
18.7 处理器间的消息和向量中断 318
18.6 SYSTAT寄存器状态位 318
18.8.1 对ADSP-2106x总线的访问——ADSP-2106x为从机 319
18.8.2 对系统总线的访问——ADSP-2106x为控制者 320
18.8.3 使用本地存储器的多处理器技术 322
18.8.4 ADSP-2106x和微处理器的接口 322
第19章 ADSP-2106x链路口 324
19.1 概述 324
19.2 链路口控制寄存器 326
19.3 握手控制信号 330
19.4 链路缓冲 331
19.5 链路口DMA通道 332
19.6 链路口中断 333
19.7 传送错误检测、令牌传递和链路传送信号线 335
19.8 系统设计实例:本地DRAM接口 337
19.9 程序实例 337
第20章 ADSP-2106x串行口 349
20.1 概述 349
20.2 串口控制寄存器和数据缓冲区 351
20.3 数据字格式 356
20.4 时钟信号选择 358
20.5 帧同步信号选择 359
20.6 多通道操作 361
20.6.1 多通道模式下的帧同步 362
20.6.2 STCTL和SRCTL中的多通道控制位 363
20.6.3 多通道选择寄存器 363
20.6.4 串口接收比较寄存器 364
20.7 串口和内存的数据传输 365
20.7.1 DMA块传输 365
20.7.2 单字传输方式 368
20.8 串口自环和串口引脚驱动 368
20.9 串口编程示例 369
第21章 ADSP-2106x系统设计 374
21.1 ADSP-2106x引脚 374
21.1.1 引脚定义 374
21.1.2 复位后引脚的状态 378
21.1.3 ?和CLKIN 379
21.1.4 中断和定时器引脚 379
21.1.5 标志引脚 380
21.1.6 JTAG接口引脚 381
21.2 EZ-ICE仿真器 381
21.3 输入信号的调理 383
21.4 高频设计补偿 384
21.5 引导 388
21.5.1 引导方式的选择 389
21.5.2 EPROM引导 389
21.5.3 主机引导 392
21.5.4 链路口引导 393
21.5.5 多处理器引导 393
21.5.6 非引导模式 395
21.5.7 中断向量表位置 395
21.6 编程时的设计要点 395
21.6.1 额外需要的周期 395
21.6.4 不允许的DAG寄存器传送 397
21.6.2 延迟分支跳转的限制 397
21.6.3 循环缓冲区的初始化 397
21.6.5 对寄存器组(堆)的两次写 398
21.6.6 计算单元 398
21.6.7 存储器空间的访问限制 398
21.6.8 在一个存储器块中混合存储32位字和48位字 398
21.6.9 16位短字 398
21.6.10 双数据访问 398
21.7 数据延迟、响应时间及吞吐量 399
21.8 执行延迟 400