《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 其他 > 入門(mén):FPGA基礎(chǔ)知識(shí)

入門(mén):FPGA基礎(chǔ)知識(shí)

2022-10-24
來(lái)源:硬件筆記本
關(guān)鍵詞: 單片機(jī) CPU FPGA

  FPGA全稱(chēng)是Field-Programmable Gate Array,,即現(xiàn)場(chǎng)可編程門(mén)陣列,。

  1,、跟單片機(jī)相比

  結(jié)構(gòu)不同:

  1.1,、單片機(jī)的引腳,、資源以及內(nèi)部乘法器的數(shù)量是確定的,,也就是說(shuō)它的硬件是確定的,。只要通過(guò)軟件編程就可以實(shí)現(xiàn)其功能。

  1.2 ,、FPGA內(nèi)部電路是不確定的,,它可以通過(guò)編程來(lái)改變芯片的內(nèi)部結(jié)構(gòu)。內(nèi)部乘法器,、除法器和寄存器的數(shù)量都可以通過(guò)編程來(lái)改變,。

  小結(jié):

  A、單片機(jī)不改變硬件結(jié)構(gòu),,而是通過(guò)改變它的指令執(zhí)行的先后順序來(lái)實(shí)現(xiàn)我們所需要的功能,。(指令包括讀、寫(xiě)或跳轉(zhuǎn)指令),。

  B,、FPGA的編程和設(shè)計(jì)就是為了改變芯片內(nèi)部的硬件電路結(jié)構(gòu)來(lái)實(shí)現(xiàn)我們需要的功能。

  考慮點(diǎn)不同:

  1.3,、在做單片機(jī)或電腦編程的時(shí)候,,是不需要考慮時(shí)序的,只要有個(gè)函數(shù),,然后有個(gè)編程代碼實(shí)現(xiàn)就好了,。寫(xiě)一個(gè)函數(shù),反復(fù)調(diào)用就可以實(shí)現(xiàn)很多的功能,。

  比如一個(gè)功能,,單片機(jī)只需一個(gè)小時(shí),但FPGA可能花一天甚至幾個(gè)月的時(shí)間,。因?yàn)镕PGA不僅要想到功能,,還要想到電路和時(shí)序。它是需要一個(gè)一個(gè)時(shí)鐘慢慢去摳的細(xì)節(jié)化的一種設(shè)計(jì)方法,。

  所以,,F(xiàn)PGA開(kāi)發(fā)難度遠(yuǎn)遠(yuǎn)比單片機(jī)高。

  難度系數(shù)比較從高到低:ASIC集成電路>FPGA>單片機(jī)

  FPGA是專(zhuān)做底層的開(kāi)發(fā)和設(shè)計(jì),,專(zhuān)做底層優(yōu)化的工作,,F(xiàn)PGA非常難,這是它的一個(gè)特點(diǎn),。

  2,、FPGA應(yīng)用場(chǎng)景

  2.1、FPGA功能強(qiáng)大,,試驗(yàn)難度大,,一般用在通信接口的設(shè)計(jì)以及數(shù)字信號(hào)處理等比較高端(數(shù)據(jù)量大、數(shù)據(jù)傳輸快,、精度要求高)的場(chǎng)合,。

  日常應(yīng)用中,,要求不是特別高的場(chǎng)合廣泛使用單片機(jī)來(lái)實(shí)現(xiàn)。

  2.2,、FPGA還有一個(gè)特殊的應(yīng)用場(chǎng)合,,即ASIC的原型驗(yàn)證。

  怎么理解,?集成電路開(kāi)發(fā)流程長(zhǎng),,風(fēng)險(xiǎn)高,當(dāng)做一個(gè)集成電路開(kāi)發(fā)的時(shí)候,,從代碼編寫(xiě)到仿真驗(yàn)證,,到PCB的布局布線(xiàn),再到最后的生產(chǎn)都需要經(jīng)過(guò)很長(zhǎng)的時(shí)間周期,。

  為了保證成功率,,希望一次通過(guò),在生產(chǎn)之前可以在FPGA上跑一跑,,驗(yàn)證一下功能是否正常,。

  2.3、FPGA的非標(biāo)場(chǎng)合(用量少的場(chǎng)合,,常用于軍工領(lǐng)域),。

  例如,USB等接口標(biāo)準(zhǔn)是固定的,。但有一些特殊場(chǎng)合,,它的市場(chǎng)需求本身不大,它本身也是某種特殊定義的接口,,這種接口在市場(chǎng)上很難找到對(duì)應(yīng)的芯片去實(shí)現(xiàn)這種接口,,這時(shí)FPGA就可以派上用場(chǎng),可以自己設(shè)計(jì)內(nèi)部結(jié)構(gòu)電路跟這種接口進(jìn)行對(duì)接,。

  2.4,、新科技的新型運(yùn)用。

  當(dāng)一個(gè)新科技不明朗是否有市場(chǎng)前景的時(shí)候,,肯定不會(huì)大批量的生產(chǎn)某一款芯片,,可以先用FPGA來(lái)試驗(yàn),待市場(chǎng)需大量的需求時(shí)再大量的生產(chǎn),。

  小結(jié):

  相較于專(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)用。

  3,、FPGA的缺點(diǎn)

  FPGA的缺點(diǎn)是成本高,,為什么這么說(shuō)呢?專(zhuān)用的電路一定是把所有的電路都用上了,,來(lái)實(shí)現(xiàn)我們所需要的功能。FPGA要同時(shí)滿(mǎn)足A,、B,、C的功能。但滿(mǎn)足A的某些功能在B或C上肯定是用不上的,,所以它的利用率比較低,,也可以理解為它的成本高。

  所以,,F(xiàn)PGA只能做一些高端的少批量的運(yùn)用,。當(dāng)發(fā)現(xiàn)市場(chǎng)前景非常好,想要降成本的時(shí)候,,可以把FPGA的代碼變成集成電路去生產(chǎn),。

  4、FPGA的基本結(jié)構(gòu)

  FPGA不像專(zhuān)用的ASIC那樣通過(guò)固定的邏輯門(mén)電路來(lái)完成,,而只能采用一種可重復(fù)配置的結(jié)構(gòu)來(lái)實(shí)現(xiàn),,查找表(LUT)可以很好的滿(mǎn)足這一要求。

  查找表(Look-Up-Table)是什么,?其本質(zhì)上是一個(gè)RAM存儲(chǔ)器,。

  舉例說(shuō)明,以數(shù)字邏輯Y=A&B&C為例,。在專(zhuān)用ASIC中,,為實(shí)現(xiàn)該邏輯,邏輯門(mén)都已經(jīng)事先確定好,,如下圖所示:

 021.JPG

  Y=A&B&C的實(shí)現(xiàn)結(jié)構(gòu)

  在FPGA中就不一樣,。A、B,、C通過(guò)編程可以是任意關(guān)系,。設(shè)計(jì)過(guò)程如下:

  先用代碼寫(xiě)出Y=A&B&C,然后用EDA工具(QUARTUS或其他開(kāi)發(fā)工具)分析這一行代碼,,得出A,、B、C在不同輸入組合下(共8種),,Y的值分別是多少,,其真值表如下圖所示:

 020.JPG

  然后,軟件工具將所有結(jié)果寫(xiě)到查找表(LUT)上,從而實(shí)現(xiàn)該代碼的功能,。

019.JPG

  Y=A&B&C的FPGA實(shí)現(xiàn)基本結(jié)構(gòu)

  這就是FPGA實(shí)現(xiàn)的原理,。

  5、知識(shí)補(bǔ)充

  5.1,、在FPGA內(nèi)部有著軟內(nèi)核和硬內(nèi)核之分,。

  軟內(nèi)核:可以通過(guò)門(mén)電路隨意搭起來(lái)實(shí)現(xiàn)某種功能的電路。比如在芯片內(nèi)部實(shí)現(xiàn)了一個(gè)計(jì)數(shù)器邏輯,,那么在構(gòu)造計(jì)數(shù)器邏輯過(guò)程中使用到的功能可以被稱(chēng)為“軟功能”,。

  硬內(nèi)核:實(shí)現(xiàn)固定功能的芯片。電路是固定好的,,通過(guò)硬件去實(shí)現(xiàn)的,。比如:PLL時(shí)鐘單元,它的電路是固定的,,因?yàn)闀r(shí)鐘通過(guò)外部晶振起振后,,通過(guò)內(nèi)部PLL時(shí)鐘倍頻,它不是數(shù)字電路可實(shí)現(xiàn)的,,需要模擬電路倍頻實(shí)現(xiàn),。AD芯片和DA芯片也是模擬芯片,也是需要固定的資源在里面,。

  5.2,、一種新的SOC FPGA(帶嵌入式處理器的FPGA)

  在FPGA內(nèi)部有存儲(chǔ)單元片內(nèi)RAM塊,數(shù)據(jù)存放在RAM中,,并由其設(shè)置工作狀態(tài),,若想要FPGA進(jìn)行工作,就要對(duì)RAM進(jìn)行編程,,而如果外部有大量數(shù)據(jù)進(jìn)行交互時(shí),,就要通過(guò)增加外設(shè)對(duì)數(shù)據(jù)進(jìn)行暫時(shí)性的存儲(chǔ),如SDRAM存儲(chǔ)器或DDR3存儲(chǔ)器,,暫存在外設(shè)中的數(shù)據(jù)最終也是要通過(guò)FPGA內(nèi)部的RAM進(jìn)行存儲(chǔ)和處理,。

  目前,主流的FPGA都是基于SRAM工藝,,在大部分開(kāi)發(fā)板上都是串行配置模式,。由于SRAM掉電就會(huì)丟失內(nèi)部數(shù)據(jù),因此往往都會(huì)外接一個(gè)能夠掉電保存數(shù)據(jù)的片外存儲(chǔ)器來(lái)保存程序,。這樣一來(lái),,上電時(shí)FPGA便將外部存儲(chǔ)器種的數(shù)據(jù)讀入片內(nèi)RAM以完成配置,對(duì)FPGA編程完成后便進(jìn)入工作狀態(tài),。

  目前FPGA內(nèi)部已經(jīng)有一些芯片電路,,不僅僅有接口,門(mén)電路,還有ARM及其它CPU等等已經(jīng)帶入嵌入式處理器的功能,。

  我們會(huì)發(fā)現(xiàn)電路板上功能有ARM+FPGA或DSP+FPGA協(xié)同合作,,一個(gè)芯片上實(shí)現(xiàn)處理器+FPGA功能,這就是我們更強(qiáng)大的嵌入式處理器的功能,。

  優(yōu)點(diǎn):

  1,、更有利于PCB布局,面積更小,,功能更強(qiáng)大,。

  2、ARM嵌入在芯片內(nèi)部,,ARM和FPGA之間有更多的總線(xiàn)和通信方式,,速度可以更快,。

  5.3,、數(shù)據(jù)的存儲(chǔ)及配置方式

  當(dāng)在EDA工具上將程序設(shè)計(jì)完成之后,便需要將軟件上的程序燒錄進(jìn)FPGA內(nèi)部,。通過(guò)不同的配置模式,,F(xiàn)PGA便有不同的編程方式,以下為幾種常見(jiàn)的配置模式:

  1,、并行模式:通過(guò)并行PROM,、Flash配置FPGA。也就是說(shuō),,把FPGA的程序先寫(xiě)到PROM或Flash里面,,上電的時(shí)候就會(huì)自動(dòng)讀取里面的值,配置FPGA,。

  022.JPG

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

  3,、串行模式:串行PROM配置FPGA,。

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

 017.JPG

  一個(gè)是FPGA,一個(gè)是CPU,,CPU通過(guò)接口寫(xiě)FPGA,,然后再通過(guò)FPGA實(shí)現(xiàn)需要的功能。那么CPU配置FPGA參數(shù)的數(shù)據(jù)從哪里來(lái),?

  可以增加一個(gè)RAM或FLASH,,CPU讀取里面的內(nèi)容,然后寫(xiě)到FPGA內(nèi)部,F(xiàn)PGA工作就能實(shí)現(xiàn)需要的功能,。這是比較常見(jiàn)的一種方式,。

  這種方式跟CPU直接控制FPGA有什么不同嗎?也就是上電后FPGA直接讀取PROM的數(shù)據(jù)不就好了,,為什么要多一個(gè)CPU呢,?

 016.JPG

  其中一個(gè)原因是:FPGA的有些程序是加密的,CPU讀取數(shù)據(jù)并解密后再發(fā)給FPGA,,F(xiàn)PGA再來(lái)實(shí)現(xiàn)功能,。



更多信息可以來(lái)這里獲取==>>電子技術(shù)應(yīng)用-AET<<

mmexport1621241704608.jpg

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容,、版權(quán)和其它問(wèn)題,,請(qǐng)及時(shí)通過(guò)電子郵件或電話(huà)通知我們,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話(huà):010-82306118;郵箱:[email protected],。