《基於FPGA的SOPC嵌入式系統設計與典型實例》是2009年電子工業出版社出版的圖書,作者是王剛、張瀲。本書通過核心技術與典型實例的形式,全面系統、深入淺出地介紹了基於FPGA的嵌入式SOPC系統設計技術與套用實例。
基本介紹
編輯推薦,內容簡介,叢書說明,目錄,
編輯推薦
《基於FPGA的SOPC嵌入式系統設計與典型實例》將基礎知識和大量工程實例結合,實踐性強。不但詳細介紹了基於FPGA的嵌入式SOPC系統設計的構架與軟硬體編程,同時提供了套用設計思路與方案,對實例的所有程式代碼做了詳細注釋,利於讀者理解和鞏固知識點。本書配有光碟一張,包含了全書所有實例的硬體原理圖和程式原始碼,方便讀者學習和使用。本書適合計算機、自動化、電子及硬體等相關專業的大學生,以及從事FPGA開發的科研人員使用。
全書共分14章,第1~3章簡要介紹了FPGA硬體結構知識、Verilog HDL編程基礎、FPGA常用開發工具,引導讀者入門;第4~7章重點對嵌入式SOPC系統設計技術進行了細緻闡述,內容包括:SOPC硬體系統開發、SOPC軟體系統開發、Avalon匯流排規範、Nios II外圍設備及其編程;第8~14章通過7個典型實例,對基於FPGA的嵌入式SOPC系統設計過程進行實際演練,具體包括:七段數碼管時鐘顯示實例、串口通信DMA傳輸實例、LED燈控PWM IP核的設計實例、通用TFT-LCD控制器及PS2滑鼠設計實例、對對碰遊戲設計實例、GPS信息接收系統設計實例以及基於Nios II的I2C匯流排傳輸套用設計。經過這些例子的學習,讀者設計的能力將迅速提升,產生質的飛躍。
內容簡介
基於FPGA的SOPC設計技術是當前電子系統設計領域最前沿的技術之一。全書通過核心技術與典型實例的形式,全面系統、深入淺出地介紹了基於FPGA的嵌入式SOPC系統設計技術與套用實例。全書共分14章,第1~3章簡要介紹了FPGA硬體結構知識、Verilog HDL編程基礎、FPGA常用開發工具,引導讀者入門;第4~7章重點對嵌入式SOPC系統設計技術進行了細緻闡述,內容包括:SOPC硬體系統開發、SOPC軟體系統開發、Avalon匯流排規範、Nios II外圍設備及其編程;第8~14章通過7個典型實例,對基於FPGA的嵌入式SOPC系統設計過程進行實際演練,具體包括:七段數碼管時鐘顯示實例、串口通信DMA傳輸實例、LED燈控PWM IP核的設計實例、通用TFT-LCD控制器及PS2滑鼠設計實例、對對碰遊戲設計實例、GPS信息接收系統設計實例以及基於Nios II的I2C匯流排傳輸套用設計。經過這些例子的學習,讀者設計的能力將迅速提升,產生質的飛躍。
叢書說明
工程技術的電子化、集成化和系統化促進了電子工程技術的發展,同時也促進了電子工程技術在社會各行業中的廣泛套用,從近年的人才招聘市場來看,電子工程師的人才需求更是一路走高。
電子工程師如此緊俏,除需求不斷走高,人才供不應求外,另一重要原因則是電子工程師的門檻相對而言比較高,這個高門檻則來自於工程師的“經驗”和“實踐”!
因此,為了滿足讀者學習和工作需要,解決各種工作中的專業問題,我們緊緊圍繞“經驗”和“實踐”,精心策劃組織了此套叢書。
1.叢書範圍
現代電子科學技術的一個特點是多學科交叉,因此,工程師應當了解、掌握2門以上的相關學科,知識既精深又廣博是優秀的工程師成長為某領域專家的重要標誌。本叢書內容涉及軟體開發、研發電子以及嵌入式項目開發等,包括單片機、USB接口、ARM、CPLD/FPGA、DSP、移動通信系統等。
2.讀者對象
本套書面向各領域的初、中級用戶。具體為高校計算機、電子信息、通信工程、自動化控制專業在校大學生,以及從事電子開發和套用行業的科研人員。
3.內容組織形式
本套書緊緊圍繞“經驗”和“實踐”,首先介紹一些相關的基礎知識,然後根據不同的模組或套用領域,分篇安排應用程式實例的精講。基礎知識用來為一些初級讀者打下一定的知識功底;基礎好一點的讀者則可以跳過這一部分,直接進入實例的學習。
4.實例特色
在套用實例的安排上,著重突出“套用”和“實用”兩個基本原則,安排具有代表性、技術領先性,以及套用廣泛的典型實例,讓讀者學習借鑑。這些實例是從作者多年程式開發項目中挑選出的,也是經驗的歸納與總結。
在套用實例的講解上,既介紹了設計原理、基本步驟和流程,也穿插了一些經驗、技巧與注意事項。特別在程式設計思路上,在決定項目開發的質量和成功與否的細節上,儘可能地用簡潔的語言來清晰闡述大眾易於理解的概念和思想;同時,程式代碼部分做了很詳細的中文注釋,有利於讀者舉一反三,快速套用和提高。
5.光碟內容
本套書的光碟中包含了豐富的實例原圖檔案和程式原始碼,讀者稍加修改便可套用於自己的工作中或者完成自己的課題(畢業設計),物超所值。讀者使用之前,最好先將光碟內容全部複製到電腦硬碟中,以便於以後可以直接調用,而不需要反覆使用光碟,提高操作速度和學習效率。
6.學習指南
對於有一定基礎的讀者,建議直接從實例部分入手,邊看邊上機練習,這樣印象會比較深,效果更好。基礎差一點的讀者請先詳細學習書中基礎部分的理論知識,然後再進行套用實例的學習。在學習中,儘量做到反覆理解和演練,以達到融會貫通、舉一反三的功效;特別希望儘量和自己的工作設計聯繫起來,以達到“即學即會,學以致用”的最大化境界。
本套書主要偏重於實用性,具有很強的工程實踐指導性。期望讀者在學習中順利、如意!
光碟說明
1.光碟的內容說明
該光碟包括7個實例資料夾,內容是實例的硬體原理圖和程式原始碼(如下圖所示)。
2.光碟的使用說明
在用戶已安裝好軟體並有開發板作為支持的前提下,使用實例工程的具體方法為:
(1)拷貝某一實例工程到磁碟目錄下,由於所有實例均在D糟根目錄下進行設計,所以建議用戶將其也放置到D:\目錄下進行使用,避免不必要的問題,解壓縮工程資料夾。
(2)點擊資料夾中的.qpf檔案,打開工程,在Quartus II中即可以看到整個工程中包含的檔案。
(3)建議用戶首先對工程進行編譯,特別是當用戶的軟體版本與工程創建使用的版本(7.0版本)不相符合時,首先需要對工程重新編譯才可使用。
(4)編譯過程中,如果用戶使用的開發板不是DE1,請對照相應的開發板手冊配置好引腳約束,避免適配的問題。並確定其開發板支持實例工程欲達到的接口(比如如果用戶使用的開發板本身不支持PS2接口,那么在對實例4進行滑鼠使用的時候就自然得不到成功的結果了)。
(5)編譯過程如果報錯,請用戶嘗試刪除工程目錄下的db資料夾,該資料夾的內容是在筆者機器上編譯時所保存的臨時數據檔案,可能會導致不兼容的問題,刪除後重新編譯即可解決問題。
(6)編譯結束後,打開Nios II IDE(建議7.0版本),打開實例工程中的NiosII程式代碼。
(7)編譯並運行,即可看到最終的結果。 在此過程中如果軟體報錯,請在Nios II IDE中重新建立工程,並導入所有的軟體檔案(注意創建工程時需要指定正確的硬體描述檔案.ptf),重新編譯運行。
3.軟硬體要求
本書實例工程均在Quartus II 7.0和Nios II IDE 7.0版本軟體環境下進行設計,並使用Altera DE1開發板通過測試驗證。用戶使用實例之前應安裝相應的軟體(建議7.0版本以上),而且應該有相應的硬體開發板(建議使用DE1)作為支持,特別地對於某些實例,還需要配備其他的硬體資源作為支持(比如LCD液晶屏、PS2滑鼠、GPS模組等)。否則,只能對工程代碼進行參考。
目錄
第一篇 FPGA基礎
第1章 FPGA硬體結構知識 2
1.1 CPLD/FPGA概述 2
1.1.1 CPLD/FPGA的特點 2
1.1.2 CPLD/FPGA的發展方向 4
1.1.3 CPLD/FPGA的套用領域 4
1.2 FPGA體系結構 5
1.2.1 FPGA基本結構 5
1.2.2 FPGA的結構特點 8
1.2.3 FPGA的編程工藝 9
1.3 FPGA常用晶片與選用 9
1.3.1 FPGA常用晶片 10
1.3.2 FPGA器件的選用 12
1.4 本章小結 14
第2章 Verilog HDL語言編程基礎 15
2.1 Verilog HDL語言特點 15
2.2 Verilog HDL程式的基本結構 20
2.2.1 模組 20
2.2.2 模組調用 28
2.3 程式格式 29
2.4 注釋與間隔符 30
2.5 數值 30
2.6 字元串 32
2.7 標識符 33
2.8 系統任務和函式 34
2.9 編譯指令 39
2.10 數據類型 47
2.10.1 線網(Net)和變數(Variable) 47
2.10.2 標量(Scalar)與矢量(Vector) 49
2.10.3 線網(Net)數據類型 50
2.10.4 變數(Variable)數據類型 55
2.10.5 數組(Array)類型 56
2.10.6 參數 58
2.10.7 名字空間 61
2.11 表達式 61
2.11.1 操作符 62
2.11.2 運算元 72
2.11.3 延遲表達式 75
2.11.4 表達式的位寬 76
2.11.5 有符號表達式 78
2.12 本章小結 79
第3章 FPGA常用開發工具 80
3.1 硬體開發工具Quartus II 80
3.1.1 Quartus II簡介 80
3.1.2 Quartus II設計流程 81
3.1.3 Quartus II設計方法 84
3.1.4 Quartus II功能詳解 85
3.1.5 時序約束與分析 93
3.1.6 設計最佳化 99
3.1.7 SignalTap II 107
3.2 ModelSim開發工具 111
3.2.1 ModelSim簡介 111
3.2.2 基本仿真步驟 111
3.2.3 ModelSim各界面介紹 114
3.2.4 ModelSim調試功能 118
3.3 本章小結 122
第二篇 SOPC入門
第4章 SOPC硬體系統開發 124
4.1 SOPC系統特點與開發流程 124
4.2 SOPC Builder硬體開發環境介紹 125
4.2.1 SOPC Builder功能 125
4.2.2 SOPC Builder組成 126
4.2.3 SOPC Builder中包含的組件 131
4.3 使用SOPC Builder創建Nios II系統模組 132
4.3.1 創建Quartus II工程 132
4.3.2 啟動並配置SOPC Builder 135
4.3.3 添加CPU及外設IP模組 136
4.3.4 生成Nios II系統 142
4.4 集成Nios II系統到Quartus II工程 144
4.4.1 創建包含Nios II系統的Quartus II頂層模組 144
4.4.2 FPGA引腳分配及其他設定 149
4.4.3 Quartus II工程的編譯並下載 152
4.5 本章小結 155
第5章 SOPC軟體系統開發 156
5.1 Nios II處理器結構 156
5.1.1 Nios II處理器概述 157
5.1.2 編程模型 160
5.1.3 JTAG調試模組 166
5.2 Nios II指令系統介紹 168
5.2.1 Nios II處理器的指令集 168
5.2.2 Nios II定製指令介紹 171
5.2.3 定製指令實現方式 177
5.2.4 定製指令設計實例——前導0檢測器 179
5.3 Nios II IDE集成開發環境 182
5.3.1 Nios II IDE簡介 182
5.3.2 HAL系統庫 185
5.3.3 RTOS和TCP/IP協定棧 190
5.4 使用Nios II IDE建立應用程式 190
5.4.1 創建C/C++工程 190
5.4.2 配置工程的系統屬性 194
5.4.3 編譯及運行工程 196
5.4.4 調試模式 198
5.5 使用Flash Programmer下載 199
5.5.1 定製目標板 200
5.5.2 Flash Programmer配置及下載 203
5.6 本章小結 205
第6章 Avalon匯流排規範 206
6.1 Avalon匯流排概述 206
6.1.1 Avalon匯流排的特點 206
6.1.2 術語和概念 207
6.2 Avalon匯流排信號 208
6.2.1 Avalon信號類型列表 208
6.2.2 Avalon信號時序 211
6.2.3 Avalon匯流排傳輸特性 212
6.3 Avalon從連線埠傳輸 212
6.3.1 Avalon從連線埠信號介紹 212
6.3.2 Avalon從連線埠讀傳輸 214
6.3.3 Avalon從連線埠寫傳輸 218
6.4 Avalon主連線埠傳輸 222
6.4.1 Avalon主連線埠模組介紹 222
6.4.2 Avalon主連線埠讀傳輸 222
6.4.3 Avalon主連線埠寫傳輸 224
6.5 Avalon流水線傳輸模式 225
6.5.1 具有固定延遲的從連線埠流水線讀傳輸 226
6.5.2 具有可變延遲的從連線埠流水線讀傳輸 227
6.5.3 主連線埠流水線讀傳輸 228
6.6 Avalon流傳輸模式 230
6.6.1 流模式從連線埠傳輸 230
6.6.2 流模式主連線埠傳輸 233
6.7 Avalon三態傳輸 234
6.7.1 三態從連線埠傳輸 235
6.7.2 三態主連線埠傳輸 239
6.8 Avalon突發傳輸 240
6.8.1 主連線埠突發傳輸 241
6.8.2 從連線埠突發傳輸 243
6.9 與傳輸無關的信號 246
6.9.1 中斷請求信號 246
6.9.2 復位控制信號 247
6.10 Avalon匯流排地址對齊方式 247
6.10.1 本地地址對齊 248
6.10.2 動態地址對齊 248
6.11 本章小結 249
第7章 Nios II外圍設備及其編程 250
7.1 並行輸入/輸出(PIO) 250
7.1.1 功能描述 250
7.1.2 配置選項 251
7.1.3 暫存器描述與中斷 253
7.1.4 軟體編程模型 254
7.2 通用異步收發器(UART) 255
7.2.1 功能描述 255
7.2.2 配置選項 256
7.2.3 暫存器描述與中斷 260
7.2.4 軟體編程模型 264
7.3 定時器(Timer) 267
7.3.1 功能描述 267
7.3.2 配置選項 268
7.3.3 暫存器描述與中斷 270
7.3.4 軟體編程模型 271
7.4 JTAG UART 273
7.4.1 功能描述 274
7.4.2 配置選項 275
7.4.3 暫存器描述與中斷 277
7.4.4 軟體編程模型 279
7.5 SDRAM控制器 282
7.5.1 功能描述 282
7.5.2 配置選項 284
7.5.3 SDRAM控制器配置實例 287
7.5.4 軟體編程模型 288
7.6 CFI控制器 289
7.6.1 功能描述 289
7.6.2 配置選項 290
7.6.3 軟體編程模型 291
7.7 EPCS設備控制器 292
7.7.1 功能描述 292
7.7.2 配置選項 294
7.7.3 軟體編程模型 294
7.8 DMA控制器 295
7.8.1 功能描述 295
7.8.2 配置選項 296
7.8.3 暫存器描述與中斷 298
7.8.4 軟體編程模型 300
7.9 系統ID 301
7.9.1 功能描述 301
7.9.2 配置選項 301
7.9.3 軟體編程模型 302
7.10 SPI 302
7.10.1 功能描述 302
7.10.2 配置選項 306
7.10.3 暫存器描述 308
7.10.4 軟體編程模型 310
7.11 本章小結 310
第三篇 套用實戰
第8章 基於FPGA的SOPC系統開發實例1——七段數碼管時鐘顯示實例 312
8.1 實例內容說明 312
8.2 設計思路分析 313
8.3 硬體設計 314
8.4 軟體設計與程式代碼 321
8.5 實例小結 325
第9章 基於FPGA的 SOPC系統開發實例2——串口通信DMA傳輸實例 327
9.1 實例內容說明 327
9.2 設計思路分析 327
9.3 硬體設計 328
9.4 軟體設計與程式代碼 338
9.4.1 Nios II HAL中與DMA
9.4.1 設計相關的API函式 338
9.4.2 軟體部分的設計 339
9.5 實例小結 343
第10章 基於FPGA的SOPC系統開發實例3——LED燈控PWM IP核設計 344
10.1 實例內容說明 344
10.2 設計思路分析 344
10.3 硬體設計 345
10.4 軟體設計與程式代碼 359
10.5 實例小結 363
第11章 基於FPGA的SOPC系統開發實例4——通用TFT-LCD控制器及PS2滑鼠設計實例 364
11.1 實例內容說明 364
11.2 設計思路分析 365
11.3 硬體設計 369
11.4 軟體設計與程式代碼 393
11.5 實例小結 402
第12章 基於FPGA的SOPC系統開發實例5——對對碰遊戲 403
12.1 實例內容說明 403
12.2 設計思路分析 404
12.3 硬體設計 406
12.4 軟體設計與程式代碼 413
12.5 實例小結 433
第13章 基於FPGA的SOPC系統開發實例6——GPS信息接收系統的設計 434
13.1 實例內容說明 434
13.2 設計思路分析 434
13.3 硬體設計 442
13.4 軟體設計與程式代碼 451
13.5 實例小結 468
第14章 基於FPGA的SOPC系統開發實例7——基於NiosⅡ的I2C匯流排傳輸套用設計 469
14.1 實例內容說明 469
14.2 設計思路分析 469
14.3 I2C匯流排介紹 470
14.3.1 I2C匯流排特點 470
14.3.2 I2C匯流排工作原理 470
14.4 AT24C02晶片介紹 471
14.4.1 AT24C02概述 471
14.4.2 AT24C02讀寫時序 472
14.5 SOPC系統的創建 473
14.6 軟體設計與程式代碼 484
14.7 實例小結 489
附錄A Nios II HAL中與PIO設計相關的API函式 490