基于FPGA與RISC-V的嵌入式系統(tǒng)設(shè)計(jì) 版權(quán)信息
- ISBN:9787302545385
- 條形碼:9787302545385 ; 978-7-302-54538-5
- 裝幀:平裝
- 冊(cè)數(shù):暫無(wú)
- 重量:暫無(wú)
- 所屬分類:>>
基于FPGA與RISC-V的嵌入式系統(tǒng)設(shè)計(jì) 本書(shū)特色
本書(shū)詳細(xì)介紹了RISC-V指令集及其設(shè)計(jì)思想,并在此基礎(chǔ)上引入了一種稱為FARM的軟硬件
開(kāi)發(fā)模式,將FPGA同RISC-V CPU軟核相結(jié)合,并利用Arduino與Make作為軟件快速開(kāi)發(fā)工具,
有效地提高了開(kāi)發(fā)效率,使系統(tǒng)設(shè)計(jì)具有更好的通用性和可移植性。除了上述有關(guān)軟硬件的討論之外,本書(shū)的作者還與國(guó)內(nèi)小腳丫FPGA的團(tuán)隊(duì)進(jìn)行了合作,成
功地將書(shū)中的大部分內(nèi)容移植到了小腳丫FPGA旗下的STEP CYC10開(kāi)發(fā)板上,并將相關(guān)的技術(shù)細(xì)
節(jié)在書(shū)中做了詳細(xì)陳述,以方便讀者的動(dòng)手實(shí)踐。本書(shū)內(nèi)容既有深度,又有廣度,對(duì)各類從事軟硬件開(kāi)發(fā)的科技人員會(huì)有很大的參考價(jià)值。對(duì)
高校相關(guān)專業(yè)的學(xué)生,本書(shū)也是一部很好的參考書(shū)。
基于FPGA與RISC-V的嵌入式系統(tǒng)設(shè)計(jì) 內(nèi)容簡(jiǎn)介
本書(shū)詳細(xì)介紹了RISC-V指令集及其設(shè)計(jì)思想,并在此基礎(chǔ)上引入了一種稱為FARM的軟硬件開(kāi)發(fā)模式,將FPGA同RISC-V CPU軟核相結(jié)合,并利用Arduino與Make作為軟件快速開(kāi)發(fā)工具,有效地提高了開(kāi)發(fā)效率,使系統(tǒng)設(shè)計(jì)具有更好的通用性和可移植性。
除了上述有關(guān)軟硬件的討論之外,本書(shū)的作者還與國(guó)內(nèi)小腳丫FPGA的團(tuán)隊(duì)進(jìn)行了合作,成功地將書(shū)中的大部分內(nèi)容移植到了小腳丫FPGA旗下的STEP CYC10開(kāi)發(fā)板上,并將相關(guān)的技術(shù)細(xì)節(jié)在書(shū)中做了詳細(xì)陳述,以方便讀者的動(dòng)手實(shí)踐。
本書(shū)內(nèi)容既有深度,又有廣度,對(duì)各類從事軟硬件開(kāi)發(fā)的科技人員會(huì)有很大的參考價(jià)值。對(duì)高校相關(guān)專業(yè)的學(xué)生,本書(shū)也是一部很好的參考書(shū)。
基于FPGA與RISC-V的嵌入式系統(tǒng)設(shè)計(jì) 目錄
第 1 章 概述
1.1 背景闡述
1.2 FPGA
1.3 RISC-V
1.4 小腳丫 FPGA 開(kāi)發(fā)平臺(tái)
1.5 C/C++,Make 與工具鏈
1.6 嵌入式操作系統(tǒng)
1.7 Arduino 集成開(kāi)發(fā)環(huán)境
1.8 模塊授權(quán)方式
1.9 PulseRainRTL庫(kù)
1.10 資料來(lái)源
1.11 代碼資源
第 2 章 FPGA
2.1 FPGA 背景概述
2.2 FPGA 與數(shù)字芯片的異同
2.2.1 FPGA 與數(shù)字芯片在設(shè)計(jì)流程上的異同
2.2.2 FPGA 與數(shù)字芯片在功耗上的區(qū)別
2.2.3 FPGA 與數(shù)字芯片在性能上的區(qū)別
2.2.4 邏輯設(shè)計(jì)規(guī)模的衡量單位
2.2.5 避免使用鎖存器
2.3 FPGA 與 CPLD 的區(qū)別
2.4 FPGA 開(kāi)發(fā)中硬件設(shè)計(jì)語(yǔ)言的選擇
2.4.1 VHDL?與 System?Verilog?/?Verilog
2.4.2 HLS
2.4.3 System?C
2.4.4 Chisel/SpinalHDL
2.5 FPGA 的片上內(nèi)存
2.6 用 FPGA 實(shí)現(xiàn)雙向同步 SRAM 接口
2.7 FPGA 的 DSP?Block
2.8 時(shí)鐘與復(fù)位
2.9 時(shí)鐘域跨越
2.9.1 單個(gè)電平信號(hào)的時(shí)鐘域跨越
2.9.2 單個(gè)脈沖信號(hào)的時(shí)鐘域跨越
2.9.3 多比特總線的時(shí)鐘域跨越
2.10 有限狀態(tài)機(jī)的 System?Verilog 模板
2.11 高速 IO 與源同步總線(Source?Synchronous?Bus)
2.12 FPGA 在數(shù)字信號(hào)處理中的應(yīng)用
2.12.1 數(shù)字濾波器
2.12.2 4倍頻采樣
2.12.3 復(fù)數(shù)乘法
2.12.4 補(bǔ)碼,值飽和,負(fù)值,絕對(duì)值,四舍五入
2.12.5 除法
2.12.6 正弦函數(shù)與余弦函數(shù)
2.12.7 CORDIC 算法
2.13 其他技巧
2.13.1 寄存器重定時(shí)
2.13.2 異或樹(shù)與多路復(fù)用器
2.13.3 虛擬輸入輸出
2.13.4 遷移路徑
2.14 面積與性能的平衡
2.14.1 流水線與并行
2.14.2 小面積設(shè)計(jì)
2.14.3 AT定律
2.15 數(shù)字邏輯與處理器各自適用的領(lǐng)域
第 3 章 RISC-V 指令集
3.1 RISC-V 的歷史
3.2 8051的 CISC 指令集與 RISC-V 的比較
3.2.1 8051?指令集簡(jiǎn)介
3.2.2 8051?指令集對(duì)處理器設(shè)計(jì)的負(fù)面影響
3.2.3 RISC-V 指令集對(duì)處理器設(shè)計(jì)的正面影響
3.3 RISC-V 與其他 RISC 指令集的比較
3.4 RISC-V 基礎(chǔ)指令集(RV32I 與 RV32E)
3.4.1 RV32I?與 RV32E 基礎(chǔ)指令集簡(jiǎn)介
3.4.2 RISC-V?地址空間
3.4.3 RV32I 通用寄存器與函數(shù)調(diào)用約定
3.4.4 RV32I 指令格式
3.4.5 RV32I 算術(shù)與邏輯指令
3.4.6 控制轉(zhuǎn)移指令
3.4.7 內(nèi)存載入與存儲(chǔ)指令
3.4.8 RV32I 內(nèi)存同步指令
3.4.9 控制與狀態(tài)寄存器指令
3.4.10 環(huán)境調(diào)用與軟件斷點(diǎn)
3.4.11 基礎(chǔ)指令集的面積優(yōu)化方案
3.5 RISC-V 擴(kuò)展指令集
3.5.1 乘除法擴(kuò)展(M?Extension)
3.5.2 壓縮指令集擴(kuò)展
3.6 RISC-V 特權(quán)架構(gòu)
3.6.1 特權(quán)層級(jí)
3.6.2 控制狀態(tài)寄存器
3.6.3 定時(shí)器
3.6.4 中斷與異常
3.6.5 程序的調(diào)試
第 4 章 設(shè)計(jì)基于 RISC-V 指令集的 Soft—CPU
4.1 2018?RISC-V?Soft?CPU?Contest 獲獎(jiǎng)作品:PulseRain?Reindeer
4.2 適合于 FPGA 的設(shè)計(jì)目標(biāo)
4.3 PulseRain?Reindeer 的設(shè)計(jì)策略
4.4 PulseRain?Reindeer 的 RTL 設(shè)計(jì)
4.4.1 與 FPGA 平臺(tái)相關(guān)部分
4.4.2 獨(dú)立于 FPGA 平臺(tái)部分
4.4.3 通用寄存器的設(shè)計(jì)
4.4.4 CSR 寄存器的實(shí)現(xiàn)
4.4.5 時(shí)鐘定時(shí)器的實(shí)現(xiàn)
4.4.6 流水線的設(shè)計(jì)
4.5 處理器驗(yàn)證的方式
4.5.1 黑盒(Black?Box)測(cè)試與白盒(White?Box)測(cè)試
4.5.2 用 Verilator 做處理器內(nèi)核的黑盒驗(yàn)證
4.5.3 用 Modelsim 做處理器的白盒驗(yàn)證
第 5 章 外圍設(shè)備接口
5.1 UART
5.2 I 2 C 和 SMBus
5.3 SPI
5.4 PWM
5.5 microSD 存儲(chǔ)卡
5.6 PS/2 接口
5.7 旋轉(zhuǎn)編碼器
5.8 7段數(shù)碼管顯示器
5.9 USB
5.10 以太網(wǎng)
第 6 章 嵌入式軟件開(kāi)發(fā)基礎(chǔ)
6.1 目標(biāo)文件格式
6.2 Link?Script(編譯用鏈接腳本)
6.3 工具鏈
6.3.1 readelf
6.3.2 objdump
6.3.3 objcopy
6.4 嵌入式系統(tǒng)中高級(jí)編程語(yǔ)言的選擇
6.5 C 語(yǔ)言在嵌入式系統(tǒng)中的應(yīng)用
6.5.1 C 語(yǔ)言的模塊封裝
6.5.2 C 語(yǔ)言的內(nèi)存對(duì)齊訪問(wèn)
6.5.3 C 語(yǔ)言的靜態(tài)編譯檢查
6.5.4 volatile 與 const
6.6 C++ 語(yǔ)言在嵌入式系統(tǒng)中的應(yīng)用
6.6.1 C++ 語(yǔ)言的口水仗
6.6.2 C++ 語(yǔ)言對(duì) C 的改進(jìn)
6.6.3 C++ 語(yǔ)言引入的新概念和新方法
6.7 MAKE
6.7.1 支持增量編譯的 Makefile(Makefile?for?Incremental?Build)
6.7.2 支持內(nèi)核配置語(yǔ)言的 Makefile
第 7 章 嵌入式操作系統(tǒng)的移植
7.1 嵌入式操作系統(tǒng)的分類
7.1.1 裸金屬系統(tǒng)
7.1.2 實(shí)時(shí)操作系統(tǒng)
7.1.3 通用操作系統(tǒng)
7.2 Zephyr 操作系統(tǒng)的 RISC-V 移植
7.2.1 Zephyr 操作系統(tǒng)簡(jiǎn)介
7.2.2 串行口的支持
7.2.3 定時(shí)器的支持
7.2.4 中斷的設(shè)置
7.2.5 修改編譯鏈接選項(xiàng)
7.2.6 樣本應(yīng)用程序
第 8 章 Arduino開(kāi)發(fā)系統(tǒng)
8.1 Arduino 的歷史
8.2 Arduino 的技術(shù)貢獻(xiàn)
8.3 Arduino 開(kāi)發(fā)板
8.4 Arduino IDE 集成開(kāi)發(fā)環(huán)境和 Arduino Language
8.4.1 Arduino IDE 集成開(kāi)發(fā)環(huán)境的工作原理
8.4.2 Arduino Language
8.5 Arduino IDE 集成開(kāi)發(fā)環(huán)境下第三方開(kāi)發(fā)包的使用和制作
8.5.1 Arduino IDE 第三方開(kāi)發(fā)包的使用
8.5.2 Arduino IDE 第三方開(kāi)發(fā)包的制作
8.6 Arduino IDE 集成開(kāi)發(fā)環(huán)境下第三方支持庫(kù)的使用和制作
8.6.1 Arduino IDE 第三方支持庫(kù)的使用
8.6.2 Arduino IDE 第三方支持庫(kù)的制作
第 9 章 綜合實(shí)驗(yàn)平臺(tái):小腳丫 STEP FPGA開(kāi)發(fā)板
9.1 STEP?CYC10?開(kāi)發(fā)板簡(jiǎn)介
9.2 RISC-V?for?Step?FPGA
9.3 動(dòng)態(tài)內(nèi)存的訪問(wèn)與時(shí)序約束
9.3.1 動(dòng)態(tài)內(nèi)存的仿真
9.3.2 動(dòng)態(tài)內(nèi)存的時(shí)鐘設(shè)置
9.3.3 動(dòng)態(tài)內(nèi)存的時(shí)序約束
9.3.4 動(dòng)態(tài)內(nèi)存的讀寫(xiě)測(cè)試
9.4 處理器仿真
9.4.1 用 Verilator 做仿真
9.4.2 用 Modelsim 做仿真
9.5 外圍設(shè)備與中斷
9.5.1 外圍設(shè)備(RTL 模塊)與物理設(shè)備
9.5.2 中斷映射
9.5.3 中斷處理程序
9.6 外圍設(shè)備寄存器地址列表
9.7 串行口
9.8 GPIO
9.9 5 向按鍵
9.10 7 段管顯示器
9.11 三軸加速度傳感器 (ADXL345)
9.12 開(kāi)發(fā)板示范 Sketch
第 10 章 知識(shí)產(chǎn)權(quán)保護(hù)
10.1 知識(shí)產(chǎn)權(quán)保護(hù)的方式
10.2 計(jì)算機(jī)指令集的知識(shí)產(chǎn)權(quán)保護(hù)
10.3 逆向工程
10.4 協(xié)議授權(quán)
10.4.1 GPL
10.4.2 LGPL
10.4.3 Apache
10.4.4 知識(shí)共享
10.4.5 雙授權(quán)協(xié)議
展開(kāi)全部
基于FPGA與RISC-V的嵌入式系統(tǒng)設(shè)計(jì) 作者簡(jiǎn)介
顧長(zhǎng)怡, 于1995年免試直升上海交通大學(xué)本碩聯(lián)讀班,1998年獲該校計(jì)算機(jī)科學(xué)與工程學(xué)士學(xué)位,2001年獲該校通信與信息系統(tǒng)工程碩士學(xué)位。
同年赴美,在美國(guó)加州的多家高科技公司從事嵌入式系統(tǒng)和FPGA的開(kāi)發(fā)工作,其間還曾獲得美國(guó)南加州大學(xué)集成電路設(shè)計(jì)專業(yè)碩士學(xué)位。
顧長(zhǎng)怡先生對(duì)軟硬件開(kāi)發(fā)和數(shù)字信號(hào)處理有著豐富的業(yè)界經(jīng)驗(yàn),他也是美國(guó)PulseRain Technology公司的創(chuàng)始人。
在2018年由RISC-V 基金會(huì)官方舉辦的全球首屆RISC-V Soft CPU 設(shè)計(jì)大賽中,由顧長(zhǎng)怡先生主持設(shè)計(jì)的PulseRain Reindeer 處理器內(nèi)核在激烈的競(jìng)爭(zhēng)中脫穎而出,榮獲季軍。在2019年以物聯(lián)網(wǎng)安全為主題的第二屆競(jìng)賽中,他主持設(shè)計(jì)的PulseRain Rattlesnake處理器成功挫敗了所有的黑客模擬攻擊,并獲綜合成績(jī)第一而奪冠。
他同時(shí)還是英文學(xué)術(shù)專著 Building Embedded System - Programmable Hardware 的作者(該書(shū)已由美國(guó)APress出版社于2016年出版),以及開(kāi)源軟硬件的狂熱支持者。