第(dì)一(yī)章(zhāng) FPGA簡介
本(běn)文(wén)的(de)文(wén)檔編号(hào):001500000028
需要(yào)看(kàn)对(duì)應(yìng)的(de)視頻,請點(diǎn)擊視頻編号(hào):001000000047
1、本(běn)章(zhāng)主(zhǔ)要(yào)介紹了(le)FPGA的(de)概念、基本(běn)結構,以(yǐ)及(jí)FPGA芯片(piàn)的(de)架構和(hé)工作原理(數據(jù)存儲以(yǐ)及(jí)配置方(fāng)式)。
2、这(zhè)是(shì)ALTERA和(hé)VIVADO文(wén)檔
1 什麼(me)是(shì)FPGA
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。
第(dì)2节(jié) 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.1-SEQ 图(tú)_3.3_- * ARABIC1Y=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.1- SEQ 表(biǎo)1.1- * ARABIC1 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ú) 1.1-SEQ 图(tú)_3.3_- * ARABIC2Y=A&B&C的(de)FPGA实現(xiàn)基本(běn)結構
第(dì)3节(jié) 更(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)。
第(dì)4节(jié) 带(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-A9 MP 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ú) 1.1-SEQ 图(tú)_3.3_- * ARABIC3一(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)呢?目前(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ù)算。
第(dì)5节(jié) 數據(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ù)編程。








