本書是一部系統論述基于FPGA的現代電子系統設計方法的立體化教程(含紙質圖書、電子書、教學課件、源代碼與視頻教程)。全書共分為8章: 第1章EDA技術概述,介紹了基于FPGA設計的優勢、FPGA技術應用領域、自頂向下設計方法論、FPGA設計層次、RTL層設計的流程; 第2章介紹CPLD/FPGA的結構原理及編程和配置相關知識; 第3、4、5、8章,從第3章的VHDL基本語法,到第4章的組合邏輯和時序邏輯基本模塊,再到第5章的宏功能模塊利用,最后是第8章以項目引導的典型電子系統設計案例,逐層遞進,由淺入深地介紹基于VHDL的數字系統描述方法; 第6章介紹邏輯設計之后需要考慮的時序分析相關基礎,包括時序約束、時序分析的若干基本概念和時鐘管理; 第7章面向整體系統設計及優化問題,介紹了基本系統設計原則和VHDL優化原則。
為便于讀者高效學習,快速掌握基于VHDL的編程與實踐,本書作者精心制作了完整的教學課件(8章PPT)、完整的源代碼與豐富的配套視頻教程及在線答疑服務等。
本書可作為廣大高校電子信息工程專業EDA課程的教材,也可作為計算機技術、自動化、電力系統及自動化、智能電網及信息工程、機械電子等工科專業學生的自學參考書。
2015年,德國率先提出工業4.0,拉開了第四次工業革命的序幕。以智能化、信息化為特點的第四次工業革命,廣泛使用大數據、人工智能、物聯網、5G通信、云邊端計算等先進技術,在各個行業完成產業升級,從智慧小區、智慧工廠到智能城市,從智慧交通到智慧醫療,從智能電網到智慧能源,再到全球互聯網,智慧化、智能化已經在逐步深入地影響和改變我們的生活。而實現智慧化、智能化的物理基礎是智慧化器件,包括CPU、DSP、ARM等。FPGA作為智慧化器件的頂配產品,以其高速、穩定、可靠等特點,近年來得到了廣泛的關注和應用。
智能化、信息化的進程中,必然需要大量的智能計算、智能決策,而且這些智能計算和決策必須具備快速、低功耗、小型化、靈活性等特點,FPGA技術充分滿足了上述幾點要求。尤其是近年來的片上系統(SoC)技術,既包括各種硬件IP核,還可以集成嵌入式操作系統和應用軟件,軟硬協同,將非常復雜的系統整合在芯片上,展示出強大的功能。單獨使用沿用數十年的CPU架構產品已經不能滿足市場需求,因而選擇以軟硬協同開發為特征的FPGA架構是必然趨勢。可以預見,FPGA的應用將會呈現一個井噴式增長態勢。目前FPGA已經成熟地應用到視頻信號處理,比如電子眼、人臉識別等。在云計算、邊緣計算及智能計算領域,FPGA正在作為加速器而被越來越廣泛應用,它既能夠提供幾乎實時的處理速度,同時還可以降低功耗。在機器人、無人駕駛、無人機等領域,FPGA也越來越廣泛地被使用。
世界上著名的FPGA廠商Altera公司被Intel公司收購,Xilinx公司繼而被AMD公司收購,FPGA公司被芯片巨頭整合,預示著FPGA將與傳統CPU芯片進一步集成,發揮其可編程、快速、低功耗、靈活的優勢,來賦能傳統芯片。隨著芯片巨頭的入場,FPGA CPU將會真正成為解決數據中心存儲和網絡通信的主流解決方案,基于FPGA的AI加速單元和CPU緊密耦合提升AI計算的整體性能,也必將是FPGA賦能傳統芯片的典型應用,從而帶來前所未有的IT生態改變。
面對這樣的需求和應用背景,應用工程師們迫切需要在較短的時間內能夠盡可能全面地了解FPGA相關技術。本書是一本闡述FPGA技術全貌的圖書,深入淺出地將理論與案例相結合。在介紹FPGA最新應用的基礎上,以Intel公司的主要FPGA產品為主線,闡述其硬件結構原理。從VHDL基本語法出發,闡述了基于VHDL的組合/時序基本電路模塊的實現方式,并系統介紹了典型IP核的應用,較為詳細地闡述了FPGA設計中的時序分析問題,系統論述了設計過程中要遵循的基本原則和優化原則,并結合案例進行解釋,最后列舉了一些常見的工程應用。本書旨在向讀者傳遞FPGA技術及應用的基本原理,作者以多年的FPGA專業教學經驗,引領讀者快速了解FPGA領域全貌,以期在FPGA應用中能夠事半功倍。
本書的編寫工作由下列人員承擔: 李月喬負責第4章; 陳曉梅負責第1,2,3,5,6,7,8章。全書由陳曉梅審校定稿。此外研究生肖徐東、王行健負責本書第8章的部分調試,在此一并表示衷心的感謝。為了使書中內容與仿真軟件中使用的邏輯符號一致,故本書中所有符號均采用美標,特此說明。
由于作者水平所限,錯誤和不足之處在所難免,懇請讀者批評指正。
編者2023年10月
教學課件
程序代碼
第1章FPGA相關EDA技術概述
1.1基于FPGA設計數字電子系統的優勢
1.2FPGA技術應用領域
1.2.1FPGA應用于人工智能與大數據
1.2.2FPGA應用于高速、高帶寬的網絡通信
1.2.3FPGA應用于云計算
1.2.4FPGA應用于邊緣計算
1.3FPGA 自頂向下的設計方法論
1.4FPGA的設計層次
1.5RTL層 FPGA設計流程
1.5.1設計輸入
1.5.2綜合
1.5.3適配
1.5.4時序仿真與功能仿真
1.5.5編程下載
1.5.6硬件測試
第2章FPGA和CPLD結構原理
2.1FPGA的編程技術
2.2Intel公司FPGA產品系列
2.2.1Agilex FPGA系列
2.2.2Stratix FPGA系列
2.2.3Arria系列
2.2.4Cyclone系列
2.2.5MAX系列
2.3傳統CPLD結構原理
2.4FPGA結構原理
2.4.1查詢表實現函數基本原理
2.4.2Cyclone Ⅲ系列器件的結構原理
2.5新型CPLD結構原理
2.5.1LAB
2.5.2多軌道互連
2.5.3可編程I/O塊
2.6CPLD和FPGA的區別與趨同
2.7編程與配置
2.7.1配置方式
2.7.2主動串行配置方式
2.7.3被動串行配置方式
2.7.4快速被動并行配置方式
2.7.5被動并行異步配置方式
2.7.6JTAG配置方式
2.7.7USBBlaster Ⅱ下載電纜
2.7.8配置芯片
2.7.9配置文件
2.8基于FPGA的SoC設計方法
2.8.1系統功能集成是SoC的核心技術
2.8.2固件集成是SoC的基礎設計思想
2.8.3嵌入式系統是SoC的基本結構
2.8.4IP是SoC的設計基礎
第3章VHDL的基本語法規則
3.1VHDL基本術語
3.2VHDL的三種不同描述風格
3.2.1實體
3.2.2結構體
3.2.3配置
3.3數據對象
3.3.1常量
3.3.2變量
3.3.3信號
3.3.4別名
3.3.5常量、變量和信號的比較
3.4數據類型
3.4.1標量
3.4.2復合類型
3.4.3數據類型轉換
3.4.4子類型
3.5行為描述
3.5.1信號賦值
3.5.2延時
3.5.3進程
3.5.4WAIT語句
3.5.5決斷信號
3.6子程序
3.6.1過程
3.6.2函數
3.6.3函數/過程重載
3.7設計庫和標準程序包
第4章基本電路模塊設計
4.1組合邏輯典型電路設計
4.1.1編碼器
4.1.2譯碼器
4.1.3三人表決器
4.1.4數據選擇器
4.1.5數據分配器
4.1.6數值比較器
4.1.7加法器
4.2時序邏輯電路典型模塊設計
4.2.1觸發器設計
4.2.2計數器設計
4.2.3寄存器設計
4.2.4鎖存器
4.2.5移位寄存器
4.2.6順序脈沖發生器設計
4.2.7序列信號發生器設計
4.2.8分頻器設計
4.2.9狀態機設計
4.2.10三態總線設計
4.3簡單的測試基準設計
4.3.1測試基準概述
4.3.2基本測試基準的搭建
第5章EDA宏功能資源利用
5.1參數化模塊庫(LPM)
5.1.1計數器
5.1.2基于ROM的正弦波發生器
5.2IP核的使用實例
5.2.1IP相關常識概述
5.2.28B/10B 核的使用
5.3原Altera公司特定功能IP核(ALT類)
5.3.1ALTMEMMULT IP核實現整數乘法
5.3.2鎖相環ALTPLL的調用
第6章時序分析基礎
6.1時序約束
6.2時序分析的基本概念
6.2.1時序網表和時序路徑
6.2.2基本時序分析參數
6.2.3同步時序分析
6.2.4異步時序分析恢復和移除分析
6.2.5多周期路徑分析
6.2.6亞穩性分析
6.2.7時序悲觀分析
6.2.8時鐘數據分析
6.2.9多角時序分析
6.3時鐘管理
6.3.1時序問題
6.3.2鎖相環應用
第7章系統設計及優化原則
7.1可編程邏輯基本設計原則
7.1.1面積和速度的平衡與互換原則
7.1.2系統原則
7.1.3同步設計原則
7.1.4數據接口同步原則
7.1.5結構層次化編碼原則
7.2VHDL的優化設計
7.2.1面積優化設計
7.2.2速度優化設計
7.3其他設計技巧
7.3.1組合邏輯的注意事項
7.3.2時鐘的設計技巧
第8章FPGA電子系統設計項目
8.1串并行乘法器設計
8.1.1串并乘法器原理
8.1.2系統設計
8.1.3仿真結果
8.2看門狗設計
8.2.1看門狗的工作原理
8.2.2系統設計及仿真結果
8.3PS/2鍵盤接口設計
8.4多位數碼管的動態掃描顯示
8.4.1多位數碼管的顯示原理
8.4.2系統設計及仿真結果
8.5FPGA控制數模轉換器DAC0832實現鋸齒波發生器
8.5.1DAC0832的工作原理
8.5.2FPGA控制的鋸齒波發生器電路
8.6FPGA控制模數轉換器ADC0809的應用
8.6.1ADC0809轉換器及其模數轉換電路
8.6.2FPGA控制的模數轉換電路
8.6.3用數碼管顯示模數轉換器的輸入電壓
8.6.4模擬輸入有負電壓時的轉換電路
8.7數字頻率計
8.7.1總體設計要求和設計實現思路
8.7.2各模塊具體設計實現及仿真
8.8UART通用異步收發器
8.8.1UART協議基礎
8.8.2UART模塊程序設計
參考文獻