●章 概述
1.1背景闡述
1.2FPGA
1.3RISC-V
1.4小腳丫FPGA開發平臺
1.5C/C++,Make與工具鏈
1.6嵌入式操作繫統
1.7Arduino集成開發環境
1.8模塊授權方式
1.9PulseRainRTL庫
1.10資料來源
1.11代碼資源
第2章 FPGA
2.1FPGA背景概述
2.2FPGA與數字芯片的異同
2.2.1FPGA與數字芯片在設計流程上的異同
2.2.2FPGA與數字芯片在功耗上的區別
2.2.3FPGA與數字芯片在性能上的區別
2.2.4邏輯設計規模的衡量單位
2.2.5避免使用鎖存器
2.3FPGA與CPLD的區別
2.4FPGA開發中硬件設計語言的選擇
2.4.1VHDL與System Verilog/Verilog
2.4.2HLS
2.4.3System C
2.4.4Chisel/SpinalHDL
2.5FPGA的片上內存
2.6用FPGA實現雙向同步SRAM接口
2.7FPGA的DSP Block
2.8時鐘與復位
2.9時鐘域跨越
2.9.1單個電平信號的時鐘域跨越
2.9.2單個脈衝信號的時鐘域跨越
2.9.3多比特總線的時鐘域跨越
2.10有限狀態機的System Verilog模板
2.11高速IO與源同步總線(Source Synchronous Bus)
2.12FPGA在數字信號處理中的應用
2.12.1數字濾波器
2.12.24倍頻采樣
2.12.3復數乘法
2.12.4補碼,值飽和,負值,絕對值,四舍五入
2.12.5除法
2.12.6正弦函數與餘弦函數
2.12.7CORDIC算法
2.13其他技巧
2.13.1寄存器重定時
2.13.2異或樹與多路復用器
2.13.3虛擬輸入輸出
2.13.4遷移路徑
2.14面積與性能的平衡
2.14.1流水線與並行
2.14.2小面積設計
2.14.3AT2定律
2.15數字邏輯與處理器各自適用的領域
第3章 RISC-V指令集
3.1RISC-V的歷史
3.28051的CISC指令集與RISC-V的比較
3.2.18051 指令集簡介
3.2.28051 指令集對處理器設計的負面影響
3.2.3RISC-V指令集對處理器設計的正面影響
3.3RISC-V與其他RISC指令集的比較
3.4RISC-V基礎指令集(RV32I與RV32E)
3.4.1RV32I與RV32E基礎指令集簡介
3.4.2RISC-V地址空間
3.4.3RV32I通用寄存器與函數調用約定
3.4.4RV32I指令格式
3.4.5RV32I算術與邏輯指令
3.4.6控制轉移指令
3.4.7內存載入與存儲指令
3.4.8RV32I內存同步指令
3.4.9控制與狀態寄存器指令
3.4.10環境調用與軟件斷點
3.4.11基礎指令集的面積優化方案
3.5RISC-V擴展指令集
3.5.1乘除法擴展(M Extension)
3.5.2壓縮指令集擴展
3.6RISC-V特權架構
3.6.1特權層級
3.6.2控制狀態寄存器
3.6.3定時器
3.6.4中斷與異常
3.6.5程序的調試
第4章 設計基於RISC-V指令集的Soft-CPU
4.12018 RISC-V Soft CPU Contest獲獎作品:PulseRain Reindeer
4.2適合於FPGA的設計目標
4.3PulseRain Reindeer的設計策略
4.4PulseRain Reindeer的RTL設計
4.4.1與FPGA平臺相關部分
4.4.2獨立於FPGA平臺部分
4.4.3通用寄存器的設計
4.4.4CSR寄存器的實現
4.4.5時鐘定時器的實現
4.4.6流水線的設計
4.5處理器驗證的方式
4.5.1黑盒(Black Box)測試與白盒(White Box)測試
4.5.2用Verilator做處理器內核的黑盒驗證
4.5.3用Modelsim做處理器的白盒驗證
第5章 外圍設備接口
5.1UART
5.2I2C和SMBus
5.3SPI
5.4PWM
5.5microSD存儲卡
5.6PS/2接口
5.7旋轉編碼器
5.87段數碼管顯示器
5.9USB
5.10以太網
第6章 嵌入式軟件開發基礎
6.1目標文件格式
6.2Link Script(編譯用鏈接腳本)
6.3工具鏈
6.3.1readelf
6.3.2objdump
6.3.3objcopy
6.4嵌入式繫統中不錯編程語言的選擇
6.5C語言在嵌入式繫統中的應用
6.5.1C語言的模塊封裝
6.5.2C語言的內存對齊訪問
6.5.3C語言的靜態編譯檢查
6.5.4volatile與const
6.6C++語言在嵌入式繫統中的應用
6.6.1C++語言的口水仗
6.6.2C++語言對C的改進
6.6.3C++語言引入的新概念和新方法
6.7MAKE
6.7.1支持增量編譯的Makefile(Makefile for Incremental Build)
6.7.2支持內核配置語言的Makefile
第7章 嵌入式操作繫統的移植
7.1嵌入式操作繫統的分類
7.1.1裸金屬繫統
7.1.2實時操作繫統
7.1.3通用操作繫統
7.2Zephyr操作繫統的RISC-V移植
7.2.1Zephyr操作繫統簡介
7.2.2串行口的支持
7.2.3定時器的支持
7.2.4中斷的設置
7.2.5修改編譯鏈接選項
7.2.6樣本應用程序
第8章 Arduino開發繫統
8.1Arduino的歷史
8.2Arduino的技術貢獻
8.3Arduino開發板
8.4Arduino IDE集成開發環境和ArduinoLanguage
8.4.1Arduino IDE集成開發環境的工作原理
8.4.2Arduino Language
8.5Arduino IDE集成開發環境下第三方開發包的使用和制作
8.5.1Arduino IDE第三方開發包的使用
8.5.2Arduino IDE第三方開發包的制作
8.6Arduino IDE集成開發環境下第三方支持庫的使用和制作
8.6.1Arduino IDE第三方支持庫的使用
8.6.2Arduino IDE第三方支持庫的制作
第9章綜合實驗平臺:小腳丫STEP FPGA開發板
9.1STEP CYC10開發板簡介
9.2RISC-V for Step FPGA
9.3動態內存的訪問與時序約束
9.3.1動態內存的仿真
9.3.2動態內存的時鐘設置
9.3.3動態內存的時序約束
9.3.4動態內存的讀寫測試
9.4處理器仿真
9.4.1用Verilator做仿真
9.4.2用Modelsim做仿真
9.5外圍設備與中斷
9.5.1外圍設備(RTL模塊)與物理設備
9.5.2中斷映射
9.5.3中斷處理程序
9.6外圍設備寄存器地址列表
9.7串行口
9.8GPIO
9.95向按鍵
9.107段管顯示器
9.11三軸加速度傳感器(ADXL345)
9.12開發板示範Sketch
0章 知識產權保護
10.1知識產權保護的方式
10.2計算機指令集的知識產權保護
10.3逆向工程
10.4協議授權
10.4.1GPL
10.4.2LGPL
10.4.3Apache
10.4.4知識共享
10.4.5雙授權協議
內容簡介
本書詳細介紹了RISC-V指令集及其設計思想,並在此基礎上引入了一種稱為FARM的軟硬件開發模式,將FPGA同RISC-V CPU軟核相結合,並利用Arduino與Make作為軟件快速開發工具,有效地提高了開發效率,使繫統設計具有更好的通用性和可移植性。除了上述有關軟硬件的討論之外,本書的作者還與靠前小腳丫FPGA的團隊進行了合作,成功地將書中的大部分內容移植到了小腳丫FPGA旗下的STEP CYC10開發板上,並將相關的技術細節在書中做了詳細陳述,以方便讀者的動手實踐。本書內容既有深度,又有廣度,對各類從事軟硬件開發的科技人員會有很大的參考價值。對高校相關專業的學生,本書也是一部很好的參考書。
第3章 RISC-V指令集 The devil is in the fine print. From the Web 魔鬼總是在文件細則中。 網絡格言 RISC-V指令集第3章 71 了一家叫SiFive 的初創公司,向市場提供各類RISC-V 的處理器內核,以及相關的 軟件工具和開發套件。 3.2 8051的CISC指令集與RISC-V的比較 3.2.1 8051指令集簡介 提到RISC(Reduced Instruction Set Computer ,精簡指令集計算機),就必然 也會提到CISC(Complex Instruction Set Computer ,復雜指令集計算機)。在許多 嵌入式繫統中得到廣泛使用的8051 單片機,便是CISC......
"