最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

FPGA簡(jiǎn)介

2022-12-21 10:23 作者:明德?lián)P易老師  | 我要投稿

??導(dǎo)讀:FPGA是什么?

FPGA是Field Programmable Gate Array的簡(jiǎn)稱(chēng),中文名稱(chēng)為現(xiàn)場(chǎng)可編程門(mén)陣列,是一種可編程器件,是在PAL(可編程邏輯陣列)、GAL(通用陣列邏輯)、CPLD(復(fù)雜可編程邏輯器件)等傳統(tǒng)邏輯電路和門(mén)陣列的基礎(chǔ)上發(fā)展起來(lái)的一種半定制電路,主要應(yīng)用于A(yíng)SIC(專(zhuān)用集成電路)領(lǐng)域,既解決了半定制電路的不足,又克服了原有可編程器件門(mén)電路數(shù)有限的缺點(diǎn)。




第一篇?FPGA基礎(chǔ)知識(shí)

本文的文檔編號(hào):001500000028

需要看對(duì)應(yīng)的視頻,請(qǐng)點(diǎn)擊視頻編號(hào):001000000047

1、本章主要介紹了FPGA的概念、基本結(jié)構(gòu),以及FPGA芯片的架構(gòu)和工作原理(數(shù)據(jù)存儲(chǔ)以及配置方式)。
2、這是ALTERA和VIVADO文檔


第一章 FPGA簡(jiǎn)介

第1節(jié)?什么是FPGA
FPGA的全稱(chēng)為Field-Programmable Gate Array,即現(xiàn)場(chǎng)可編程門(mén)陣列。在開(kāi)始學(xué)習(xí)FPGA之前,同學(xué)們首先應(yīng)該清楚地了解FPGA的概念,明白FPGA到底是什么東西,可以用來(lái)做什么。FPGA是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物,是作為專(zhuān)用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門(mén)電路數(shù)有限的缺點(diǎn)。簡(jiǎn)而言之,F(xiàn)PGA就是一個(gè)可以通過(guò)編程來(lái)改變內(nèi)部結(jié)構(gòu)的芯片。

直觀(guān)來(lái)說(shuō),F(xiàn)PGA就是一個(gè)可以“改變”內(nèi)部結(jié)構(gòu)的芯片,而讓這個(gè)芯片來(lái)實(shí)現(xiàn)怎樣的功能,就需要通過(guò)編程即設(shè)計(jì)硬件描述語(yǔ)言,經(jīng)過(guò)EDA工具編譯、綜合、布局布線(xiàn)成后轉(zhuǎn)換為可燒錄的文件,最終加載到FPGA器件中去,改變FPGA內(nèi)部的連線(xiàn),最終完成所實(shí)現(xiàn)的功能。此時(shí)的FPGA就可以認(rèn)為是用來(lái)實(shí)現(xiàn)具體功能的一個(gè)粗糙的芯片。

稍微接觸過(guò)硬件的人大概都聽(tīng)說(shuō)過(guò)另一種集成電路芯片即單片機(jī),那么FPGA與單片機(jī)在結(jié)構(gòu)上有著怎樣的差別呢?對(duì)于單片機(jī)而言,F(xiàn)PGA是一種微處理器,類(lèi)似于電腦的CPU,一般是基于哈佛總線(xiàn)結(jié)構(gòu)或者馮·諾依曼結(jié)構(gòu)。單片機(jī)用途廣泛,多用于控制流水線(xiàn)上;FPGA的結(jié)構(gòu)是查找表,它的結(jié)構(gòu)比較復(fù)雜,相對(duì)應(yīng)的它可以實(shí)現(xiàn)的功能也很強(qiáng)大,一般應(yīng)用于通信接口設(shè)計(jì)、數(shù)字信號(hào)處理等比較高端的場(chǎng)合,而且FPGA還有一個(gè)特殊的應(yīng)用場(chǎng)合,即ASIC的原型驗(yàn)證。

相較于專(zhuān)職專(zhuān)用的ASIC,F(xiàn)PGA在開(kāi)發(fā)難度上降低了許多,并且大大縮短了開(kāi)發(fā)周期,而且由于FPGA是可重復(fù)編程的,其研發(fā)成本與風(fēng)險(xiǎn)也要比ASIC減少許多,更適用于復(fù)雜多變的數(shù)據(jù)中心等應(yīng)用。

但是FPGA也不是萬(wàn)能的,優(yōu)勢(shì)有時(shí)候也是劣勢(shì)。雖然FPGA相比于單片機(jī)、CPU等集成電路芯片擁有效率更高、功耗更低的特點(diǎn),但是易于開(kāi)發(fā)程度遠(yuǎn)遠(yuǎn)不如單片機(jī)、CPU;在數(shù)字芯片設(shè)計(jì)領(lǐng)域,F(xiàn)PGA雖然相比ASIC具有更短的開(kāi)發(fā)周期與開(kāi)發(fā)難度,但是其存在著成本過(guò)高、性能較差并且在資源的利用率上遠(yuǎn)不及ASIC等問(wèn)題,不能真正的替代ASIC。


第2節(jié) FPGA的基本結(jié)構(gòu)

FPGA可編程的特性決定了其實(shí)現(xiàn)數(shù)字邏輯的結(jié)構(gòu)不能像專(zhuān)用ASIC那樣通過(guò)固定的邏輯門(mén)電路來(lái)完成,而只能采用一種可以重復(fù)配置的結(jié)構(gòu)來(lái)實(shí)現(xiàn),而查找表(LUT)可以很好地滿(mǎn)足這一要求,目前主流的FPGA芯片仍是基于SRAM工藝的查找表結(jié)構(gòu)。

在任意一款FPGA芯片說(shuō)明書(shū)中可以查看到該器件具體的參數(shù)指標(biāo),其中包含可編程邏輯模塊的數(shù)量、固定功能邏輯模塊(如乘法器)的數(shù)目及存儲(chǔ)器資源(如嵌入式RAM)的大小。當(dāng)然僅僅依靠這些結(jié)構(gòu)是構(gòu)成不了FPGA的基本結(jié)構(gòu)的,在芯片中還有其他眾多部分,但是在比較FPGA時(shí),上述結(jié)構(gòu)是最重要的參考指標(biāo)。在最底層的可配置邏輯模塊(如片上的邏輯單元)上,存在著基本的兩種部件:觸發(fā)器和查找表(LUT),而觸發(fā)器和查找表的組合方式不同,是各個(gè)FPGA家族之間區(qū)別的重要依據(jù),并且查找表本身的結(jié)構(gòu)也可能各不相同(有4輸入或6輸入或其他)。

查找表(Look-Up-Table)簡(jiǎn)稱(chēng)為L(zhǎng)UT,其本質(zhì)上就是一個(gè)RAM。目前FPGA內(nèi)部中多使用4輸入的LUT,每一個(gè)LUT可以看成一個(gè)有4位地址線(xiàn)的RAM。當(dāng)用戶(hù)在EDA工具上通過(guò)原理圖或硬件描述語(yǔ)言設(shè)計(jì)了一個(gè)邏輯電路以后,F(xiàn)PGA開(kāi)發(fā)軟件會(huì)自動(dòng)計(jì)算邏輯電路的所有可能結(jié)果,并把真值表(即結(jié)果)事先寫(xiě)入RAM中。這樣,每輸入一個(gè)信號(hào)進(jìn)行邏輯運(yùn)算就等于輸入一個(gè)地址進(jìn)行查找表操作,通過(guò)地址找到對(duì)應(yīng)的RAM中的結(jié)果,最后將其輸出。

以實(shí)現(xiàn)數(shù)字邏輯Y=A&B&C的功能為例。如果是在專(zhuān)用ASIC中,為了實(shí)現(xiàn)該邏輯,邏輯門(mén)都已經(jīng)事先確定好,Y的輸出值為兩個(gè)邏輯與運(yùn)算后的結(jié)果,其基本的實(shí)現(xiàn)結(jié)構(gòu)如下圖所示:? ? ? ? ? ? ? ? ? ?

?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?

而在FPGA的結(jié)構(gòu)中若要實(shí)現(xiàn)同樣的邏輯功能,用戶(hù)首先在EDA工具中使用硬件描述語(yǔ)言設(shè)計(jì)出“Y=A&B&C邏輯代碼,EDA工具(QUARTUS或其他開(kāi)發(fā)工具)分析這一行代碼,得出A、B、C在不同輸入組合下(共8種),Y的值分別是多少,其真值表如下表所示:


? ?然后軟件工具將所有的結(jié)果寫(xiě)到查找表上,從而實(shí)現(xiàn)了該代碼的功能。下圖就是FPGA的實(shí)現(xiàn)基本結(jié)構(gòu)。查找表就類(lèi)似于一個(gè)RAM,輸入A、B、C則相當(dāng)于地址,通過(guò)A、B、C的地址就得讀到值賦給Y并輸出。


第3節(jié)?更為復(fù)雜的FPGA架構(gòu)

1985,賽靈思公司推出了第一塊FPGA芯片—XC2064,最初的FPGA包含了8×8=64的邏輯塊陣列和85000個(gè)晶體管,其門(mén)電路不超過(guò)1000個(gè),且每個(gè)邏輯塊由一個(gè)四輸入的查找表和其它一些簡(jiǎn)單功能模塊構(gòu)成。FPGA誕生之初由于其容量非常有限,因此只能用來(lái)執(zhí)行一些相對(duì)簡(jiǎn)單的任務(wù),如用來(lái)集中一些膠合邏輯或?qū)崿F(xiàn)基本的狀態(tài)機(jī)。而在22年后,F(xiàn)PGA行業(yè)兩大巨頭Xilinx和Altera公司紛紛推出了采用最新65nm工藝的FPGA產(chǎn)品,其門(mén)數(shù)量已經(jīng)達(dá)到千萬(wàn)級(jí),晶體管個(gè)數(shù)更是超過(guò)10億個(gè)。在這22年間,F(xiàn)PGA在緊跟半導(dǎo)體工藝進(jìn)步的同時(shí)也推動(dòng)了半導(dǎo)體的發(fā)展進(jìn)程——2001年采用150nm工藝、2002年采用130nm工藝,2003年采用90nm工藝,2006年采用65nm工藝,而目前最新推出的FPGA產(chǎn)品更是已經(jīng)使用上10nm工藝。隨著技術(shù)的發(fā)展和工藝節(jié)點(diǎn)的進(jìn)步,F(xiàn)PGA的容量和性能在不斷提高的同時(shí),其功耗卻不斷的優(yōu)化減少。2006年以前四輸入查找表一直被廣泛使用,在一些高端器件可能會(huì)用上六輸入、八輸入或更多輸入端口的查找表。而一個(gè)多輸入的查找表又可以分解成較小輸入的查找表,即能夠分裂成許多更小的功能。例如一個(gè)八輸入的查找表可以分解成兩個(gè)四輸入的查找表或分解成一個(gè)三輸入加一個(gè)五輸入的查找表。在實(shí)際的高端器件中,這種可編程構(gòu)造可以描述相當(dāng)于百萬(wàn)級(jí)(有時(shí)甚至千萬(wàn)級(jí))的原始邏輯門(mén)。

在FPGA內(nèi)部,有著“軟內(nèi)核”與“硬內(nèi)核”之分。比如若利用FPGA的可編程性在芯片內(nèi)部構(gòu)造實(shí)現(xiàn)了一個(gè)計(jì)數(shù)器邏輯,那么在構(gòu)造計(jì)數(shù)器邏輯過(guò)程中使用到的功能便可以被稱(chēng)為“軟功能”,又稱(chēng)之為軟內(nèi)核。而如果某個(gè)功能若是直接利用芯片實(shí)現(xiàn)的,則是利用了芯片內(nèi)部的“硬功能”,一般又稱(chēng)之為硬內(nèi)核。軟內(nèi)核與硬內(nèi)核之間優(yōu)勢(shì)互補(bǔ),軟內(nèi)核的優(yōu)勢(shì)在于可以在利用芯片資源的基礎(chǔ)上利用編程設(shè)計(jì)讓其完成需要實(shí)現(xiàn)的任何功能(注意是數(shù)字功能,不包括模擬功能)。而硬內(nèi)核由于是實(shí)現(xiàn)固定功能的器件,因此其優(yōu)勢(shì)在于資源利用率高且功耗較低,占用硅片的面積也較小,并具有較高的性能。而兩者最重要的區(qū)別在于:與軟內(nèi)核相比硬內(nèi)核可用于實(shí)現(xiàn)模擬功能,例如鎖相環(huán)的倍頻功能,這個(gè)功能需要在模擬電路下實(shí)現(xiàn),所以這一部分是在FPGA內(nèi)部用硬件來(lái)實(shí)現(xiàn)的。


第4節(jié)?帶嵌入式處理器的FPGA

在上文中提到“軟內(nèi)核”與“硬內(nèi)核”的概念,而利用FPGA的可編程構(gòu)造實(shí)現(xiàn)的事情之一即為使用其中的一部分?jǐn)?shù)字邏輯資源制作一個(gè)或多個(gè)軟處理器內(nèi)核,當(dāng)然,也可以實(shí)現(xiàn)不同規(guī)模的處理器。舉例來(lái)說(shuō),可以創(chuàng)建一個(gè)或多個(gè)8位的處理器加上一個(gè)或多個(gè)16位或32位的軟處理器,而所有處理器都在同一器件中。

而如果FPGA供應(yīng)商希望提供一個(gè)占用較少硅片面積、消耗較低功率但性能更高的處理器,解決方案是將其實(shí)現(xiàn)為硬內(nèi)核。如果需要高速、高性能的處理器,并且需要實(shí)現(xiàn)邏輯編程時(shí),傳統(tǒng)的方法是在電路板上放置處理器(如ARM、DSP等)和FPGA,ARM或者DSP工程師實(shí)現(xiàn)軟件部分,F(xiàn)PGA工程師實(shí)現(xiàn)可編程邏輯部分,兩者協(xié)同合作?,F(xiàn)在最新的方案是使用ZYNQ一個(gè)芯片以更低的功耗、更高的速度實(shí)現(xiàn)以上功能。在2010年4月硅谷舉行的嵌入式系統(tǒng)大會(huì)上,賽靈思發(fā)布了可擴(kuò)展處理平臺(tái)的架構(gòu)詳情,這款基于無(wú)處不在的ARM處理器的SoC可滿(mǎn)足復(fù)雜嵌入式系統(tǒng)的高性能、低功耗和多核處理能力要求。賽靈思可擴(kuò)展處理平臺(tái)芯片硬件的核心本質(zhì)就是將通用基礎(chǔ)雙ARM Cortex-A9 MP Core處理器系統(tǒng)作為“主系統(tǒng)”,結(jié)合低功耗28nm工藝技術(shù),以實(shí)現(xiàn)高度的靈活性、強(qiáng)大的配置功能和高性能。由于該新型器件的可編程邏輯部分基于賽靈思28nm 7系列FPGA,因此該系列產(chǎn)品的名稱(chēng)中添加了“7000”,以保持與7系列FPGA的一致性,同時(shí)也方便日后本系列新產(chǎn)品的命名??紤]下面所示這個(gè)例子:


圖?1.1-3一種新的SoC FPGA

? ?這個(gè)芯片完全以硬內(nèi)核方式實(shí)現(xiàn)的雙路ARM Cortex-A9微控制器子系統(tǒng)(運(yùn)行時(shí)鐘高達(dá)1GHz,包含浮點(diǎn)引擎,片上緩存,計(jì)數(shù)器,定時(shí)器等)以及種類(lèi)廣泛的硬內(nèi)核接口功能(SPI,I2C,CAN等),還有一個(gè)硬內(nèi)核的動(dòng)態(tài)內(nèi)存控制器,所有這些組件都利用大量傳統(tǒng)的可編程構(gòu)造和大量的通用輸入輸出(GPIO)引腳進(jìn)行了性能增強(qiáng)。

如果是ZYNQ單芯片方案,是不是意味著只需要軟件工程師或者FPGA工程師獨(dú)立工作就可以了呢?筆者目前所了解的情況是:FPGA工程師負(fù)責(zé)搭建周邊電路,如ARM的接口、時(shí)鐘配置等,還負(fù)責(zé)可編程邏輯部分的開(kāi)發(fā)。而軟件部分仍然還是軟件工程師負(fù)責(zé)。其主要原因在于FPGA邏輯開(kāi)發(fā)和軟件開(kāi)發(fā)都是專(zhuān)業(yè)性比較強(qiáng)的技能,非常少的工程師能同時(shí)掌握這兩個(gè)技能。當(dāng)然,這里說(shuō)的掌握性能,是專(zhuān)業(yè)性的、能應(yīng)用到企業(yè)項(xiàng)目的技能,只是接觸一下的不算。



第5節(jié)?數(shù)據(jù)存儲(chǔ)以及配置方式

在FPGA內(nèi)部存在著存儲(chǔ)單元片內(nèi)RAM塊,數(shù)據(jù)是存放在RAM中并由其來(lái)設(shè)置工作狀態(tài)的,若想要FPGA進(jìn)行工作,就需要對(duì)片內(nèi)RAM進(jìn)行編程。而如果外部有大量數(shù)據(jù)交互時(shí),就要通過(guò)增加外設(shè)來(lái)對(duì)數(shù)據(jù)進(jìn)行暫時(shí)性的存儲(chǔ),如SDRAM存儲(chǔ)器或者DDR3存儲(chǔ)器,暫存在外設(shè)中的數(shù)據(jù)最終也是要通過(guò)FPGA內(nèi)部的RAM進(jìn)行存儲(chǔ)與處理。當(dāng)在EDA工具上將程序設(shè)計(jì)完成之后,便需要將軟件上的程序燒錄進(jìn)FPGA內(nèi)部。通過(guò)不同的配置模式,F(xiàn)PGA便會(huì)有不同的編程方式。

以下為常用的幾種配置模式:

1、并行模式:通過(guò)并行PROM、Flash配置FPGA;

2、主從模式:使用一片PROM配置多片F(xiàn)PGA;

3、串行模式:串行PROM配置FPGA;

4、外設(shè)模式:將FPGA作為微處理器的外設(shè),由微處理器對(duì)其編程。

目前,主流的FPGA都是基于SRAM工藝的,在大部分的FPGA開(kāi)發(fā)板上,使用的都是串行配置模式。由于SRAM掉電就會(huì)丟失內(nèi)部數(shù)據(jù),因此往往都會(huì)外接一個(gè)能夠掉電保存數(shù)據(jù)的片外存儲(chǔ)器以保存程序。這樣一來(lái),上電時(shí)FPGA便將外部存儲(chǔ)器中的數(shù)據(jù)讀入片內(nèi)RAM以完成配置,對(duì)FPGA編程完成后便進(jìn)入工作狀態(tài);掉電后FPGA內(nèi)部SRAM中存儲(chǔ)的數(shù)據(jù)丟失,邏輯清零。以這種方式配置FPGA不僅能反復(fù)使用,還無(wú)需重復(fù)的手動(dòng)配置。完成一次主動(dòng)配置之后每次上電便會(huì)自動(dòng)的實(shí)現(xiàn)FPGA的內(nèi)部編程。


這是FPGA簡(jiǎn)介學(xué)習(xí),入門(mén)知識(shí)可以學(xué)習(xí)明德?lián)PFPGA入門(mén)的視頻課程和文章介紹


FPGA簡(jiǎn)介的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
山东省| 陈巴尔虎旗| 南昌县| 金寨县| 阿克苏市| 苗栗市| 阿坝| 锦屏县| 遂宁市| 大余县| 务川| 宁南县| 保德县| 门头沟区| 城步| 南乐县| 临沂市| 侯马市| 拜城县| 乌鲁木齐县| 石嘴山市| 噶尔县| 岱山县| 老河口市| 临城县| 阳新县| 达孜县| 容城县| 临沧市| 北碚区| 白城市| 万山特区| 姜堰市| 东明县| 紫阳县| 太仓市| 天峨县| 收藏| 甘南县| 宜丰县| 小金县|