構建高性能嵌入式系統 ( 簡體 字) |
作者:[美]吉姆·萊丁 著 陳會翔 譯 | 類別:1. -> 電腦組織與體系結構 -> 嵌入式系統 |
譯者: |
出版社:清華大學出版社 | 3dWoo書號: 56150 詢問書籍請說出此書號!【有庫存】 NT售價: 545 元 |
出版日:9/1/2022 |
頁數:290 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787302617099 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:用于家庭、汽車和個人的現代數字設備包含越來越復雜的計算能力。這些嵌入式系統以每秒數千兆位的速率生成、接收和處理數字數據流。本書將教你如何使用現場可編程門陣列(Field Programmable Gate Array,FPGA)和高速數字電路設計技術來設計創建你自己的尖端數字設備。 本書讀者 本書適用于軟件開發人員、硬件工程師、物聯網(IoT)開發人員以及其他任何尋求了解開發高性能嵌入式系統過程的人員。潛在受眾包括有興趣了解FPGA開發基礎知識以及 C和C++固件開發所有方面的任何人。讀者應當對C/C++語言、數字電路和焊接電子元件等有基本了解。 內容介紹 本書分為3篇,共10章,具體介紹如下。 第1篇:高性能嵌入式系統的基礎知識,包括第1∼3章。 第1章“高性能嵌入式系統”,詳細闡釋了嵌入式系統架構的元素,并討論了在各種嵌入式應用中通用的一些關鍵系統特性。嵌入式系統通常包括至少一個微控制器或微處理器、傳感器、執行器、電源,在許多情況下,還會有一個或多個網絡接口。本章還深入探討了嵌入式系統和物聯網之間的關系。 第2章“感知世界”,詳細介紹了在各種嵌入式應用中使用的傳感器的原理和實現。無源傳感器可測量周圍環境的屬性,如溫度、壓力、濕度、光強度和大氣成分等。有源傳感器則可以使用雷達和激光雷達等能量發射技術來探測物體并測量其位置和速度。此外,本章還介紹了與傳感器通信的接口。 第3章“實時操作”,探討了嵌入式系統對從傳感器和其他來源測量的輸入生成實時響應的需求,介紹了實時操作系統(RTOS)的概念及其關鍵特性,以及在實時應用程序中實現多任務處理時常見的一些挑戰。此外,本章還介紹了一些流行的開源和商業RTOS實現的重要特征。 第2篇:設計和構建高性能嵌入式系統,包括第4∼7章。 第4章“開發你的第一個FPGA項目”,首先討論了實時嵌入式系統中 FPGA 設備的有效使用,然后闡釋了標準FPGA中包含的功能元素。本章介紹了一系列FPGA設計語言,包括硬件描述語言(hardware description language,HDL)、原理圖方法和流行的軟件編程語言(包括C和C++)。本章介紹了FPGA開發過程,并提供了一個FPGA開發周期的完整示例。 第5章“使用FPGA實現系統”,深入探討了使用FPGA設計和實現嵌入式設備的過程。本章首先介紹了FPGA編譯軟件工具和編譯過程,使用工具可將編程語言中的邏輯設計描述轉換為可執行的FPGA配置。本章還討論了最適合FPGA實現的算法類型,最后還開發了一個基于FPGA的高速數字示波器基礎項目。 第6章“使用KiCad設計電路”,介紹了優秀的開源KiCad電子設計和自動化套件。在KiCad中工作可以使用原理圖設計電路并開發相應的印刷電路板布局。你將了解如何以非常合理的成本將電路板設計轉變為原型產品。 第7章“構建高性能數字電路”,詳細闡釋了使用表面貼裝和通孔電子元件組裝高性能數字電路原型所涉及的過程和技術。本章介紹的電路板組裝工具包括焊臺、放大鏡或顯微鏡以及用于處理微小零件的鑷子等。此外,本章還介紹了回流焊接工藝,并描述了一些用于實現小規模回流能力的低成本選項。 第3篇:實現和測試實時固件,包括第8∼10章。 第8章“首次給電路板通電”,介紹了如何為電路板通電做準備。本章將引導你完成首次向電路板供電并檢查基本電路級功能的過程。發現任何問題時,可以按本章建議的方法調整電路。在測試通過之后,還可以添加FPGA邏輯,并測試示波器電路板的數字接口。 第9章“固件開發過程”,演示了如何在電路板正常運行后充實FPGA算法的其余關鍵部分,包括與模數轉換器(analog to digital converter,ADC)的通信,以及MicroBlaze處理器固件的開發。在開發固件時,重要的是盡可能對代碼進行靜態分析,這樣可以避免許多難以調試的錯誤。實現版本控制系統以跟蹤項目生命周期中代碼的演變也很重要。本章討論了開發一個全面的、至少部分自動化的測試套件對于在進行更改時保持代碼質量的重要性。此外,本章還著重介紹了編碼風格。 第10章“測試和調試嵌入式系統”,討論了嵌入式系統的全面測試問題。系統級測試必須針對整個系統預期范圍的環境條件和用戶輸入(包括無效輸入),以確保系統在所有條件下都能正常運行。此外,本章還討論了有效調試技術,總結了高性能嵌入式系統開發的最佳實踐。 充分利用本書 本書充分利用了強大的免費商業和開源軟件工具套件來開發FPGA算法和設計復雜的印刷電路板。要跟隨本書示例項目學習,你需要一個特定的FPGA開發板Digilent Arty A7-100。要構建數字電路以實現你的設計,你還需要一套用于焊接和拆焊表面貼裝元件的工具。此外,你可能還需要一些工具來協助處理精細元件,如精密鑷子、放大鏡或顯微鏡等。 本書軟硬件和操作系統需求如表P.1所示。 表P.1 軟硬件和操作系統需求表 本書涵蓋的軟硬件 操作系統需求 Xilinx Vivado Windows和Linux KiCad Windows、macOS和Linux Arty A7-100開發板 Windows和Linux 建議你通過本書配套的Github存儲庫下載代碼,這樣做將幫助你避免任何與代碼的復制和粘貼有關的潛在錯誤。 |
內容簡介:《構建高性能嵌入式系統》本書詳細闡述了與構建高性能嵌入式系統相關的基本解決方案,主要包括構建高性能嵌入式系統、傳感器、實時操作、FPGA項目、KiCad設計電路、構建高性能數字電路、固件開發、測試和調試嵌入式系統等內容。此外,本書還提供了相應的示例、代碼,以幫助讀者進一步理解相關方案的實現過程。 |
目錄:第1篇高性能嵌入式系統的基礎知識 第1章高性能嵌入式系統 3 1.1技術要求 3 1.2嵌入式系統的元素 3 1.2.1電源 5 1.2.2時基 5 1.2.3數字處理 6 1.2.4內存 6 1.2.5軟件和固件 6 1.2.6專用集成電路 7 1.2.7來自環境的輸入 7 1.2.8輸出到環境 8 1.2.9網絡通信 8 1.3嵌入式系統架構設計 8 1.4物聯網 9 1.5實時運行 10 1.5.1周期性操作 10 1.5.2事件驅動操作 12 1.5.3實時操作系統 13 1.6嵌入式系統中的FPGA 14 1.6.1數字邏輯門 15 1.6.2觸發器 17 1.7FPGA的元素 18 1.7.1查找表 18 1.7.2觸發器 19 1.7.3塊RAM 19 1.7.4DSP切片 19 1.7.5其他功能元件 20 1.8FPGA綜合 20 1.8.1硬件設計語言 20 1.8.2在嵌入式系統設計中使用FPGA的好處 22 1.8.3賽靈思FPGA和開發工具 23 1.9小結 24 第2章感知世界 25 2.1技術要求 25 2.2無源、有源和智能傳感器介紹 25 2.3應用模數轉換器 27 2.4嵌入式系統中使用的傳感器類型 30 2.4.1光 30 2.4.2溫度 31 2.4.3壓力 31 2.4.4濕度 32 2.4.5流體流量 32 2.4.6力 32 2.4.7超聲波 33 2.4.8音頻 33 2.4.9磁 33 2.4.10化學 34 2.4.11電離輻射 34 2.4.12雷達 35 2.4.13激光雷達 35 2.4.14視頻和紅外線 35 2.4.15慣性 36 2.4.16全球定位系統 36 2.5與傳感器通信 37 2.5.1通用輸入/輸出接口 37 2.5.2模擬電壓 41 2.5.3I2C 42 2.5.4SPI 44 2.5.5CAN總線 45 2.5.6無線 46 2.6處理傳感器數據 47 2.7小結 48 第3章實時操作 49 3.1技術要求 49 3.2實時的概念 49 3.3實時嵌入式系統的屬性 50 3.3.1執行多項任務 51 3.3.2速率單調調度 58 3.4了解關鍵的RTOS功能和挑戰 60 3.4.1互斥鎖 60 3.4.2信號量 61 3.4.3隊列 62 3.4.4事件標志 62 3.4.5定時器 63 3.4.6動態內存分配 63 3.4.7內存泄漏 64 3.4.8堆碎片 64 3.4.9死鎖 65 3.4.10優先級反轉 66 3.5流行的實時操作系統 70 3.5.1實時操作系統的關鍵技術屬性 70 3.5.2實時操作系統的非技術屬性 71 3.5.3embOS 72 3.5.4FreeRTOS 72 3.5.5INTEGRITY 73 3.5.6Neutrino 73 3.5.7μc/OS-III 74 3.5.8VxWorks 74 3.6小結 75 第2篇設計和構建高性能嵌入式系統 第4章開發你的第一個FPGA項目 79 4.1技術要求 79 4.2在實時嵌入式系統設計中使用FPGA 79 4.2.1塊RAM和分布式RAM 80 4.2.2FPGAI/O引腳和相關功能 82 4.2.3專用硬件資源 83 4.2.4處理器核心 84 4.3FPGA實現語言 84 4.3.1VHDL 84 4.3.2Verilog 86 4.3.3原理圖 86 4.3.4C/C++ 88 4.4FPGA開發過程 88 4.4.1定義系統需求 88 4.4.2將功能分配給FPGA 89 4.4.3確定所需的FPGA功能 89 4.4.4實現FPGA設計 90 4.4.5設計入口 90 4.4.6輸入/輸出規劃 91 4.4.7綜合 91 4.4.8布局和布線 91 4.4.9比特流生成 92 4.4.10測試實現 92 4.5開發第一個FPGA項目 93 4.5.1項目描述 93 4.5.2安裝Vivado工具 93 4.5.3創建項目 96 4.5.4創建VHDL源文件 99 4.5.5測試邏輯行為 105 4.5.6定義I/O信號 112 4.5.7創建頂級VHDL文件 113 4.5.8綜合和實現FPGA比特流 115 4.5.9將比特流下載到板上 117 4.5.10將比特流編程到板載閃存 118 4.6小結 122 第5章使用FPGA實現系統 123 5.1技術要求 123 5.2FPGA編譯過程 123 5.2.1設計輸入 124 5.2.2邏輯綜合 128 5.2.3設計優化 129 5.2.4高級綜合 132 5.2.5優化和約束 138 5.3最適合FPGA實現的算法類型 140 5.3.1處理高速數據流的算法 140 5.3.2并行算法 140 5.3.3使用非標準數據大小的算法 141 5.4示波器FPGA項目 141 5.4.1項目描述 142 5.4.2基準Vivado項目 142 5.4.3原理圖設計 143 5.4.4定義時鐘 147 5.4.5生成比特流 148 5.4.6創建并運行TCP回顯服務器 148 5.4.7調試程序 151 5.5小結 154 第6章使用KiCad設計電路 155 6.1技術要求 155 6.2關于KiCad 155 6.3KiCad設計基礎 157 6.3.1放置和連接電路元件 158 6.3.2添加穩壓器 162 6.3.3KiCad原理圖編輯器應用技巧 163 6.3.4創建元件符號 164 6.4開發項目原理圖 169 6.4.1添加文本注釋 170 6.4.2添加信號標簽 171 6.4.3添加全局標簽 171 6.4.4創建差分信號對 171 6.4.5創建板外連接 172 6.4.6符號注釋和電氣規則檢查 172 6.5印刷電路板布局 173 6.5.1為電路元件分配封裝 173 6.5.2構建PCB布局 174 6.5.3布局規則 176 6.5.4元件布局示例 177 6.5.5定義板層集 178 6.5.6創建填充區域 179 6.5.7繪制電路走線 179 6.5.8查看電路板的3D圖像 180 6.6電路板原型制作 182 6.7小結 183 第7章構建高性能數字電路 185 7.1技術要求 185 7.2電路板組裝工具和過程 185 7.2.1光學放大鏡 186 7.2.2鑷子 187 7.2.3助焊劑 187 7.2.4焊料 188 7.2.5靜電放電保護 190 7.2.6手工焊接方式 190 7.2.7吸錫線 192 7.2.8焊膏應用 193 7.2.9回流焊接工藝 196 7.2.10焊接安全提示 198 7.3準備組裝和放置零部件 199 7.4回流焊接和手工焊接 201 7.4.1回流焊接 201 7.4.2手工焊接 202 7.4.3回流焊接后的修復 202 7.4.4安裝通孔元件 203 7.5組裝之后的電路板的清潔和檢查 204 7.5.1助焊劑殘留物需要清洗的原因 204 7.5.2助焊劑殘留物去除 204 7.5.3組裝后的目視檢查 205 7.5.4電氣短路檢查 206 7.6小結 207 第3篇實現和測試實時固件 第8章首次給電路板通電 211 8.1技術要求 211 8.2為電路板通電做準備 211 8.2.1謹慎操作 212 8.2.2為電路板供電 212 8.3檢查電路的基本功能 213 8.3.1測試電路板電源 214 8.3.2故障排除 216 8.3.3測試模擬放大器 216 8.3.4測試ADC 219 8.3.5配置ADC 221 8.4出現問題時調整電路 226 8.4.1切割PCB走線 227 8.4.2安裝焊料跳線 227 8.4.3移除元件 228 8.4.4添加元件 229 8.5添加FPGA邏輯并檢查I/O信號 229 8.5.1生成ADC編碼器時鐘和1kHz校準信號 229 8.5.2檢查I/O信號 232 8.6小結 234 第9章固件開發過程 235 9.1技術要求 235 9.2FPGA算法的設計與實現 235 9.2.1數字示波器系統概述 236 9.2.2添加解串器 238 9.2.3添加FIFO緩沖區 242 9.2.4添加AXI總線接口 245 9.3添加MQTT協議 247 9.3.1關于MQTT協議 247 9.3.2在添加MQTT協議時要解決的問題 248 9.3.3調用MQTTAPI 249 9.4編碼風格 252 9.4.1命名規則 252 9.4.2代碼中的注釋 253 9.4.3避免文字數值 253 9.4.4花括號、縮進和垂直間距 253 9.4.5優先考慮可讀性和正確性 254 9.4.6避免過早優化 255 9.4.7避免由實現定義的行為 255 9.4.8避免無條件跳轉 256 9.4.9最小化標識符的作用域 256 9.4.10將不變的事物指定為常量 257 9.4.11自動代碼格式化程序 257 9.5靜態源代碼分析 257 9.5.1關于靜態代碼分析 258 9.5.2靜態代碼分析工具 258 9.5.3高效使用靜態代碼分析 259 9.5.4使用現有代碼 259 9.5.5從僅顯示最嚴重的錯誤消息開始 261 9.5.6解析分析器輸出消息 262 9.5.7常見的源代碼分析器消息 262 9.6源代碼版本控制 263 9.7測試驅動開發 264 9.8小結 265 第10章測試和調試嵌入式系統 267 10.1技術要求 267 10.2設計系統級測試 267 10.2.1需求驅動的測試 268 10.2.2在標稱和非標稱條件下進行測試 270 10.2.3單元測試與功能測試 271 10.2.4負面測試和滲透測試 273 10.2.5在模擬環境中測試 273 10.2.6獲得可重復的測試結果 274 10.2.7制訂測試計劃 274 10.3進行測試并記錄結果 275 10.3.1確定要收集的數據 275 10.3.2配置被測系統 276 10.3.3執行測試程序 277 10.3.4測試結果的快速評估 277 10.3.5必要時重復測試 277 10.4對現有代碼進行回歸測試 278 10.5確保全面的測試覆蓋率 279 10.5.1需求可追溯性矩陣 279 10.5.2跟蹤代碼覆蓋率 282 10.5.3建立充分測試的標準 283 10.6有效調試技術 284 10.6.1處理語法和編譯錯誤 284 10.6.2使用靜態代碼分析和單元測試 285 10.6.3清楚地定義問題并嘗試重現它 286 10.6.4判斷輸入是否正確 286 10.6.5尋找獲得系統可見性的方法 287 10.6.6使用二分搜索調試過程 288 10.6.7暫時刪除部分功能 289 10.6.8制作演示問題的最小程序 289 10.7高性能嵌入式系統開發的最佳實踐總結 290 10.7.1測試設計 290 10.7.2留出成長空間 290 10.7.3設計硬件時考慮未來功能 291 10.7.4僅開發你現在需要的代碼 292 10.7.5保持嚴格的版本控制 292 10.7.6在開發代碼的同時開發單元測試 293 10.7.7及時開始系統級測試 293 10.8小結 294 |
序: |