(文章來(lái)源:T客幫)
隨著云計(jì)算,大數(shù)據(jù)和人工智能技術(shù)應(yīng)用,單靠 CPU 已經(jīng)無(wú)法滿(mǎn)足各行各業(yè)的算力需求。海量數(shù)據(jù)分析、機(jī)器學(xué)習(xí)和邊緣計(jì)算等場(chǎng)景需要計(jì)算架構(gòu)多樣化,需要不同的處理器架構(gòu)和 GPU,NPU 和 FPGA 等異構(gòu)計(jì)算技術(shù)協(xié)同,滿(mǎn)足特定領(lǐng)域的算法和專(zhuān)用計(jì)算需求。今天,筆者帶大家詳細(xì)了解下 FPGA 技術(shù)。
FPGA 是英文 Field Programmable Gate Array 簡(jiǎn)稱(chēng),即現(xiàn)場(chǎng)可編程門(mén)陣列。它是在 PLA、PAL、GAL、CPLD 等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專(zhuān)用集成電路 (ASIC) 領(lǐng)域中的一種半定制電路,既解決了定制電路的不足,又克服了原有可編程器件門(mén)電路數(shù)有限的缺點(diǎn)。
FPGA 普遍用于實(shí)現(xiàn)數(shù)字電路模塊,用戶(hù)可對(duì) FPGA 內(nèi)部的邏輯模塊和 I/O 模塊重新配置,以實(shí)現(xiàn)用戶(hù)的需求。它還具有靜態(tài)可重復(fù)編程和動(dòng)態(tài)在系統(tǒng)重構(gòu)的特性,使得硬件的功能可以像軟件一樣通過(guò)編程來(lái)修改??梢院敛豢鋸埖闹v,F(xiàn)PGA 能完成任何數(shù)字器件的功能,下至簡(jiǎn)單的 74 電路,上至高性能 CPU,都可以用 FPGA 來(lái)實(shí)現(xiàn)。FPGA 如同一張白紙或是一堆積木,工程師可以通過(guò)傳統(tǒng)的原理圖輸入法,或是硬件描述語(yǔ)言自由的設(shè)計(jì)一個(gè)數(shù)字系統(tǒng)。
FPGA 架構(gòu)主要包括可配置邏輯塊 CLB(Configurable Logic Block)、輸入輸出塊 IOB(Input Output Block)、內(nèi)部連線(Interconnect)和其它內(nèi)嵌單元四個(gè)部分。CLB 是 FPGA 的基本邏輯單元。實(shí)際數(shù)量和特性會(huì)依器件的不同而改變,但是每個(gè) CLB 都包含一個(gè)由 4 或 6 個(gè)輸入、若干選擇電路(多路復(fù)用器等)和觸發(fā)器組成的可配置開(kāi)關(guān)矩陣。開(kāi)關(guān)矩陣具有高度的靈活性,經(jīng)配置可以處理組合型邏輯、移位寄存器或 RAM。
FPGA 可支持許多種 I/O 標(biāo)準(zhǔn),因而可以為系統(tǒng)設(shè)計(jì)提供理想的接口橋接。FPGA 內(nèi)的 I/O 按 bank 分組,每個(gè) bank 能獨(dú)立支持不同的 I/O 標(biāo)準(zhǔn)。目前最先進(jìn)的 FPGA 提供了十多個(gè) I/O bank,能夠提供靈活的 I/O 支持。
CLB 提供了邏輯性能,靈活的互連布線則負(fù)責(zé)在 CLB 和 I/O 之間傳遞信號(hào)。布線有幾種類(lèi)型,從設(shè)計(jì)用于專(zhuān)門(mén)實(shí)現(xiàn) CLB 互連(短線資源)、到器件內(nèi)的高速水平和垂直長(zhǎng)線(長(zhǎng)線資源)、再到時(shí)鐘與其它全局信號(hào)的全局低 skew 布線(全局性專(zhuān)用布線資源)。一般,各廠家設(shè)計(jì)軟件會(huì)將互連布線任務(wù)隱藏起來(lái),用戶(hù)根本看不到,從而大幅降低了設(shè)計(jì)復(fù)雜性。

一般來(lái)說(shuō),器件型號(hào)數(shù)字越大,表示器件能提供的邏輯資源規(guī)模越大。在 FPGA 器件選型時(shí),用戶(hù)需要對(duì)照此表格,根據(jù)業(yè)務(wù)對(duì)邏輯資源(CLB)、內(nèi)部 BlockRAM、接口(高速 Serdes 對(duì)數(shù))、數(shù)字信號(hào)處理(DSP 硬核數(shù))以及今后擴(kuò)展等多方面的需求,綜合考慮項(xiàng)目最合適的邏輯器件。
功能定義/器件選型:在 FPGA 設(shè)計(jì)項(xiàng)目開(kāi)始之前,必須有系統(tǒng)功能的定義和模塊的劃分,另外就是要根據(jù)任務(wù)要求,如系統(tǒng)的功能和復(fù)雜度,對(duì)工作速度和器件本身的資源、成本、以及連線的可布性等方面進(jìn)行權(quán)衡,選擇合適的設(shè)計(jì)方案和合適的器件類(lèi)型。設(shè)計(jì)輸入:設(shè)計(jì)輸入指使用硬件描述語(yǔ)言將所設(shè)計(jì)的系統(tǒng)或電路用代碼表述出來(lái)。最常用的硬件描述語(yǔ)言是 Verilog HDL。
功能仿真:功能仿真指在邏輯綜合之前對(duì)用戶(hù)所設(shè)計(jì)的電路進(jìn)行邏輯功能驗(yàn)證。仿真前,需要搭建好測(cè)試平臺(tái)并準(zhǔn)備好測(cè)試激勵(lì),仿真結(jié)果將會(huì)生成報(bào)告文件和輸出信號(hào)波形,從中便可以觀察各個(gè)節(jié)點(diǎn)信號(hào)的變化。如果發(fā)現(xiàn)錯(cuò)誤,則返回設(shè)計(jì)修改邏輯設(shè)計(jì)。常用仿真工具有 Model Tech 公司的 ModelSim、Sysnopsys 公司的 VCS 等軟件。
邏輯綜合:所謂綜合就是將較高級(jí)抽象層次的描述轉(zhuǎn)化成較低層次的描述。綜合優(yōu)化根據(jù)目標(biāo)與要求優(yōu)化所生成的邏輯連接,使層次設(shè)計(jì)平面化,供 FPGA 布局布線軟件進(jìn)行實(shí)現(xiàn)。就目前的層次來(lái)看,綜合優(yōu)化是指將設(shè)計(jì)輸入編譯成由與門(mén)、或門(mén)、非門(mén)、RAM、觸發(fā)器等基本邏輯單元組成的邏輯連接網(wǎng)表,而并非真實(shí)的門(mén)級(jí)電路。
真實(shí)具體的門(mén)級(jí)電路需要利用 FPGA 制造商的布局布線功能,根據(jù)綜合后生成的標(biāo)準(zhǔn)門(mén)級(jí)結(jié)構(gòu)網(wǎng)表來(lái)產(chǎn)生。為了能轉(zhuǎn)換成標(biāo)準(zhǔn)的門(mén)級(jí)結(jié)構(gòu)網(wǎng)表,HDL 程序的編寫(xiě)必須符合特定綜合器所要求的風(fēng)格。常用的綜合工具有 Synplicity 公司的 Synplify/Synplify Pro 軟件以及各個(gè) FPGA 廠家自己推出的綜合開(kāi)發(fā)工具。
布局布線與實(shí)現(xiàn):布局布線可理解為利用實(shí)現(xiàn)工具把邏輯映射到目標(biāo)器件結(jié)構(gòu)的資源中,決定邏輯的最佳布局,選擇邏輯與輸入輸出功能鏈接的布線通道進(jìn)行連線,并產(chǎn)生相應(yīng)文件 (如配置文件與相關(guān)報(bào)告);實(shí)現(xiàn)是將綜合生成的邏輯網(wǎng)表配置到具體的 FPGA 芯片上。由于只有 FPGA 芯片生產(chǎn)商對(duì)芯片結(jié)構(gòu)最為了解,所以布局布線必須選擇芯片開(kāi)發(fā)商提供的工具。
編程調(diào)試:設(shè)計(jì)的最后一步就是編程調(diào)試。芯片編程是指產(chǎn)生使用的數(shù)據(jù)文件 (位數(shù)據(jù)流文件,Bitstream Generaon),將編程數(shù)據(jù)加載到 FPGA 芯片中;之后便可進(jìn)行上板測(cè)試。最后將 FPGA 文件(如.bit 文件)從電腦下載到單板上的 FPGA 芯片中。
FPGA 開(kāi)發(fā)完畢,最終得到驗(yàn)證好的加載文件。輸出加載文件后,即可開(kāi)始正常業(yè)務(wù)處理和驗(yàn)證 (以軟件加載方式為例,描述整個(gè)過(guò)程)。1、邏輯加載;2、單板軟件加載邏輯后,需要復(fù)位邏輯;3、復(fù)位完成后,軟件需等待等待一段時(shí)間至邏輯鎖相環(huán)工作穩(wěn)定;4、軟件啟動(dòng)對(duì)邏輯的外部 RAM、內(nèi)部 Block RAM、DDRC 等的自檢操作。
5、軟件完成自檢以后,對(duì)邏輯所有可寫(xiě) RAM 空間及寄存器進(jìn)行初始化操作;6、初始化完畢,軟件參考邏輯芯片手冊(cè)配置表項(xiàng)及寄存器;7、邏輯準(zhǔn)備好,可以開(kāi)始處理業(yè)務(wù)。7、FPGA 適用場(chǎng)景FPGA 適合非規(guī)則性多并發(fā)、密集計(jì)算及協(xié)議解析處理場(chǎng)景,例如人工智能、基因測(cè)序、視頻編碼、數(shù)據(jù)壓縮、圖片處理、網(wǎng)絡(luò)處理等各領(lǐng)域的加速。
? ? ? ?(責(zé)任編輯:fqj)
電子發(fā)燒友App























評(píng)論