RISC-V處理器與片上系統(tǒng)設(shè)計----基于FPGA與云平臺的實驗教程
定 價:98 元
叢書名:RISC-V芯片系列
- 作者:陳宏銘
- 出版時間:2020/12/1
- ISBN:9787121401411
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP332
- 頁碼:388
- 紙張:
- 版次:01
- 開本:16開
本書將線下的FPGA開發(fā)板與線上的云平臺結(jié)合,完成基于開源RISC-V處理器的SiFive Freedom E300片上系統(tǒng),以及E21處理器配合云平臺設(shè)計方法的相關(guān)實驗教程。并用Chisel編程的方式與FPGA硬件,完成國產(chǎn)RT-Thread操作系統(tǒng)驗證的移植。全書包含三大部分內(nèi)容:首先講述了基于實驗所用Digilent Nexys板級硬件設(shè)計平臺和Vivado開發(fā)工具。其次是介紹Verilog HDL、Chisel HCL和一種由國內(nèi)自主開發(fā)的Coffee-HDL這三種硬件描述語言。最后是三種實驗教程的設(shè)計與實現(xiàn)方法,包含開源的SiFive Freedom E300片上系統(tǒng)的實驗;以英偉達(dá)開源的深度學(xué)習(xí)硬件架構(gòu)NVDLA為例,介紹如何在Freedom E300平臺上集成Verilog IP的方法及介紹SiFive E21處理器IP的使用方式與國內(nèi)自主開發(fā)云端SoC開發(fā)平臺的實驗;移植國內(nèi)自主開發(fā)RT-Thread實時多任務(wù)操作系統(tǒng)的原理與應(yīng)用到SiFive Freedom E300片上系統(tǒng)的實驗。
陳宏銘博士擁有超過二十年的半導(dǎo)體相關(guān)行業(yè)經(jīng)驗,目前擔(dān)任上海賽昉科技的技術(shù)市場資深總監(jiān)。特別專注于物聯(lián)網(wǎng)、人工智能、超算與RISC-V處理器等領(lǐng)域的技術(shù)趨勢,負(fù)責(zé)協(xié)助中國大陸與港澳臺的客戶。在加入上海賽昉科技之前,陳博士曾擔(dān)任創(chuàng)意電子的華東區(qū)業(yè)務(wù)總監(jiān)以及智原科技的技術(shù)與市場總監(jiān),負(fù)責(zé)評估客戶設(shè)計與市場規(guī)劃。更早前還擔(dān)任過明導(dǎo)國際亞太區(qū)產(chǎn)品專家,益華電腦應(yīng)用工程師與聯(lián)陽半導(dǎo)體數(shù)字設(shè)計工程師。陳博士于臺灣清華大學(xué)獲得了電機(jī)工學(xué)學(xué)士與微電子專業(yè)工學(xué)碩士學(xué)位,在北京大學(xué)獲得了微電子專業(yè)理學(xué)博士學(xué)位。同時也擔(dān)任武漢大學(xué)電子信息學(xué)院兼職教授,江南大學(xué)物聯(lián)網(wǎng)工程學(xué)院企業(yè)講師,教授本科生有關(guān)芯片設(shè)計、制造、封測與RISC-V處理器相關(guān)的入門知識。
第1章 RISC-V的歷史和機(jī)遇 1
1.1 RISC-V發(fā)明團(tuán)隊與歷史 1
1.1.1 商業(yè)公司的指令集架構(gòu)載浮載沉 4
1.1.2 RISC-V指令集架構(gòu)有什么不同 6
1.1.3 RISC-V發(fā)展史及其標(biāo)志性事件 7
1.2 RISC-V基金會成長的歷史 8
1.2.1 RISC-V基金會的成員介紹 9
1.2.2 RISC-V基金會推動20個重點(diǎn)領(lǐng)域的技術(shù) 11
1.2.3 RISC-V基金會標(biāo)準(zhǔn)制定過程及工作群組機(jī)制 12
1.2.4 RISC-V國際協(xié)會的誕生 13
1.3 RISC-V的生態(tài)系統(tǒng) 13
1.3.1 RISC-V的開發(fā)板和生態(tài)系統(tǒng) 14
1.3.2 部分RISC-V社區(qū)生態(tài)的支持廠商 18
1.3.3 芯片設(shè)計業(yè)界的RISC-V產(chǎn)品進(jìn)展 22
1.4 SiFive研發(fā)團(tuán)隊技術(shù)沿革 24
1.4.1 Rocket Chip SoC生成器 24
1.4.2 使用Chisel語言編寫Rocket Chip生成器 26
1.4.3 Rocket標(biāo)量處理器 27
1.4.4 SiFive強(qiáng)力推動RISC-V生態(tài)發(fā)展 28
第2章 RISC-V指令集體系架構(gòu)介紹 32
2.1 引言 32
2.2 RISC-V架構(gòu)特性 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 控制和狀態(tài)寄存器 38
2.4.3 程序計數(shù)器 39
2.5 地址空間與尋址模式 39
2.5.1 地址空間 39
2.5.2 小端格式 40
2.5.3 尋址模式 40
2.6 內(nèi)存模型 40
2.7 特權(quán)模式 41
2.8 中斷和異常 42
2.8.1 中斷和異常概述 42
2.8.2 RISC-V機(jī)器模式下的中斷架構(gòu) 42
2.8.3 機(jī)器模式下中斷和異常的處理過程 43
2.9 調(diào)試規(guī)范 44
2.10 RISC-V未來的擴(kuò)展子集 45
2.10.1 B標(biāo)準(zhǔn)擴(kuò)展:位操作 45
2.10.2 H特權(quán)態(tài)架構(gòu)擴(kuò)展:支持管理程序(Hypervisor) 45
2.10.3 J標(biāo)準(zhǔn)擴(kuò)展:動態(tài)翻譯語言 45
2.10.4 L標(biāo)準(zhǔn)擴(kuò)展:十進(jìn)制浮點(diǎn) 46
2.10.5 N標(biāo)準(zhǔn)擴(kuò)展:用戶態(tài)中斷 46
2.10.6 P標(biāo)準(zhǔn)擴(kuò)展:封裝的單指令多數(shù)據(jù)(Packed-SIMD)指令 46
2.10.7 Q標(biāo)準(zhǔn)擴(kuò)展:四精度浮點(diǎn) 46
2.10.8 V標(biāo)準(zhǔn)擴(kuò)展:基本矢量擴(kuò)展 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章 現(xiàn)場可編程邏輯門陣列(FPGA)設(shè)計流程 60
3.1 Xilinx FPGA概述與設(shè)計流程 60
3.1.1 Xilinx FPGA的基本結(jié)構(gòu) 61
3.1.2 Diligent Nexys A7 FPGA開發(fā)平臺介紹 63
3.1.3 FPGA的設(shè)計流程 64
3.2 Xilinx Vivado集成環(huán)境安裝與開發(fā)流程 67
3.2.1 Vivado集成環(huán)境的安裝 68
3.2.2 Vivado集成環(huán)境的開發(fā)流程 76
第4章 SiFive Freedom E300 SoC的原理與實驗 92
4.1 Verilog HDL語言簡介 92
4.1.1 數(shù)據(jù)類型 93
4.1.2 數(shù)據(jù)表示 95
4.1.3 運(yùn)算符及表達(dá)式 96
4.1.4 Verilog HDL常用語法 101
4.1.5 系統(tǒng)函數(shù)和任務(wù) 106
4.1.6 Verilog HDL語言規(guī)范 111
4.1.7 用于Verilog HDL設(shè)計的Xilinx 7系列 FPGA原語使用方法 118
4.1.8 小結(jié) 128
4.2 Chisel HCL語言簡介 129
4.2.1 環(huán)境安裝 130
4.2.2 Scala編程語言快訓(xùn) 132
4.2.3 Chisel硬件構(gòu)造語言快訓(xùn) 138
4.2.4 小結(jié) 162
4.3 SiFive Freedom E300平臺架構(gòu)介紹 162
4.3.1 E31 RISC-V內(nèi)核概述 164
4.3.2 中斷架構(gòu) 170
4.3.3 內(nèi)核本地中斷器(CLINT) 175
4.3.4 調(diào)試支持 176
4.3.5 SiFive TileLink總線介紹 181
4.4 SiFive Freedom E300在Nexys A7上的開發(fā)流程 204
4.4.1 SiFive Freedom SoC生成器簡介 204
4.4.2 Verilog IP集成方法與開發(fā)流程 210
4.4.3 Freedom E300在Nexys A7上的開發(fā)流程 215
第5章 SiFive E21處理器和SoC設(shè)計云平臺的原理與實驗 222
5.1 SiFive E21處理器 222
5.1.1 縮略語和術(shù)語列表 223
5.1.2 E21 RISC-V內(nèi)核概述 224
5.1.3 內(nèi)存映射 229
5.1.4 中斷架構(gòu) 229
5.1.5 內(nèi)核本地中斷器 236
5.1.6 調(diào)試支持 240
5.1.7 使用E21內(nèi)核評估套件 245
5.2 Coffee-HDL語言簡介 258
5.2.1 開發(fā)Coffee-HDL語言的動機(jī) 258
5.2.2 文件和模塊 259
5.2.3 語言要素 261
5.2.4 數(shù)據(jù)類型 262
5.2.5 操作符 263
5.2.6 位選擇和部分選擇 264
5.2.7 表達(dá)式 264
5.2.8 語句 265
5.2.9 函數(shù) 267
5.2.10 LRU算法模塊設(shè)計示例 267
5.2.11 E21_SOC_FPGA集成模塊設(shè)計示例 269
5.3 ezchip? SoC在線設(shè)計云平臺 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設(shè)計實驗 280
5.3.6 基于SiFive E21 處理器的FPGA驗證實驗 285
第6章 RT-Thread實時多任務(wù)操作系統(tǒng)的原理與應(yīng)用 298
6.1 SiFive Freedom Studio集成開發(fā)調(diào)試環(huán)境安裝與介紹 298
6.1.1 Freedom Studio簡介與安裝 298
6.1.2 啟動Freedom Studio 300
6.1.3 創(chuàng)建sifive-welcome項目 301
6.1.4 配置sifive-welcome項目 303
6.1.5 編譯sifive-welcome項目 305
6.1.6 運(yùn)行sifive-welcome項目 306
6.1.7 調(diào)試程序 312
6.2 移植RT-Thread實時多任務(wù)操作系統(tǒng)的原理 313
6.2.1 嵌入式操作系統(tǒng)概述 313
6.2.2 RT-Thread實時多任務(wù)操作系統(tǒng)介紹 315
6.2.3 RT-Thread的底層結(jié)構(gòu)與移植 317
6.3 RT-Tread的UART驅(qū)動結(jié)構(gòu)分析、移植及應(yīng)用 322
6.3.1 RT-Tread外設(shè)驅(qū)動 322
6.3.2 UART驅(qū)動結(jié)構(gòu)分析 323
6.3.3 UART的移植與應(yīng)用 330
6.4 完成RT-Thread實時操作系統(tǒng)的編譯與運(yùn)行 330
6.4.1 工具準(zhǔn)備 331
6.4.2 修改路徑與代碼 331
6.4.3 文件編譯 333
6.4.4 文件燒錄 333
附錄A 虛擬機(jī)與Ubuntu Linux操作系統(tǒng)的安裝 335
A.1 虛擬機(jī)的安裝 335
A.1.1 虛擬機(jī)簡介 335
A.1.2 VMware安裝(以VMware15版本為例) 336
A.2 Ubuntu Linux操作系統(tǒng)安裝 337
A.2.1 Ubuntu簡介 337
A.2.2 Ubuntu虛擬機(jī)的下載和安裝 337
A.2.3 虛擬機(jī)信息 339
附錄B 基于Nexys A7貪吃蛇游戲的設(shè)計與實現(xiàn) 341
B.1 硬件設(shè)備概述 341
B.2 設(shè)計要求 342
B.3 硬件設(shè)計 342
B.4 任務(wù)設(shè)計 344
B.4.1 程序結(jié)構(gòu) 344
B.4.2 任務(wù)的數(shù)據(jù)結(jié)構(gòu)設(shè)計 345
B.4.3 全局變量的使用 345
B.4.4 狀態(tài)機(jī)的使用 345
B.5 程序設(shè)計詳解 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 測試數(shù)據(jù) 355
參考文獻(xiàn)