基於FPGA與RISC-V的嵌入式系統設計

基於FPGA與RISC-V的嵌入式系統設計

《基於FPGA與RISC-V的嵌入式系統設計》是清華大學出版社於2020年2月1日出版的一本圖書,作者是顧長怡。

基本介紹

  • 中文名:基於FPGA與RISC-V的嵌入式系統設計
  • 作者:顧長怡
  • 出版社:清華大學出版社
  • 出版時間:2020年2月1日
  • 定價:118 元
  • ISBN:9787302545385
  • 印刷日期:2019年12月27日
內容簡介,圖書目錄,作者介紹,

內容簡介

本書詳細介紹了RISC-V指令集及其設計思想,並在此基礎上引入了一種稱為FARM的軟硬體 開發模式,將FPGA同RISC-V CPU軟核相結合,並利用Arduino與Make作為軟體快速開發工具,有效地提高了開發效率,使系統設計具有更好的通用性和可移植性。除了上述有關軟硬體的討論之外,本書的作者還與國內小腳丫FPGA的團隊進行了合作,成 功地將書中的大部分內容移植到了小腳丫FPGA旗下的STEP CYC10開發板上,並將相關的技術細 節在書中做了詳細陳述,以方便讀者的動手實踐。

圖書目錄

第1章概述
1.1背景闡述
1.2FPGA
1.3RISC-V
1.4小腳丫FPGA開發平台
1.5C/C++,Make與工具鏈
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與SystemVerilog/Verilog
2.4.2HLS
2.4.3SystemC
2.4.4Chisel/SpinalHDL
2.5FPGA的片上記憶體
2.6用FPGA實現雙向同步SRAM接口
2.7FPGA的DSPBlock
2.8時鐘與復位
2.9時鐘域跨越
2.9.1單個電平信號的時鐘域跨越
2.9.2單個脈衝信號的時鐘域跨越
2.9.3多比特匯流排的時鐘域跨越
2.10有限狀態機的SystemVerilog模板
2.11高速IO與源同步匯流排(SourceSynchronousBus)
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.3AT定律
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乘除法擴展(MExtension)
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.12018RISC-VSoftCPUContest獲獎作品:PulseRainReindeer
4.2適合於FPGA的設計目標
4.3PulseRainReindeer的設計策略
4.4PulseRainReindeer的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黑盒(BlackBox)測試與白盒(WhiteBox)測試
4.5.2用Verilator做處理器核心的黑盒驗證
4.5.3用Modelsim做處理器的白盒驗證
第5章外圍設備接口
5.1UART
5.2I2C和SMBus
5.3SPI
5.4PWM
5.5microSD存儲卡
5.6PS/2接口
5.87段數碼管顯示器
5.9USB
5.10乙太網
第6章嵌入式軟體開發基礎
6.1目標檔案格式
6.2LinkScript(編譯用連結腳本)
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(MakefileforIncrementalBuild)
6.7.2支持核心配置語言的Makefile
第7章嵌入式作業系統的移植
7.1嵌入式作業系統的分類
7.1.1裸金屬系統
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.4ArduinoIDE集成開發環境和ArduinoLanguage
8.4.1ArduinoIDE集成開發環境的工作原理
8.4.2ArduinoLanguage
8.5ArduinoIDE集成開發環境下第三方開發包的使用和製作
8.5.1ArduinoIDE第三方開發包的使用
8.5.2ArduinoIDE第三方開發包的製作
8.6ArduinoIDE集成開發環境下第三方支持庫的使用和製作
8.6.1ArduinoIDE第三方支持庫的使用
8.6.2ArduinoIDE第三方支持庫的製作
第9章綜合實驗平台:小腳丫STEPFPGA開發板
9.1STEPCYC10開發板簡介
9.2RISC-VforStepFPGA
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.12開發板示範Sketch
第10章智慧財產權保護
10.1智慧財產權保護的方式
10.2計算機指令集的智慧財產權保護
10.3逆向工程
10.4協定授權
10.4.1GPL
10.4.2LGPL
10.4.3Apache
10.4.4知識共享
10.4.5雙授權協定

作者介紹

顧長怡,於1995年免試直升進入上海交通大學本碩聯讀班,2001年獲該校通信與信息系統工程碩士學位。同年赴美,在美國加州的多家高科技公司從事嵌入式系統和FPGA的開發工作,其間還曾獲得美國南加州大學積體電路設計專業碩士學位。顧長怡先生對軟硬體開發有超過15年的業界經驗,他也是美國PulseRain Technology公司的創始人。

相關詞條

熱門詞條

聯絡我們