本書采用通俗易懂、輕松靈活的語言介紹了DSP的設計與開發(fā)攻略,循序漸進地介紹了TI公司C2000、C5000、C6000三大主流DSP的基本結(jié)構(gòu)、開發(fā)步驟以及應用實例。全書共分為三部分:基礎(chǔ)原理部分介紹了DSP的基本概念以及主流DSP芯片的常用硬件資源;DSP軟件資源部分介紹了指令系統(tǒng)與CCS集成開發(fā)環(huán)境;實例部分重點討論了DSP開發(fā)中最常見、最有特色的例程。同時還總結(jié)了一些非常有用,但有時容易忽略的知識點。本書內(nèi)容實用,且系統(tǒng)性強、理論聯(lián)系實際,能夠使讀者快速、全面地掌握DSP系統(tǒng)設計與開發(fā)技巧。
李尚柏,四川大學,研究員,先后負責和參加了30多項科研項目,其中軍工項目10項,重點軍工項目5項,項目總經(jīng)費超過1200多萬。在國內(nèi)外學術(shù)刊物上發(fā)表論文多篇,先后為本科生、研究生講授《測控系統(tǒng)設計》、《嵌入式系統(tǒng)》等多門課程。獲取專利多項。
第1章 新手入門
1.1信號2
1.2數(shù)字信號處理3
1.3初識DSP4
1.3.1DSP概述4
1.3.2為什么DSP能算這么快5
1.3.3DSP芯片的現(xiàn)狀與發(fā)展趨勢7
1.4DSP的主流與非主流9
1.4.1N多種DSP9
1.4.2你會選擇誰10
1.4.3TI公司主流DSP12
1.5DSP和其他微芯片的比較13
1.5.1DSP和單片機的比較13
1.5.2DSP和ARM的比較13
1.6如何玩轉(zhuǎn)DSP14
1.6.1DSP技術(shù)知識點準備14
1.6.2DSP參考資料14
1.6.3DSP開發(fā)流程15
1.6.4DSP軟件、硬件開發(fā)16
1.7要點與思考16
第2章 數(shù)字控制利器——TMS320C24X系列
2.1TMS320C24x系列CPU簡介18
2.2CPU結(jié)構(gòu)和內(nèi)核19
2.3系統(tǒng)總線20
2.4CPU內(nèi)核21
2.4.1輸入定標移位器21
2.4.2乘法器22
2.4.3中央算術(shù)邏輯單元23
2.4.4累加器(ACC)24
2.4.5輸出數(shù)據(jù)定標移位器25
2.4.6輔助寄存器算術(shù)單元25
2.4.7狀態(tài)寄存器26
2.5存儲器與I/O空間28
2.5.1片內(nèi)存儲器28
2.5.2程序存儲器29
2.5.3數(shù)據(jù)存儲器30
2.5.4I/O空間32
2.5.5外部存儲器接口34
2.6尋址方式35
2.7系統(tǒng)配置寄存器36
2.7.1系統(tǒng)控制和狀態(tài)寄存器1(SCSR1)36
2.7.2系統(tǒng)控制和狀態(tài)寄存器2(SCSR2)38
2.7.3器件標識號寄存器(DINR)38
2.8中斷39
2.8.1中斷優(yōu)先級和中斷向量表39
2.8.2外設中斷擴展控制器42
2.8.3中斷向量表43
2.8.4全局中斷使能44
2.8.5中斷響應過程44
2.8.6中斷響應延遲處理45
2.8.7中斷寄存器46
2.8.8外設中斷寄存器46
2.8.9復位與無效地址檢測51
2.8.10外部中斷控制寄存器51
2.9程序控制52
2.9.1程序地址的產(chǎn)生52
2.9.2流水線操作54
2.9.3無條件轉(zhuǎn)移、調(diào)用和返回55
2.9.4有條件轉(zhuǎn)移、調(diào)用和返回55
2.9.5重復指令56
2.10看門狗(Watch Dog,簡稱WD)57
2.11TMS320x240x的片上外設58
2.11.1通用I/O模塊(GPIO)58
2.11.2事件管理器(EV)60
2.11.3捕獲單元69
2.11.4正交編碼脈沖(QEP)電路72
2.11.5模數(shù)轉(zhuǎn)換模塊(ADC)73
2.11.6SCI串行通信接口模塊79
2.11.7SPI串行外設接口模塊80
2.11.8CAN控制器模塊80
2.12要點與思考82
第3章 適合便攜終端的低功耗產(chǎn)品——TMS320C54X系列
3.1TMS320C54x系列CPU簡介83
3.2總線結(jié)構(gòu)85
3.3CPU內(nèi)核86
3.3.1算術(shù)邏輯運算單元ALU87
3.3.2累加器88
3.3.3桶形移位寄存器89
3.3.4乘法加法累加單元(MAC)90
3.3.5比較、選擇和存儲單元CSSU91
3.3.6指數(shù)編碼器92
3.3.7CPU寄存器92
3.4存儲器94
3.4.1存儲器結(jié)構(gòu)95
3.4.2程序存儲器96
3.4.3數(shù)據(jù)存儲器98
3.4.4I/O存儲器空間100
3.5中斷系統(tǒng)100
3.5.1中斷寄存器100
3.5.2中斷控制101
3.6片內(nèi)外設105
3.6.1通用I/O引腳105
3.6.2定時器105
3.6.3時鐘發(fā)生器106
3.6.4主機接口(HPI)108
3.6.5串行口109
3.7要點與思考112
第4章 高性能的代表——TMS320C6000系列
4.1TMS320C6000系列簡介113
4.2CPU結(jié)構(gòu)114
4.2.1程序執(zhí)行機構(gòu)115
4.2.2控制寄存器組119
4.2.3控制狀態(tài)寄存器119
4.3存儲器120
4.3.1程序存儲器及其控制器121
4.3.2數(shù)據(jù)存儲器及其控制器122
4.4中斷124
4.4.1中斷類型和優(yōu)先級124
4.4.2中斷源124
4.4.3中斷寄存器126
4.5片內(nèi)集成外設126
4.5.1外部存儲器接口(EMIF)127
4.5.2擴展總線xBus130
4.6要點與思考133
第5章 開發(fā)好幫手——CCS集成開發(fā)環(huán)境
5.1CCS概述135
5.2CCS的安裝與配置137
5.3CCS文件類型138
5.4CCS基本界面139
5.4.1主界面139
5.4.2主菜單139
5.5CCS開發(fā)入門140
5.5.1創(chuàng)建工程140
5.5.2項目文件操作141
5.5.3工程配置142
5.5.4工程從屬關(guān)系142
5.5.5編譯和運行程序143
5.6基礎(chǔ)調(diào)試144
5.6.1調(diào)試設置145
5.6.2運行與單步調(diào)試145
5.6.3斷點147
5.6.4探針點147
5.6.5觀察窗口149
5.6.6內(nèi)存窗口150
5.6.7寄存器窗口152
5.6.8反匯編模式/混合模式152
5.7基礎(chǔ)軟件153
5.8要點與思考154
第6章 指揮工作靠軟件——指令和C語言程序設計
6.1概述155
6.2C2000指令系統(tǒng)155
6.2.1C2000尋址方式155
6.2.2C2000常用指令集156
6.2.3C2000常用偽指令157
6.3C5000指令系統(tǒng)157
6.3.1C5000尋址方式157
6.3.2C5000常用指令集158
6.3.3C5000常用偽指令159
6.4C6000指令結(jié)構(gòu)160
6.4.1C6000系列的基本尋址方式160
6.4.2C6000常用指令集160
6.5詳細指令集161
6.6DSP的C語言開發(fā)171
6.6.1簡介171
6.6.2DSP C語言數(shù)據(jù)類型172
6.6.3寄存器變量172
6.6.4pragma偽指令172
6.6.5ASM語句173
6.6.6I/O空間訪問173
6.6.7數(shù)據(jù)空間訪問173
6.6.8中斷服務函數(shù)173
6.6.9初始化系統(tǒng)174
6.7DSP匯編語言/C語言混合編程174
6.7.1混合編程環(huán)境設置174
6.7.2內(nèi)嵌匯編語句177
6.7.3C語言訪問匯編程序變量177
6.8要點與思考178
應用實例篇
第7章 實施工作靠硬件——基本DSP硬件平臺搭建
7.1概述180
7.2DSP最小系統(tǒng)181
7.2.1電源電路設計181
7.2.2復位和時鐘電路設計184
7.2.3JTAG接口電路設計186
7.3C6x DSP與Flash存儲器的接口187
7.3.1C6x EMIF接口187
7.3.2EMIF與Flash存儲器接口191
7.3.3Flash編程示例195
7.4C6x DSP與SDRAM存儲器的接口199
7.4.1C6x兼容的SDRAM類型199
7.4.2C6x EMIF與SDRAM接口特點及其接口信號201
7.4.3C6x EMIF的SDRAM控制寄存器203
7.4.4EMIF支持的SDRAM命令及其時序參數(shù)206
7.4.5C6713B與MT48LC4M32B2 SDRAM的接口212
7.5要點與思考214
第8章 最常見DSP硬件資源配置與應用
8.1概述215
8.2芯片支持庫簡介216
8.2.1CSL架構(gòu)216
8.2.2CSL的命名規(guī)則和數(shù)據(jù)類型219
8.2.3CSL函數(shù)220
8.2.4CSL宏221
8.2.5CSL的資源管理222
8.2.6芯片支持庫的使用223
8.3定時器和中斷應用程序設計224
8.3.1C6x中斷控制器224
8.3.2芯片支持庫的中斷模塊IRQ230
8.3.3定時器233
8.3.4芯片支持庫的定時器模塊TIMER235
8.3.5定時器和中斷應用實例238
8.4DMA和McBSP應用程序設計242
8.4.1C54xx的DMA控制器243
8.4.2芯片支持庫的直接存儲器訪問模塊DMA249
8.4.3C54xx的多通道緩沖串口McBSP252
8.4.4芯片支持庫的多通道串口模塊McBSP262
8.4.5DMA和McBSP應用實例265
8.5要點與思考276
第9章 讓程序自己跑起來——DSP程序的引導
9.1概述278
9.2LF240x DSP程序的引導279
9.2.1引導硬件配置279
9.2.2SPI同步傳輸協(xié)議和數(shù)據(jù)格式281
9.2.3SCI異步傳輸協(xié)議和數(shù)據(jù)格式281
9.3C54x DSP程序的引導282
9.3.1引導模式選擇283
9.3.2HPI引導284
9.3.3串行EEPROM引導286
9.3.4并行引導288
9.3.5標準串行引導290
9.3.6I/O 引導291
9.3.7產(chǎn)生引導表292
9.4C6x DSP程序的引導297
9.4.1引導控制邏輯297
9.4.2兩級引導過程299
9.4.3創(chuàng)建二級引導應用程序300
9.4.4編寫用戶引導程序302
9.4.5C6x程序的燒錄305
9.4.6關(guān)于用戶引導程序的進一步討論308
9.5要點與思考313
第10章 回歸重點——DSP在信號處理上的應用
10.1概述315
10.2基于DSP的信號源設計316
10.2.1信號的生成與輸出316
10.2.2正弦信號的產(chǎn)生318
10.2.3調(diào)幅信號的產(chǎn)生326
10.3FIR濾波器329
10.3.1FIR濾波器程序設計考慮329
10.3.2FIR濾波器在C54x DSP上的實現(xiàn)331
10.4IIR濾波器337
10.4.1IIR濾波器程序設計考慮337
10.4.2IIR濾波器在C67x上的實現(xiàn)339
10.5快速傅里葉變換(FFT)343
10.5.1FFT算法原理簡介343
10.5.2FFT算法的編程考慮343
10.5.3FFT算法在C67x上的實現(xiàn)346
10.6要點與思考352
第11章 也許有一天你就會遇到——DSP覆蓋(Overlay)程序設計
11.1概述353
11.2鏈接命令文件354
11.2.1MEMORY指令355
11.2.2SECTIONS指令357
11.3Overlay源程序設計363
11.3.1程序功能劃分的考慮363
11.3.2設計實例364
11.3.3Overlay模塊的動態(tài)加載377
11.4Overlay程序的調(diào)試和運行377
11.4.1加載Overlay代碼模塊到外部內(nèi)存378
11.4.2Overlay代碼的跟蹤調(diào)試378
11.5要點與思考382
第12章 給自己的程序打個分——DSP實時數(shù)據(jù)交換技術(shù)(RTDX)
12.1概述383
12.2RTDX詳解384
12.2.1RTDX的工作原理384
12.2.2RTDX用戶接口385
12.2.3RTDX的COM接口387
12.2.4主機RTDX配置393
12.2.5RTDX目標庫緩沖區(qū)的配置395
12.3使用RTDX工具397
12.3.1RTDX監(jiān)視工具397
12.3.2RTDX診斷工具397
12.3.3日志文件查閱工具401
12.4RTDX工程實例401
12.4.1目標應用程序402
12.4.2主機客戶程序405
12.4.3RTDX程序的調(diào)試409
12.4.4RTDX程序的性能考慮411
12.5RTDX應用實例412
12.5.1目標應用程序413
12.5.2主機客戶程序421
12.6要點與思考424