《RISC-V處理器與片上系統設計——基於FPGA與雲平台的實驗教程》是電子工業出版社於2020年出版的書籍
基本介紹
- 中文名:RISC-V處理器與片上系統設計——基於FPGA與雲平台的實驗教程
- 作者:陳宏銘、程玉華
- 出版社:電子工業出版社
- 出版時間:2020年12月
- 頁數:388 頁
- 定價:98.0 元
- 開本:16 開
- ISBN:9787121401411
內容簡介,圖書目錄,
內容簡介
本書將線下的FPGA開發板與線上的雲平台結合,完成基於開源RISC-V處理器的SiFive Freedom E300片上系統,以及E21處理器配合雲平台設計方法的相關實驗教程。並用Chisel編程的方式與FPGA硬體,完成國產RT-Thread作業系統驗證的移植。全書包含三大部分內容:首先講述了基於實驗所用Digilent Nexys板級硬體設計平台和Vivado開發工具。其次是介紹Verilog HDL、Chisel HCL和一種由國內自主開發的Coffee-HDL這三種硬體描述語言。最後是三種實驗教程的設計與實現方法,包含開源的SiFive Freedom E300片上系統的實驗;以英偉達開源的深度學習硬體架構NVDLA為例,介紹如何在Freedom E300平台上集成Verilog IP的方法及介紹SiFive E21處理器IP的使用方式與國內自主開發雲端SoC開發平台的實驗;移植國內自主開發RT-Thread實時多任務作業系統的原理與套用到SiFive Freedom E300片上系統的實驗。
圖書目錄
第1章 RISC-V的歷史和機遇 1
1.1 RISC-V發明團隊與歷史 1
1.1.1 商業公司的指令集架構載浮載沉 4
1.1.2 RISC-V指令集架構有什麼不同 6
1.1.3 RISC-V發展史及其標誌性事件 7
1.2 RISC-V基金會成長的歷史 8
1.2.1 RISC-V基金會的成員介紹 9
1.2.2 RISC-V基金會推動20個重點領域的技術 11
1.2.3 RISC-V基金會標準制定過程及工作群組機制 12
1.2.4 RISC-V國際協會的誕生 13
1.3 RISC-V的生態系統 13
1.3.1 RISC-V的開發板和生態系統 14
1.3.2 部分RISC-V社區生態的支持廠商 18
1.3.3 晶片設計業界的RISC-V產品進展 22
1.4 SiFive研發團隊技術沿革 24
1.4.1 Rocket Chip SoC生成器 24
1.4.2 使用Chisel語言編寫Rocket Chip生成器 26
1.4.3 Rocket標量處理器 27
1.4.4 SiFive強力推動RISC-V生態發展 28
第2章 RISC-V指令集體系架構介紹 32
2.1 引言 32
2.2 RISC-V架構特性 32
2.2.1 簡潔性 33
2.2.2 模組化 33
2.3 指令格式 35
2.3.1 指令長度編碼 35
2.3.2 指令格式 36
2.4 暫存器列表 37
2.4.1 通用暫存器 37
2.4.2 控制和狀態暫存器 38
2.4.3 程式計數器 39
2.5 地址空間與定址模式 39
2.5.1 地址空間 39
2.5.2 小端格式 40
2.5.3 定址模式 40
2.6 記憶體模型 40
2.7 特權模式 41
2.8 中斷和異常 42
2.8.1 中斷和異常概述 42
2.8.2 RISC-V機器模式下的中斷架構 42
2.8.3 機器模式下中斷和異常的處理過程 43
2.9 調試規範 44
2.10 RISC-V未來的擴展子集 45
2.10.1 B標準擴展:位操作 45
2.10.2 H特權態架構擴展:支持管理程式(Hypervisor) 45
2.10.3 J標準擴展:動態翻譯語言 45
2.10.4 L標準擴展:十進制浮點 46
2.10.5 N標準擴展:用戶態中斷 46
2.10.6 P標準擴展:封裝的單指令多數據(Packed-SIMD)指令 46
2.10.7 Q標準擴展:四精度浮點 46
2.10.8 V標準擴展:基本矢量擴展 46
2.11 RISC-V指令列表 46
2.11.1 I指令子集 47
2.11.2 M指令子集 52
2.11.3 A指令子集 53
2.11.4 F指令子集 55
2.11.5 D指令子集 56
2.11.6 C指令子集 57
第3章 現場可程式邏輯門陣列(FPGA)設計流程 60
3.1 Xilinx FPGA概述與設計流程 60
3.1.1 Xilinx FPGA的基本結構 61
3.1.2 Diligent Nexys A7 FPGA開發平台介紹 63
3.1.3 FPGA的設計流程 64
3.2 Xilinx Vivado集成環境安裝與開發流程 67
3.2.1 Vivado集成環境的安裝 68
3.2.2 Vivado集成環境的開發流程 76
第4章 SiFive Freedom E300 SoC的原理與實驗 92
4.1 Verilog HDL語言簡介 92
4.1.1 數據類型 93
4.1.2 數據表示 95
4.1.3 運算符及表達式 96
4.1.4 Verilog HDL常用語法 101
4.1.5 系統函式和任務 106
4.1.6 Verilog HDL語言規範 111
4.1.7 用於Verilog HDL設計的Xilinx 7系列 FPGA原語使用方法 118
4.1.8 小結 128
4.2 Chisel HCL語言簡介 129
4.2.1 環境安裝 130
4.2.2 Scala程式語言快訓 132
4.2.3 Chisel硬體構造語言快訓 138
4.2.4 小結 162
4.3 SiFive Freedom E300平台架構介紹 162
4.3.1 E31 RISC-V核心概述 164
4.3.2 中斷架構 170
4.3.3 核心本地中斷器(CLINT) 175
4.3.4 調試支持 176
4.3.5 SiFive TileLink匯流排介紹 181
4.4 SiFive Freedom E300在Nexys A7上的開發流程 204
4.4.1 SiFive Freedom SoC生成器簡介 204
4.4.2 Verilog IP集成方法與開發流程 210
4.4.3 Freedom E300在Nexys A7上的開發流程 215
第5章 SiFive E21處理器和SoC設計雲平台的原理與實驗 222
5.1 SiFive E21處理器 222
5.1.1 縮略語和術語列表 223
5.1.2 E21 RISC-V核心概述 224
5.1.3 記憶體映射 229
5.1.4 中斷架構 229
5.1.5 核心本地中斷器 236
5.1.6 調試支持 240
5.1.7 使用E21核心評估套件 245
5.2 Coffee-HDL語言簡介 258
5.2.1 開發Coffee-HDL語言的動機 258
5.2.2 檔案和模組 259
5.2.3 語言要素 261
5.2.4 數據類型 262
5.2.5 操作符 263
5.2.6 位選擇和部分選擇 264
5.2.7 表達式 264
5.2.8 語句 265
5.2.9 函式 267
5.2.10 LRU算法模組設計示例 267
5.2.11 E21_SOC_FPGA集成模組設計示例 269
5.3 ezchip? SoC線上設計雲平台 271
5.3.1 IC Studio主界面布局 272
5.3.2 IC Studio的使用 276
5.3.3 ezchip?可配置制模組 277
5.3.4 生成代碼 279
5.3.5 基於SiFive E21 處理器的SoC設計實驗 280
5.3.6 基於SiFive E21 處理器的FPGA驗證實驗 285
第6章 RT-Thread實時多任務作業系統的原理與套用 298
6.1 SiFive Freedom Studio集成開發調試環境安裝與介紹 298
6.1.1 Freedom Studio簡介與安裝 298
6.1.2 啟動Freedom Studio 300
6.1.3 創建sifive-welcome項目 301
6.1.4 配置sifive-welcome項目 303
6.1.5 編譯sifive-welcome項目 305
6.1.6 運行sifive-welcome項目 306
6.1.7 調試程式 312
6.2 移植RT-Thread實時多任務作業系統的原理 313
6.2.1 嵌入式作業系統概述 313
6.2.2 RT-Thread實時多任務作業系統介紹 315
6.2.3 RT-Thread的底層結構與移植 317
6.3 RT-Tread的UART驅動結構分析、移植及套用 322
6.3.1 RT-Tread外設驅動 322
6.3.2 UART驅動結構分析 323
6.3.3 UART的移植與套用 330
6.4 完成RT-Thread實時作業系統的編譯與運行 330
6.4.1 工具準備 331
6.4.2 修改路徑與代碼 331
6.4.3 檔案編譯 333
6.4.4 檔案燒錄 333
附錄A 虛擬機與Ubuntu Linux作業系統的安裝 335
A.1 虛擬機的安裝 335
A.1.1 虛擬機簡介 335
A.1.2 VMware安裝(以VMware15版本為例) 336
A.2 Ubuntu Linux作業系統安裝 337
A.2.1 Ubuntu簡介 337
A.2.2 Ubuntu虛擬機的下載和安裝 337
A.2.3 虛擬機信息 339
附錄B 基於Nexys A7貪吃蛇遊戲的設計與實現 341
B.1 硬體設備概述 341
B.2 設計要求 342
B.3 硬體設計 342
B.4 任務設計 344
B.4.1 程式結構 344
B.4.2 任務的數據結構設計 345
B.4.3 全局變數的使用 345
B.4.4 狀態機的使用 345
B.5 程式設計詳解 346
B.5.1 top模組的使用 346
B.5.2 display模組的使用 346
B.5.3 snake模組的使用 349
B.5.4 fsm模組的使用 351
B.5.5 turn模組的使用 352
B.5.6 apple模組的使用 353
B.5.7 score模組的使用 354
B.6 測試數據 355
參考文獻