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