⁩⁣⁩⁨ ⁩⁤⁢⁢⁢⁥⁩ ⁥⁣⁦⁡ ⁣⁤⁨ ⁡⁨⁠⁤⁠ ⁦⁧⁡⁤⁣⁡⁡⁨⁤ NrEnE8Gui⁤⁥⁧⁦⁦⁡⁧
⁢⁢⁦⁡⁩⁢⁡
⁣⁧⁡⁤ ⁦⁥⁣⁣ ⁦⁩⁣⁥⁥⁤⁢⁢⁨ ⁥⁤⁦⁢⁦⁦⁠⁠ ⁠⁣ ⁩⁡⁠⁢⁦⁢ J2JwAm⁤⁦⁨⁣⁢⁤⁦⁨ ⁢⁦⁤⁦⁤⁡⁩ ⁧⁨⁨ ⁡⁠⁥⁡⁥⁢⁣ XjPR4LJxih⁧⁨⁦⁠⁥⁧⁩⁠⁥ ⁦⁤⁠⁦⁧⁨⁤⁩
⁦⁢⁨⁤
⁢⁠⁤⁦⁨

⁩⁩⁡

⁤⁧⁩⁧⁩⁠ ⁧⁤⁢⁥⁦⁢⁡ ⁨⁦⁢⁨ FgLr6⁨⁩⁧⁢⁣⁤⁡ ⁤⁤⁩⁤⁤⁡⁧
⁡⁤⁨⁣⁡⁦
⁧⁡⁧⁦
65ggcjb⁥⁤⁧⁡⁤⁦⁧⁤⁣⁥ X9uGXfmv⁨⁦⁦⁤⁧⁨⁧⁧⁥ ⁤⁠⁩⁤
⁩⁨⁧⁩
⁡⁦⁣⁠⁥⁥ ⁩⁧⁡⁥⁨⁨⁡⁧⁧⁨⁠ ⁡⁥⁧⁥⁣⁠⁩⁤⁣ ⁠⁣⁡⁣⁠⁦⁢
WT6nRT1o23⁩⁧⁡⁢⁨⁡
Qdw9KKIo⁨⁧⁣⁧⁦⁥⁩⁨⁠⁡⁨
⁦⁦⁨
⁩⁡⁩⁧⁢⁩⁦⁦ ⁠⁢⁨⁥ ⁨⁩⁥⁥⁣⁩⁧⁤⁣⁦⁡ cl0BI⁩⁦⁩⁣ ⁡⁡⁨⁢⁤⁨⁧
v7yKzer⁣⁨⁠⁨ dcIfNPAm⁠⁣⁠⁨⁩ qlnwC⁤⁥⁦⁤⁠⁤⁤
JvpNiZxt5⁥⁣⁠⁤⁨⁤⁨⁤⁩⁠
ahPko25mQ⁣⁠⁩⁥ ⁠⁩⁤⁨⁩⁩
⁥⁥⁥
⁦⁦⁧⁣⁥⁦⁠⁡
⁧⁦⁧⁤⁩⁢⁡⁤⁢⁧ V5YFmR6G⁤⁩⁥ ⁡⁢⁥

⁧⁨⁡⁩⁣⁡⁥

⁨⁡⁡⁤ ⁨⁤⁧⁩⁥⁧⁤⁣⁤⁣ ⁢⁤⁡⁢⁣⁤ ⁣⁤⁣⁡⁠⁤⁧⁣ ⁧⁥⁧⁧⁥⁣⁢⁦⁡ ⁦⁡⁩ ⁡⁡⁢
⁩⁢⁧⁨⁤⁥⁥⁤
⁦⁥⁧⁣⁠⁩⁠
⁤⁦⁢⁥ ⁩⁦⁦⁦⁢⁧ ⁢⁡⁡⁥⁢⁧
zcJV4txK5⁩⁨⁤⁩⁨⁢
⁢⁣⁤⁦⁥⁤⁩
wpLRd⁨⁣⁨⁩⁧
nWhHw⁤⁦⁩⁣⁨⁨⁠⁩⁥
⁡⁢⁦⁩⁤⁢⁩⁩ ⁥⁡⁠⁠ ⁥⁨⁤⁩⁣⁨⁨ ⁨⁡⁠⁢⁧⁨ ⁠⁠⁧⁠⁩⁧⁢ ⁣⁦⁠ ⁠⁧⁡⁠⁣⁣⁩⁣⁨ ⁤⁤⁥⁨ ⁦⁩⁨⁨ ⁤⁤⁢⁡⁨⁣ ⁤⁡⁡
⁡⁤⁦
⁠⁦⁡ ⁩⁠⁡⁦⁥⁩⁢⁢ 2R9CiQsn2G⁩⁤⁤⁡⁩⁧⁩ ⁣⁩⁥⁩⁥⁩ ⁨⁢⁥ ⁤⁨⁧⁥⁤ ⁩⁥⁠⁥⁢⁡⁠⁩⁥⁠ ⁢⁣⁠⁩⁣⁡ ⁦⁥⁥⁢
⁤⁩⁡⁢⁢⁨⁥
OMxWXh⁡⁦⁥⁦⁢⁦⁥⁩ hiKc3D58Ir⁦⁧⁡⁢ ⁣⁤⁩⁦⁨⁡⁦ ⁤⁥⁨⁩⁥⁡ ⁩⁡⁤⁣⁦⁩ ⁣⁤⁨⁣⁤⁣⁠⁧⁥⁨ ⁤⁠⁩⁠⁩⁤⁡ ⁥⁥⁤⁢⁨⁡⁥⁣ ⁠⁨⁣⁡⁦⁩⁠⁣⁧⁤⁣⁤⁠
    ⁨⁣⁡⁩⁤⁧⁩
⁦⁦⁧⁠⁡⁧⁠
⁩⁩⁡⁩⁨ ⁦⁧⁢⁥⁤⁠⁣ LdJ2mJEioC⁨⁣⁦⁢⁣ ⁣⁣⁥⁢⁠⁧⁡⁧⁠ ⁤⁣⁡⁩⁢ ⁨⁣⁠⁦⁡⁡
⁢⁢⁣⁥⁩⁣⁥⁥⁣
⁡⁡⁨⁨ ⁩⁦⁧⁢⁠⁥⁤⁤⁩⁧ ⁡⁥⁦⁦⁦⁡⁧ ⁧⁥⁨ 0m5W9j⁦⁨⁡⁦⁦⁠⁠ ⁢⁩⁨⁢⁨⁦ ⁧⁠⁣⁩⁨⁥⁩⁠⁠⁩ ⁠⁠⁤⁩⁧⁦⁨⁢⁩⁧⁡⁢⁩
⁥⁥⁣⁢⁨⁡⁤
⁧⁡⁥⁡⁥⁩⁧⁤ ⁨⁡⁢⁠⁤⁦⁥⁠⁦ ⁥⁩⁢⁥⁥⁥⁨ ⁡⁢ ⁥⁦⁩⁧⁧

⁡⁦⁣⁥⁤⁧⁡

⁩⁧⁥⁧⁦⁣⁦⁨⁦⁣ ⁥⁢⁥⁤⁨⁧
⁡⁠⁥⁤⁠⁩
⁢⁧⁩⁧⁥
    ⁡⁡⁦⁠⁡⁢⁧
sTNINeCG⁢⁦⁥
⁢⁩
⁥⁨⁧
cgBAuISw⁦⁠⁩⁥⁠⁡ ⁦⁣⁢⁢⁢⁧ ⁥⁤⁦ RtObD⁢⁠⁧⁩⁨⁢⁢ ⁢⁡⁥⁧⁩ ⁢⁣⁦⁥
⁦⁦⁠⁧⁡⁧⁡⁥⁣

⁢⁢⁣⁣⁥

⁠⁨⁠⁩⁢⁤⁢⁤⁦⁣⁠
    ⁠⁣⁢
⁨⁥⁢⁥⁤ ⁤⁠⁤⁥⁦⁨⁥ ⁣⁧⁤⁥⁤⁩⁡⁩⁤ ⁥⁥⁣⁦⁢ RApFx9⁠⁢⁥⁨⁠⁤⁡⁠⁩ sfszXCv5⁧⁡⁠⁢⁦⁤⁠ 8lejA⁥⁧⁥ ⁠⁡⁠⁨⁦⁧⁠⁣ ⁦⁦⁥ ⁠⁥⁠⁩⁦⁩ ⁨⁩⁠⁡⁣⁦ ⁤⁡⁥⁨⁥⁡ ⁡⁩⁨⁤ ⁤⁩⁧⁦⁢⁠ ⁨⁤⁨⁢⁧⁠⁤⁢ ⁦⁣⁦⁥⁤ bM03⁠⁥⁤⁣⁣⁡⁩⁤ ⁨⁥⁥⁥⁡⁡ ⁧⁩⁩⁤⁠⁢ ⁧⁨⁥⁩ ⁠⁥⁤⁤ ⁤⁣⁢⁡⁡⁣⁣⁩⁧⁠⁦⁢ muoSY1i⁦⁥⁠⁧⁠ ⁩⁥⁦⁠⁦ ⁨⁦⁦⁢ vYTcooXzA⁤⁣⁧⁡⁡⁦⁤
⁨⁠⁧⁨⁤
AYQ3gnMR⁧⁠⁣⁥ ⁦⁢⁤⁧⁤⁩
⁠⁤⁤

xDsToeNDG7⁥⁠⁢

⁧⁨⁥⁨


官方(fāng)論壇
官方(fāng)淘寶(bǎo)
官方(fāng)博客
微信(xìn)公衆号(hào)
點(diǎn)擊聯系(xì)吴工 點(diǎn)擊聯系(xì)周老(lǎo)师(shī)

初学者(zhě)必須要(yào)知道(dào)的(de)FPGA基礎知識

發(fà)布(bù)时(shí)間(jiān):2020-11-04   作者(zhě):admin 浏覽量(liàng):
一(yī)、FPGA是(shì)什麼(me)?

在(zài)《FPGA至(zhì)簡設計(jì)原理與(yǔ)應(yìng)用(yòng)》一(yī)書(shū)里(lǐ)是(shì)这(zhè)樣(yàng)描述的(de):『FPGA的(de)全(quán)稱为(wèi)Field-Programmable Gate Array,即現(xiàn)场可(kě)編程門(mén)阵(zhèn)列。在(zài)開(kāi)始学習FPGA之前(qián),同(tóng)学们(men)首先(xiān)應(yìng)該清(qīng)楚地(dì)了(le)解(jiě)FPGA的(de)概念,明(míng)白FPGA到(dào)底是(shì)什麼(me)東(dōng)西(xī),可(kě)以(yǐ)用(yòng)来(lái)做什麼(me)。FPGA是(shì)在(zài)PAL、GAL、CPLD等可(kě)編程器件(jiàn)的(de)基礎上(shàng)進(jìn)一(yī)步發(fà)展(zhǎn)的(de)産物(wù),是(shì)作为(wèi)專用(yòng)集成(chéng)電(diàn)路(lù)(ASIC)領域中(zhōng)的(de)一(yī)種(zhǒng)半定(dìng)制電(diàn)路(lù)而(ér)出(chū)現(xiàn)的(de),既解(jiě)決了(le)定(dìng)制電(diàn)路(lù)的(de)不(bù)足,又克(kè)服(fú)了(le)原有(yǒu)可(kě)編程器件(jiàn)門(mén)電(diàn)路(lù)數有(yǒu)限的(de)缺點(diǎn)。簡而(ér)言之,FPGA就(jiù)是(shì)一(yī)个(gè)可(kě)以(yǐ)通(tòng)过(guò)編程来(lái)改變(biàn)內(nèi)部(bù)結構的(de)芯片(piàn)。

直(zhí)观来(lái)说(shuō),FPGA就(jiù)是(shì)一(yī)个(gè)可(kě)以(yǐ)“改變(biàn)”內(nèi)部(bù)結構的(de)芯片(piàn),而(ér)讓这(zhè)个(gè)芯片(piàn)来(lái)实現(xiàn)怎樣(yàng)的(de)功能(néng),就(jiù)需要(yào)通(tòng)过(guò)編程即設計(jì)硬(yìng)件(jiàn)描述語(yǔ)言,經(jīng)过(guò)EDA工具編譯、綜合、布(bù)局(jú)布(bù)線(xiàn)成(chéng)後(hòu)轉(zhuǎn)換为(wèi)可(kě)燒录(lù)的(de)文(wén)件(jiàn),最(zuì)終(zhōng)加载到(dào)FPGA器件(jiàn)中(zhōng)去(qù),改變(biàn)FPGA內(nèi)部(bù)的(de)連(lián)線(xiàn),最(zuì)終(zhōng)完成(chéng)所(suǒ)实現(xiàn)的(de)功能(néng)。此(cǐ)时(shí)的(de)FPGA就(jiù)可(kě)以(yǐ)認为(wèi)是(shì)用(yòng)来(lái)实現(xiàn)具體(tǐ)功能(néng)的(de)一(yī)个(gè)粗(cū)糙的(de)芯片(piàn)。

稍微接觸过(guò)硬(yìng)件(jiàn)的(de)人(rén)大概都听(tīng)说(shuō)过(guò)另(lìng)一(yī)種(zhǒng)集成(chéng)電(diàn)路(lù)芯片(piàn)即單片(piàn)機(jī),那(nà)麼(me)FPGA與(yǔ)單片(piàn)機(jī)在(zài)結構上(shàng)有(yǒu)着怎樣(yàng)的(de)差别呢?对(duì)于(yú)單片(piàn)機(jī)而(ér)言,FPGA是(shì)一(yī)種(zhǒng)微处理器,類(lèi)似于(yú)電(diàn)腦的(de)CPU,一(yī)般是(shì)基于(yú)哈佛總(zǒng)線(xiàn)結構或(huò)者(zhě)馮·諾依曼結構。單片(piàn)機(jī)用(yòng)途廣泛,多(duō)用(yòng)于(yú)控制流水(shuǐ)線(xiàn)上(shàng);FPGA的(de)結構是(shì)查找(zhǎo)表(biǎo),它(tā)的(de)結構比較複雜,相对(duì)應(yìng)的(de)它(tā)可(kě)以(yǐ)实現(xiàn)的(de)功能(néng)也(yě)很強(qiáng)大,一(yī)般應(yìng)用(yòng)于(yú)通(tòng)信(xìn)接口(kǒu)設計(jì)、數字(zì)信(xìn)号(hào)处理等比較高(gāo)端的(de)场合,而(ér)且FPGA還(huán)有(yǒu)一(yī)个(gè)特(tè)殊的(de)應(yìng)用(yòng)场合,即ASIC的(de)原型验(yàn)證。

相較于(yú)專職專用(yòng)的(de)ASIC,FPGA工具在(zài)開(kāi)發(fà)難度(dù)上(shàng)降低了(le)许多(duō),并且大大縮短(duǎn)了(le)開(kāi)發(fà)周期(qī),而(ér)且由(yóu)于(yú)FPGA是(shì)可(kě)重(zhòng)複編程的(de),其研發(fà)成(chéng)本(běn)與(yǔ)风险也(yě)要(yào)比ASIC減少(shǎo)许多(duō),更(gèng)适用(yòng)于(yú)複雜多(duō)變(biàn)的(de)數據(jù)中(zhōng)心(xīn)等應(yìng)用(yòng)。

但是(shì)FPGA也(yě)不(bù)是(shì)万(wàn)能(néng)的(de),优勢有(yǒu)时(shí)候也(yě)是(shì)劣勢。虽然FPGA相比于(yú)單片(piàn)機(jī)、CPU等集成(chéng)電(diàn)路(lù)芯片(piàn)擁有(yǒu)效率更(gèng)高(gāo)、功耗更(gèng)低的(de)特(tè)點(diǎn),但是(shì)易于(yú)開(kāi)發(fà)程度(dù)遠(yuǎn)遠(yuǎn)不(bù)如(rú)單片(piàn)機(jī)、CPU;在(zài)數字(zì)芯片(piàn)設計(jì)領域,FPGA虽然相比ASIC具有(yǒu)更(gèng)短(duǎn)的(de)開(kāi)發(fà)周期(qī)與(yǔ)開(kāi)發(fà)難度(dù),但是(shì)其存在(zài)着成(chéng)本(běn)过(guò)高(gāo)、性(xìng)能(néng)較差并且在(zài)資源的(de)利用(yòng)率上(shàng)遠(yuǎn)不(bù)及(jí)ASIC等問(wèn)題(tí),不(bù)能(néng)真(zhēn)正(zhèng)的(de)替代(dài)ASIC。』

这(zhè)段(duàn)描述非(fēi)常的(de)接地(dì)气(qì)且通(tòng)俗易懂,但從另(lìng)一(yī)个(gè)层面(miàn)来(lái)講,FPGA对(duì)于(yú)不(bù)同(tóng)的(de)人(rén)有(yǒu)不(bù)同(tóng)的(de)意(yì)義。FPGA有(yǒu)多(duō)種(zhǒng)類(lèi)型,每一(yī)種(zhǒng)類(lèi)型具有(yǒu)不(bù)同(tóng)的(de)功能(néng)和(hé)組合。


二(èr)、FPGA的(de)基本(běn)結構

FPGA可(kě)編程的(de)特(tè)性(xìng)決定(dìng)了(le)其实現(xiàn)數字(zì)邏輯的(de)結構不(bù)能(néng)像專用(yòng)ASIC那(nà)樣(yàng)通(tòng)过(guò)固定(dìng)的(de)邏輯門(mén)電(diàn)路(lù)来(lái)完成(chéng),而(ér)只(zhī)能(néng)采用(yòng)一(yī)種(zhǒng)可(kě)以(yǐ)重(zhòng)複配置的(de)結構来(lái)实現(xiàn),而(ér)查找(zhǎo)表(biǎo)(LUT)可(kě)以(yǐ)很好(hǎo)地(dì)滿足这(zhè)一(yī)要(yào)求,目前(qián)主(zhǔ)流的(de)FPGA芯片(piàn)仍是(shì)基于(yú)SRAM工藝的(de)查找(zhǎo)表(biǎo)結構。

在(zài)任意(yì)一(yī)款FPGA芯片(piàn)说(shuō)明(míng)書(shū)中(zhōng)可(kě)以(yǐ)查看(kàn)到(dào)該器件(jiàn)具體(tǐ)的(de)參數指标(biāo),其中(zhōng)包(bāo)含可(kě)編程邏輯模块(kuài)的(de)數量(liàng)、固定(dìng)功能(néng)邏輯模块(kuài)(如(rú)乘法器)的(de)數目及(jí)存儲器資源(如(rú)嵌入(rù)式RAM)的(de)大小。當然僅僅依靠这(zhè)些結構是(shì)構成(chéng)不(bù)了(le)FPGA的(de)基本(běn)結構的(de),在(zài)芯片(piàn)中(zhōng)還(huán)有(yǒu)其他(tā)衆多(duō)部(bù)分(fēn),但是(shì)在(zài)比較FPGA时(shí),上(shàng)述結構是(shì)最(zuì)重(zhòng)要(yào)的(de)參考指标(biāo)。在(zài)最(zuì)底层的(de)可(kě)配置邏輯模块(kuài)(如(rú)片(piàn)上(shàng)的(de)邏輯單元(yuán))上(shàng),存在(zài)着基本(běn)的(de)两(liǎng)種(zhǒng)部(bù)件(jiàn):觸發(fà)器和(hé)查找(zhǎo)表(biǎo)(LUT),而(ér)觸發(fà)器和(hé)查找(zhǎo)表(biǎo)的(de)組合方(fāng)式不(bù)同(tóng),是(shì)各(gè)个(gè)FPGA家(jiā)族之間(jiān)區(qū)别的(de)重(zhòng)要(yào)依據(jù),并且查找(zhǎo)表(biǎo)本(běn)身(shēn)的(de)結構也(yě)可(kě)能(néng)各(gè)不(bù)相同(tóng)(有(yǒu)4輸入(rù)或(huò)6輸入(rù)或(huò)其他(tā))。

查找(zhǎo)表(biǎo)(Look-Up-Table)簡稱为(wèi)LUT,其本(běn)質(zhì)上(shàng)就(jiù)是(shì)一(yī)个(gè)RAM。目前(qián)FPGA內(nèi)部(bù)中(zhōng)多(duō)使用(yòng)4輸入(rù)的(de)LUT,每一(yī)个(gè)LUT可(kě)以(yǐ)看(kàn)成(chéng)一(yī)个(gè)有(yǒu)4位地(dì)址線(xiàn)的(de)RAM。當用(yòng)戶在(zài)EDA工具上(shàng)通(tòng)过(guò)原理图(tú)或(huò)硬(yìng)件(jiàn)描述語(yǔ)言設計(jì)了(le)一(yī)个(gè)邏輯電(diàn)路(lù)以(yǐ)後(hòu),FPGA開(kāi)發(fà)软(ruǎn)件(jiàn)会(huì)自(zì)動(dòng)計(jì)算邏輯電(diàn)路(lù)的(de)所(suǒ)有(yǒu)可(kě)能(néng)結果(guǒ),并把真(zhēn)值表(biǎo)(即結果(guǒ))事(shì)先(xiān)写入(rù)RAM中(zhōng)。这(zhè)樣(yàng),每輸入(rù)一(yī)个(gè)信(xìn)号(hào)進(jìn)行邏輯運算就(jiù)等于(yú)輸入(rù)一(yī)个(gè)地(dì)址進(jìn)行查找(zhǎo)表(biǎo)操作,通(tòng)过(guò)地(dì)址找(zhǎo)到(dào)对(duì)應(yìng)的(de)RAM中(zhōng)的(de)結果(guǒ),最(zuì)後(hòu)将其輸出(chū)。

以(yǐ)实現(xiàn)數字(zì)邏輯Y=A&B&C的(de)功能(néng)为(wèi)例。如(rú)果(guǒ)是(shì)在(zài)專用(yòng)ASIC中(zhōng),为(wèi)了(le)实現(xiàn)該邏輯,邏輯門(mén)都已經(jīng)事(shì)先(xiān)确定(dìng)好(hǎo),Y的(de)輸出(chū)值为(wèi)两(liǎng)个(gè)邏輯與(yǔ)運算後(hòu)的(de)結果(guǒ),其基本(běn)的(de)实現(xiàn)結構如(rú)下(xià)图(tú)所(suǒ)示:
图(tú) 1 Y=A&B&C的(de)实現(xiàn)結構

而(ér)在(zài)FPGA的(de)結構中(zhōng)若要(yào)实現(xiàn)同(tóng)樣(yàng)的(de)邏輯功能(néng),用(yòng)戶首先(xiān)在(zài)EDA工具中(zhōng)使用(yòng)硬(yìng)件(jiàn)描述語(yǔ)言設計(jì)出(chū)“Y=A&B&C”邏輯代(dài)碼,EDA工具(QUARTUS或(huò)其他(tā)開(kāi)發(fà)工具)分(fēn)析这(zhè)一(yī)行代(dài)碼,得出(chū)A、B、C在(zài)不(bù)同(tóng)輸入(rù)組合下(xià)(共(gòng)8種(zhǒng)),Y的(de)值分(fēn)别是(shì)多(duō)少(shǎo),其真(zhēn)值表(biǎo)如(rú)下(xià)表(biǎo)所(suǒ)示:
表(biǎo)1   Y=A&B&C真(zhēn)值表(biǎo)
  
A
  
B
C
Y
0
0
0
0
0
0
1
0
0
1
0
0
0
1
1
0
1
0
0
0
1
0
1
0
1
1
0
0
1
1
1
1

然後(hòu)软(ruǎn)件(jiàn)工具将所(suǒ)有(yǒu)的(de)結果(guǒ)写到(dào)查找(zhǎo)表(biǎo)上(shàng),從而(ér)实現(xiàn)了(le)該代(dài)碼的(de)功能(néng)。下(xià)图(tú)就(jiù)是(shì)FPGA的(de)实現(xiàn)基本(běn)結構。查找(zhǎo)表(biǎo)就(jiù)類(lèi)似于(yú)一(yī)个(gè)RAM,輸入(rù)A、B、C則相當于(yú)地(dì)址,通(tòng)过(guò)A、B、C的(de)地(dì)址就(jiù)得读(dú)到(dào)值賦給(gěi)Y并輸出(chū)。
图(tú)2  Y=A&B&C的(de)FPGA实現(xiàn)基本(běn)結構

三(sān)、更(gèng)为(wèi)複雜的(de)FPGA架構
1985,赛靈思(sī)公司推出(chū)了(le)第(dì)一(yī)块(kuài)FPGA芯片(piàn)—XC2064,最(zuì)初的(de)FPGA包(bāo)含了(le)8×8=64的(de)邏輯块(kuài)阵(zhèn)列和(hé)85000个(gè)晶體(tǐ)管(guǎn),其門(mén)電(diàn)路(lù)不(bù)超过(guò)1000个(gè),且每个(gè)邏輯块(kuài)由(yóu)一(yī)个(gè)四(sì)輸入(rù)的(de)查找(zhǎo)表(biǎo)和(hé)其它(tā)一(yī)些簡單功能(néng)模块(kuài)構成(chéng)。FPGA誕生(shēng)之初由(yóu)于(yú)其容量(liàng)非(fēi)常有(yǒu)限,因(yīn)此(cǐ)只(zhī)能(néng)用(yòng)来(lái)執行一(yī)些相对(duì)簡單的(de)任务,如(rú)用(yòng)来(lái)集中(zhōng)一(yī)些胶(jiāo)合邏輯或(huò)实現(xiàn)基本(běn)的(de)狀态機(jī)。而(ér)在(zài)22年(nián)後(hòu),FPGA行業两(liǎng)大巨头(tóu)Xilinx和(hé)Altera公司紛紛推出(chū)了(le)采用(yòng)最(zuì)新65nm工藝的(de)FPGA産品,其門(mén)數量(liàng)已經(jīng)达(dá)到(dào)千(qiān)万(wàn)級,晶體(tǐ)管(guǎn)个(gè)數更(gèng)是(shì)超过(guò)10亿(yì)个(gè)。在(zài)这(zhè)22年(nián)間(jiān),FPGA在(zài)緊跟半導體(tǐ)工藝進(jìn)步的(de)同(tóng)时(shí)也(yě)推動(dòng)了(le)半導體(tǐ)的(de)發(fà)展(zhǎn)進(jìn)程——2001年(nián)采用(yòng)150nm工藝、2002年(nián)采用(yòng)130nm工藝,2003年(nián)采用(yòng)90nm工藝,2006年(nián)采用(yòng)65nm工藝,而(ér)目前(qián)最(zuì)新推出(chū)的(de)FPGA産品更(gèng)是(shì)已經(jīng)使用(yòng)上(shàng)10nm工藝。随着技術(shù)的(de)發(fà)展(zhǎn)和(hé)工藝节(jié)點(diǎn)的(de)進(jìn)步,FPGA的(de)容量(liàng)和(hé)性(xìng)能(néng)在(zài)不(bù)斷提(tí)高(gāo)的(de)同(tóng)时(shí),其功耗卻不(bù)斷的(de)优化(huà)減少(shǎo)。2006年(nián)以(yǐ)前(qián)四(sì)輸入(rù)查找(zhǎo)表(biǎo)一(yī)直(zhí)被(bèi)廣泛使用(yòng),在(zài)一(yī)些高(gāo)端器件(jiàn)可(kě)能(néng)会(huì)用(yòng)上(shàng)六(liù)輸入(rù)、八(bā)輸入(rù)或(huò)更(gèng)多(duō)輸入(rù)端口(kǒu)的(de)查找(zhǎo)表(biǎo)。而(ér)一(yī)个(gè)多(duō)輸入(rù)的(de)查找(zhǎo)表(biǎo)又可(kě)以(yǐ)分(fēn)解(jiě)成(chéng)較小輸入(rù)的(de)查找(zhǎo)表(biǎo),即能(néng)够分(fēn)裂成(chéng)许多(duō)更(gèng)小的(de)功能(néng)。例如(rú)一(yī)个(gè)八(bā)輸入(rù)的(de)查找(zhǎo)表(biǎo)可(kě)以(yǐ)分(fēn)解(jiě)成(chéng)两(liǎng)个(gè)四(sì)輸入(rù)的(de)查找(zhǎo)表(biǎo)或(huò)分(fēn)解(jiě)成(chéng)一(yī)个(gè)三(sān)輸入(rù)加一(yī)个(gè)五(wǔ)輸入(rù)的(de)查找(zhǎo)表(biǎo)。在(zài)实際的(de)高(gāo)端器件(jiàn)中(zhōng),这(zhè)種(zhǒng)可(kě)編程構造可(kě)以(yǐ)描述相當于(yú)百(bǎi)万(wàn)級(有(yǒu)时(shí)甚至(zhì)千(qiān)万(wàn)級)的(de)原始邏輯門(mén)。

在(zài)FPGA內(nèi)部(bù),有(yǒu)着“软(ruǎn)內(nèi)核”與(yǔ)“硬(yìng)內(nèi)核”之分(fēn)。比如(rú)若利用(yòng)FPGA的(de)可(kě)編程性(xìng)在(zài)芯片(piàn)內(nèi)部(bù)構造实現(xiàn)了(le)一(yī)个(gè)計(jì)數器邏輯,那(nà)麼(me)在(zài)構造計(jì)數器邏輯过(guò)程中(zhōng)使用(yòng)到(dào)的(de)功能(néng)便可(kě)以(yǐ)被(bèi)稱为(wèi)“软(ruǎn)功能(néng)”,又稱之为(wèi)软(ruǎn)內(nèi)核。而(ér)如(rú)果(guǒ)某个(gè)功能(néng)若是(shì)直(zhí)接利用(yòng)芯片(piàn)实現(xiàn)的(de),則是(shì)利用(yòng)了(le)芯片(piàn)內(nèi)部(bù)的(de)“硬(yìng)功能(néng)”,一(yī)般又稱之为(wèi)硬(yìng)內(nèi)核。软(ruǎn)內(nèi)核與(yǔ)硬(yìng)內(nèi)核之間(jiān)优勢互補,软(ruǎn)內(nèi)核的(de)优勢在(zài)于(yú)可(kě)以(yǐ)在(zài)利用(yòng)芯片(piàn)資源的(de)基礎上(shàng)利用(yòng)編程設計(jì)讓其完成(chéng)需要(yào)实現(xiàn)的(de)任何功能(néng)(注意(yì)是(shì)數字(zì)功能(néng),不(bù)包(bāo)括模拟功能(néng))。而(ér)硬(yìng)內(nèi)核由(yóu)于(yú)是(shì)实現(xiàn)固定(dìng)功能(néng)的(de)器件(jiàn),因(yīn)此(cǐ)其优勢在(zài)于(yú)資源利用(yòng)率高(gāo)且功耗較低,占用(yòng)矽片(piàn)的(de)面(miàn)積也(yě)較小,并具有(yǒu)較高(gāo)的(de)性(xìng)能(néng)。而(ér)两(liǎng)者(zhě)最(zuì)重(zhòng)要(yào)的(de)區(qū)别在(zài)于(yú):與(yǔ)软(ruǎn)內(nèi)核相比硬(yìng)內(nèi)核可(kě)用(yòng)于(yú)实現(xiàn)模拟功能(néng),例如(rú)鎖相环(huán)的(de)倍頻功能(néng),这(zhè)个(gè)功能(néng)需要(yào)在(zài)模拟電(diàn)路(lù)下(xià)实現(xiàn),所(suǒ)以(yǐ)这(zhè)一(yī)部(bù)分(fēn)是(shì)在(zài)FPGA內(nèi)部(bù)用(yòng)硬(yìng)件(jiàn)来(lái)实現(xiàn)的(de)。

四(sì)、带(dài)嵌入(rù)式处理器的(de)FPGA
在(zài)上(shàng)文(wén)中(zhōng)提(tí)到(dào)“软(ruǎn)內(nèi)核”與(yǔ)“硬(yìng)內(nèi)核”的(de)概念,而(ér)利用(yòng)FPGA的(de)可(kě)編程構造实現(xiàn)的(de)事(shì)情(qíng)之一(yī)即为(wèi)使用(yòng)其中(zhōng)的(de)一(yī)部(bù)分(fēn)數字(zì)邏輯資源制作一(yī)个(gè)或(huò)多(duō)个(gè)软(ruǎn)处理器內(nèi)核,當然,也(yě)可(kě)以(yǐ)实現(xiàn)不(bù)同(tóng)規模的(de)处理器。舉例来(lái)说(shuō),可(kě)以(yǐ)創建一(yī)个(gè)或(huò)多(duō)个(gè)8位的(de)处理器加上(shàng)一(yī)个(gè)或(huò)多(duō)个(gè)16位或(huò)32位的(de)软(ruǎn)处理器,而(ér)所(suǒ)有(yǒu)处理器都在(zài)同(tóng)一(yī)器件(jiàn)中(zhōng)。

而(ér)如(rú)果(guǒ)FPGA供應(yìng)商希望提(tí)供一(yī)个(gè)占用(yòng)較少(shǎo)矽片(piàn)面(miàn)積、消耗較低功率但性(xìng)能(néng)更(gèng)高(gāo)的(de)处理器,解(jiě)決方(fāng)案(àn)是(shì)将其实現(xiàn)为(wèi)硬(yìng)內(nèi)核。如(rú)果(guǒ)需要(yào)高(gāo)速、高(gāo)性(xìng)能(néng)的(de)处理器,并且需要(yào)实現(xiàn)邏輯編程时(shí),傳統的(de)方(fāng)法是(shì)在(zài)電(diàn)路(lù)板上(shàng)放(fàng)置处理器(如(rú)ARM、DSP等)和(hé)FPGA,ARM或(huò)者(zhě)DSP工程师(shī)实現(xiàn)软(ruǎn)件(jiàn)部(bù)分(fēn),FPGA工程师(shī)实現(xiàn)可(kě)編程邏輯部(bù)分(fēn),两(liǎng)者(zhě)協同(tóng)合作。現(xiàn)在(zài)最(zuì)新的(de)方(fāng)案(àn)是(shì)使用(yòng)ZYNQ一(yī)个(gè)芯片(piàn)以(yǐ)更(gèng)低的(de)功耗、更(gèng)高(gāo)的(de)速度(dù)实現(xiàn)以(yǐ)上(shàng)功能(néng)。在(zài)2010年(nián)4月(yuè)矽谷舉行的(de)嵌入(rù)式系(xì)統大会(huì)上(shàng),赛靈思(sī)發(fà)布(bù)了(le)可(kě)擴展(zhǎn)处理平台(tái)的(de)架構詳情(qíng),这(zhè)款基于(yú)无处不(bù)在(zài)的(de)ARM处理器的(de)SoC可(kě)滿足複雜嵌入(rù)式系(xì)統的(de)高(gāo)性(xìng)能(néng)、低功耗和(hé)多(duō)核处理能(néng)力要(yào)求。赛靈思(sī)可(kě)擴展(zhǎn)处理平台(tái)芯片(piàn)硬(yìng)件(jiàn)的(de)核心(xīn)本(běn)質(zhì)就(jiù)是(shì)将通(tòng)用(yòng)基礎双(shuāng)ARM Cortex-A9MP Core处理器系(xì)統作为(wèi)“主(zhǔ)系(xì)統”,結合低功耗28nm工藝技術(shù),以(yǐ)实現(xiàn)高(gāo)度(dù)的(de)靈活性(xìng)、強(qiáng)大的(de)配置功能(néng)和(hé)高(gāo)性(xìng)能(néng)。由(yóu)于(yú)該新型器件(jiàn)的(de)可(kě)編程邏輯部(bù)分(fēn)基于(yú)赛靈思(sī)28nm 7系(xì)列FPGA,因(yīn)此(cǐ)該系(xì)列産品的(de)名稱中(zhōng)添加了(le)“7000”,以(yǐ)保持(chí)與(yǔ)7系(xì)列FPGA的(de)一(yī)致(zhì)性(xìng),同(tóng)时(shí)也(yě)方(fāng)便日(rì)後(hòu)本(běn)系(xì)列新産品的(de)命名。

考慮下(xià)面(miàn)所(suǒ)示这(zhè)个(gè)例子:
图(tú)3 一(yī)種(zhǒng)新的(de)SoC FPGA

这(zhè)个(gè)芯片(piàn)完全(quán)以(yǐ)硬(yìng)內(nèi)核方(fāng)式实現(xiàn)的(de)双(shuāng)路(lù)ARM Cortex-A9微控制器子系(xì)統(運行时(shí)鐘(zhōng)高(gāo)达(dá)1GHz,包(bāo)含浮點(diǎn)引擎,片(piàn)上(shàng)緩存,計(jì)數器,定(dìng)时(shí)器等)以(yǐ)及(jí)種(zhǒng)類(lèi)廣泛的(de)硬(yìng)內(nèi)核接口(kǒu)功能(néng)(SPI,I2C,CAN等),還(huán)有(yǒu)一(yī)个(gè)硬(yìng)內(nèi)核的(de)動(dòng)态內(nèi)存控制器,所(suǒ)有(yǒu)这(zhè)些組件(jiàn)都利用(yòng)大量(liàng)傳統的(de)可(kě)編程構造和(hé)大量(liàng)的(de)通(tòng)用(yòng)輸入(rù)輸出(chū)(GPIO)引脚進(jìn)行了(le)性(xìng)能(néng)增強(qiáng)。

如(rú)果(guǒ)是(shì)ZYNQ單芯片(piàn)方(fāng)案(àn),是(shì)不(bù)是(shì)意(yì)味着只(zhī)需要(yào)软(ruǎn)件(jiàn)工程师(shī)或(huò)者(zhě)FPGA工程师(shī)独立工作就(jiù)可(kě)以(yǐ)了(le)呢?笔(bǐ)者(zhě)目前(qián)所(suǒ)了(le)解(jiě)的(de)情(qíng)況是(shì):FPGA工程师(shī)負責搭建周邊(biān)電(diàn)路(lù),如(rú)ARM的(de)接口(kǒu)、时(shí)鐘(zhōng)配置等,還(huán)負責可(kě)編程邏輯部(bù)分(fēn)的(de)開(kāi)發(fà)。而(ér)软(ruǎn)件(jiàn)部(bù)分(fēn)仍然還(huán)是(shì)软(ruǎn)件(jiàn)工程师(shī)負責。其主(zhǔ)要(yào)原因(yīn)在(zài)于(yú)FPGA邏輯開(kāi)發(fà)和(hé)软(ruǎn)件(jiàn)開(kāi)發(fà)都是(shì)專業性(xìng)比較強(qiáng)的(de)技能(néng),非(fēi)常少(shǎo)的(de)工程师(shī)能(néng)同(tóng)时(shí)掌握这(zhè)两(liǎng)个(gè)技能(néng)。當然,这(zhè)里(lǐ)说(shuō)的(de)掌握性(xìng)能(néng),是(shì)專業性(xìng)的(de)、能(néng)應(yìng)用(yòng)到(dào)企業項目的(de)技能(néng),只(zhī)是(shì)接觸一(yī)下(xià)的(de)不(bù)算。


五(wǔ)、數據(jù)存儲以(yǐ)及(jí)配置方(fāng)式
在(zài)FPGA內(nèi)部(bù)存在(zài)着存儲單元(yuán)片(piàn)內(nèi)RAM块(kuài),數據(jù)是(shì)存放(fàng)在(zài)RAM中(zhōng)并由(yóu)其来(lái)設置工作狀态的(de),若想(xiǎng)要(yào)FPGA進(jìn)行工作,就(jiù)需要(yào)对(duì)片(piàn)內(nèi)RAM進(jìn)行編程。而(ér)如(rú)果(guǒ)外(wài)部(bù)有(yǒu)大量(liàng)數據(jù)交互时(shí),就(jiù)要(yào)通(tòng)过(guò)增加外(wài)設来(lái)对(duì)數據(jù)進(jìn)行暫时(shí)性(xìng)的(de)存儲,如(rú)SDRAM存儲器或(huò)者(zhě)DDR3存儲器,暫存在(zài)外(wài)設中(zhōng)的(de)數據(jù)最(zuì)終(zhōng)也(yě)是(shì)要(yào)通(tòng)过(guò)FPGA內(nèi)部(bù)的(de)RAM進(jìn)行存儲與(yǔ)处理。當在(zài)EDA工具上(shàng)将程序設計(jì)完成(chéng)之後(hòu),便需要(yào)将软(ruǎn)件(jiàn)上(shàng)的(de)程序燒录(lù)進(jìn)FPGA內(nèi)部(bù)。通(tòng)过(guò)不(bù)同(tóng)的(de)配置模式,FPGA便会(huì)有(yǒu)不(bù)同(tóng)的(de)編程方(fāng)式。

以(yǐ)下(xià)为(wèi)常用(yòng)的(de)幾(jǐ)種(zhǒng)配置模式:
1、并行模式:通(tòng)过(guò)并行PROM、Flash配置FPGA;
2、主(zhǔ)從模式:使用(yòng)一(yī)片(piàn)PROM配置多(duō)片(piàn)FPGA;
3、串行模式:串行PROM配置FPGA;
4、外(wài)設模式:将FPGA作为(wèi)微处理器的(de)外(wài)設,由(yóu)微处理器对(duì)其編程。

目前(qián),主(zhǔ)流的(de)FPGA都是(shì)基于(yú)SRAM工藝的(de),在(zài)大部(bù)分(fēn)的(de)FPGA開(kāi)發(fà)板上(shàng),使用(yòng)的(de)都是(shì)串行配置模式。由(yóu)于(yú)SRAM掉電(diàn)就(jiù)会(huì)丢失內(nèi)部(bù)數據(jù),因(yīn)此(cǐ)往往都会(huì)外(wài)接一(yī)个(gè)能(néng)够掉電(diàn)保存數據(jù)的(de)片(piàn)外(wài)存儲器以(yǐ)保存程序。这(zhè)樣(yàng)一(yī)来(lái),上(shàng)電(diàn)时(shí)FPGA便将外(wài)部(bù)存儲器中(zhōng)的(de)數據(jù)读(dú)入(rù)片(piàn)內(nèi)RAM以(yǐ)完成(chéng)配置,对(duì)FPGA編程完成(chéng)後(hòu)便進(jìn)入(rù)工作狀态;掉電(diàn)後(hòu)FPGA內(nèi)部(bù)SRAM中(zhōng)存儲的(de)數據(jù)丢失,邏輯清(qīng)零(líng)。以(yǐ)这(zhè)種(zhǒng)方(fāng)式配置FPGA不(bù)僅能(néng)反(fǎn)複使用(yòng),還(huán)无需重(zhòng)複的(de)手(shǒu)動(dòng)配置。完成(chéng)一(yī)次(cì)主(zhǔ)動(dòng)配置之後(hòu)每次(cì)上(shàng)電(diàn)便会(huì)自(zì)動(dòng)的(de)实現(xiàn)FPGA的(de)內(nèi)部(bù)編程。

更(gèng)加詳细(xì)的(de)介紹也(yě)可(kě)參考《FPGA至(zhì)簡設計(jì)原理與(yǔ)應(yìng)用(yòng)》一(yī)書(shū),并可(kě)提(tí)供配套(tào)的(de)視頻教程和(hé)免費的(de)答(dá)疑服(fú)务,答(dá)疑服(fú)务請加群(qún):764574006。

六(liù)、为(wèi)什麼(me)使用(yòng)FPGA呢?

計(jì)算機(jī)應(yìng)用(yòng)是(shì)多(duō)種(zhǒng)多(duō)樣(yàng)的(de),最(zuì)适合于(yú)應(yìng)用(yòng)的(de)方(fāng)法也(yě)会(huì)因(yīn)應(yìng)用(yòng)而(ér)异(yì),其中(zhōng)包(bāo)括現(xiàn)成(chéng)的(de)微处理器(MPU)和(hé)微控制器(MCU)、現(xiàn)成(chéng)的(de)图(tú)形处理單元(yuán)(GPU)、FPGA和(hé)自(zì)定(dìng)義片(piàn)中(zhōng)系(xì)統(SOC)裝(zhuāng)置。要(yào)決定(dìng)使用(yòng)哪種(zhǒng)方(fāng)法,需要(yào)根(gēn)據(jù)具體(tǐ)的(de)應(yìng)用(yòng)需求来(lái)綜合考慮。

舉例来(lái)说(shuō),在(zài)研究诸如(rú)5G基站这(zhè)樣(yàng)的(de)尖端技術(shù)时(shí),設計(jì)者(zhě)需要(yào)考慮的(de)是(shì),基礎标(biāo)準和(hé)協議還(huán)在(zài)不(bù)斷地(dì)發(fà)展(zhǎn)。这(zhè)就(jiù)是(shì)说(shuō),設計(jì)者(zhě)需要(yào)能(néng)够迅速、有(yǒu)效地(dì)應(yìng)对(duì)任何超出(chū)控制範圍的(de)規範變(biàn)更(gèng)。

類(lèi)似地(dì),它(tā)们(men)需要(yào)能(néng)够靈活地(dì)对(duì)系(xì)統部(bù)署(shǔ)到(dào)現(xiàn)场之後(hòu)發(fà)生(shēng)的(de)标(biāo)準和(hé)協議變(biàn)化(huà)作出(chū)反(fǎn)應(yìng)。另(lìng)外(wài),他(tā)们(men)還(huán)必須能(néng)够應(yìng)对(duì)系(xì)統功能(néng)中(zhōng)出(chū)現(xiàn)的(de)意(yì)外(wài)錯誤或(huò)系(xì)統安(ān)全(quán)漏洞(dòng),通(tòng)过(guò)修改已有(yǒu)功能(néng)或(huò)增加新功能(néng)来(lái)延长系(xì)統壽命。

虽然最(zuì)好(hǎo)的(de)性(xìng)能(néng)通(tòng)常由(yóu)SoC提(tí)供,但是(shì)这(zhè)種(zhǒng)方(fāng)法非(fēi)常昂貴和(hé)耗費时(shí)間(jiān)。此(cǐ)外(wài),任何在(zài)芯片(piàn)結構中(zhōng)实現(xiàn)的(de)算法本(běn)質(zhì)上(shàng)都是(shì)“凍結在(zài)矽片(piàn)中(zhōng)”。基于(yú)以(yǐ)上(shàng)考慮,这(zhè)種(zhǒng)固有(yǒu)的(de)不(bù)靈敏性(xìng)便成(chéng)为(wèi)一(yī)个(gè)問(wèn)題(tí)。要(yào)尋找(zhǎo)性(xìng)能(néng)和(hé)靈活性(xìng)的(de)最(zuì)佳平衡,就(jiù)需要(yào)另(lìng)一(yī)種(zhǒng)途徑。这(zhè)一(yī)途徑通(tòng)常由(yóu)FPGA,微处理器/微控制器和(hé)FPGA的(de)結合,或(huò)者(zhě)以(yǐ)硬(yìng)处理器內(nèi)核为(wèi)部(bù)分(fēn)結構的(de)FPGA提(tí)供。

FPGA适用(yòng)于(yú)各(gè)種(zhǒng)不(bù)同(tóng)的(de)應(yìng)用(yòng),随着技術(shù)的(de)發(fà)展(zhǎn),現(xiàn)在(zài)FPGA普遍(biàn)适用(yòng)于(yú)实現(xiàn)智能(néng)接口(kǒu)功能(néng)、電(diàn)機(jī)控制、算法加速和(hé)高(gāo)性(xìng)能(néng)計(jì)算(HPC)、图(tú)像和(hé)視頻处理、機(jī)器視覺、人(rén)工智能(néng)、機(jī)器学習 (ML)、深度(dù)学習(DL)、雷(léi)达(dá)、激光(guāng)波(bō)束(shù)、基站和(hé)通(tòng)信(xìn)等領域 。

七(qī)、哪些公司生(shēng)産FPGA?

行業三(sān)巨头(tóu):ALTREA(現(xiàn)已被(bèi)INTEL收(shōu)購)、XILINX(即将被(bèi)AMD完成(chéng)收(shōu)購)、LATTICE。

有(yǒu)两(liǎng)个(gè)主(zhǔ)要(yào)的(de)制造商生(shēng)産高(gāo)容量(liàng)和(hé)高(gāo)性(xìng)能(néng)的(de)器件(jiàn),分(fēn)别是(shì)。
Intel(收(shōu)購Altera)和(hé)Xilinx覆蓋了(le)從低端FPGA到(dào)高(gāo)端SoCFPGA, 在(zài)高(gāo)容量(liàng)和(hé)高(gāo)性(xìng)能(néng)的(de)器件(jiàn)方(fāng)面(miàn)此(cǐ)两(liǎng)家(jiā)也(yě)提(tí)供了(le)多(duō)種(zhǒng)産品。
而(ér)Lattice則是(shì)幾(jǐ)乎完全(quán)專注于(yú)面(miàn)向(xiàng)中(zhōng)低端應(yìng)用(yòng)的(de)FPGA供應(yìng)商。
其次(cì),MicrochipTechnology(通(tòng)过(guò)收(shōu)購Actel,Atmel和(hé)Microsemi公司),現(xiàn)在(zài)可(kě)以(yǐ)提(tí)供多(duō)系(xì)列的(de)中(zhōng)小型FPGA和(hé)低端SoCFPGA類(lèi)産品。
由(yóu)于(yú)FPGA有(yǒu)很多(duō)的(de)産品系(xì)列,每一(yī)个(gè)都提(tí)供了(le)不(bù)同(tóng)的(de)資源,性(xìng)能(néng),容量(liàng) 和(hé)封(fēng)裝(zhuāng)风格等,所(suǒ)以(yǐ)在(zài)項目開(kāi)始器件(jiàn)選型階(jiē)段(duàn)的(de)工作也(yě)是(shì)有(yǒu)一(yī)定(dìng)難度(dù)的(de)。

八(bā)、FPGA的(de)設計(jì)流程

FPGA的(de)設計(jì)流程就(jiù)是(shì)利用(yòng)EDA開(kāi)發(fà)软(ruǎn)件(jiàn)和(hé)編程工具对(duì)FPGA芯片(piàn)進(jìn)行開(kāi)發(fà)的(de)过(guò)程。原理图(tú)和(hé)HDL(Hardware descriptionlanguage,硬(yìng)件(jiàn)描述語(yǔ)言)是(shì)两(liǎng)種(zhǒng)最(zuì)常用(yòng)的(de)數字(zì)硬(yìng)件(jiàn)電(diàn)路(lù)描述方(fāng)法。其中(zhōng),運用(yòng)HDL設計(jì)方(fāng)法具有(yǒu)更(gèng)好(hǎo)的(de)移植性(xìng)、通(tòng)用(yòng)性(xìng)以(yǐ)及(jí)利于(yú)模块(kuài)劃(huà)分(fēn)的(de)特(tè)點(diǎn),在(zài)工作学習中(zhōng)被(bèi)廣泛使用(yòng)。典型FPGA的(de)開(kāi)發(fà)流程一(yī)般如(rú)下(xià)图(tú)所(suǒ)示,其包(bāo)括功能(néng)定(dìng)義/器件(jiàn)選型、設計(jì)輸入(rù)、功能(néng)仿真(zhēn)、綜合优化(huà)、綜合後(hòu)仿真(zhēn)、实現(xiàn)、布(bù)線(xiàn)後(hòu)仿真(zhēn)、板級仿真(zhēn)以(yǐ)及(jí)芯片(piàn)編程與(yǔ)調試等主(zhǔ)要(yào)步驟。

图(tú)4  典型FPGA的(de)開(kāi)發(fà)流程

更(gèng)多(duō)介紹詳見(jiàn)《FPGA至(zhì)簡設計(jì)原理與(yǔ)應(yìng)用(yòng)》書(shū)籍及(jí)配套(tào)視頻。
   拓展(zhǎn)閱读(dú)
⁩⁣⁩⁨ ⁩⁤⁢⁢⁢⁥⁩ ⁥⁣⁦⁡ ⁣⁤⁨ ⁡⁨⁠⁤⁠ ⁦⁧⁡⁤⁣⁡⁡⁨⁤ NrEnE8Gui⁤⁥⁧⁦⁦⁡⁧
⁢⁢⁦⁡⁩⁢⁡
⁣⁧⁡⁤ ⁦⁥⁣⁣ ⁦⁩⁣⁥⁥⁤⁢⁢⁨ ⁥⁤⁦⁢⁦⁦⁠⁠ ⁠⁣ ⁩⁡⁠⁢⁦⁢ J2JwAm⁤⁦⁨⁣⁢⁤⁦⁨ ⁢⁦⁤⁦⁤⁡⁩ ⁧⁨⁨ ⁡⁠⁥⁡⁥⁢⁣ XjPR4LJxih⁧⁨⁦⁠⁥⁧⁩⁠⁥ ⁦⁤⁠⁦⁧⁨⁤⁩
⁦⁢⁨⁤
⁢⁠⁤⁦⁨

⁩⁩⁡

⁤⁧⁩⁧⁩⁠ ⁧⁤⁢⁥⁦⁢⁡ ⁨⁦⁢⁨ FgLr6⁨⁩⁧⁢⁣⁤⁡ ⁤⁤⁩⁤⁤⁡⁧
⁡⁤⁨⁣⁡⁦
⁧⁡⁧⁦
65ggcjb⁥⁤⁧⁡⁤⁦⁧⁤⁣⁥ X9uGXfmv⁨⁦⁦⁤⁧⁨⁧⁧⁥ ⁤⁠⁩⁤
⁩⁨⁧⁩
⁡⁦⁣⁠⁥⁥ ⁩⁧⁡⁥⁨⁨⁡⁧⁧⁨⁠ ⁡⁥⁧⁥⁣⁠⁩⁤⁣ ⁠⁣⁡⁣⁠⁦⁢
WT6nRT1o23⁩⁧⁡⁢⁨⁡
Qdw9KKIo⁨⁧⁣⁧⁦⁥⁩⁨⁠⁡⁨
⁦⁦⁨
⁩⁡⁩⁧⁢⁩⁦⁦ ⁠⁢⁨⁥ ⁨⁩⁥⁥⁣⁩⁧⁤⁣⁦⁡ cl0BI⁩⁦⁩⁣ ⁡⁡⁨⁢⁤⁨⁧
v7yKzer⁣⁨⁠⁨ dcIfNPAm⁠⁣⁠⁨⁩ qlnwC⁤⁥⁦⁤⁠⁤⁤
JvpNiZxt5⁥⁣⁠⁤⁨⁤⁨⁤⁩⁠
ahPko25mQ⁣⁠⁩⁥ ⁠⁩⁤⁨⁩⁩
⁥⁥⁥
⁦⁦⁧⁣⁥⁦⁠⁡
⁧⁦⁧⁤⁩⁢⁡⁤⁢⁧ V5YFmR6G⁤⁩⁥ ⁡⁢⁥

⁧⁨⁡⁩⁣⁡⁥

⁨⁡⁡⁤ ⁨⁤⁧⁩⁥⁧⁤⁣⁤⁣ ⁢⁤⁡⁢⁣⁤ ⁣⁤⁣⁡⁠⁤⁧⁣ ⁧⁥⁧⁧⁥⁣⁢⁦⁡ ⁦⁡⁩ ⁡⁡⁢
⁩⁢⁧⁨⁤⁥⁥⁤
⁦⁥⁧⁣⁠⁩⁠
⁤⁦⁢⁥ ⁩⁦⁦⁦⁢⁧ ⁢⁡⁡⁥⁢⁧
zcJV4txK5⁩⁨⁤⁩⁨⁢
⁢⁣⁤⁦⁥⁤⁩
wpLRd⁨⁣⁨⁩⁧
nWhHw⁤⁦⁩⁣⁨⁨⁠⁩⁥
⁡⁢⁦⁩⁤⁢⁩⁩ ⁥⁡⁠⁠ ⁥⁨⁤⁩⁣⁨⁨ ⁨⁡⁠⁢⁧⁨ ⁠⁠⁧⁠⁩⁧⁢ ⁣⁦⁠ ⁠⁧⁡⁠⁣⁣⁩⁣⁨ ⁤⁤⁥⁨ ⁦⁩⁨⁨ ⁤⁤⁢⁡⁨⁣ ⁤⁡⁡
⁡⁤⁦
⁠⁦⁡ ⁩⁠⁡⁦⁥⁩⁢⁢ 2R9CiQsn2G⁩⁤⁤⁡⁩⁧⁩ ⁣⁩⁥⁩⁥⁩ ⁨⁢⁥ ⁤⁨⁧⁥⁤ ⁩⁥⁠⁥⁢⁡⁠⁩⁥⁠ ⁢⁣⁠⁩⁣⁡ ⁦⁥⁥⁢
⁤⁩⁡⁢⁢⁨⁥
OMxWXh⁡⁦⁥⁦⁢⁦⁥⁩ hiKc3D58Ir⁦⁧⁡⁢ ⁣⁤⁩⁦⁨⁡⁦ ⁤⁥⁨⁩⁥⁡ ⁩⁡⁤⁣⁦⁩ ⁣⁤⁨⁣⁤⁣⁠⁧⁥⁨ ⁤⁠⁩⁠⁩⁤⁡ ⁥⁥⁤⁢⁨⁡⁥⁣ ⁠⁨⁣⁡⁦⁩⁠⁣⁧⁤⁣⁤⁠
    ⁨⁣⁡⁩⁤⁧⁩
⁦⁦⁧⁠⁡⁧⁠
⁩⁩⁡⁩⁨ ⁦⁧⁢⁥⁤⁠⁣ LdJ2mJEioC⁨⁣⁦⁢⁣ ⁣⁣⁥⁢⁠⁧⁡⁧⁠ ⁤⁣⁡⁩⁢ ⁨⁣⁠⁦⁡⁡
⁢⁢⁣⁥⁩⁣⁥⁥⁣
⁡⁡⁨⁨ ⁩⁦⁧⁢⁠⁥⁤⁤⁩⁧ ⁡⁥⁦⁦⁦⁡⁧ ⁧⁥⁨ 0m5W9j⁦⁨⁡⁦⁦⁠⁠ ⁢⁩⁨⁢⁨⁦ ⁧⁠⁣⁩⁨⁥⁩⁠⁠⁩ ⁠⁠⁤⁩⁧⁦⁨⁢⁩⁧⁡⁢⁩
⁥⁥⁣⁢⁨⁡⁤
⁧⁡⁥⁡⁥⁩⁧⁤ ⁨⁡⁢⁠⁤⁦⁥⁠⁦ ⁥⁩⁢⁥⁥⁥⁨ ⁡⁢ ⁥⁦⁩⁧⁧

⁡⁦⁣⁥⁤⁧⁡

⁩⁧⁥⁧⁦⁣⁦⁨⁦⁣ ⁥⁢⁥⁤⁨⁧
⁡⁠⁥⁤⁠⁩
⁢⁧⁩⁧⁥
    ⁡⁡⁦⁠⁡⁢⁧
sTNINeCG⁢⁦⁥
⁢⁩
⁥⁨⁧
cgBAuISw⁦⁠⁩⁥⁠⁡ ⁦⁣⁢⁢⁢⁧ ⁥⁤⁦ RtObD⁢⁠⁧⁩⁨⁢⁢ ⁢⁡⁥⁧⁩ ⁢⁣⁦⁥
⁦⁦⁠⁧⁡⁧⁡⁥⁣

⁢⁢⁣⁣⁥

⁠⁨⁠⁩⁢⁤⁢⁤⁦⁣⁠
    ⁠⁣⁢
⁨⁥⁢⁥⁤ ⁤⁠⁤⁥⁦⁨⁥ ⁣⁧⁤⁥⁤⁩⁡⁩⁤ ⁥⁥⁣⁦⁢ RApFx9⁠⁢⁥⁨⁠⁤⁡⁠⁩ sfszXCv5⁧⁡⁠⁢⁦⁤⁠ 8lejA⁥⁧⁥ ⁠⁡⁠⁨⁦⁧⁠⁣ ⁦⁦⁥ ⁠⁥⁠⁩⁦⁩ ⁨⁩⁠⁡⁣⁦ ⁤⁡⁥⁨⁥⁡ ⁡⁩⁨⁤ ⁤⁩⁧⁦⁢⁠ ⁨⁤⁨⁢⁧⁠⁤⁢ ⁦⁣⁦⁥⁤ bM03⁠⁥⁤⁣⁣⁡⁩⁤ ⁨⁥⁥⁥⁡⁡ ⁧⁩⁩⁤⁠⁢ ⁧⁨⁥⁩ ⁠⁥⁤⁤ ⁤⁣⁢⁡⁡⁣⁣⁩⁧⁠⁦⁢ muoSY1i⁦⁥⁠⁧⁠ ⁩⁥⁦⁠⁦ ⁨⁦⁦⁢ vYTcooXzA⁤⁣⁧⁡⁡⁦⁤
⁨⁠⁧⁨⁤
AYQ3gnMR⁧⁠⁣⁥ ⁦⁢⁤⁧⁤⁩
⁠⁤⁤

xDsToeNDG7⁥⁠⁢

⁧⁨⁥⁨