
單片機(jī)可以理解為集成在單一芯片上的微型計(jì)算機(jī)系統(tǒng),麻雀雖小可是五臟俱全,也有運(yùn)算器、控制器、存儲(chǔ)器、總線及輸入輸出設(shè)備,采用也是存儲(chǔ)程序執(zhí)行的方式,對(duì)單片機(jī)的編程就是對(duì)其中的ROM寫入程序,在加電后ROM中的程序會(huì)像計(jì)算機(jī)內(nèi)存中的程序一樣得到逐條的執(zhí)行。當(dāng)今的單片機(jī)還集成了A/D、D/A轉(zhuǎn)換,并串口等多種與外界進(jìn)行數(shù)據(jù)交換的手段。單片機(jī)計(jì)算速度和性能有限,但在一些基本控制上搓綽綽有余。
FPGA則是操控層次更低,所以自由度更大的芯片,對(duì)FPGA的編程在編譯后是轉(zhuǎn)化為FPGA內(nèi)的連線表,相當(dāng)于FPGA內(nèi)提供了大量的與非門、或非門、觸發(fā)器(可以用與非門形成吧)等基本數(shù)字器件,編程決定了有多少器件被使用以及它們之間的連接。只要FPGA規(guī)模夠大,這些數(shù)字器件理論上能形成一切數(shù)字系統(tǒng),包括單片機(jī)甚至CPU。FPGA在抗干擾,速度上有很大優(yōu)勢(shì)。
目前以硬件描述語言(Verilog 或 VHDL)所完成的電路設(shè)計(jì),可以經(jīng)過簡(jiǎn)單的綜合與布局,快速的燒錄至 FPGA 上進(jìn)行測(cè)試,是現(xiàn)代 IC 設(shè)計(jì)驗(yàn)證的技術(shù)主流。這些可編輯元件可以被用來實(shí)現(xiàn)一些基本的邏輯門電路(比如AND、OR、XOR、NOT)或者更復(fù)雜一些的組合功能比如解碼器或數(shù)學(xué)方程式。在大多數(shù)的FPGA里面,這些可編輯的元件里也包含記憶元件例如觸發(fā)器(Flip-flop)或者其他更加完整的記憶塊。 系統(tǒng)設(shè)計(jì)師可以根據(jù)需要通過可編輯的連接把FPGA內(nèi)部的邏輯塊連接起來,就好像一個(gè)電路試驗(yàn)板被放在了一個(gè)芯片里。一個(gè)出廠后的成品FPGA的邏輯塊和連接可以按照設(shè)計(jì)者而改變,所以FPGA可以完成所需要的邏輯功能。 FPGA一般來說比ASIC(專用集成芯片)的速度要慢,無法完成復(fù)雜的設(shè)計(jì),而且消耗更多的電能。但是他們也有很多的優(yōu)點(diǎn)比如可以快速成品,可以被修改來改正程序中的錯(cuò)誤和更便宜的造價(jià)。廠商也可能會(huì)提供便宜的但是編輯能力差的FPGA。因?yàn)檫@些芯片有比較差的可編輯能力,所以這些設(shè)計(jì)的開發(fā)是在普通的FPGA上完成的,然后將設(shè)計(jì)轉(zhuǎn)移到一個(gè)類似于ASIC的芯片上。另外一種方法是用CPLD(復(fù)雜可編程邏輯器件備)。
CPLD與FPGA的關(guān)系