本書系統(tǒng)地介紹了基于FPGA的SOPC的軟硬件開發(fā)技術(shù),以一個(gè)簡(jiǎn)單的設(shè)計(jì)實(shí)例為主線介紹軟硬件的開發(fā)流程、開發(fā)工具的使用及開發(fā)的思想,使讀者對(duì)SOPC技術(shù)有一個(gè)基本的了解。將Nios II體系結(jié)構(gòu)、Avalon總線規(guī)范、Nios II處理器常用外部設(shè)備的更多底層細(xì)節(jié)提供給讀者,使讀者獲得進(jìn)行高級(jí)開發(fā)的能力,如第8章介紹的定制指令、定制外設(shè)開發(fā)和C2H編譯器的使用。另外還介紹了使用MATLAB和DSP Builder進(jìn)行基于FPGA的DSP開發(fā)技術(shù),并提供了一些典型的實(shí)驗(yàn)。
本書可作為高等院校電子信息類各專業(yè)本科生、研究生的教材,也可以作為相關(guān)工程技術(shù)人員的參考書。
國家電工電子教學(xué)基地系列教材,北京高等教育精品教材立項(xiàng)項(xiàng)目,配有豐富的電子資源(電子課件、CF卡測(cè)試有關(guān)程序及定制指令文件),對(duì)開發(fā)設(shè)計(jì)用到的軟件進(jìn)行了小幅度的升級(jí),可作為SOPC技術(shù)的入門教材。
第1章緒論1
1.1基本概念1
1.1.1SOC1
1.1.2SOPC2
1.1.3IP核2
1.2Nios Ⅱ 軟核處理器簡(jiǎn)介4
1.2.1可定制特性4
1.2.2系統(tǒng)性能可配置性5
1.2.3延長(zhǎng)產(chǎn)品生存周期7
1.3SOPC設(shè)計(jì)流程8
1.4支持Nios Ⅱ CPU的FPGA型號(hào)9
1.4.1Cyclone和Cyclone Ⅱ系列9
1.4.2Stratix和Stratix Ⅱ系列11
1.5最新的FPGA系列器件13
第2章SOPC的硬件開發(fā)環(huán)境及硬件開發(fā)流程16
2.1創(chuàng)建Quartus Ⅱ工程16
2.2創(chuàng)建Nios Ⅱ 系統(tǒng)模塊21
2.2.1創(chuàng)建頂層實(shí)體21
2.2.2創(chuàng)建Nios Ⅱ 系統(tǒng)模塊22
2.2.3分配IP模塊的地址和中斷號(hào)33
2.2.4配置Nios Ⅱ 系統(tǒng)34
2.2.5生成Nios Ⅱ 并加入到工程中35
2.2.6加入引腳和嵌入式鎖相環(huán)36
2.3設(shè)計(jì)優(yōu)化43
2.3.1面積與速度的優(yōu)化44
2.3.2時(shí)序約束與設(shè)置45
2.3.3Fitter設(shè)置45
2.4編譯47
2.4.1編譯設(shè)置47
2.4.2引腳分配49
2.4.3編譯用戶設(shè)計(jì)51
2.5編程下載52
2.5.1下載53
2.5.2驗(yàn)證54
第3章Nios Ⅱ 體系結(jié)構(gòu)56
3.1Nios Ⅱ 處理器結(jié)構(gòu)56
3.2Nios Ⅱ 寄存器文件59
3.2.1通用寄存器59
3.2.2控制寄存器60
3.3存儲(chǔ)器和I/O組織60
3.3.1指令和數(shù)據(jù)總線61
3.3.2高速緩存63
3.3.3緊耦合存儲(chǔ)器64
3.3.4地址映射64
3.4尋址方式65
第4章Avalon總線規(guī)范66
4.1Avalon總線簡(jiǎn)介66
4.2Avalon總線基本概念67
4.2.1Avalon外設(shè)和交換架構(gòu)68
4.2.2Avalon信號(hào)69
4.2.3主端口和從端口69
4.2.4傳輸70
4.2.5主從端口對(duì)70
4.2.6周期70
4.3Avalon信號(hào)70
4.3.1信號(hào)類型的完整列表71
4.3.2信號(hào)極性74
4.3.3信號(hào)命名規(guī)則74
4.3.4Avalon信號(hào)時(shí)序說明74
4.3.5傳輸屬性75
4.4從端口傳輸75
4.4.1從端口信號(hào)詳述76
4.4.2從端口讀傳輸78
4.4.3從端口寫傳輸82
4.5主端口傳輸85
4.5.1 主端口信號(hào)86
4.5.2主端口基本讀傳輸87
4.5.3主端口基本寫傳輸88
4.5.4等待周期、建立時(shí)間和保持時(shí)間屬性89
4.5.5流水線、三態(tài)和突發(fā)屬性90
4.6流水線傳輸屬性90
4.6.1具有固定延遲的從端口流水線讀傳輸90
4.6.2具有可變延遲的從端口流水線讀傳輸92
4.6.3主端口流水線傳輸94
4.7流控制95
4.7.1具有流控制的從端口傳輸96
4.7.2具有流控制的主端口傳輸99
4.8三態(tài)傳輸100
4.8.1三態(tài)從端口傳輸101
4.8.2三態(tài)主端口傳輸107
4.9突發(fā)傳輸108
4.9.1限制109
4.9.2主端口突發(fā)傳輸109
4.9.3從端口突發(fā)傳輸112
4.10和傳輸無關(guān)的信號(hào)115
4.10.1中斷請(qǐng)求信號(hào)115
4.10.2復(fù)位控制信號(hào)116
4.11地址對(duì)齊116
4.11.1本地地址對(duì)齊117
4.11.2動(dòng)態(tài)地址對(duì)齊117
第5章基于FPGA的DSP開發(fā)技術(shù)119
5.1基于 MATLAB/DSP Builder的DSP模塊設(shè)計(jì)流程119
5.2正弦波發(fā)生器模塊的設(shè)計(jì)121
5.2.1建立設(shè)計(jì)模型121
5.2.2Simulink模型仿真129
5.2.3使用Signal Compiler將算法轉(zhuǎn)化成硬件實(shí)現(xiàn)133
5.2.4使用Quartus Ⅱ 進(jìn)行時(shí)序仿真135
5.2.5硬件實(shí)現(xiàn)與測(cè)試137
5.2.6使用嵌入式邏輯分析儀SignalTap Ⅱ進(jìn)行測(cè)試140
5.3DSP Builder的層次設(shè)計(jì)147
5.4FIR濾波器設(shè)計(jì)150
5.4.1FIR濾波器原理150
5.4.216階FIR濾波器的設(shè)計(jì)151
5.4.3使用MATLAB的濾波器設(shè)計(jì)工具進(jìn)行濾波器系數(shù)的計(jì)算156
第6章軟件設(shè)計(jì)流程和方法164
6.1Nios Ⅱ IDE簡(jiǎn)介164
6.1.1工程管理器165
6.1.2編輯器和編譯器167
6.1.3調(diào)試器168
6.1.4閃存編程器169
6.2軟件開發(fā)流程170
6.2.1Nios Ⅱ 程序的構(gòu)成170
6.2.2Nios Ⅱ IDE軟件開發(fā)步驟171
6.3調(diào)試/運(yùn)行程序180
6.3.1調(diào)試/運(yùn)行環(huán)境設(shè)置180
6.3.2調(diào)試/運(yùn)行程序184
6.3.3下載程序到Flash184
6.4硬件抽象層庫187
6.4.1HAL簡(jiǎn)介187
6.4.2HAL體系結(jié)構(gòu)188
6.5使用HAL開發(fā)應(yīng)用程序191
6.5.1Nios Ⅱ IDE 工程結(jié)構(gòu)191
6.5.2系統(tǒng)描述文件system.h 文件192
6.5.3數(shù)據(jù)寬度和HAL類型定義193
6.5.4UNIX風(fēng)格的接口193
6.5.5文件系統(tǒng)194
6.5.6使用字符型設(shè)備196
6.5.7使用文件子系統(tǒng)197
6.5.8使用定時(shí)器設(shè)備197
6.5.9使用Flash設(shè)備200
6.5.10使用DMA設(shè)備205
6.5.11啟動(dòng)順序和入口點(diǎn)210
6.6異常處理212
6.6.1異常處理概念212
6.6.2硬件如何工作213
6.6.3ISR 性能數(shù)據(jù)217
6.6.4調(diào)試ISR220
第7章Nios Ⅱ 常用外設(shè)編程221
7.1并行輸入/輸出內(nèi)核221
7.1.1PIO寄存器描述221
7.1.2軟件編程223
7.2定時(shí)器 225
7.2.1定時(shí)器寄存器描述226
7.2.2軟件編程227
7.3異步串口UART229
7.3.1UART內(nèi)核功能描述229
7.3.2在SOPC Builder中實(shí)例化UART231
7.3.3UART寄存器描述234
7.3.4中斷行為237
7.3.5軟件編程238
7.4Optrex 16207 LCD控制器內(nèi)核240
7.4.1功能描述241
7.4.2軟件編程241
7.5通用Flash接口控制器內(nèi)核242
7.5.1功能描述242
7.5.2在SOPC Builder中實(shí)例化CFI控制器內(nèi)核243
7.5.3軟件編程244
7.6DMA控制器內(nèi)核244
7.6.1功能描述245
7.6.2在SOPC Builder中實(shí)例化DMA內(nèi)核247
7.6.3軟件編程248
第8章Nios Ⅱ系統(tǒng)高級(jí)開發(fā)250
8.1用戶定制指令250
8.1.1定制指令綜述251
8.1.2定制指令體系結(jié)構(gòu)的類型252
8.1.3軟件接口258
8.1.4實(shí)現(xiàn)Nios Ⅱ定制指令260
8.2用戶定制外設(shè)266
8.2.1元件開發(fā)流程267
8.2.2硬件設(shè)計(jì)268
8.2.3軟件設(shè)計(jì)269
8.2.4驗(yàn)證元件270
8.2.5設(shè)計(jì)實(shí)例:脈沖寬度調(diào)制器從外設(shè)270
8.2.6共享元件283
8.3C2H編譯器的使用284
8.3.1C2H概念285
8.3.2適合硬件加速的C代碼288
8.3.3C2H編譯器設(shè)計(jì)流程290
附錄A電子鐘C語言的源程序和頭文件300
附錄BGXSOC/SOPC專業(yè)級(jí)創(chuàng)新開發(fā)實(shí)驗(yàn)平臺(tái)硬件介紹317
附錄CSOPC實(shí)驗(yàn)327
參考文獻(xiàn)366