初识FPGA(搬运)
原文鏈接1原文鏈接2
fpga簡(jiǎn)介
FPGA(Field-Programmable Gate Array), 即現(xiàn)場(chǎng)可編程門陣列,它是在PAL(可編程陣列邏輯)、GAL(通用陣列邏輯器件)、CPL(復(fù)雜可編程邏輯器件)等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。
?
注:什么是現(xiàn)場(chǎng)可編程門陣列?顧名思義,有人推斷它是可編程的邏輯門結(jié)構(gòu)。這種解釋很接近,但又不太準(zhǔn)確,因?yàn)閮?nèi)部邏輯陣列實(shí)際并不是利用門來實(shí)現(xiàn)的。相反,我們將陣列中的這些塊稱為邏輯單元。這些邏輯單元通常由查找表 (LUT)(用于實(shí)現(xiàn)任意邏輯功能)以及一些輔助電路(例如多路復(fù)用器、加法器和觸發(fā)器)構(gòu)成。人們將這種邏輯單元陣列稱為“FPGA 結(jié)構(gòu)”。
簡(jiǎn)言之,將 FPGA 比作一個(gè)盒子,里面裝有各種沒有商標(biāo)、用于構(gòu)建數(shù)字電路的彩色構(gòu)件。我可以通過適合我的應(yīng)用的任何方式,將這些構(gòu)件連接到一起。如果能描述數(shù)字電路如何工作,就能用足夠的邏輯單元在 FPGA 內(nèi)構(gòu)建該電路。需要 25 個(gè) PWM 輸出?沒問題。需要特殊通信協(xié)議?對(duì)某些硬件進(jìn)行編程來處理該協(xié)議。
?
fpga工作原理
FPGA采用了邏輯單元陣列LCA(Logic Cell Array)這樣一個(gè)概念,內(nèi)部包括 可配置邏輯模塊CLB(Configurable Logic Block)、輸出輸入模塊IOB(Input Output Block)和內(nèi)部連線(Interconnect)三個(gè)部分。
fpga特點(diǎn)
1) 采用FPGA設(shè)計(jì)ASIC電路(專用集成電路),用戶不需要投片生產(chǎn),就能得到合用的芯片。
2) FPGA可做其它全定制或半定制ASIC電路的中試樣片。
3) FPGA內(nèi)部有豐富的觸發(fā)器和I/O引腳。
4) FPGA是ASIC電路中設(shè)計(jì)周期最短、開發(fā)費(fèi)用最低、風(fēng)險(xiǎn)最小的器件之一。
5) FPGA采用高速CMOS工藝,功耗低,可以與CMOS、TTL電平兼容。
?
一文看懂fpga和單片機(jī)的區(qū)別
?
單片機(jī)簡(jiǎn)介
單片機(jī),全稱為單片微型計(jì)算機(jī)(Single-Chip Microcomputer),又稱微控制器(Microcontroller),是把中央處理器、存儲(chǔ)器、定時(shí)/計(jì)數(shù)器(Timer/Counter)、各種輸入輸出接口等都集成在一塊集成電路芯片上的微型計(jì)算機(jī)。它的最大優(yōu)點(diǎn)是體積小,可放在儀表內(nèi)部,但存儲(chǔ)量小,輸入輸出接口簡(jiǎn)單,功能較低。由于其發(fā)展非常迅速,舊的單片機(jī)的定義已不能滿足,所以在很多應(yīng)用場(chǎng)合被稱為范圍更廣的微控制器。
單片機(jī)工作原理
單片機(jī)自動(dòng)完成賦予它的任務(wù)的過程,也就是單片機(jī)執(zhí)行程序的過程,即一條條執(zhí)行的指令的過程,所謂指令就是把要求單片機(jī)執(zhí)行的各種操作用的命令的形式寫下來,這是在設(shè)計(jì)人員賦予它的指令系統(tǒng)所決定的,一條指令對(duì)應(yīng)著一種基本操作;單片機(jī)所能執(zhí)行的全部指令,就是該單片機(jī)的指令系統(tǒng),不同種類的單片機(jī),其指令系統(tǒng)亦不同。
為使單片機(jī)能自動(dòng)完成某一特定任務(wù),必須把要解決的問題編成一系列指令(這些指令必須是選定單片機(jī)能識(shí)別和執(zhí)行的指令),這一系列指令的集合就成為程序,程序需要預(yù)先存放在具有存儲(chǔ)功能的部件——存儲(chǔ)器中。存儲(chǔ)器由許多存儲(chǔ)單元(最小的存儲(chǔ)單位)組成,就像大樓房有許多房間組成一樣,指令就存放在這些單元里,單元里的指令取出并執(zhí)行就像大樓房的每個(gè)房間的被分配到了唯一一個(gè)房間號(hào)一樣,每一個(gè)存儲(chǔ)單元也必須被分配到唯一的地址號(hào),該地址號(hào)稱為存儲(chǔ)單元的地址,這樣只要知道了存儲(chǔ)單元的地址,就可以找到這個(gè)存儲(chǔ)單元,其中存儲(chǔ)的指令就可以被取出,然后再被執(zhí)行。
程序通常是順序執(zhí)行的,所以程序中的指令也是一條條順序存放的,單片機(jī)在執(zhí)行程序時(shí)要能把這些指令一條條取出并加以執(zhí)行,必須有一個(gè)部件能追蹤指令所在的地址,這一部件就是程序計(jì)數(shù)器PC(包含在CPU中),在開始執(zhí)行程序時(shí),給PC賦以程序中第一條指令所在的地址,然后取得每一條要執(zhí)行的命令,PC在中的內(nèi)容就會(huì)自動(dòng)增加,增加量由本條指令長(zhǎng)度決定,可能是1、2或3,以指向下一條指令的起始地址,保證指令順序執(zhí)行。
單片機(jī)特點(diǎn)
(1)體積小、結(jié)構(gòu)簡(jiǎn)單、可靠性高
(2)控制能力強(qiáng)
(3)低電壓、低功耗
(4)優(yōu)異的性能/價(jià)格比
?
一文看懂fpga和單片機(jī)的區(qū)別
?
fpga和單片機(jī)的區(qū)別
1、結(jié)構(gòu)上的區(qū)別
單片機(jī)是一種微處理器,類似于電腦CPU的,它一般采用的是哈佛總線結(jié)構(gòu),或者馮諾依曼結(jié)構(gòu),對(duì)單片機(jī)的編程很大程度上要考慮到它的結(jié)構(gòu)和各個(gè)寄存器的作用,單片機(jī)用途比較廣,一般用在控制流水線上,還有日常你看得到的東西上!
FPGA 它的結(jié)構(gòu)是查找表結(jié)構(gòu),其程序不用去太考慮芯片的結(jié)構(gòu),要注意的是時(shí)序上問題,它的結(jié)構(gòu)比較復(fù)雜,功能也很強(qiáng)大,一般應(yīng)用在通信領(lǐng)域等比較高端的場(chǎng)合,目前在國(guó)內(nèi)FPGA還算是一個(gè)新興的行業(yè),當(dāng)然它的價(jià)格也要比單片機(jī)貴得多!
單片機(jī)是一個(gè)微控制器,通過加載模塊軟件來實(shí)現(xiàn)某種功能,單片機(jī)是成型的芯片;FPGA是用來設(shè)計(jì)芯片的芯片。
2、速度上的區(qū)別
FPGA由于是硬件電路,運(yùn)行速度直接取決于晶振速度,系統(tǒng)穩(wěn)定,特別適合高速接口電路。單片機(jī)由于是單線程,哪怕是常用的M3系列流水線也是單線程執(zhí)行,程序語句需要等待單片機(jī)周期才能執(zhí)行。
3、本質(zhì)區(qū)別
FPGA和單片機(jī)的區(qū)別,本質(zhì)上是軟件和硬件的區(qū)別,FPGA更偏向于硬件電路,而單片機(jī)更偏于軟件。
單片機(jī)設(shè)計(jì)屬軟件范疇;它的硬件(單片機(jī)芯片)是固定的,通過軟件編程語言描述軟件指令在硬件芯片上的執(zhí)行;
FPGA設(shè)計(jì)屬硬件范疇,它的硬件(FPGA)是可編程的,是一個(gè)通過硬件描述語言在FPGA芯片上自定義集成電路的過程;
4、應(yīng)用上的區(qū)別
應(yīng)用上,差別更大。MCU最終所有的指令在一個(gè)MCU中都是順序執(zhí)行的,而FPGA由于是邏輯單元,很容易做到并行執(zhí)行。
? ? ? ?5、入門難易程度
單片機(jī)比FPGA簡(jiǎn)單些,價(jià)格也低一些。要做PID算法控制的用單片機(jī)可以,STM32F4系列已經(jīng)到300M+跑PID完全足夠,如果是跑嵌入式的話可以上ARM芯片。涉及通信、圖像等高速部分可以采用單FPGA模塊。
?
?
注:為什么我會(huì)需要 FPGA?
FPGA 可用于實(shí)現(xiàn)數(shù)字系統(tǒng),但簡(jiǎn)單的微控制器通常也能夠達(dá)到同樣的效果。微控制器價(jià)格低廉,而且易于放置在印刷電路板上。雖然 FPGA 是一種功能強(qiáng)大的工具,但未必適合所有情況。它們有更多的功耗、布局和外部電路要求,甚至可能非常苛刻。使用成本高昂且具有諸多特殊要求的 FPGA 似乎有些不合時(shí)宜。
但您也許已經(jīng)猜到了需要 FPGA 的原因:靈活性。您擁有可配置的邏輯塊,就意味著不再受到硬件的制約。您不會(huì)再遇到定時(shí)器或 UART 不夠用的情況,只要您擁有邏輯單元便可創(chuàng)建更多定時(shí)器或 UART。它能夠隨著技術(shù)和要求的變化,在今后進(jìn)行重新配置,從而延長(zhǎng)產(chǎn)品的生命周期。
第二個(gè)原因是速度。微控制器只能按順序一次執(zhí)行一條指令。由于硬件特性,FPGA 結(jié)構(gòu)本身是并行的。因此它能同時(shí)執(zhí)行多個(gè)指令,這對(duì)于 FFT 或圖形處理等操作非常有用,因?yàn)樵诎错樞驁?zhí)行的處理器上,這些操作可能產(chǎn)生很高的成本。與 LVDS 等典型微控制器相比,FPGA 還提供了更多高速?I/O?選項(xiàng),收發(fā)器能夠以 10+ Gbps 的速度處理 HDMI 等協(xié)議。
如何為 FPGA 編程?
FPGA 采用一種名為 HDL(即硬件描述語言)的特殊語言。它主要包含兩種語言:Verilog 和 VHDL。幾乎所有開發(fā)套件(例如 Quartus 或?Vivado)都支持這兩種語言,所以選擇哪種語言只是偏好問題。然后對(duì)這兩種語言進(jìn)行“合成”,這類似于微控制器的編譯。合成工具告訴 FPGA 如何連接其邏輯單元,以產(chǎn)生代碼所描述的效果。請(qǐng)記住,代碼被轉(zhuǎn)換為硬件指令而非 CPU 指令,在您開始使用時(shí),務(wù)必牢記這一點(diǎn)。
為了簡(jiǎn)化開發(fā),FPGA 供應(yīng)商提供了常用代碼塊目錄,供您輕松置入到設(shè)計(jì)中。其中包括倍頻器、RAM 和通信塊等。您可對(duì)它們進(jìn)行配置并添加到設(shè)計(jì)中,而無需查看涉及的 HDL 代碼,從而加快開發(fā)速度。
圖 2:顯示來自?xilinx?目錄和 HLS 的 IP 塊的部分框圖。(圖片來源:eewiki.net)
有些供應(yīng)商還提供高級(jí)別合成 (HLS) 工具,能夠?qū)⑹褂?C 或 C++ 語言編寫的功能轉(zhuǎn)換為 HDL 代碼塊。使用這些工具,可以通過抽除一些低級(jí)別細(xì)節(jié),顯著減少具有軟件背景的開發(fā)人員的入門障礙。
它能夠使用軟處理器。軟處理器是從 FPGA 的邏輯單元構(gòu)建的完整處理器。利用軟處理器,您能夠?yàn)樘幚砥鳂?gòu)建定制的輔助硬件,并使用 C 語言編寫應(yīng)用程序。可在幾分鐘內(nèi)完成簡(jiǎn)單的軟處理器系統(tǒng)設(shè)置和編程。如果仍需要傳統(tǒng)處理器,可考慮在單一封裝中包含 FPGA 和硬?ARM?處理器的 SoC。
???? 總之,與典型的微控制器相比,FPGA 的成本更高,使用難度更大,但它們能夠提供更強(qiáng)的性能和靈活性。隨著技術(shù)的改進(jìn),集成度的提高,FPGA 的成本變得更低,它們甚至能夠取代傳統(tǒng)的微控制器。
?
總結(jié)
以上是生活随笔為你收集整理的初识FPGA(搬运)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 指纹解锁安卓手机(指纹解锁安卓)
- 下一篇: 蓝桥杯小白系列之汇编点亮led灯