Intel依然強大!FPGA設計是現代電子業的奇蹟,用軟體設計的方式來完成硬體核心的佈建,加上人工智慧更是如虎添翼。
本書主要從技術基礎、開發方法和人工智慧應用三個方面介紹FPGA的開發工具與開發技巧,圍繞FPGA的基礎知識,Verilog硬體描述語言,FPGA在Quartus中的開發流程,FPGA的SOPC、HLS、OpenCL設計方法,FPGA在人工智慧領域的應用等方面進行闡述,使開發人員能理解FPGA的核心知識,掌握FPGA的開發方法和開發工具。
以FPGA基礎知識為切入點,透過對開發方法和設計思路的講解,幫助讀者快速掌握FPGA開發技術及FPGA在人工智慧上的應用。
全書包含FPGA技術基礎篇、FPGA開發方法篇和人工智慧應用篇三大篇,內容如下
■ 第一部分 FPGA的基礎知識及開發流程
首先,介紹了FPGA的基本概念和入門知識,從FPGA的抽象化解釋,到FPGA如何從早期的邏輯門器件演變為當前的現場可程式化邏輯閘陣列的整個發展歷程,讓讀者明白FPGA的概念及特點。其次,介紹了FPGA的內部結構,進一步解讀FPGA的晶片內建資源,包括查閱資料表、可程式化暫存器、自我調整邏輯模組、內部儲存模組和時脈網路等,讓讀者能夠從FPGA的最基本邏輯單元和最底層結構的角度加深對FPGA的瞭解。然後,介紹了FPGA的Verilog HDL語言開發方法,包括基本語法,如if-else敘述、case敘述等和進階開發技巧,如鎖相器和暫存器的區別、阻塞與非阻塞的區別,並且根據編碼器、解碼器、雙向暫存器和上浮排序等實例具體介紹Verilog HDL語言的開發。最後,介紹了FPGA在Quartus Prime軟體中的開發流程,結合FPGA基礎知識、FPGA的內部結構及Verilog硬體描述語言系列內容,形成了一個基本的FPGA開發知識系統。
■ 第二部分 FPGA開發方法和工具
在對第一部分內容進行深化的同時,進一步介紹了針對軟體工程師的FPGA開發方法。首先,介紹了FPGA傳統開發過程中使用到的分析與偵錯工具,如綜合工具、約束工具、時序分析工具、偵錯工具等,介紹了編譯報告和網路表查看工具。其次,介紹了基於FPGA的可程式化系統單晶片(SOPC)的建構方法及其軟硬體的開發流程,介紹了IP核心與Nios處理器。然後,介紹了使用高層次綜合設計的FPGA設計工具HLS進行FPGA開發的方法,包括基於HLS的開發流程、程式最佳化、Modelsim模擬及HLS多種介面的使用場景分析。最後,介紹了在異質計算場景下,如何使用OpenCL進行FPGA開發的方法,包括主機端和裝置端的程式編寫。
■ 第三部分 FPGA開發的擴充
主要介紹FPGA在人工智慧領域的應用。首先,介紹了人工智慧的發展歷史和深度學習技術的基礎,包括常用的深度學習網路模型和程式設計框架。其次,介紹了深度學習的概念、基本組成及深度學習的應用挑戰,包括神經網路基本組成、常見的神經網路模型和資料集。最後,以電腦機器視覺為例,介紹了如何使用英特爾OpenVINO工具在英特爾FPGA上部署深度學習推理計算。
作者簡介:
張瑞
現任英特爾FPGA中國創新中心總經理,負責英特爾中國區晶元對外合作戰略以及自動駕駛和FPGA等領域的生態建設,同時兼任中國汽車電子產業聯盟副理事長和副秘書長的職務,致力於推動包括5G、機器視覺、感測器融合,和自主決策等多項關鍵自動駕駛相關技術。
作者序
【前言】
當前,我們正面臨著一場前所未有的科技革命,以巨量資料、人工智慧、5G、雲端運算等為代表的新興技術正在推動人類社會向數位化、智慧化轉變。隨著新一代資訊技術應用的不斷發展和深化,數位基礎設施建設的承載需求也與日俱增,資料量的激增導致資料的傳輸、計算和儲存都面臨著巨大的挑戰。同時,在各領域中,不同的應用場景都面臨著其獨特的資料處理需求。舉例來說,在邊緣和嵌入式裝置中,支持低耗電、小尺寸和低成本的設計非常重要;在網路應用中,需要應對最高資料流量和乙太網速度;在資料中心,則需要提供高頻寬、低延遲時間計算加速。面對上述需求及挑戰,FPGA以其獨特的性能和優勢恰好可為企業提供極具競爭力的解決方案。
FPGA具備出色的靈活性和低延遲時間性,能夠透過改變和重組邏輯電路的方式滿足不同應用場景的資料處理和加速需求。高性能和高效率不僅能最佳化企業的產品和解決方案性能,還能加快從研發到上市的處理程序,以化解市場需求不確定性所帶來的風險等。5G、人工智慧、資料中心和工業網際網路等是新基建的重要組成部分,而FPGA以其靈活性、可程式化、低延遲時間及低耗電的特性,恰恰是這些領域中需要的核心技術之一,在這樣的熱潮下,FPGA也將迎來前所未有的發展機遇。
本書作為英特爾FPGA中國創新中心系列叢書之一,以提高開發人員的FPGA技術知識和應用能力為目標,圍繞FPGA技術基礎篇、FPGA開發方法篇及FPGA人工智慧應用篇三大板塊進行說明,以FPGA核心知識為基礎、設計方法為重要內容,結合FPGA在人工智慧領域的應用實踐,用充實的案例幫助讀者瞭解和掌握FPGA技術及應用。本書分為三個部分,共計11章,具體內容如下。
第一部分內容貫穿了FPGA的基礎知識及開發流程。首先,介紹了FPGA的基本概念和入門知識,從FPGA的抽象化解釋,到FPGA如何從早期的邏輯門器件演變為當前的現場可程式化邏輯閘陣列的整個發展歷程,讓讀者明白FPGA的概念及特點。其次,介紹了FPGA的內部結構,進一步解讀FPGA的晶片內建資源,包括查閱資料表、可程式化暫存器、自我調整邏輯模組、內部儲存模組和時脈網路等,讓讀者能夠從FPGA的最基本邏輯單元和最底層結構的角度加深對FPGA的瞭解。然後,介紹了FPGA的Verilog HDL語言開發方法,包括基本語法,如if-else敘述、case敘述等和進階開發技巧,如鎖相器和暫存器的區別、阻塞與非阻塞的區別,並且根據編碼器、解碼器、雙向暫存器和上浮排序等實例具體介紹Verilog HDL語言的開發。最後,介紹了FPGA在Quartus Prime軟體中的開發流程,結合FPGA基礎知識、FPGA的內部結構及Verilog硬體描述語言系列內容,形成了一個基本的FPGA開發知識系統。
第二部分內容主要介紹了FPGA開發方法和工具,在對第一部分內容進行深化的同時,進一步介紹了針對軟體工程師的FPGA開發方法。首先,介紹了FPGA傳統開發過程中使用到的分析與偵錯工具,如綜合工具、約束工具、時序分析工具、偵錯工具等,介紹了編譯報告和網路表查看工具。其次,介紹了基於FPGA的可程式化系統單晶片(SOPC)的建構方法及其軟硬體的開發流程,介紹了IP核心與Nios處理器。然後,介紹了使用高層次綜合設計的FPGA設計工具HLS進行FPGA開發的方法,包括基於HLS的開發流程、程式最佳化、Modelsim模擬及HLS多種介面的使用場景分析。最後,介紹了在異質計算場景下,如何使用OpenCL進行FPGA開發的方法,包括主機端和裝置端的程式編寫。
第三部分內容作為FPGA開發的擴充,主要介紹FPGA在人工智慧領域的應用。首先,介紹了人工智慧的發展歷史和深度學習技術的基礎,包括常用的深度學習網路模型和程式設計框架。其次,介紹了深度學習的概念、基本組成及深度學習的應用挑戰,包括神經網路基本組成、常見的神經網路模型和資料集。最後,以電腦機器視覺為例,介紹了如何使用英特爾OpenVINO工具在英特爾FPGA上部署深度學習推理計算。
關於本書涉及的FPGA內容,讀者可以直接存取www.intel.com.cn和www.fpga- china.com獲取線上視訊、遠端FPGA加速資源等豐富的學習和開發資源。
鑑於筆者學識有限,本書內容可能有不足之處,懇請讀者們不吝賜教。
【前言】
當前,我們正面臨著一場前所未有的科技革命,以巨量資料、人工智慧、5G、雲端運算等為代表的新興技術正在推動人類社會向數位化、智慧化轉變。隨著新一代資訊技術應用的不斷發展和深化,數位基礎設施建設的承載需求也與日俱增,資料量的激增導致資料的傳輸、計算和儲存都面臨著巨大的挑戰。同時,在各領域中,不同的應用場景都面臨著其獨特的資料處理需求。舉例來說,在邊緣和嵌入式裝置中,支持低耗電、小尺寸和低成本的設計非常重要;在網路應用中,需要應對最高資料流量和乙太網速度;在資料中心,則需要提供高頻寬、低延遲時...
目錄
第一部分 FPGA技術基礎篇
第1章 FPGA的特點及其歷史
1.1 無處不在的FPGA
1.2 創造性地解釋FPGA
1.3 FPGA的可訂製性
1.4 早期的邏輯功能實現
1.5 可簡單程式設計邏輯器件(PAL)
1.6 可程式化邏輯器件(PLD)
1.7 複雜可程式化邏輯器件(CPLD)
1.8 現場可程式化邏輯閘陣列(FPGA)
第2章 FPGA架構
2.1 FPGA全晶片架構
2.2 FPGA邏輯陣列模組
2.3 FPGA嵌入式儲存
2.4 時鐘網路
2.5 DSP模組
2.6 FPGA佈線
2.7 FPGA程式設計資源
2.8 FPGA I/O元件
2.9 英特爾SoC FPGA
第3章 Verilog HDL
3.1 Verilog HDL概述
3.2 Verilog HDL基礎知識
3.3 Verilog HDL的基本語法
3.4 Verilog HDL進階基礎知識
3.5 Verilog HDL開發實例篇
第4章 Quartus Prime基本開發流程
4.1 Quartus Prime軟體介紹
4.2 Quartus Prime開發流程
4.3 實驗指導
第二部分 FPGA開發方法篇
第5章 FPGA設計工具
5.1 編譯報告
5.2 網路表查看工具
5.3 物理約束
5.4 時序分析工具
5.5 耗電分析工具
5.6 晶片內建偵錯工具
第6章 基於英特爾FPGA的SOPC開發
6.1 SOPC技術簡介
6.2 IP核心與Nios處理器
6.3 建構SOPC系統
6.4 SOPC開發實戰
第7章 基於英特爾FPGA的HLS開發
7.1 HLS的基本概念
7.2 HLS的基本開發流程
7.3 HLS的多種介面及其使用場景
7.4 HLS簡單的最佳化技巧
第8章 基於英特爾FPGA的OpenCL異質技術
8.1 OpenCL基本概念
8.2 基於英特爾FPGA的OpenCL開發環境
8.3 主機端Host程式設計
8.4 裝置端Kernel程式設計流程
第三部分 人工智慧應用篇
第9章 人工智慧簡介
9.1 FPGA在人工智慧領域的獨特優勢
9.2 人工智慧的概念
9.3 人工智慧的發展史
9.4 人工智慧的應用
9.5 人工智慧的限制
9.6 人工智慧的分類
9.7 人工智慧的發展及其基礎
第10章 深度學習
10.1 深度學習的優勢
10.2 深度學習的概念
10.3 神經網路的基本組成
10.4 常見的深度學習資料集
10.5 深度學習的應用挑戰
第11章 基於英特爾FPGA進行深度學習推理
11.1 視訊監控
11.2 視覺系統架構
11.3 電腦視覺的常見任務
11.4 電腦視覺的基礎
11.5 使用OpenVINO工具在英特爾FPGA上部署深度學習推理應用
第一部分 FPGA技術基礎篇
第1章 FPGA的特點及其歷史
1.1 無處不在的FPGA
1.2 創造性地解釋FPGA
1.3 FPGA的可訂製性
1.4 早期的邏輯功能實現
1.5 可簡單程式設計邏輯器件(PAL)
1.6 可程式化邏輯器件(PLD)
1.7 複雜可程式化邏輯器件(CPLD)
1.8 現場可程式化邏輯閘陣列(FPGA)
第2章 FPGA架構
2.1 FPGA全晶片架構
2.2 FPGA邏輯陣列模組
2.3 FPGA嵌入式儲存
2.4 時鐘網路
2.5 DSP模組
2.6 FPGA佈線
2.7 FPGA程式設計資源
2.8 FPGA I/O元件
2.9 英特爾SoC FPGA
第3章 Veril...