● 深入剖析軟核、參數化核心和硬核系統的設計優(yōu)劣,助力讀者根據項目需求做出最佳選擇。
● 逐步演示經典8位KCPSM6 微處理器的設計流程。
● 探討32位ARM Cortex-A9架構精髓,并演示基本處理器的綜合實現方法。
● 涵蓋Altera/Intel Nios II與Xilinx MicroBlaze兩大主流FPGA平臺的設計流程,拓寬讀者技術視野。
● 描述編譯器-編譯器開發(fā)工具鏈的構建方法,滿足高級開發(fā)需求。
● 每章均配備大量習題、FPGA練習和設計項目,強化理論與實踐相結合。
《FPGA嵌入式微處理器系統設計》是嵌入式系統課程的理想教材,通過豐富的動手實踐項目,使讀者在實踐中掌握核心技術。書中使用Altera/Intel和Xilinx兩大廠商的最新開發(fā)板、工具和微處理器,為基于FPGA的微處理器系統設計提供了極佳的入門指南。本書深入討論、比較并探索了HDL設計(軟核)、參數化核心(如Nios II和MicroBlaze)以及ARM Cortex-A9設計,并通過動手設計項目進行實踐。書中還開發(fā)、實現并測試了HDMI編碼器、浮點運算和FFT位交換等自定義IP核,并對其速度提升進行了量化。本書配套資源豐富,提供所有設計示例的下載文件,涵蓋針對Xilinx和Altera工具的基本處理器可綜合代碼(支持PicoBlaze、MicroBlaze、Nios II及ARMv7架構的VHDL/Verilog實現),以及完整的自定義IP項目。每章均配有大量精編的簡答題、練習題和項目挑戰(zhàn),助力讀者鞏固知識、提升技能。
嵌入式微處理器系統無處不在,只要看看你的周圍就能明白這一點。你會在手機、數字時鐘、GPS、攝像機和互聯網路由器以及家用電子娛樂設備中找到它們。一輛現代汽車通常會使用50~100個微處理器。嵌入式系統通常會在價格、功耗、內存或存儲等資源上受限。一臺通用計算機通常要耗費數百瓦的功率,而一個時鐘或遙控器只需要耗費微瓦級功率,從而能夠靠一節(jié)AAA電池運行一年。盡管許多嵌入式系統運行時需要低功耗,但其所實施的算法,像UMTS手機中使用的turbo糾錯碼,對計算量的要求卻很高。不管怎樣,今天,嵌入式處理器能夠執(zhí)行復雜的任務并運行相關的復雜算法。一輛汽車中的微處理器估計會使用上億行代碼,其中僅GPS和無線電模塊就占了2000萬行。
FPGA是開始探索嵌入式系統設計空間的最佳選擇,因為它們屬于細粒度邏輯可編程的商業(yè)現貨(Commercial Off ?The Shelf,COTS)器件,其一次性工程(Non Recurring Engineering,NRE)成本比目前能買到的基于單元(cell)的系統低得多。最新一代的FPGA電路板和設備支持在同一塊板卡上使用軟核、參數化或硬核微處理器來設計微處理器系統。這些板卡為許多設計提供了很棒的起點,因為板卡上還有大量的外圍元件,如音頻編解碼器、視頻HDMI連接器或SD卡。如果你使用的是非FPGA的標準商業(yè)現貨微處理器系統,要把這些組件納入項目中就會非常耗時。
在21世紀進入第二個十年之際,我們發(fā)現,可編程邏輯器件(Programable Logic Device,PLD)市場的兩個領導者(Altera/Intel和Xilinx)的收入都超過了20億美元。在過去的十年中,FPGA獲得了超過20%的穩(wěn)定增長,比ASIC和PDSP高出10%。這是因為FPGA與ASIC有許多共同的特點,如減少了尺寸、重量和功耗;更高的吞吐量;增強了防止未經授權復制的安全性;更低的器件和庫存成本,更少的電路板測試成本;在有些方面,FPGA更勝過了ASIC,如減少了開發(fā)時間(快速原型)、具有在線(重新)編程能力和更低的一次性工程成本,從而讓少于1000個成品的解決方案的設計更加經濟。硬件設計領域的另一個趨勢是從圖形設計輸入(entry)向硬件描述語言(Hardware Description Language,HDL)進行遷移。人們發(fā)現,基于HDL的設計輸入中的代碼重用率要比基于圖形的高得多。對HDL設計工程師的需求量很大,我們已經見到本科生課程在用HDL教授邏輯設計。如今,有兩種流行的HDL語言。美國西海岸和亞洲更喜歡使用Verilog,而美國東海岸和歐洲更經常使用VHDL。盡管由于VHDL-2008支持定點和浮點數據類型,一些使用VHDL進行設計的例子更容易閱讀一些,但對于使用FPGA進行的嵌入式微處理器設計,這兩種語言似乎都很適合。其他限制因素可能包括個人偏好、EDA庫和工具的可用性、可讀性、能力和使用編程語言接口(Programming Language Interface,PLI)的語言擴展以及商業(yè)、業(yè)務和營銷問題等,而以上因素也僅是略舉幾例。如今,工具供應商已經認識到這兩種語言都必須得到支持,而本書也涵蓋了這兩種設計語言的例子。我們現在很幸運,基準FPGA工具可以從不同的來源獲得,并且對于教學用途來說基本上沒有成本。我們在本書中利用了這個條件。書中包含了Altera/Intel Quartus 15.1 Lite Edition以及Xilinx Vivado 2016.4工具可用的代碼,后者提供了一套完整的設計工具,涵蓋從能感知內容的編輯器、微處理器配置器、編譯器、模擬器到比特流生成器。本書展示的所有例子都用VHDL和Verilog編寫,也容易移植到其他專有的設計輸入系統中。
本書的結構安排如下。第1章首先簡要介紹了當今主流的微處理器和基本的微處理器原理,特別是基于FPGA的微處理器。它還包括一個關于用IP塊進行設計的概述和一個PLL IP核設計實例。第2章討論了用于設計當前最先進的FPGA系統的器件、板卡和工具。還討論了終極RISC(URISC)微處理器的詳細案例,包括模型討論、編譯步驟、仿真、性能評估、功率估計以及使用Quartus和Vivado進行的布局規(guī)劃。這個案例研究是后續(xù)章節(jié)中許多其他設計實例的基礎。第3章和第4章涉及微處理器設計中使用的VHDL和Verilog語言元素。第5章回顧了ANSI C語言,還討論了調試方法以及與C 的區(qū)別。第6章介紹了微處理器的軟件工具開發(fā),詳述了使用GNU Flex的詞法分析和使用GNU Bison的解析器實現。我們?yōu)镻ICOBLAZE微處理器設計了一個匯編器,為三地址機器設計了一個基本的和全功能的C語言編譯器,還討論了指令集模擬器和軟件調試器。在第7章中,逐步開發(fā)了軟核PICOBLAZE,使其增加越來越多的架構特性。我們研究了循環(huán)控制和數據存儲器的設計并用HDL來實現。第8章全面討論了最流行的基于FPGA的8位微處理器對應的完整指令集。第9章和第10章討論了Altera/Intel和Xilinx設備具有的兩個最流行的參數化內核,分別稱為Nios II和MICROBLAZE。我們開發(fā)了一種自頂向下和自底向上的系統設計方法。我們通過為Nios添加浮點數協處理器和為MICROBLAZE 添加HDMI解碼器來演示如何將定制IP添加到微處理器中。我們也構建了Tiny RISC版本的處理器,名為TRISC3N和TRISC3MB,它們支持精簡指令集并且可以運行通過供應商GCC工具生成的基本程序。第11章討論了最流行的32位商業(yè)現貨硬IP處理器核ARM Cortex-A9,它已經包含在Altera/Intel和Xilinx的最新設備中。我們再次展示了自頂向下和自底向上的設計,同時會開發(fā)一個Tiny RISC 版本的 TRSC3A,從而展示ARM Cortex-A9為什么在架構上更有優(yōu)勢。我們定制了一個IP以加速FFT地址計算,并測量其速度提升水平。本書的附錄A采用在線方式提供,其中包含了可以在Quartus和Vivado中使用的全部5個(小)處理器模型(URISC、TRISC2、TRISC3N、TRISC3MB及TRISC3A)對應的Verilog源代碼和xsim仿真。附錄B也采用在線方式提供,其中的縮寫詞列表可供讀者快速參考。還有一些額外的文件、HDL語言參考卡片以及實用工具將在GitHub[ 譯者注:https://github.com/uwemeyerbaese。]和作者的個人網站[ 譯者注:https://web1.eng.famu.fsu.edu/~umb/。]上發(fā)布,讀者也可通過掃描本書封底的二維碼下載。
在此要說明的是,本書采用黑白印刷,書中的彩圖以在線方式提供,讀者可通過掃描本書封底的二維碼下載。
第1章 嵌入式微處理器系統基礎 1
1.1 引言 1
1.2 FPGA上的嵌入式微處理器 6
1.3 微處理器指令集設計 7
1.4 FPGA技術 20
1.5 使用知識產權核的設計 27
1.6 復習題和練習 33
第2章 FPGA器件、板卡和設計工具 37
2.1 引言 37
2.2 原型板卡的選擇 40
2.2.1 存儲器 42
2.2.2 基本I/O組件 42
2.2.3 顯示選項 43
2.2.4 模擬接口 45
2.2.5 通信 48
2.3 FPGA結構 52
2.3.1 Xilinx FPGA架構概述 52
2.3.2 Altera FPGA架構概述 55
2.4 案例研究:名為URISC的PSM 60
2.4.1 URISC處理器模型 60
2.4.2 Altera Quartus設計編譯 65
2.4.3 Xilinx Vivado設計編譯 67
2.4.4 用于仿真的設計工具考慮 68
2.4.5 Qivado布圖規(guī)劃 74
2.4.6 Vivado布圖規(guī)劃 75
2.4.7 時序估計和性能分析 76
2.5 復習題和練習 78
第3章 用VHDL設計微處理器組件 81
3.1 引言 81
3.2 詞法元素 82
3.3 運算符與賦值 86
3.4 數據類型、數據對象和屬性 87
3.4.1 VHDL數據類型 87
3.4.2 轉換函數 89
3.4.3 屬性 89
3.4.4 數據對象 90
3.5 VHDL語句和設計編碼建議 90
3.5.1 組合邏輯編碼建議 92
3.5.2 基本時序電路編碼:觸發(fā)器和鎖存器 94
3.5.3 存儲器 95
3.5.4 有限狀態(tài)機 95
3.5.5 設計層次結構和組件 97
3.5.6 VHDL編碼風格、資源和常見錯誤 97
3.6 延伸閱讀 98
3.7 復習題和練習 99
第4章 用Verilog設計微處理器組件 111
4.1 引言 111
4.2 詞法元素 112
4.3 運算符與賦值 115
4.4 數據類型和值集 117
4.4.1 Verilog值集 117
4.4.2 Verilog數據類型 117
4.5 Verilog語句和設計編碼建議 119
4.5.1 組合邏輯編碼建議 121
4.5.2 基本順序電路編碼:觸發(fā)器和鎖存器 123
4.5.3 存儲器 123
4.5.4 有限狀態(tài)機 125
4.5.5 設計層次和組件 126
4.5.6 Verilog編碼風格、資源和常見錯誤 126
4.6 延伸閱讀 128
4.7 復習題和練習 129
第5章 用C/C 進行微處理器編程 139
5.1 引言 139
5.2 詞法元素 140
5.3 數據類型、數據屬性和儲存類 145
5.4 C運算符和賦值 147
5.5 控制流構件 150
5.6 代碼層級和I/O 152
5.7 額外的考慮和推薦 157
5.8 延伸閱讀 166
5.9 復習題和練習 167
第6章 嵌入式微處理器系統中的軟件工具 175
6.1 引言 175
6.2 匯編器開發(fā)和詞法分析 176
6.3 解析器開發(fā) 186
6.4 軟件調試器和指令集仿真器 197
6.5 復習題和練習 198
第7章 PicoBlaze軟核微處理器的設計 203
7.1 引言 203
7.2 KCPSM6指令集概況 206
7.3 初始PicoBlaze可綜合架構 209
7.4 帶有便簽存儲器的PicoBlaze可綜合設計 214
7.5 帶有鏈接控制的PicoBlaze 可綜合架構 216
7.6 復習題和練習 225
第8章 PicoBlaze軟核微處理器中的軟件工具 229
8.1 引言 229
8.2 KCPSM6匯編器 230
8.3 PicoBlaze指令集仿真器 235
8.4 支持PicoBlaze的C編譯器 236
8.5 復習題和練習 244
第9章 Altera Nios嵌入式微處理器 247
9.1 引言 247
9.2 自頂向下的Nios II系統設計 250
9.3 自底向上的Nios II系統設計 254
9.4 定制指令的Nios II系統設計 262
9.5 深入了解:Nios II指令集架構 282
9.6 復習題和練習 299
第10章 Xilinx MicroBlaze嵌入式微處理器 307
10.1 引言 307
10.2 自頂向下的MicroBlaze系統設計 308
10.3 自底向上的MicroBlaze系統設計 310
10.4 定制指令的MicroBlaze系統設計 316
10.4.1 DVI和HDMI顯示選項實現 316
10.4.2 TMDS編碼和解碼 317
10.4.3 HDMI編碼器 322
10.4.4 文本終端和字體設計 323
10.4.5 HDL實現的HDMI編碼器 327
10.4.6 HDMI編碼器的CIP接口 333
10.4.7 HDMI編碼器的綜合結果 338
10.5 深入了解:MicroBlaze指令集架構 338
10.5.1 HDL實現和測試 350
10.5.2 綜合結果和ISA經驗教訓 359
10.6 復習題和練習 360
第11章 ARM Cortex-A9嵌入式微處理器 369
11.1 引言 369
11.2 自頂向下的ARM系統設計 371
11.3 自底向上的ARM系統設計 376
11.4 定制指令的ARM系統設計 381
11.5 深入了解:ARMv7指令集架構 387
11.6 復習題和練習 410
以下內容在線提供
附錄A Verilog源代碼和Xilinx Vivado仿真
附錄B 縮寫詞列表
參考文獻