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

顧長怡

  • 出版商: 清華大學
  • 出版日期: 2020-02-01
  • 售價: $708
  • 貴賓價: 9.5$673
  • 語言: 簡體中文
  • ISBN: 7302545383
  • ISBN-13: 9787302545385
  • 相關分類: 嵌入式系統FPGARISC-V
  • 銷售排行: 👍 2020 年度 簡體中文書 銷售排行 第 20 名

    立即出貨 (庫存 < 3)

  • 基於 FPGA 與 RISC-V 的嵌入式系統設計-preview-1
  • 基於 FPGA 與 RISC-V 的嵌入式系統設計-preview-2
  • 基於 FPGA 與 RISC-V 的嵌入式系統設計-preview-3
基於 FPGA 與 RISC-V 的嵌入式系統設計-preview-1

買這商品的人也買了...

商品描述

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

作者簡介

顧長怡於1995年免試直升上海交通大學本碩聯讀班,1998年獲該校計算機科學與工程學士學位,2001年獲該校通信與信息系統工程碩士學位。

同年赴美,在美國加州的多家高科技公司從事嵌入式系統和FPGA的開發工作,其間還曾獲得美國南加州大學集成電路設計專業碩士學位。

顧長怡先生對軟硬件開發和數字信號處理有著豐富的業界經驗,他也是美國PulseRain Technology公司的創始人。

在2018年由RISC-V基金會官方舉辦的全球首屆RISC-V Soft CPU設計大賽中,由顧長怡先生主持設計的PulseRain Reindeer處理器內核在激烈的競爭中脫穎而出,榮獲季軍。在2019年以物聯網安全為主題的第二屆競賽中,他主持設計的PulseRain Rattlesnake處理器成功挫敗了所有的黑客模擬攻擊,並獲綜合成績第一而奪冠。

他同時還是英文學術專著Building Embedded System - Programmable Hardware的作者(該書已由美國APress出版社於2016年出版),以及開源軟硬件的狂熱支持者。

目錄大綱

 

第1 章概述

1.1 背景闡述

1.2 FPGA

1.3 RISC-V

1.4 小腳丫FPGA 開發平台

1.5 C/C++,Make 與工具鏈

1.6 嵌入式操作系統

1.7 Arduino 集成開發環境

1.8 模塊授權方式

1.9 PulseRainRTL庫

1.10 資料來源

1.11 代碼資源

 

第2 章FPGA

2.1 FPGA 背景概述

2.2 FPGA 與數字芯片的異同

2.2.1 FPGA 與數字芯片在設計流程上的異同

2.2.2 FPGA 與數字芯片在功耗上的區別

2.2.3 FPGA 與數字芯片在性能上的區別

2.2.4 邏輯設計規模的衡量單位

2.2.5 避免使用鎖存器

2.3 FPGA 與CPLD 的區別

2.4 FPGA 開發中硬件設計語言的選擇

2.4.1 VHDL?與System?Verilog?/?Verilog

2.4.2 HLS

2.4.3 System?C

2.4.4 Chisel/SpinalHDL

2.5 FPGA 的片上內存

2.6 用FPGA 實現雙向同步SRAM 接口

2.7 FPGA 的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.12 FPGA 在數字信號處理中的應用

2.12.1 數字濾波器

2.12.2 4倍頻採樣

2.12.3 複數乘法

2.12.4 補碼,值飽和,負值,絕對值,四捨五入

2.12.5 除法

2.12.6 正弦函數與餘弦函數

2.12.7 CORDIC 算法

2.13 其他技巧

2.13.1 寄存器重定時

2.13.2 異或樹與多路復用器

2.13.3 虛擬輸入輸出

2.13.4 遷移路徑

2.14 面積與性能的平衡

2.14.1 流水線與並行

2.14.2 小面積設計

2.14.3 AT定律

2.15 數字邏輯與處理器各自適用的領域

 

第3 章RISC-V 指令集

3.1 RISC-V 的歷史

3.2 8051的CISC 指令集與RISC-V 的比較

3.2.1 8051?指令集簡介

3.2.2 8051?指令集對處理器設計的負面影響

3.2.3 RISC-V 指令集對處理器設計的正面影響

3.3 RISC-V 與其他RISC 指令集的比較

3.4 RISC-V 基礎指令集(RV32I 與RV32E)

3.4.1 RV32I?與RV32E 基礎指令集簡介

3.4.2 RISC-V?地址空間

3.4.3 RV32I 通用寄存器與函數調用約定

3.4.4 RV32I 指令格式

3.4.5 RV32I 算術與邏輯指令

3.4.6 控制轉移指令

3.4.7 內存載入與存儲指令

3.4.8 RV32I 內存同步指令

3.4.9 控制與狀態寄存器指令

3.4.10 環境調用與軟件斷點

3.4.11 基礎指令集的面積優化方案

3.5 RISC-V 擴展指令集

3.5.1 乘除法擴展(M?Extension)

3.5.2 壓縮指令集擴展

3.6 RISC-V 特權架構

3.6.1 特權層級

3.6.2 控制狀態寄存器

3.6.3 定時器

3.6.4 中斷與異常

3.6.5 程序的調試

 

第4 章設計基於RISC-V 指令集的Soft—CPU

4.1 2018?RISC-V?Soft?CPU?Contest 獲獎作品:PulseRain?Reindeer

4.2 適合於FPGA 的設計目標

4.3 PulseRain?Reindeer 的設計策略

4.4 PulseRain?Reindeer 的RTL 設計

4.4.1 與FPGA 平台相關部分

4.4.2 獨立於FPGA 平台部分

4.4.3 通用寄存器的設計

4.4.4 CSR 寄存器的實現

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.1 UART

5.2 I 2 C 和SMBus

5.3 SPI

5.4 PWM

5.5 microSD 存儲卡

5.6 PS/2 接口

5.7 旋轉編碼器

5.8 7段數碼管顯示器

5.9 USB

5.10 以太網

 

第6 章嵌入式軟件開發基礎

6.1 目標文件格式

6.2 Link?Script(編譯用鏈接腳本)

6.3 工具鏈

6.3.1 readelf

6.3.2 objdump

6.3.3 objcopy

6.4 嵌入式系統中高級編程語言的選擇

6.5 C 語言在嵌入式系統中的應用

6.5.1 C 語言的模塊封裝

6.5.2 C 語言的內存對齊訪問

6.5.3 C 語言的靜態編譯檢查

6.5.4 volatile 與const

6.6 C++ 語言在嵌入式系統中的應用

6.6.1 C++ 語言的口水仗

6.6.2 C++ 語言對C 的改進

6.6.3 C++ 語言引入的新概念和新方法

6.7 MAKE

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.2 Zephyr 操作系統的RISC-V 移植

7.2.1 Zephyr 操作系統簡介

7.2.2 串行口的支持

7.2.3 定時器的支持

7.2.4 中斷的設置

7.2.5 修改編譯鏈接選項

7.2.6 樣本應用程序

 

第8 章Arduino開發系統

8.1 Arduino 的歷史

8.2 Arduino 的技術貢獻

8.3 Arduino 開發板

8.4 Arduino IDE 集成開發環境和Arduino Language

8.4.1 Arduino IDE 集成開發環境的工作原理

8.4.2 Arduino Language

8.5 Arduino IDE 集成開發環境下第三方開發包的使用和製作

8.5.1 Arduino IDE 第三方開發包的使用

8.5.2 Arduino IDE 第三方開發包的製作

8.6 Arduino IDE 集成開發環境下第三方支持庫的使用和製作

8.6.1 Arduino IDE 第三方支持庫的使用

8.6.2 Arduino IDE 第三方支持庫的製作

 

第9 章綜合實驗平台:小腳丫STEP FPGA開發板

9.1 STEP?CYC10?開發板簡介

9.2 RISC-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.8 GPIO

9.9 5 向按鍵

9.10 7 段管顯示器

9.11 三軸加速度傳感器(ADXL345)

9.12 開發板示範Sketch

 

第10 章知識產權保護

10.1 知識產權保護的方式

10.2 計算機指令集的知識產權保護

10.3 逆向工程

10.4 協議授權

10.4.1 GPL

10.4.2 LGPL

10.4.3 Apache

10.4.4 知識共享

10.4.5 雙授權協議