基于FPGA與RISC-V的嵌入式系統設計 ( 簡體 字) |
作者:顧長怡 | 類別:1. -> 電子工程 -> FPGA 2. -> 電腦組織與體系結構 -> 單晶片 -> RISC-V |
譯者: |
出版社:清華大學出版社 | 3dWoo書號: 52322 詢問書籍請說出此書號!【有庫存】 NT售價: 590 元 |
出版日:2/1/2020 |
頁數:312 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787302545385 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:自1948年第一個三極管在美國貝爾實驗室問世至今,電子工程領域發生了翻天覆地 的變化。與之相應的是計算機和軟件產業的蓬勃興起,以及嵌入式系統的大規模普及。
傳統的嵌入式系統開發多圍繞通用處理器展開。但是近年來,FPGA技術的普及和 軟核處理器的出現改變了這一局面。特別是RISC-V開源指令集的逐漸普及,更進一步模 糊了軟硬件的邊界,并對定制化設計提出了更多、更高的要求。
這種新的技術趨勢要求工程師能成為通曉軟硬件技術的多面手。但是,目前的工程 師教育培訓體系依然還停留在過去那種“一個蘿卜一個坑”的狀態,無論廣度還是深度, 都無法跟上行業的發展。而討論最新技術的相關書籍更是屈指可數。
這次我很高興看到顧長怡先生愿意將他多年在海外學習與工作所獲得的知識和經驗 與國內的同行們分享。顧長怡先生是FPGA和嵌入式系統開發技術的專家,他主持設計 的RISC-V處理器,獲得了行業設計競賽的認可。我個人和他也曾有過合作,他在技術方 面的淵博知識和勤懇負責的工作態度,給我留下了深刻的印象。有一次在美國和他會面的 時候,向他提及了RISC-V技術相關的話題,最終引發了他的“奮筆疾書”和今天本書的面 世。相信這本書一定會給國內同行了解FPGA與RISC-V在嵌入式設計中的應用打開一個 新的窗口。
蘇公雨
與非網創始人,硬禾理工學院院長 |
內容簡介:本書詳細介紹了RISC-V指令集及其設計思想,并在此基礎上引入了一種稱為FARM的軟硬件 開發模式,將FPGA同RISC-V CPU軟核相結合,并利用Arduino與Make作為軟件快速開發工具, 有效地提高了開發效率,使系統設計具有更好的通用性和可移植性。
除了上述有關軟硬件的討論之外,本書的作者還與國內小腳丫FPGA的團隊進行了合作,成 功地將書中的大部分內容移植到了小腳丫FPGA旗下的STEP CYC10開發板上,并將相關的技術細 節在書中做了詳細陳述,以方便讀者的動手實踐。
本書內容既有深度,又有廣度,對各類從事軟硬件開發的科技人員會有很大的參考價值。對 高校相關專業的學生,本書也是一部很好的參考書。 |
目錄:第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?I2C和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章 綜合實驗平臺:小腳丫STEPFPGA開發板 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?雙授權協議?
|
序: |