構建高性能嵌入式系統 Architecting High-Performance Embedded Systems: Design and build high-performance real-time digital systems based on FPGAs and custom circuits
[美]吉姆·萊丁 著 陳會翔 譯
- 出版商: 清華大學
- 出版日期: 2022-09-01
- 定價: $654
- 售價: 8.5 折 $556
- 語言: 簡體中文
- ISBN: 7302617090
- ISBN-13: 9787302617099
-
相關分類:
嵌入式系統
- 此書翻譯自: Architecting High-Performance Embedded Systems: Design and build high-performance real-time digital systems based on FPGAs and custom circuits (Paperback)
立即出貨 (庫存 < 4)
買這商品的人也買了...
-
$407Visual C++ 從入門到精通, 4/e
-
$650$507 -
$590$502 -
$540$459 -
$690$587 -
$229Python 數字信號處理應用 (Think DSP: Digital Signal Processing in Python)
-
$280$252 -
$458Visual C++ 從入門到精通 (項目案例版)
-
$780$616 -
$650$514 -
$680$537 -
$354$336 -
$450$338 -
$714$678 -
$780$616 -
$449無人機遙感與智慧農業信息提取
-
$1,200$1,176 -
$454手把手帶你玩轉 Altium Designer 23
-
$880$695 -
$474$450 -
$539$512 -
$1,200$948 -
$800$600 -
$580$435 -
$880$695
相關主題
商品描述
《構建高性能嵌入式系統》本書詳細闡述了與構建高性能嵌入式系統相關的基本解決方案,主要包括構建高性能嵌入式系統、傳感器、實時操作、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.7 FPGA的元素 18
1.7.1 查找表 18
1.7.2 觸發器 19
1.7.3 塊RAM 19
1.7.4 DSP切片 19
1.7.5 其他功能元件 20
1.8 FPGA綜合 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.3 I2C 42
2.5.4 SPI 44
2.5.5 CAN總線 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.3 embOS 72
3.5.4 FreeRTOS 72
3.5.5 INTEGRITY 73
3.5.6 Neutrino 73
3.5.7 µc/OS-III 74
3.5.8 VxWorks 74
3.6 小結 75
第2篇 設計和構建高性能嵌入式系統
第4章 開發你的第一個FPGA項目 79
4.1 技術要求 79
4.2 在實時嵌入式系統設計中使用FPGA 79
4.2.1 塊RAM和分佈式RAM 80
4.2.2 FPGA I/O引腳和相關功能 82
4.2.3 專用硬件資源 83
4.2.4 處理器核心 84
4.3 FPGA實現語言 84
4.3.1 VHDL 84
4.3.2 Verilog 86
4.3.3 原理圖 86
4.3.4 C/C++ 88
4.4 FPGA開發過程 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.2 FPGA編譯過程 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.3 KiCad設計基礎 157
6.3.1 放置和連接電路元件 158
6.3.2 添加穩壓器 162
6.3.3 KiCad原理圖編輯器應用技巧 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.2 FPGA算法的設計與實現 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 調用MQTT API 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