第1章 數字信號處理和DSP 1
1.1 數字信號處理的發(fā)展 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性能優(yōu)化 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的工業(yè)特性 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硬件開發(fā) 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 動態(tài)電源管理 163
4.3.1 動態(tài)電源管理控制器(DPMC) 163
4.3.2 運行方式 163
4.3.3 運行方式的切換 165
4.3.4 外設的定時 167
4.3.5 動態(tài)電源電壓控制 167
4.4 處理器內核模式設定 169
4.4.1 概述 169
4.4.2 用戶模式 170
4.4.3 監(jiān)控模式 171
4.4.4 仿真模式 172
4.4.5 空閑狀態(tài) 173
4.4.6 復位狀態(tài) 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 循環(huán)指令 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 移位和循環(huán)指令 202
5.8.1 算術移位指令 202
5.8.2 邏輯移位指令 203
5.8.3 加后移位指令 204
5.8.4 移位后加指令 204
5.8.5 循環(huán)移位指令 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個字節(jié)數操作 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 開發(fā)環(huán)境 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 運行時環(huán)境與運行時庫 260
6.3.3 從命令行運行編譯器 260
6.3.4 在VisualDSP++中配置編譯器 262
6.3.5 優(yōu)化控制 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代碼優(yōu)化 307
7.4.1 循環(huán)優(yōu)化 307
7.4.2 內聯函數優(yōu)化 310
7.4.3 使用匯編語言優(yōu)化 312
7.5 C與匯編混合編程 313
7.5.1 C/C++和匯編接口命名規(guī)則 313
7.5.2 C運行時環(huán)境下寄存器的使用 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算法代碼的編寫和優(yōu)化 328
8.3.2 DCT算法代碼的編寫和優(yōu)化 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芯片的智能視頻監(jiān)控系統 347
8.5.1 系統簡介 347
8.5.2 系統功能與指標 348
8.5.3 系統概述 348
8.5.4 系統硬件設計 349
8.5.5 系統軟件設計 350