SoC FPGA 嵌入式設計和開發教程(簡體書)
商品資訊
ISBN13:9787512422391
出版社:北京航空航天大學出版社
作者:梅雪松; 宋士權; 陳雲龍
出版日:2019/04/01
裝訂/頁數:平裝/332頁
規格:26cm*19cm (高/寬)
版次:一版
商品簡介
作者簡介
目次
相關商品
商品簡介
本書以Intel Cyclone v SoC FPGA系列器件為例,介紹了SoC FPGA 器件的架構特點、常用電路設計以及軟硬件開發流程和開發技巧。內容編排按照開發一個基於SoC FPGA 的應用系統所需掌握的基本的知識路線展開,從基本的Linux系統操作到分析一個基礎的應用系統框架,然後基於該應用系統框架,詳細講解應用系統的構建、BSP文件的生成、啟動引導文件的更新、Ubuntu虛擬機安裝配置、Linux內核配置與編譯。接著介紹如何在嵌入式Linux系統環境下,使用虛擬地址映射的方式編寫相應的應用程序來實現該應用系統中各個功能IP的編程控制和調試。最後以兩個實際的例子展示如何通過HPS和FPGA的片上通信橋實現軟硬件聯合開發的過程,包括FPGA側邏輯開發, IP總線封裝,Linux驅動程序的編寫編譯,Linux應用程序的編寫與運行等。
本書既可作為工程類應用、電子信息類專業本科生以及相關專業專科生的嵌入式系統基礎類課程的教材,也可作為SoC FPGA自學人員以及從事SoC FPGA開發的工程技術人員的培訓教材和參考用書。
本書既可作為工程類應用、電子信息類專業本科生以及相關專業專科生的嵌入式系統基礎類課程的教材,也可作為SoC FPGA自學人員以及從事SoC FPGA開發的工程技術人員的培訓教材和參考用書。
作者簡介
梅雪松,網名“小梅哥”,擁有多年電子設計經驗,擅長知識的總結和傳播,有《小梅哥和你一起深入學習FPGA》、《小梅哥FPGA學習筆記》兩個系列網絡博文;並推出了手把手式視頻教程《FPGA設計思想與驗證方法視頻教程》,該教程在各大視頻點擊平臺備受好評,網友稱其為學習FPGA基礎與提高教學視頻的S選。同時,開設FPGA實地培訓班,進行網絡和實地FPGA培訓,並多次進入高校進行SoC FPGA開發技術的培訓。培訓課程以其系統的知識講解和生動的實例分析,得到了學員的一致肯定。
目次
第1章 SoC FPGA軟硬件系統開發概述 … 1
1.1 Intel SoC FPGA系列 1
1.1.1 Cyclone Ⅴ SoC FPGA … 2
1.1.2 Arria Ⅴ SoC FPGA 2
1.1.3 Arria 10 SoC FPGA 2
1.1.4 Stratix 10 SoC FPGA 3
1.1.5 SoC FPGA應用領域與前景 3
1.2 Intel Cyclone Ⅴ SoC FPGA介紹 … 4
1.2.1 什麼是SoC FPGA … 4
1.2.2 SOPC … 4
1.2.3 SoC FPGA與SOPC之間的差異 5
1.2.4 SoC FPGA架構的優勢 … 6
1.3 Cyclone Ⅴ SoC FPGA器件硬件設計概述 9
1.3.1 FPGA I/O和時鐘 … 10
1.3.2 SoC FPGA JTAG電路設計 … 12
1.4 AC501-SoC開發板介紹 13
1.4.1 佈局及組件 … 13
1.4.2 輕觸按鍵 14
1.4.3 用戶LED 15
1.4.4 時鐘輸入 16
1.4.5 GPIO接口 … 17
1.4.6 DDR3SDRAM 18
1.4.7 通用顯示擴展接口… 19
1.4.8 USB轉 UART 21
1.4.9 以太網收發器 21
1.5 本章小結 23
第2章 SoC FPGA開發板的使用 … 24
2.1 安裝SoC FPGA開發工具 24
2.2 SoC FPGA的配置數據燒寫與固化 24
2.2.1 SoC FPGA啟動配置方式介紹 24
2.2.2 sof文件的燒寫方式 26
2.2.3 Jic文件的生成和燒寫 … 28
2.3 在SoC FPGA上運行Linux操作系統 … 32
2.3.1 SoC FPGA中的 HPS啟動流程介紹 32
2.3.2 HPS啟動方式介紹 33
2.3.3 製作啟動鏡像SD卡 34
2.3.4 準備硬件板卡 35
2.3.5 開機測試 39
2.4 開發板Linux系統常用操作 … 40
2.4.1 查看目錄 40
2.4.2 設置和修改用戶密碼 40
2.4.3 查看和編輯文件 … 41
2.4.4 設置IP地址 … 43
2.4.5 掛載SD卡的FAT32分區 45
2.4.6 掛載 U盤 46
2.4.7 文件操作 47
2.4.8 目錄操作 48
2.4.9 停止某個進程 49
2.4.10 重啟和關機 … 50
2.5 本章小結 50
第3章 SoC FPGA開發概述 … 51
3.1 SoC FPGA開發流程 … 51
3.1.1 硬件開發 51
3.1.2 軟件開發 53
3.2 AC501-SoC FPGA開發板的黃金參考設計說明 53
3.2.1 GHRD … 53
3.2.2 打開和查看GHRD 54
3.2.3 組件參數配置詳解… 57
3.3 本章小結 62
第4章 手把手修改GHRD系統 63
4.1 修改GHRD工程 … 63
4.1.1 打開GHRD工程 … 63
4.1.2 添加UART IP 64
4.1.3 關於 HPS與FPGA數據交互… 64
4.1.4 連接UART IP信號端口 65
4.1.5 分配組件基地址 … 67
4.1.6 生成 Qsys系統的 HDL文件 … 68
4.1.7 添加uart_1的端口到 Quartus工程中 69
4.1.8 分配FPGA引腳 … 71
4.1.9 生成配置數據二進制文件 72
4.2 製作Preloader Image … 72
4.2.1 打開SoC EDS工具 73
4.2.2 生成bsp文件 74
4.2.3 編譯Preloader和 U-Boot 77
4.2.4 更新Preloader和 U-Boot 79
4.2.5 Win 10下更新失敗問題… 80
4.2.6 使用新的 U-Boot啟動SoC … 81
4.3 製作設備樹 … 82
4.3.1 設備樹製作流程 … 82
4.3.2 準備所需文件 82
4.3.3 生成.dts文件 83
4.3.4 生成.dtb文件 84
4.4 運行修改後的工程 85
4.5 本章小結 87
第5章 使用DS-5編寫和調試SoC的Linux應用程序 88
5.1 啟動DS-5 …88
5.2 創建C工程 … 91
5.3 編譯工程 94
5.4 建立SSH遠程連接 95
5.4.1 創建遠程連接 95
5.4.2 複製文件到目標板 101
5.4.3 運行應用程序 102
5.5 遠程調試 … 103
5.5.1 GDB設置 … 103
5.5.2 GDB連接和調試 … 106
5.6 使用 WinSCP實現多系統傳輸文件 108
5.6.1 為什麼要使用 WinSCP 108
5.6.2 安裝 WinSCP 109
5.6.3 建立遠程主機連接 109
5.6.4 新建遠程連接 112
5.6.5 調用PuTTY終端 112
5.7 本章小結 … 113
第6章 基於虛擬地址映射的Linux硬件編程 114
6.1 什麼是虛擬地址映射 … 114
6.2 虛擬地址映射的實現 … 115
6.3 基於虛擬地址映射的PIO編程應用 117
6.3.1 PIO外設的虛擬地址映射 117
6.3.2 在DS-5中建立PIO應用工程 118
6.3.3 添加和包含 HPS庫文件 119
6.3.4 添加FPGA側外設硬件信息… 121
6.3.5 PIO IP核介紹 124
6.3.6 PIO核寄存器映射 125
6.3.7 PIO IP核應用實例 128
6.3.8 合理的程序退出機制 … 131
6.3.9 關於按鍵消抖 133
6.4 基於虛擬地址映射的 UART編程應用… 134
6.4.1 UART核介紹 134
6.4.2 UART寄存器映射 134
6.4.3 UART IP核應用實例 … 136
6.4.4 UART IP核板級調試 … 144
6.4.5 小 結 145
6.5 基於虛擬地址映射的I2C編程應用 145
6.5.1 OpenCores I2C IP簡介… 146
6.5.2 OpenCores I2C IP寄存器映射 146
6.5.3 I2C IP核應用實例 149
6.5.4 小 結 161
6.6 本章小結 … 161
第7章 基於Linux應用程序的HPS配置
FPGA … 162
7.1 製作 Quartus工程 163
7.2 生成rbf格式配置數據 163
7.3 編譯Linux配置FPGA應用程序… 165
7.4 在系統重配置FPGA實驗 … 166
7.5 本章小結 … 168
第8章 編譯嵌入式Linux系統內核 169
8.1 安裝 VMware … 170
8.2 安裝 Ubuntu系統 171
8.2.1 使用現成的 Ubuntu系統鏡像 171
8.2.2 安裝全新的 Ubuntu系統 175
8.3 下載Linux系統源碼 … 182
8.4 設置交叉編譯環境 185
8.5 配置和編譯內核 … 189
8.5.1 快速配置內核 189
8.5.2 保存內核配置文件 195
8.5.3 編譯內核 195
8.5.4 使用內核啟動開發板 … 197
8.6 本章小結 … 199
第9章 Linux設備樹的原理與應用實例 200
9.1 什麼是設備樹 200
9.2 設備樹基本格式 … 201
9.3 設備樹加載設備驅動原理 … 206
9.4 編寫I2C控制器設備節點 … 208
9.5 加載 OC_I2C驅動 211
9.6 使用RTC … 212
9.7 使用EEPROM … 216
9.8 編寫SPI控制器設備節點 … 217
9.9 本章小結 … 219
第10章 基於Linux標準文件I/O 的設備讀/寫 … 220
10.1 什麼是文件I/O 220
10.2 基於文件I/O操作的一般方法 … 220
10.2.1 文件描述符 220
10.2.2 打開設備(open)… 221
10.2.3 向設備寫入數據(write) 221
10.2.4 讀取設備數據(read)… 222
10.2.5 雜項操作(ioctl)… 222
10.2.6 關閉設備(close)… 223
10.2.7 其他操作 … 223
10.3 使用文件I/O實現I2C編程 223
10.4 本章小結 … 226
第11章 FPGA與HPS高速數據交互應用 … 227
11.1 FPGA與 HPS通信介紹 … 227
11.1.1 H2F_LW_AXI_Master橋 … 229
11.1.2 H2F_AXI_Master橋 … 229
11.1.3 F2H_AXI_Slave橋 230
11.2 AXI與 Avalon-MM 總線的互聯… 230
11.3 Avalon-MM 總線 230
11.4 Avalon-MM Slave接口 232
11.5 基本Avalon-MM Slave IP設計框架 … 234
11.5.1 端口定義 … 234
11.5.2 寄存器和線網定義 235
11.5.3 Avalon總線對寄存器的讀/寫 235
11.5.4 用戶邏輯使用寄存器 … 236
11.6 PWM 控制器設計 237
11.6.1 PWM IP核端口設計 … 238
11.6.2 PWM IP核寄存器定義 239
11.6.3 讀/寫PWM 寄存器 … 239
11.6.4 Platform Designer中封裝PWM IP 241
11.7 Avalon-MM Master接口 … 255
11.7.1 常見的通用Avalon-MM Master主機 … 256
11.7.2 DMA Controller 256
11.7.3 Scatter-Gather DMA Controller … 256
11.7.4 Modular Scatter-Gather DMA 258
11.7.5 Avalon-MM Master模板 … 260
11.8 高速數據采集系統 … 263
11.8.1 安裝Avalon-MM Master模板 263
11.8.2 完善 Qsys系統 … 265
11.8.3 修改 Quartus中的 Qsys例化 269
11.8.4 測試邏輯設計 … 271
11.9 本章小結 … 275
第12章 Linux驅動編寫與編譯 … 276
12.1 基本字符型設備驅動… 276
12.1.1 字符型設備驅動框架 … 277
12.1.2 PWM 控制器驅動的完整源碼 286
12.1.3 驅動編譯 Makefile 291
12.1.4 Ubuntu下編譯設備驅動 292
12.1.5 字符型設備驅動驗證 … 293
12.2 基於DMA的字符型設備驅動 … 297
12.2.1 Avalon-MM Master Write驅動 … 298
12.2.2 Avalon-MM Master Write測試 … 304
12.3 本章小結 … 311
附錄A 外設地址映射 312
附錄B HPS GPIO映射 … 314
1.1 Intel SoC FPGA系列 1
1.1.1 Cyclone Ⅴ SoC FPGA … 2
1.1.2 Arria Ⅴ SoC FPGA 2
1.1.3 Arria 10 SoC FPGA 2
1.1.4 Stratix 10 SoC FPGA 3
1.1.5 SoC FPGA應用領域與前景 3
1.2 Intel Cyclone Ⅴ SoC FPGA介紹 … 4
1.2.1 什麼是SoC FPGA … 4
1.2.2 SOPC … 4
1.2.3 SoC FPGA與SOPC之間的差異 5
1.2.4 SoC FPGA架構的優勢 … 6
1.3 Cyclone Ⅴ SoC FPGA器件硬件設計概述 9
1.3.1 FPGA I/O和時鐘 … 10
1.3.2 SoC FPGA JTAG電路設計 … 12
1.4 AC501-SoC開發板介紹 13
1.4.1 佈局及組件 … 13
1.4.2 輕觸按鍵 14
1.4.3 用戶LED 15
1.4.4 時鐘輸入 16
1.4.5 GPIO接口 … 17
1.4.6 DDR3SDRAM 18
1.4.7 通用顯示擴展接口… 19
1.4.8 USB轉 UART 21
1.4.9 以太網收發器 21
1.5 本章小結 23
第2章 SoC FPGA開發板的使用 … 24
2.1 安裝SoC FPGA開發工具 24
2.2 SoC FPGA的配置數據燒寫與固化 24
2.2.1 SoC FPGA啟動配置方式介紹 24
2.2.2 sof文件的燒寫方式 26
2.2.3 Jic文件的生成和燒寫 … 28
2.3 在SoC FPGA上運行Linux操作系統 … 32
2.3.1 SoC FPGA中的 HPS啟動流程介紹 32
2.3.2 HPS啟動方式介紹 33
2.3.3 製作啟動鏡像SD卡 34
2.3.4 準備硬件板卡 35
2.3.5 開機測試 39
2.4 開發板Linux系統常用操作 … 40
2.4.1 查看目錄 40
2.4.2 設置和修改用戶密碼 40
2.4.3 查看和編輯文件 … 41
2.4.4 設置IP地址 … 43
2.4.5 掛載SD卡的FAT32分區 45
2.4.6 掛載 U盤 46
2.4.7 文件操作 47
2.4.8 目錄操作 48
2.4.9 停止某個進程 49
2.4.10 重啟和關機 … 50
2.5 本章小結 50
第3章 SoC FPGA開發概述 … 51
3.1 SoC FPGA開發流程 … 51
3.1.1 硬件開發 51
3.1.2 軟件開發 53
3.2 AC501-SoC FPGA開發板的黃金參考設計說明 53
3.2.1 GHRD … 53
3.2.2 打開和查看GHRD 54
3.2.3 組件參數配置詳解… 57
3.3 本章小結 62
第4章 手把手修改GHRD系統 63
4.1 修改GHRD工程 … 63
4.1.1 打開GHRD工程 … 63
4.1.2 添加UART IP 64
4.1.3 關於 HPS與FPGA數據交互… 64
4.1.4 連接UART IP信號端口 65
4.1.5 分配組件基地址 … 67
4.1.6 生成 Qsys系統的 HDL文件 … 68
4.1.7 添加uart_1的端口到 Quartus工程中 69
4.1.8 分配FPGA引腳 … 71
4.1.9 生成配置數據二進制文件 72
4.2 製作Preloader Image … 72
4.2.1 打開SoC EDS工具 73
4.2.2 生成bsp文件 74
4.2.3 編譯Preloader和 U-Boot 77
4.2.4 更新Preloader和 U-Boot 79
4.2.5 Win 10下更新失敗問題… 80
4.2.6 使用新的 U-Boot啟動SoC … 81
4.3 製作設備樹 … 82
4.3.1 設備樹製作流程 … 82
4.3.2 準備所需文件 82
4.3.3 生成.dts文件 83
4.3.4 生成.dtb文件 84
4.4 運行修改後的工程 85
4.5 本章小結 87
第5章 使用DS-5編寫和調試SoC的Linux應用程序 88
5.1 啟動DS-5 …88
5.2 創建C工程 … 91
5.3 編譯工程 94
5.4 建立SSH遠程連接 95
5.4.1 創建遠程連接 95
5.4.2 複製文件到目標板 101
5.4.3 運行應用程序 102
5.5 遠程調試 … 103
5.5.1 GDB設置 … 103
5.5.2 GDB連接和調試 … 106
5.6 使用 WinSCP實現多系統傳輸文件 108
5.6.1 為什麼要使用 WinSCP 108
5.6.2 安裝 WinSCP 109
5.6.3 建立遠程主機連接 109
5.6.4 新建遠程連接 112
5.6.5 調用PuTTY終端 112
5.7 本章小結 … 113
第6章 基於虛擬地址映射的Linux硬件編程 114
6.1 什麼是虛擬地址映射 … 114
6.2 虛擬地址映射的實現 … 115
6.3 基於虛擬地址映射的PIO編程應用 117
6.3.1 PIO外設的虛擬地址映射 117
6.3.2 在DS-5中建立PIO應用工程 118
6.3.3 添加和包含 HPS庫文件 119
6.3.4 添加FPGA側外設硬件信息… 121
6.3.5 PIO IP核介紹 124
6.3.6 PIO核寄存器映射 125
6.3.7 PIO IP核應用實例 128
6.3.8 合理的程序退出機制 … 131
6.3.9 關於按鍵消抖 133
6.4 基於虛擬地址映射的 UART編程應用… 134
6.4.1 UART核介紹 134
6.4.2 UART寄存器映射 134
6.4.3 UART IP核應用實例 … 136
6.4.4 UART IP核板級調試 … 144
6.4.5 小 結 145
6.5 基於虛擬地址映射的I2C編程應用 145
6.5.1 OpenCores I2C IP簡介… 146
6.5.2 OpenCores I2C IP寄存器映射 146
6.5.3 I2C IP核應用實例 149
6.5.4 小 結 161
6.6 本章小結 … 161
第7章 基於Linux應用程序的HPS配置
FPGA … 162
7.1 製作 Quartus工程 163
7.2 生成rbf格式配置數據 163
7.3 編譯Linux配置FPGA應用程序… 165
7.4 在系統重配置FPGA實驗 … 166
7.5 本章小結 … 168
第8章 編譯嵌入式Linux系統內核 169
8.1 安裝 VMware … 170
8.2 安裝 Ubuntu系統 171
8.2.1 使用現成的 Ubuntu系統鏡像 171
8.2.2 安裝全新的 Ubuntu系統 175
8.3 下載Linux系統源碼 … 182
8.4 設置交叉編譯環境 185
8.5 配置和編譯內核 … 189
8.5.1 快速配置內核 189
8.5.2 保存內核配置文件 195
8.5.3 編譯內核 195
8.5.4 使用內核啟動開發板 … 197
8.6 本章小結 … 199
第9章 Linux設備樹的原理與應用實例 200
9.1 什麼是設備樹 200
9.2 設備樹基本格式 … 201
9.3 設備樹加載設備驅動原理 … 206
9.4 編寫I2C控制器設備節點 … 208
9.5 加載 OC_I2C驅動 211
9.6 使用RTC … 212
9.7 使用EEPROM … 216
9.8 編寫SPI控制器設備節點 … 217
9.9 本章小結 … 219
第10章 基於Linux標準文件I/O 的設備讀/寫 … 220
10.1 什麼是文件I/O 220
10.2 基於文件I/O操作的一般方法 … 220
10.2.1 文件描述符 220
10.2.2 打開設備(open)… 221
10.2.3 向設備寫入數據(write) 221
10.2.4 讀取設備數據(read)… 222
10.2.5 雜項操作(ioctl)… 222
10.2.6 關閉設備(close)… 223
10.2.7 其他操作 … 223
10.3 使用文件I/O實現I2C編程 223
10.4 本章小結 … 226
第11章 FPGA與HPS高速數據交互應用 … 227
11.1 FPGA與 HPS通信介紹 … 227
11.1.1 H2F_LW_AXI_Master橋 … 229
11.1.2 H2F_AXI_Master橋 … 229
11.1.3 F2H_AXI_Slave橋 230
11.2 AXI與 Avalon-MM 總線的互聯… 230
11.3 Avalon-MM 總線 230
11.4 Avalon-MM Slave接口 232
11.5 基本Avalon-MM Slave IP設計框架 … 234
11.5.1 端口定義 … 234
11.5.2 寄存器和線網定義 235
11.5.3 Avalon總線對寄存器的讀/寫 235
11.5.4 用戶邏輯使用寄存器 … 236
11.6 PWM 控制器設計 237
11.6.1 PWM IP核端口設計 … 238
11.6.2 PWM IP核寄存器定義 239
11.6.3 讀/寫PWM 寄存器 … 239
11.6.4 Platform Designer中封裝PWM IP 241
11.7 Avalon-MM Master接口 … 255
11.7.1 常見的通用Avalon-MM Master主機 … 256
11.7.2 DMA Controller 256
11.7.3 Scatter-Gather DMA Controller … 256
11.7.4 Modular Scatter-Gather DMA 258
11.7.5 Avalon-MM Master模板 … 260
11.8 高速數據采集系統 … 263
11.8.1 安裝Avalon-MM Master模板 263
11.8.2 完善 Qsys系統 … 265
11.8.3 修改 Quartus中的 Qsys例化 269
11.8.4 測試邏輯設計 … 271
11.9 本章小結 … 275
第12章 Linux驅動編寫與編譯 … 276
12.1 基本字符型設備驅動… 276
12.1.1 字符型設備驅動框架 … 277
12.1.2 PWM 控制器驅動的完整源碼 286
12.1.3 驅動編譯 Makefile 291
12.1.4 Ubuntu下編譯設備驅動 292
12.1.5 字符型設備驅動驗證 … 293
12.2 基於DMA的字符型設備驅動 … 297
12.2.1 Avalon-MM Master Write驅動 … 298
12.2.2 Avalon-MM Master Write測試 … 304
12.3 本章小結 … 311
附錄A 外設地址映射 312
附錄B HPS GPIO映射 … 314
主題書展
更多
主題書展
更多書展今日66折
您曾經瀏覽過的商品
購物須知
大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。
特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。
無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。