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