以下內容主要譯自大陸一IC設計討論區的文章,再經站長對本文稍做修飾而成 ...

            

CPLD                                                                    FPGA

儘管FPGA和CPLD都是可編程ASIC元件,但由於FPGA和CPLD結構上的差異,彼此之間還是存在各自不同的特點:

  1. CPLD適合用來實現各種運算和組合邏輯(combinational logic),FPGA則是適用於實現循序邏輯(sequential logic)。換句話說,FPGA適合於觸發器(flip-flop)較多的結構,而CPLD則適合於觸發器有限而乘積項(product term)較多的結構。

  2. CPLD的時間特性預估比FPGA容易。CPLD的連續式佈線(互聯)結構決定了它的時序延遲是均勻的和可預測的,而FPGA的分段式佈線結構使得其時間延遲的預測變的困難。同樣的理由也造成CPLD的速度比FPGA快,

  3. 在編程上FPGA比CPLD具有更大的靈活性。CPLD透過修改具有固定內部連線電路的邏輯功能來編程,而FPGA主要是透過改變內部電路佈線來編程,也就是說:FPGA可在邏輯閘下編程,而CPLD是在邏輯塊下編程。

  4. FPGA的集成度比CPLD高,適合較複雜的佈線結構和邏輯實現,所以FPGA元間的可編程邏輯閘數比起CPLD大許多。

  5. CPLD使用上比FPGA方便。CPLD的編程採用E2PROM或Flash技術,使用時外部不需要另外的記憶儲存元件,而FPGA的編程採用SRAM技術,所以使用時外部需要搭配記憶儲存元件存放編程訊息(netlist file),使用方法較複雜。
    這特性進一步造成FPGA的保密特性較CPLD差;因為FPGA的電路編程資訊,另外儲存在外部的記憶元件中(EPROM / Flash),電路資料容易被他人讀取,電路容易被複製。

  6. 在編程方式上,CPLD主要是基於E2PROM或Flash儲存編程,可編程次數大於1萬次,優點是系統斷電時,編程訊息不會消失。FPGA大部分是基於SRAM編程,編程訊息會在系統斷電時消失,所以每次上電時系統都要重新將編程訊息從外部記憶裝置讀入FPGA中的SRAM,其優點是可編程次數不限,並且在開發過程中可以很方便的隨時更改編程。

  7. 一般情況下,CPLD的功耗要比FPGA大,且集成度越高越明顯。

隨著製程與電路設計技術的進步,實踐可編程元件的技術將逐漸整合CPLD與FPGA彼此所長,整合Lookup Table與Product Term技術而成。

MAX、Cyclone系列device的邏輯基本單元是Logic Element (LE),以Look-Up Table (LUT)為基礎。

LEs.gif (24936 個位元組)

Stratix系列device的邏輯基本單元是Adaptive Logic Module (ALM),對於有組合邏輯的設計有較好的performance。

ALM.gif (31019 個位元組)