FPGA和CPLD是可編程邏輯器件的典型代表。
我們可以通過軟件對其硬件結構進行重構(wait…軟件能改變硬件結構?變形金剛啊?),不用像傳統方式那樣,每次做電路、升級電路都要重新買器件、焊電路。
FPGA:Field-Programmable Gate Array
CPLD:Complex Programmable Logic Device
編程語言可以是VerilogHDL、VHDL
軟件常用Quartus等.
下面來介紹一下“變形金剛”的原理。
如下圖是CPLD內部的一種基本結構”與或門陣列”:
A0、A1是輸入信號,F0、F1是輸出信號。
通過設置“與陣列”和“或陣列”中交叉點的連接、斷開,可以得到F(A0,A1)的任意一種組合邏輯表達式。
故,該電路在硬件不更換的條件下,通過改變交叉點狀態,對應邏輯功能是可以再次改變的,所以稱爲可編程邏輯器件(PLD)。
這些交叉點的通斷控制有很多實現方式,早期使用紫外線或激光對交叉點進行照射使其熔斷或熔接。現在一般用存儲器的值去控制三極管通斷實現交叉點通斷。所以,對可編程邏輯器件下載配置,實際上可以理解爲給存儲器賦值。
FPGA內部可編程單元結構採用查找表結構(LUT,look up table)
如下圖,左側一列是16X1bit的位存儲單元 RAM。輸入信號是ABCD,輸出信號F在圖的最右側“查找表輸出”。通過改變ABCD輸入,可以選擇對應地址的值輸出。通過修改存儲單元RAM的內容,這個電路結構可實現任意的F(A,B,C,D)函數。有沒有發現,這個結構和數字電路中真值表的功能是一模一樣的。
總結:
VerilogHDL是我們描述電路功能的語言,軟件Quartus根據Verilog語言,讓計算機自動設計出電路結構,並將這種結構配置到FPGA芯片中,實現其內部結構的重構。
在現代電子系統設計中,可編程邏輯器件的使用,極大地降低了用戶設計大規模數字電路的難度,實現了電子設計自動化(EDA,Electronic Design Automation)。
FPGA、CPLD內部結構非常豐富,絕不侷限於以上內容。本文僅幫助大家快速揭開可編程邏輯器件的神祕之處。