Bezpośrednio programowalna macierz bramek
Bezpośrednio programowalna macierz bramek (od ang. "field-programmable gate array, FPGA") – rodzaj programowalnego układu logicznego. Dla projektanta ma funkcjonalność taką samą jak specjalizowany układ scalony, jednak może być wielokrotnie programowany bez demontażu, po jego wytworzeniu i zainstalowaniu w urządzeniu docelowym. FPGA to jedna z dwóch rodzin programowalnych cyfrowych układów logicznych o dużym stopniu scalenia – drugą grupę stanowią układy CPLD (ang. "complex programmable logic device") o nieco innej architekturze. Największymi dostawcami tego typu są firmy Altera i Xilinx, a także Actel, Atmel, Cypress, Lattice Semiconductor, QuickLogic.

Bezpośrednio programowalne macierze bramek są zazwyczaj wolniejsze od odpowiadających im specjalizowanych układów scalonych i pobierają więcej mocy. Mają natomiast wiele innych zalet takich jak krótszy czas projektowania, niższe koszty produkcji (dla małych serii). Ponadto istnieje obecnie możliwość wykonania tzw. "hard copy" FPGA, czyli układu scalonego o funkcjonalności takiej jak wgrany do FPGA projekt. Układ taki jest szybszy i pobiera mniej mocy.
Na ogół programowalne macierze bramek zawierają rozmieszczone matrycowo bloki logiczne CLB. Poszczególne bloki są łączone ze sobą za pośrednictwem linii traktów połączeniowych ("routing channels") oraz programowalnych matryc kluczy połączeniowych umieszczonych w miejscu krzyżowania się traktów poziomych i pionowych. Na obrzeżach matrycy bloków logicznych znajdują się programowalne bloki IOB (wejściowo-wyjściowe). Struktury FPGA zawierają od 64 do dziesiątków tysięcy bloków logicznych o bardzo zróżnicowanej budowie. Bloki logiczne mogą być bardzo złożone, jest ich wówczas mniej w układzie lub względnie proste i jest ich wówczas więcej. Zazwyczaj złożone bloki logiczne zawierają dwie lub więcej pamięci RAM umożliwiających tworzenie tablic wartości funkcji LUT (Look-up Table) i dwa lub więcej przerzutników. W większości układów są to tablice czterowejściowe (pamięć RAM o pojemności 16 bitów). W układach o prostszej budowie, bloki logiczne zawierają zwykle dwuwejściowe układy generacji funkcji kombinacyjnych lub multipleksery czterowejściowe i, ewentualnie, przerzutniki.

Nowoczesne układy FPGA mają możliwość przeprogramowania „w locie” poprzez zastosowanie mechanizmu częściowej rekonfiguracji, co prowadzi do pomysłu rekonfigurowalnego komputera czy rekonfigurowalnego systemu – czyli układów, które mogą dostosować swoją strukturę tak by lepiej sprostać zadaniom, przed którymi stoją w danym momencie.

Układy FPGA używane są w cyfrowym przetwarzaniu sygnałów, lotnictwie i wojsku, w fazie prototypowej układów ASIC i w wielu innych dziedzinach. Np. układy FPGA firmy Xilinx z powodzeniem sprawdziły się w misji na Marsa zakończonej lądowaniem łazików Spirit i Opportunity.

Aby zdefiniować zachowanie układu FPGA używa się języka opisu sprzętu, jak Verilog lub VHDL. Następnie przy pomocy narzędzi syntezy generuje się listę połączeń, która potem w procesie implementacji jest odwzorowywana w konkretnym układzie. Należy zwrócić uwagę, że proces syntezy dopuszcza tworzenie układów logicznych dowolnych rozmiarów, podczas gdy proces implementacji jest próbą wpisania go do konkretnej programowalnej macierzy bramek, gdzie może zabraknąć zasobów do realizacji zadanej logiki. Do zaprogramowania FPGA służy plik binarny, który zawiera informacje o konfiguracji układu.

Układy rekonfigurowalne można podzielić ze względu na rodzaj technologii wykorzystywanej w celu pamiętania swojej konfiguracji:
* SRAM – bazuje na technologii pamięci statycznej, dlatego przy braku zasilania tracą swoją konfigurację
* EPROM – zazwyczaj programowalne tylko raz, ewentualnie można wykasować ich konfigurację przy pomocy promieniowania ultrafioletowego
* EEPROM – wielokrotnego użytku, zachowują swoją konfigurację przy braku zasilania
* FLASH – wielokrotnego użytku. Zazwyczaj komórki FLASH są mniejsze niż odpowiadające im komórki EEPROM, dlatego układy takie są tańsze do wyprodukowania.
* przepalenia (ang. "fuse"), udrożnienia (ang. "anti-fuse") – programowalne tylko raz. Jest to stary typ technologiczny, ale nadal chętnie wykorzystywany przez wojsko z uwagi na wysoką odporność na impuls elektromagnetyczny z broni nuklearnej. W układach tego typu podczas programowania następuje „przepalenie” wybranych wewnętrznych rezystorów (typowo 300 Ω) połączeniowych, co skutkuje trwałością i nieodwracalnością zapisu układu.
Q1860
ang.
Concept
Q1063837
programowalnego układu logicznego
Concept
Q217302
specjalizowany układ scalony
Concept
Q5446864
programowany bez demontażu
UNK
Q1063858
CPLD
Concept
Q438294
Altera
ORG
Q1046482
Xilinx
ORG
None
Actel
UNK
Q757489
Atmel
ORG
None
Cypress
UNK
None
Lattice Semiconductor
UNK
None
QuickLogic
UNK
Q170451
bramek
Concept
None
CLB
UNK
Q5295
RAM
Concept
Q189434
multiplekser
UNK
None
częściowej rekonfiguracji
UNK
None
rekonfigurowalnego komputera
UNK
None
rekonfigurowalnego systemu
UNK
Q173142
cyfrowym przetwarzaniu sygnałów
Concept
Q217302
ASIC
Concept
Q111
Mars
CEL
Q643962
łazików
Concept
Q176276
Spirit
MISC
Q193538
Opportunity
MISC
Q173341
języka opisu sprzętu
Concept
Q827773
Verilog
MEDIA
Q209455
VHDL
MEDIA
Q218013
plik binarny
Concept
Q267416
SRAM
Concept
Q378210
EPROM
Concept
Q11391
promieniowania ultrafioletowego
Concept
Q205908
EEPROM
MISC
Q174077
FLASH
Concept
Q190411
Bezpośrednio programowalna macierz bramek
Concept
+64^^http://www.w3.org/2001/XMLSchema#decimal
64
NUMBER
+16^^http://www.w3.org/2001/XMLSchema#decimal
16
NUMBER
discoverer or inventor
located on astronomical body
instance of
instance of
subclass of