閱讀699 返回首頁    go 阿裏雲 go 技術社區[雲棲]


FPGA/CPLD簡介

 

FPGA/CPLD簡介

一、可編程邏輯器件主要有兩個類型:

(一)、現場可編程門陣列(FPGA)(Field Programmable Gate Array)

(二)、複雜可編程邏輯器件(CPLD)(Complex Programmable Logic Device)

二、FPGA與CPLD的比較

盡管FPGA和CPLD都是可編程ASIC器件,有很多共同特點,但由於CPLD和FPGA結構上的差異,具有各自的特點:

(一)、CPLD更適合完成各種算法和組合邏輯,FPGA更適合於完成時序邏輯。

(二)、由於內部布線結構,CPLD的時序延遲是均勻的和可預測的,而FPGA的延遲的不可預測性。(我們在用的時候不用考慮內部結構的布線問題)

(三)、在編程上FPGA比CPLD具有更大的靈活性。

(四)、FPGA的集成度比CPLD高,具有更複雜的布線結構和邏輯實現。

(五)、CPLD比FPGA使用起來更方便。CPLD的編程采用E2PROM或FAST FLASH技術,無需外部存儲器芯片,使用簡單。而FPGA的編程信息需存放在外部存儲器上,就是需要一些配置芯片。

(六)、在編程方式上,CPLD主要是基於E2PROM或FLASH存儲器編程,編程次數可達1萬次,優點是係統斷電時編程信息也不丟失。FPGA大部分是基於SRAM編程,編程信息在係統斷電時丟失,每次上電時,需從器件外部將編程數據重新寫入SRAM中。其優點是可以編程任意次,可在工作中快速編程,從而實現板級和係統級的動態配置。

(七)、CPLD保密性好,FPGA保密性差。

(八)、一般情況下,CPLD的功耗要比FPGA大

三、FPGA的用途

FPGA被應用於範圍廣泛的應用中,從數據處理和存儲,以及到儀器儀表、電信和數字信號處理等。FPGA能完成任何數字器件的功能,上至高性能CPU,下至簡單的74係列電路,都可以用FPGA來實現。FPGA/CPLD的應用領域:汽車、軍事和航空航天、廣播、測量和測試、消費類、有線或無線通信、工業、醫療等等。

四、CPLD/FPGA與MCU的比較

1、MCU(微處理器或單片機)麵臨的問題

由MCU為主構成的電子應用係統通常出現的問題可以分為兩類:1類是技術類問題,如軟件設計、接口器件的選擇或康幹擾措施應用等問題,這類問題通常屬於可以解決的問題;另一類則直接與MCU的缺點有關。主要包括一下幾個方麵:

(1)、低速 由於MCU的工作方式是通過內部的CPU逐條執行軟件指令來完成各種運算和邏輯功能的,無論多麼高的工作時鍾頻率和多麼好的指令時許方式,在排隊式串行指令執行方式(DSP處理器也是這種方式)麵前,其工作速度和效率也將大打折扣,因此,MCU在實時仿真,高速工控或高速數據采集等領域便顯得力不從心了。

(2)、複位工作方式 MCU的另一個致命的弱點是:任何MCU在工作初始都必須經曆一個複位過程,否則進行正常工作。MCU的複位必須滿足一點的電平(電壓)條件和時間條件。在工作電平有某種幹擾性突變的時候,MCU的複位將成為係統不可靠工作的重要因素。而且產生這種複位問題是隨機和動態的,一般都無法檢測的。這個複位問題是MCU的一個先天不足。

(3)、PC的程序跑飛 在強幹擾或某種偶然因素下,任何MCU的PC都極可能越出正常的程序流程而跑飛。無論多麼優秀的MCU,無論具有多麼良好的抗幹擾措施,包括設置任何方式的內、外硬件看門狗,在強幹擾條件下,MCU都無法保證其仍能正常工作而不進入不可挽回的“死機”狀態。因此,當MCU的複位問題和跑飛問題結合在一起的時候,就會讓技術人員很難受,因此他們寧可使用純模擬或純數字電路。

(4)、MCU使用誤區 MCU邏輯行為上的普適性,常會引導人們進入這樣一個誤區:MCU是無所不能的,任何一個電子係統設計,MCU都是無可質疑的主角。

2、CPLD/FPGA的主要優點可以歸納如下:

(1)、高速 CPLD/FPGA的時鍾延遲可以達到ns級(1ns就是100MHz,同時最高的器件可以支持GHz的速度),結合其並行工作方式,在超高速應用領域和實時監控方麵有著非常廣闊的前景。

做個比較:工作於12MHz晶振頻率的MCS51係列單片機對AD控製的采樣速率為20KHz左右,若是用FPGA來實現的話,若FPGA采樣的工作頻率是100MHz,那麼對AD的采樣速率可以達到50MHz。

(2)、高可靠性 CPLD/FPGA在大多數應用中,無需考慮複位和初始化,另外“死機”(進入非法狀態)情況是可以預測的,這包括非法狀態的數量和進入狀態的可測性,這些“死機“狀態也是可以防止的。CPLD/FPGA的高可靠性還表現在幾乎可將整個係統下載於同一個芯片中,從而大大縮小體積,易於屏蔽。

(3)、編程簡便 CPLD/FPGA產品中多為係統可編程器件,編程方法極為便捷,隻需一個下載線和電腦就可以。

(4)、易學易用 用MCU設計數字係統,對於行家來說是十分簡單的事情,然而對於初學者,確實件不易的事。因為他不僅需要熟悉軟件,而且還要有豐富的硬件開發經驗;不僅要熟悉各種單片機的開發係統的使用方法,還要知道所以單片機的內部結構(單片機的內部有很多的寄存器,要是使用必須先熟悉這些東西是什麼怎麼用,比較麻煩)。相比之下,CPLD/FPGA應用的學習卻無需太多的預備,他就像一張白紙,你無需了解內部結構,隻要稍有一點數字電路的知識,就可在短期內掌握基本的設計方法和開發技巧。

(5)、開發周期短 許多供應商都推出了相應的軟件,以及一些技術支持。如Altera公司的 Maxplus 和QuartusII,這些軟件仿真功能完善,仿真能力強,開發簡便,硬件因素設計少,因此可以在短時間內實現複雜係統的設計。

(6)、係統可預測性好 有豐富的軟件

(7)、係統易維護、易升級 隻需下載線和電腦就可以完成升級。

(8)、多次擦寫,可重複利用

(9)、保密性好

(10)、有豐富的端口

五、學習FPGA/CPLD所要掌握的知識

1、硬件知識 FPGA/CPLD就像一張白紙,我們不需要對內部有太深的了解,在編程的時候也不要像MCU那樣對內部什麼寄存器進行初始化什麼的,我們隻要寫程序就好。而且我們對於他的那麼多的管腳,其實一部分是有專門用途的,那麼我們可以不用,別的IO口都是可以用的,而且都是一樣的,比如EPF10K10TC144-4的可用IO口為102個(一般的單片機隻有32個端口,而且這些端口不是都可以用的),都是一樣的端口。因此,硬件不需要太多的了解。

2、理論知識 對於數字係統,那麼我們就要掌握一些基本的數字知識,可以找點數字電路的書看看,看看最簡單的邏輯知識。

3、軟件使用 目前最大的生產FPGA/CPLD的廠家是Altera,他提供的軟件以及支持是比較豐富的。目前該公司提供的仿真軟件主要有QuartusII、Nios II 等等。目前用的比較多的是QuartusII6.0,軟件的學習是比較簡單的。

4、語言的學習 FPGA/CPLD主要VHDL(Very-High-Speed Integrated Circuit Hardware Description)和Verilog HDL語言兩種。VHDL的主要應用領域:

(1) 智能模塊(IP)的研發 IP: 用VHDL語言編寫,經邏輯優化和功能驗證的可生成VLSI中各種功能單元的軟件群,例如,無線通信產品、網上設備、中央處理器(通用CPU)、DSP、PCI、USB、嵌入式CPU

(2)單芯片全功能集成係統設計:SoPC係統、嵌入式計算、ASIC驗證

(3)功能可重置係統的設計:遠程係統升級、可重配置設計

三、學習FPGA/CPLD的方法

要想在FPGA上實現自己想要的東西,首先要明白你要實現的東西的原理,然後根據原理去用VHDL語言來實現。

學習FPGA,首先要學習VHDL語言,那就要掌握VHDL的基本語法,這就要看一些基本的書。掌握了語法後,學習FPGA,就要把軟件和硬件結合起來,這樣效果比較好,否則就是看書的話效果不明顯。

四、往年電子大賽中可以用FPGA做的題目

05年(共7題):正弦信號發生器

簡易頻譜分析儀

數控恒流源

03年(共7題):簡易邏輯分析儀

低頻數字式相位測量儀

01年(共7題):數據采集與傳輸係統

簡易數字存儲示波器

波形發生器

99年(共6題):數字化語音存儲與回放係統

97年(共4題):水溫控製係統

簡易數字頻率計

95年(共4題):實用信號源的設計

簡易電阻、電容和電感測試儀

94年(共2題):多路數據采集係統

簡易數控直流電源

最後更新:2017-04-03 16:59:42

  上一篇:go 【進程線程與同步】5.2 避免在同一機器上運行同一程序的多個實例
  下一篇:go 【進程線程與同步】5.1 創建和銷毀子進程