FPGA是什麼呢,通透講解單片機和FPGA的區別

2022-05-12     大方老師單片機

原標題:FPGA是什麼呢,通透講解單片機和FPGA的區別

FPGA是什麼呢通透講解單片機FPGA的區別

///插播一條:我自己在今年年初錄製了一套還比較系統的入門單片機教程,想要的同學找我拿就行了免費的,私信我就可以~點我頭像黑色字體加我地球呺也能領取哦。最近比較閒,帶做畢設,帶學生參加省級或以上比///

.單片機FPGA的區別

單片機又稱單片微控制器Single-chip MCU,它其實就是集成1個矽片上的計算機系統。現在市場上主流的單片機基本都使用的ARM51單片機基本上已經退出歷史舞台了,只有在一些特定場合還有使用。嚴格來說,單片機是沒I/O設備的,這也是它和計算機最大的區別。然而,我們常說的單片機往往指的是單片機開發板,這種開發板不僅包含單片機,還包含廠商開發設計的外圍電路和各種外設。最常見ARM單片機STM32系列,它的內核Cortex-M3/M4,外設則包LED燈、蜂鳴器LCD顯示屏、攝像頭、片上內存和各IO口等。1給出的是正點原子STM32F1開發板,最中間的那個黑色的、上面寫ARM三個字母的晶片就STM32F1晶片(即單片機),只占板子的很小一部分,晶片周圍則是外圍電路和外設。一般來說,我們買到STM32開發板往往就自帶LED燈、蜂鳴器等外設,而攝像頭LCD顯示屏則需要額外購買,廠商只在開發板上預留相應的接口。

1正點原STM32F1開發板

那麼FPGA又是什麼呢FPGA英文全稱Field Programmable Gate Array,它的中文名是現場可編程邏輯門陣列FPGA主要是由可編程邏輯陣列和各種外設組成的,它是一種半定製電路。通過使quartusvivado這些開發軟體編verilogVHDL程序,我們可以實現並綜合出各式各樣的數字電路,並可以把電FPGA器件,完成電路在物理層面上的實現FPGA是可以進行無限的,只有邏輯資源足夠FPGA理論上可以實現所有的數字電路,哪怕CPU這樣複雜的超大型電路。然而FPGA的邏輯資源往往是很匱乏的,哪怕是在今天,也難以完成大規模的浮點運算。而且,由FPGA的基本單元使用的是可配置邏輯單元,工藝製程往往會受到限制,總會ASIC落後好幾代,並且工作頻率也一直達不CPU早已標配GHz

2 Altera DE2-115開發板

FPGA最大的優點是它的並行度高,我們可以FPGA上設計並實N維的並行流水線,在時鐘的驅動下,這些流水線可以同時進行工作,能極大地減小運算時間和提高運算效率。對於單片機而言,單片機的主體其實就CPUCPU執行運算是串行的。在進行一次運算時,一般是先CPU向運算單元發送指令,然後運算器進行運算並給出結果,接CPU接收到計算結果並進行暫存,再進行下一次運算。此外,對CPU而言,晶片大部分面積是控制邏輯單元,只有很少一部分是運算單元。因此,在執行高密集度運算時CPU是難以勝任的。但是CPU所擅長的邏輯控制,卻正FPGA所欠缺的。由FPGA所有功能均依靠硬體實現(這裡指傳統FPGA),完全不使用軟體,甚至無法實現分支條件跳轉等操作。

.CPUFPGA的結合

從上面的分析可以看到CPU長於控制,FPGA則擅長運算。因此,很快就有人想到了FPGA開發里引CPU來進行邏輯控制,以彌FPGA的缺陷。最開始,這FPGA開發商主導的Altera最早提出SOPCSystem On a Programmable Chip,可編程片上系統)技術,這種技術使FPGA的邏輯和資源搭建的一個軟CPU系統,後Xilinx也進行了跟進Altera主推的軟核Nios-IIXilinx主推的軟核則MicroBlaze。老實說,這些軟核的效率並不高,而且它們都有自己的一套開發環境和開發流程,實際使用起來其實非常麻煩,而且應用場景也不多。因此,這些軟核並沒有FPGA開發中引起什麼變革,長期處於廠商力推,而市場卻不溫不火的狀態。

然而,時代總是在前進的,隨著無人駕駛、大數據分析、物聯網、人工智慧等行業的發展,嵌入式平台的應用範圍得到了極大的擴展,但這些應用場景對算力提出了新的要求,單片機這種傳統的嵌入式平台的算力就顯得捉襟見肘Xilinx開始意識到,與其自己開發軟核,來FPGA打輔助;不如反過來FPGACPU打輔助,直接FPGAARMCortex-A系列處理器。這樣FPGA就實際意義上成CPU的外設,專門用於計算,除此之外的所有事,都由強大Cortex-A系列處理器來完成。20104月矽谷舉行的嵌入式系統大會上Xilinx發布ZYNQ 7000FPGA,它由雙A9+Xilinx 7FPGA組成。嚴格意義上,它其實不算FPGA,更像是嵌入式開發平台。然而,它又和傳統的嵌入式開發平台不一樣,它又需要使FPGA搭建定製電路,這就需要開發者掌握較高的硬體開發能力。這款產品推出時,受到了很大的質疑,很多人都覺得它實用性並不會太高,只Xilinx推出的一個實驗性產品。

3 ZYNQ7000開發板

但是ZYNQ卻取得了巨大的成功,成為Xilinx最著名FPGA開發板系列之一Xilinx的判斷是正確的,在隨後10年內,解決嵌入式平台的算力瓶頸成為了行業發展的主流方向。就拿人工智慧來說,ZYNQ推出後,很多大學研究小組用它完成了卷積神經網絡FPGA平台上的部署,實現了對卷積神經網絡的硬體加速FPGA平台相對GPU有更低的功耗,相比ASIC有可編程性,使得FPGA加速器的研究一度成為人工智慧領域的熱門方向。當然,這時FPGA不是傳統FPGA了,而CPU+FPGA。這種模式也Altera迅速跟進,它們也推出了雙A9+Altera FPGA的開發平台,比DE1-SoC等。嚴格來說Cortex-A9處理器不是單片機(即微控制器MCU),而是微處理器MPU),但是它們都CPU。因此,在上文中,我們並沒有說單片機FPGA,而是直接說的CPUFPGA進行聯姻,這主要是為了保證文章嚴謹。在這一時期,雖然兩者主要還是FPGA開發商推動的,FPGA卻成為CPU的一個大型外設,由主角變為了配角。

.ARM DesignStart計劃的推出

PC時代,英特+Windows組成Wintel長期處於絕對的統治地位,在這一時ARM的存在感其實很低。但是,隨著智慧型手機、智能導航儀等移動端平台的發展ARM開始成長為移動市場的行業巨頭。關ARM為何能在移動端擊敗英特爾,有很多種不同的說法,但主要原因總結起來3點。第一,英特爾低估了移動端的發展潛力,沒有及時進場。第二ARM處理器採用的RSIC指令集,而英特爾採用的CSIC指令集,雖CSIC指令集性能更占優,但功耗往往會非常高,因此不適用於移動端產品;RSIC指令能做到低功耗,這在移動端是絕對的優勢。第三ARMIP授權的商業模式,和谷歌、蘋果、高通、三星等公司形成了聯盟,組建起了ARM為核心的生態圈。總的來說ARM的崛起主要還是由於移動端市場的發展,因ARM註定不會漠視在物聯網時代會大放異彩的嵌入式平台。

2010ARM正式推ARM DesignStart計劃,開源1000多個物IP,為用戶提供了快速獲ARM IP的方式。客觀來說,這一時期DesignStart計劃實際上沒有產生多大的行業影響,因為它開源得還不夠。20151015ARM終於決定開源自己Cortex-M0核。講道理,這是一枚行業的重磅炸彈Cortex-M系列處理器早就MCU領域實現了絕對統治ARM此舉非常明確,就是希望大家使Cortex-M0核自主搭SoC,實現定製化的物聯網終端晶片的設計,Cortex-M系列處理器在物聯網領域得到更多的應用。這次開源引起了巨大的行業反響,掀起了一波超高能效定製SoC的開發熱潮。隨後ARM2017620日開源Cortex-M3核,並20181022日開源Cortex-A5DesignStart計劃的不斷推進,使ARM在物聯網領域也逐漸建立起優勢。

4 ARM DesignStart計劃

雖然近幾年RISC-V處理器的開發非常熱門,很多人預言這RISC指令集處理器會在物聯網領域取ARM。但是,我卻並不看RISC-VARM有著更加先進的技術和更為完善的開發環境,這都不RISC-V可比的。ARM相比RISC-V更像是高校ARM早就是工業的產品。可能會有人會說RISC-V至少是中國晶片自主的希望,繼續依ARM,只會在物聯網時代繼續卡脖。但這種說法是站不住腳的RISC-V的發明者和主導者依舊是美國,中國依舊只是跟班。其次,對於一家公司而言,出於趨利避害的考慮,都更願意採用性能更為強大、開發流程更為簡單、開發環境更為成熟ARM核,畢竟公司不像個人,可以空。只ARM繼續加大開源的力度,為開發者提高更為友好的開發環境,物聯網企業就會集體擁ARM

最後,有一個很現實的問題,那就是雖然國家一直在晶片自,但是對於這個行業投入一直是不夠的。計算機的從業者薪水要比微電子的從業者高很多,這只會把行業人才往計算機趕,畢竟微電子轉計算機是很容易的。晶片企業實際上也基本沒從國家那裡拿到什麼政策補貼,大家沒有研發經費,更沒有自主研發的動力,也就只能買就。所以,我覺晶片自很長一段時間也就是個口號,中國晶片產業落後國外十幾年,想要追趕是需要非常大的投入的。在國家真正下定決心發展晶片產業之前,企業只會拿腳投票ARM開發無疑是更好的選擇。個人也只會拿腳投票,晶片行業的人才流失只會繼續發生。

當然,關RISC-V處理器的討論就有點偏題了PS:來自微電子學生的吐槽),我這裡要討論的DesignStart計劃FPGA開發的影響才對Cortex-M0/M4核的開源,使ARMFPGA開發商手裡接過SOPC的接力棒Nios-IIMicroBlaze也完成了它們的歷史使命,逐漸淡出人們的視野。傳統FPGA開發時代也徹底終結了,新時代FPGA開發主要可分為兩種:一種是開發板上本來就有硬CPU,提CPU+FPGA的開發環境;另一種是開發板上沒有硬核,但我們可以通過使ARM開源出來verilog文件,FPGA的邏輯和資源搭建出一個軟CPU,也能構建CPU+FPGA的開發環境。如果說ZYNQ橫空出世的時代,由於軟+FPGA的開發模式還不夠完善,還存"FPGA開發。那麼,到這時FPGA邊緣了,它徹底成為ARM CPU的大型外設,只是默默地做著自己擅長的計算工作,整個開發流程完全CPU主導。

但是,也正是這樣FPGA走出了微電子這個小圈子,引起了越來越多的人的注意。為了方便軟體開發者使用XinlinxAltera先後推出HLSHigh-Level Synthesis),使得由軟體代碼綜合出數字電路成為門檻,大大地降低FPGA開發的門檻。雖HLS的效率還遠比不上直接使verilogVHDLRTL級設計,但它至少提供了一種可能。與此同時,由ARM開源Cortex-M3/4處理器,極大地降低了開發超高能SoC的門檻,計算機和微電子交叉SoC設計也逐漸在高校和行業內成為新的熱門研究方向DesignStart計劃的故事結束了?當然還沒有,我們有理由相ARM會進一步開源,繼續降低開發門檻和減小開發成本。如果說PC時代屬於英特爾,移動時代屬ARM,那麼物聯網時代也仍將屬ARM

.寫在最後

今天是本人生日,我還在這裡碼字寫文章,真的是太慘了PS:工科狗他只配和實驗室在一起,狗頭保命)!作1個微電子的研究生,面對行業的發展,我不可能不關心,我也有很多自己的看法,這也是我寫這篇文章的原因。數位訊號處這些是沒法交ARM核去做的。還有考慮到成本問題,不搭ARMFPGA也是有市場存在價值的,但是走量的話又導ASIC。還有就是考慮電路性能的話HDL還是比較好的。這就導FPGA工程師的存在比較尷尬,方向和崗位少,開發難度高。這種搭載硬核FPGA的應用方向還是比較少的,一般是高端方向,比如雷達、高速信號處。大學上選修課的時候應該是用zynq晶片,那時用的實驗箱,只記得要Linux裁剪,課程名還SOPC來著,不過這麼重要的課程竟然被當做選修課來教,當時也沒當回事,甚至不知道那是用來幹什麼的,就驅動驅動電……

文章來源: https://twgreatdaily.com/zh-hk/3272e0da10ad554fa3ca1eeaa7e629e0.html