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