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