硬件基本概念

轉載至:http://www.jianshu.com/p/26968683b562

FPGA和CPLD是什麼

FPGA和CPLD都是可編程邏輯器件,構造不同而已。
FPGA:Field-Programmable Gate Array
CPLD:Complex Programmable Logic Device

FPGA是數字器件,但又相當於一張白紙沒有特定的功能。
我們可以通過軟件對其硬件結構進行重新構造,實現任何常見的以及從未見過的數字器件功能(wait…軟件能改變硬件結構?變形金剛嗎?是的!)。我們不用像傳統設計方式那樣,每次做電路、升級電路都要重新買器件、焊電路。使用FPGA設計,發現邏輯電路設計不對,只需要改改代碼就能把邏輯電路修正,而電路板和FPGA器件可以不換。

編程語言有VerilogHDL 、VHDL等,開發軟件可以用Quartus等.這裏的HDL是指硬件描述語言Hardware Description Language.

CPLD的“與或門陣列”

下面來介紹一下“變形金剛”的原理。如下圖是CPLD內部的一種基本結構:”與或門陣列”。
A0、A1是輸入信號,F0、F1是輸出信號。
圖中的黑點·和×代表橫豎交叉的兩條線是連接的。黑點表示此處固定連接,不可編程修改,×表示此處可編程爲連接或斷開。


與或門陣列


通過設置“與陣列”和“或陣列”中交叉點的連接、斷開,可以得到F(A0,A1)的任意一種組合邏輯表達式。
故,該電路在硬件不更換的條件下,通過改變交叉點狀態,對應邏輯功能是可以再次改變的,所以稱爲可編程邏輯器件(PLD)。

這些交叉點的通斷控制有很多實現方式,起初用紫外線或激光對交叉點進行照射使其熔斷或熔接。現在可以用存儲器的值去控制三極管通斷實現交叉點通斷。所以,對可編程邏輯器件下載配置,實際上可以理解爲給存儲器賦值。

FPGA的查找表結構

FPGA內部可編程單元結構採用"查找表結構"(LUT,look up table)如下圖,左側一列是16X1bit的位存儲單元 RAM。輸入信號是ABCD,輸出信號F在圖的最右側。ABCD相當於這個存儲器的地址線,選擇16位存儲器中的一個值輸出。通過修改存儲單元RAM的內容,這個電路結構就可實現任意的F(A,B,C,D)邏輯函數。這個結構和數字電路中真值表的功能是一模一樣的。根據輸入地址,輸出不同值,所以叫查找表結構。


LUT查找表結構

小結

VerilogHDL是我們描述電路功能的語言,軟件Quartus根據Verilog讓計算機自動設計出電路結構,並將這種結構配置到FPGA芯片中,實現其內部結構的重構。

在現代電子系統設計中,FPGA\CPLD的使用,極大地降低了用戶設計大規模數字電路的難度,實現了電子設計自動化(EDA,Electronic Design Automation)。

FPGA、CPLD內部結構非常豐富,絕不侷限於以上內容。本文​僅幫助大家快速揭開可編程邏輯器件的神祕之處。


FPGA和單片機

初學FPGA的朋友,經常把FPGA和單片機搞混,認爲FPGA也是一種單片機。這種理解是不妥當的。

他們的結構完全不同。FPGA\CPLD可說是一種"硬件可編程器件",它通過"重構"硬件以實現不同的器件功能,甚至實現一個單片機也完全沒有問題。
而所有的單片機,包括89C51,AVR,STM32……它們的硬件結構和動作是固化的,都是cpu讀取程序存儲器指令並執行,然後再讀下一條指令,無限循環。通過改變被讀取的程序內容,最終實現不同功能。


CPU工作原理


FPGA可以做單片機做的事情,單片機做不了FPGA的事情。這並不是說FPGA就比單片機優秀,它們結構不同,應用場合也不完全一樣。
舉幾個例子吧:
1、實現快速傅里葉變換,FPGA做出來是硬件FFT輸出,速度快。單片機是通過程序一步步演算出FFT。
2、一個FPGA內可以設計N多種數字器件,相互獨立,同時工作。單片機的cpu同一時刻只能執行一條指令,有多個任務時需要分時段處理。
3、由於FPGA的可定製性,它還側重於新型芯片設計、集成芯片研發,片上系統Soc集成等。
4、大部分單片機集成了多種總線接口、AD轉換器、定時器、PWM輸出等,使用起來簡單快捷。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章