03.07 CPLD,FPGA,單片機,它們之間的區別?主要應用場景,編程方式,語言?

csz80446


一、FPGA與CPLD區別

FPGA和CPLD都是可編程ASIC器件,有很多共同特點,但是也還是有很多區別的,我們一起來看下

1、概念上的區別

FPGA/CPLD 是通過硬件實現功能的。

FPGA是Field-Programmable Gate Array的縮寫,即現場可編程門陣列。

CPLD是Complex Programmable Logic Device的縮寫,即複雜可編程邏輯器件。

通過名字可以看出,二者都是可編程的邏輯器件,即實實在在的硬件,通過對硬件編程以實現某種特定功能。說直白一些,二者就是一個與非門或者或非門陣列。由於所有的邏輯式子都可以變換成與非結構或者或非結構,因此所有的邏輯功能都可以通過FPGA/CPLD實現, 編程後的芯片相當於一個數字芯片,如加法器,移位寄存器等。

二者的區別在於FPGA是基於RAM結構的,CPLD是基於ROM機構的。

2、結構上的區別

1、邏輯塊的粒度不同

FPGA 中的CLB 是邏輯塊,其特點是粒度小。

CPLD中邏輯塊粒度較大。

顯然,CPLD粗大的分塊結構使用時不如FPGA 靈活.

2、邏輯之間的互連結構不同

CPLD 的邏輯塊互連是集總式的,其特點是等延時,任意兩塊之間的延時是相等的,這種結構給設計者帶來很大方便。

FPGA 的互連則是分佈式的,其延時與系統的佈局有關,

3、應用範圍上的區別

CPLD更適合完成各種算法和組合邏輯。

FPGA更適合於完成時序邏輯。

換句話說,FPGA更適合於觸發器豐富的結構,而CPLD更適合於觸發器有限而乘積項豐富的結構。

CPLD的連續式佈線結構決定了它的時序延遲是均勻的和可預測的,而FPGA的分段式佈線結構決定了其延遲的不可預測性。

4、編程上的區別

在編程上FPGA比CPLD具有更大的靈活性。CPLD通過修改具有固定內連電路的邏輯功能來編程,FPGA主要通過改變內部連線的佈線來編程;FPGA可在邏輯門下編程,而CPLD是在邏輯塊下編程。

FPGA的集成度比CPLD高,具有更復雜的佈線結構和邏輯實現。

CPLD比FPGA使用起來更方便。CPLD的編程採用E2PROM或FASTFLASH技術,無需外部存儲器芯片,使用簡單。而FPGA的編程信息需存放在外部存儲器上,使用方法複雜。

5、運行速度上的區別

CPLD的速度比FPGA快,並且具有較大的時間可預測性。

6、編程方式的區別

在編程方式上,CPLD主要是基於E2PROM或FLASH存儲器編程,編程次數可達1萬次,優點是系統斷電時編程信息也不丟失。

FPGA大部分是基於SRAM編程,編程信息在系統斷電時丟失,每次上電時,需從器件外部將編程數據重新寫入SRAM中。其 優點是可以編程任意次,可在工作中快速編程,從而實現板級和系統級的動態配置。

7、CPLD保密性好,FPGA保密性差。

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

二、FPGA與單片機的區別

1,FPGA運行速度快FPGA內部集成鎖項環,可以把外部時鐘倍頻,核心頻率可以到幾百M,而單片機運行速度低的多.在高速場合,單片機無法代替FPGA2,FPGA管腳多,容易實現大規模系統單片機IO口有限,而FPGA動輒數百IO,可以方便連接外設.比如一個系統有多路AD,DA,單片機要進行仔細的資源分配,總線隔離,而FPGA由於豐富的IO資源,可以很容易用不同IO連接各外設3,FPGA內部程序並行運行,有處理更復雜功能的能力單片機程序是串行執行的,執行完一條才能執行下一條,在處理突發事件時只能調用有限的中斷資源;而FPGA不同邏輯可以並行執行,可以同時處理不同任務,這就導致了FPGA工作更有效率4,FPGA有大量軟核,可以方便進行二次開發FPGA甚至包含單片機和DSP軟核,並且IO數僅受FPGA自身IO限制,所以,FPGA又是單片機和DSP的超集,也就是說,單片機和DSP能實現的功能,FPGA一般都能實現。

三、應用範圍的區別

1、CPLD和FPGA

大多用於可編程數字電路的實現,使數字電路設計趨於簡單和可更改設計。這幾年隨之FPGA的發展,內部可以嵌入微控制器核,來構建SoC(System on Chip),但是開發難度相當大。

2、單片機

主要用於控制系統,工作頻率一般來說低,硬件上具有多個IO端口,同時也集成了多個外設,主要是便於在控制系統中的應用。至於ARM處理器,可認為是MCU的高級版本,ARM本身只是一個內核,目前已經有多個版本。

四、編程環境、編程語言的區別

1、FPGA

FPGA開發環境主要有ISE,quartus,Vivado,modelsim,編程語言常用verilog,VHDL。

2、CPLD

開發工具有quartus,ise等,工作流程和FPGA設計流程基本相似,編程語言和開發工具基本一樣。與FPGA的不同在於兩者芯片內部不同。

3、單片機

單片機的編程語言:早期單片機主要用匯編語言,現在C語言在單片機開發中佔據主導地位,另外還有其它一些高級語言也可用在單片機開發中,但是使用複雜,應用範圍有限。

單片機由於生產廠家眾多,所以其開發環境基本上都是不一樣的,能夠涵蓋大多數單片機開發的編程環境是IAR,今年隨著ARM的崛起,MDK的應用也越來越多。


老馬識途單片機


一、CPLD,FPGA,單片機概念的區別

1、什麼是CPLD

CPLD(Complex Programmable Logic Device)複雜可編程邏輯器件,是從PAL和GAL器件發展出來的器件,相對而言規模大,結構複雜,屬於大規模集成電路範圍。CPLD主要是由可編程邏輯宏單元(MC,Macro Cell)圍繞中心的可編程互連矩陣單元組成。其中MC結構較複雜,並具有複雜的I/O單元互連結構,可由用戶根據需要生成特定的電路結構,完成一定的功能。由於CPLD內部採用固定長度的金屬線進行各邏輯塊的互連,所以設計的邏輯電路具有時間可預測性,避免了分段式互連結構時序不完全預測的缺點。

2、什麼是FPGA

FPGA英文全名,Field-Programmable Gate Array,既現場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎上進一步發展的產物。

3、單片機(MCU)

單片機(Microcontrollers)是一種集成電路芯片,是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能集成到一塊硅片上構成的一個小而完善的微型計算機系統。

二、編程環境及編程語言

1、CPLD採用原理圖輸入、編寫HDL(VHDL,Verilog),編譯,給出邏輯電路的輸入激勵信號,進行仿真,查看邏輯輸出結果是否正確,進行管腳輸入、輸出鎖定,生成代碼,通過下載電纜將代碼傳送並存儲在CPLD芯片中。開發工具有quartus,ise等,工作流程和FPGA設計流程基本相似,編程語言和開發工具基本一樣。與FPGA的不同在於兩者芯片內部不同。

2、FPGA開發環境主要有ISE,quartus,Vivado,modelsim,編程語言常用verilog,VHDL。採用自頂向下設計,從需求到功能模塊,編程仿真,時序約束,生成bit文件下載調試。

3、單片機主要是C語言開發,常用開發工具keil,單片機的開發必須熟悉芯片的常用接口,熟練配置,編寫接口驅動,硬件復位,軟件復位。同時要了解單片機的結構,硬件加密,軟件加密等等。

三、三者應用領域

1、CPLD的應用領域

目前已深入網絡、儀器儀表、汽車電子、數控機床、航天測控設備等等。

2、FPGA的應用領域

FPGA的應用領域相當廣泛,各種高速處理,圖像視頻處理,航空航天等等,如下圖所示。

3、單片機的應用領域

導彈的導航裝置,飛機上各種儀表的控制,計算機的網絡通訊與數據傳輸,工業自動化過程的實時控制和數據處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統,錄像機、攝像機、全自動洗衣機的控制,以及程控玩具、電子寵物,自動控制領域的機器人、智能儀表、醫療器械以及各種智能機械等等,單片機成本低。


分享到:


相關文章: