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