FPGA 的人工智能之路:基於 Intel FPGA 開發的入門到實踐

張瑞

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

商品描述

本書主要從技術基礎、開發方法和人工智能應用三個方面介紹FPGA的開發方法,圍繞FPGA的基礎知識,Verilog硬件描述語言,FPGA在Quartus中的開發流程,FPGA的SOPC、HLS、OpenCL設計方法,FPGA在人工智能領域的應用等方面進行闡述,使開發人員能理解FPGA的核心知識,掌握FPGA的開發方法和開發工具。本書包含FPGA技術基礎篇、FPGA開發方法篇和人工智能應用篇三大板塊,共計11章,以FPGA基礎知識為切入點,通過對開發方法和設計思路的講解,幫助讀者快速掌握FPGA開發技術及FPGA在人工智能上的應用。本書可作為FPGA和其他開發人員進行FPGA設計和應用的參考用書。

作者簡介

張瑞先生現任英特爾FPGA中國創新中心總經理,總體負責英特爾中國區芯片對外合作戰略以及自動駕駛和FPGA等領域的生態建設。
同時兼任(中國)汽車電子產業聯盟副理事長和副秘書長的職務,致力於推動包括5G、機器視覺、傳感器融合和自主決策等多項關鍵自動駕駛相關技術在中國的落地和合作。
張瑞先生擁有多年****半導體公司的從業經歷。
在加入英特爾之前,曾在瑞薩電子和飛思卡爾半導體(現恩智浦半導體)擔任多個關鍵技術和管理職務。

目錄大綱

第一部分FPGA技術基礎篇
第1章FPGA的特點及其歷史002
1.1無處不在的FPGA 002
1.2創造性地解釋FPGA 003
1.2.1珠串法004
1.2.2樂高積木法004
1.3 FPGA的可定制性005
1.4早期的邏輯功能實現006
1.4.1數字設計與TTL邏輯007
1.4.2從TTL到可編程邏輯008
1.5可簡單編程邏輯器件(PAL) 009
1.5.1可編程陣列邏輯優勢009
1.5.2 PAL編程技術010
1.6可編程邏輯器件(PLD) 011
1.7複雜可編程邏輯器件(CPLD) 012
1.7 .1普通CPLD邏輯塊的特點012
1.7.2 CPLD的一般優勢013
1.7.3非易失FPGA 014
1.8現場可編程邏輯門陣列(FPGA) 015

第2章FPGA架構017
2. 1 FPGA全芯片架構017
2.2 FPGA邏輯陣列模塊018
2.2.1查找表(LUT) 019
2.2.2可編程寄存器019
2.2.3 LABs和LE:更進一步的觀察022
2. 2.4自適應邏輯模塊(ALM) 023
2.3 FPGA嵌入式存儲024
2.3.1存儲資源的利用024
2.3.2 M9K資源介紹025
2.4時鐘網絡027
2.4.1 FPGA時鐘架構027
2.4.2 PLL(鎖相環) 028
2.5 DSP模塊028
2.6 FPGA佈線029
2.7 FPGA編程資源030
2.8 FPGA I/O元件031
2.8.1典型的I/O元件邏輯031
2.8.2高速收發器032
2.9英特爾FPGA SoC 033

第3章Verilog HDL 035
3.1 Verilog HDL概述035
3.1.1 Verilog HDL的介紹035
3.1.2 Verilog HDL的發展歷史036
3.1.3 Verilog HDL的相關術語037
3.1.4 Verilog HDL的開發流程038
3.2 Verilog HDL基礎知識040
3.2.1程序結構040
3.2.2程序實例041
3.2.3數據類型041
3 .2.4模塊例化043
3.2.5運算符044
3.3 Verilog HDL的基本語法048
3.3.1 if-else語句048
3.3.2 case語句049
3.3.3 for循環050
3.3.4 Verilog HDL常用關鍵字彙總050
3.4 Verilog HDL高級知識點051
3.4 .1阻塞與非阻塞的區別051
3.4.2 assign語句和always語句的區別054
3.4.3鎖存器與寄存器的區別054
3.4.4狀態機055
3.5 Verilog HDL開發實例篇059
3.5.1漢明碼編碼器059
3.5.2數碼管譯碼器063
3.5.3雙向移位寄存器066
3.5.4冒泡排序069

第4章Quartus Prime基本開發流程081
4.1 Quartus Prime軟件介紹081
4.1.1英特爾FPGA軟件與硬件簡介081
4.1.2 Quartus Prime標準版設計軟件簡介083
4.1.3 Quartus Prime主窗口界面085
4.1.4 Quartus Prime默認操作環境085
4.1.5 Quartus Prime主工具欄086
4.1.6 Quartus Prime內置幫助系統087
4.1.7 Quartus Prime可分離的窗口088
4.1.8 Quartus Prime任務窗口088
4.1.9 Quartus Prime自定義任務流程090
4.2 Quartus Prime開發流程091
4.2.1典型的FPGA開發流程091
4.2.2創建Quartus Prime工程094
4.2.3設計輸入100
4.2.4編譯106
4.2.5分配管腳111
4.2.6仿真112
4.2.7器件配置113
4.3實驗指導116
4.3. 1流水燈實驗116
4.3.2按鍵實驗128
4.3.3 PLL實驗136

第二部分PGA開發方法篇
第5章FPGA設計工具145
5.1編譯報告145
5.1.1源文件讀取報告147
5.1.2資源使用報告147
5.1.3動態綜合報告149
5.2網表查看工具149
5.2.1 RTL Viewer 149
5.2.2 Technology Map Viewer 150
5.2.3 State Machine Viewer 152
5.3物理約束153
5.3.1物理約束設計153
5.3.2 Assignment Editor 154
5.3.3 QSF文件設置156
5.4時序分析工具158
5.4.1 TimeQuest Timing Analyzer的GUI圖形交互界面158
5.4.2任務窗格(Tasks) 159
5.4.3創建時序數據庫(Netlist Setup) 159
5.4.4常用的約束報告160
5.4.5報告窗格(Report Pane) 161
5.4.6時序異常(Exceptions) 162
5.4 .7關於SDC的最後說明164
5.5功耗分析工具164
5.5.1功耗和熱考慮因素164
5.5.2功耗分析工具比較165
5.5.3 EPE電子表格165
5. 5.4 Power Analyzer 166
5.6片上調試工具167
5.6.1 Quartus Prime軟件中的片上調試工具167
5.6.2 Signal Probe Pin(信號探針) 168
5.6.3 SignalTap Ⅱ嵌入式邏輯分析儀170

第6章基於英特爾FPGA的SOPC開發175
6.1 SOPC技術簡介175
6.2 IP核與Nios處理器176
6.2.1基於IP硬核的SOPC 176
6.2.2基於IP軟核的SOPC 177
6.3構建SOPC系統178
6.3.1 Platform Designer 178
6.3.2 SOPC設計工具180
6.4 SOPC開發實戰181
6.4.1 SOPC系統設計181
6.4.2 SOPC硬件設計182
6.4.3 SOPC軟件設計199

第7章基於英特爾FPGA的HLS開發203
7.1 HLS的基本概念203
7.2 HLS的基本開發流程204
7.2 .1 HLS的安裝204
7.2.2核心算法代碼205
7.2.3功能驗證205
7.2.4生成硬件代碼206
7.2.5模塊代碼優化208
7.2.6 HLS的Modelsim仿真211
7.2.7集成HLS代碼到FPGA系統211
7.2.8 HDL實例化212
7.2.9添加IP路徑到Qsys系統213
7.3 HLS的多種接口及其使用場景215
7.3 .1標準接口215
7.3.2隱式的Avalon MM Master接口217
7.3.3顯式的Avalon MM Master接口219
7.3.4 Avalon MM Slave接口220
7.3.5 Avalon Streaming接口224
7.4 HLS簡單的優化技巧226

第8章基於英特爾FPGA的OpenCL異構技術227
8.1 OpenCL基本概念227
8.1.1異構計算簡介227
8.1 .2 OpenCL基礎知識228
8.1.3 OpenCL語言簡介231
8.2基於英特爾FPGA的OpenCL開發環境234
8.2.1英特爾FPGA的OpenCL解決方案234
8.2.2系統要求236
8.2. 3環境安裝237
8.2.4設置環境變量237
8.2.5初始化並檢測OpenCL環境238
8.3主機端Host程序設計239
8.3.1建立Platform環境239
8.3.2創建Program與Kernel 242
8.3.3 Host與Kernel的交互243
8.3.4 OpenCL的內核執行246
8.3.5 Host端程序示例247
8.4設備端Kernel程序設計流程248
8.4.1 Kernel編譯248
8.4.2功能驗證(-march=emulator,x86平台仿真) 253
8.4.3靜態分析(-rtl,分析HTML報告) 253
8.4.4動態分析(-profile) 255

第三部分人工智能應用篇
第9章人工智能簡介259
9.1 FPGA在人工智能領域的獨特優勢259
9.1.1確定性低延遲260
9. 1.2靈活可配置260
9.1.3針對卷積神經網絡的特殊優化261
9.2人工智能的概念261
9.3人工智能的發展史262
9.3.1早期的興起與低潮262
9 .3.2人工智能的誕生263
9.3.3人工智能的“冬天” 263
9.3.4交叉學科的興起263
9.3.5雲計算與大數據時代的來臨264
9.4人工智能的應用264
9.4.1智能決策264
9.4.2最優路徑規劃264
9.4.3智能計算系統265
9.5人工智能的限制265
9.6人工智能的分類265
9.6. 1弱人工智能266
9.6.2強人工智能266
9.6.3超人工智能266
9.7人工智能的發展及其基礎267
9.7.1矩陣論267
9.7.2應用統計268
9.7.3回歸分析與方差分析268
9.7.4數值分析268

第10章深度學習269
10.1深度學習的優勢269
10.2深度學習的概念271
10.3神經網絡的基本構成272
10.3.1神經元的基本原理273
10.3.2全連接神經網絡274
10.3.3卷積神經網絡275
10.3.4常見的捲積神經網絡277
10.4常見的深度學習數據集279
10.5深度學習的應用挑戰280

第11章基於英特爾FPGA進行深度學習推理282
11.1視頻監控282
11.2視覺系統架構283
11.2.1物理特徵的捕捉283
11.2.2預處理283
11.2.3高級處理284
11.3計算機視覺的常見任務285
11.3.1圖形圖像分割286
11.3.2對象檢測286
11.3.3對象分類287
11.3.4面部識別287
11.3.5其他任務288
11.4計算機視覺的基礎289
11.4.1深度學習框架290
11.4.2 OpenCL 291
11.4.3 OpenCV 292
11.4.4 OpenVINO 292
11.5使用OpenVINO工具在英特爾FPGA上部署深度學習推理應用293
11.5.1 OpenVINO工具293
11.5.2端到端機器學習295
11.5.3 OpenVINO安裝295
11.5.4模型優化器297
11.5.5推理引擎302

後記313