Przejdź do treści

Bezpośrednio programowalna macierz bramek (FPGA)

FPGA to rekonfigurowalny układ scalony pozwalający projektować układy cyfrowe w postaci programowalnej logiki. Artykuł opisuje budowę, konfigurację, historię, zastosowania i ograniczenia.

Przegląd

Bezpośrednio programowalna macierz bramek, znana pod angielskim skrótem FPGA (Field-Programmable Gate Array), to rodzaj układu scalonego umożliwiającego projektantom tworzenie i rekonfigurowanie własnych obwodów cyfrowych. W odróżnieniu od pojedynczych bramek logicznych o stałej funkcji, FPGA są dostarczane bez z góry określonego działania — ich funkcjonalność powstaje po zaprogramowaniu. Dzięki temu ten typ układów łączy dużą elastyczność projektową z wydajnością typową dla sprzętowego przetwarzania równoległego.

Galeria obrazów

6 Obrazy

Budowa i podstawowe elementy

Współczesne FPGA składają się z powtarzalnych elementów logicznych oraz specjalizowanych bloków ułatwiających realizację złożonych zadań. Do najważniejszych składowych należą:

  • Elementy logiczne (CLB, LUT, FF) — podstawowe bloki implementujące funkcję logiczną i rejestry do przechowywania bitów.
  • Programowalne połączenia — sieć przełączników i magistrali, które łączą ze sobą bloki logiczne i bloki wejść/wyjść.
  • Bloki pamięci (BRAM) — wbudowane macierze RAM do przechowywania danych i buforów.
  • Bloki DSP — jednostki zoptymalizowane do operacji arytmetycznych, przydatne w przetwarzaniu sygnałów i obliczeniach zmiennoprzecinkowych.
  • Bloki I/O i kontrolery — interfejsy do komunikacji z zewnętrznym sprzętem oraz układy zarządzania zegarem (PLL, MMCM).
  • Pamięć konfiguracji — w wielu FPGA konfiguracja jest przechowywana poza modułem (np. w pamięci flash lub EEPROM) i ładowana przy starcie, chociaż istnieją też wersje z nieulotną pamięcią konfiguracyjną.

Proces programowania i narzędzia

Programowanie FPGA polega na przekształceniu opisu sprzętu w postaci kodu HDL (np. VHDL lub Verilog) w konkretną konfigurację układu. Etapy typowego procesu to: opis funkcji w języku opisu sprzętu, synteza logiczna zamieniająca HDL na sieć bramek, „place-and-route” (lokalizacja i okablowanie) oraz wygenerowanie pliku bitstream, który zapisuje układ połączeń i ustawień. Konfiguracja może być wgrywana przez interfejsy programowania, takie jak JTAG, albo przez odczyt z pamięci konfiguracyjnej przy starcie urządzenia.

Dostawcy FPGA zwykle oferują rozbudowane narzędzia programistyczne integrujące syntezę, analizę czasową i generowanie bitstreamów. W ostatnich latach pojawiły się także rozwiązania umożliwiające częściową rekonfigurację w działającym systemie czy integrację tzw. miękkich i twardych rdzeni procesorowych (soft CPU implementowany w logice, lub twarde rdzenie ARM w układach typu SoC).

Historia i rozwój

Pomysł na programowalną logikę pojawił się w drugiej połowie XX wieku, a komercyjne FPGA zyskały popularność w latach 80. XX wieku. Firmy produkujące te układy rozwijały architektury zawierające coraz więcej bloków specjalizowanych (pamięci, DSP, kontrolery) oraz poprawiały gęstość i szybkość połączeń. Współczesne FPGA to zaawansowane platformy łączące możliwość implementacji niestandardowych obwodów z integracją wysokowydajnych rdzeni procesorowych, co rozszerza zakres zastosowań.

Zastosowania i przykłady użycia

Ze względu na elastyczność i zdolność do równoległego przetwarzania, FPGA znalazły zastosowanie w wielu dziedzinach. Popularne obszary zastosowań to:

  • Prototypowanie układów scalonych i przyspieszanie rozwoju ASIC.
  • Przetwarzanie sygnałów i obrazów (SDR, kamery przemysłowe, akceleracja kodowania/wideo).
  • Sieci telekomunikacyjne i routing pakietów, gdzie liczy się niska latencja.
  • Systemy wbudowane o krytycznych wymaganiach czasowych, np. sterowniki, robotyka.
  • Rozwiązania kosmiczne i wojskowe — często w wersjach odpornych na promieniowanie.
  • Akceleracja obliczeń (np. w centrach danych) oraz implementacja niestandardowych układów kryptograficznych.

Różnice, zalety i ograniczenia

Do głównych zalet FPGA należą elastyczność projektowa, możliwość równoległego przetwarzania i szybkie prototypowanie. W porównaniu z ASIC dają krótki czas wprowadzenia na rynek i łatwość modyfikacji funkcji po produkcji. Wady to wyższy koszt jednostkowy przy masowej produkcji, większe zużycie energii w porównaniu do zoptymalizowanych ASIC oraz fakt, że wiele popularnych FPGA o architekturze SRAM nie zachowuje swojej konfiguracji po utracie zasilania bez dodatkowej pamięci konfiguracyjnej. Ponadto bezpieczeństwo bitstreamów (poufność konfiguracji) oraz złożoność procesu projektowego stanowią istotne wyzwania.

W praktyce projektanci wybierają FPGA tam, gdzie konieczna jest szybka adaptacja, specyficzne przetwarzanie równoległe lub kiedy koszty rozwoju ASIC byłyby nieproporcjonalnie wysokie. Dzięki ciągłym udoskonaleniom architektury i narzędzi, FPGA pozostają kluczowym elementem nowoczesnej elektroniki cyfrowej.

Struktura wewnętrzna

FPGA są generalnie zbudowane na programowalnych elementach logicznych i programowalnych połączeniach. Jednym z elementów składowych elementów logicznych jest programowalna tabela odnośników (LUT). LUT może być zaprogramowany tak, aby wyświetlać dowolne wartości wejściowe. W ten sposób LUT może być zaprogramowany jako dowolny typ układu logicznego z taką samą liczbą wejść i wyjść. Na przykład, 2-wejściowy, 1-wyjściowy LUT można zaprogramować tak, aby emulował logikę 2-wejściową AND, OR, NAND, NOR, XOR, itd. Wyjście tego LUT może być zapisywane za pomocą rejestru lub podłączone do wejścia innych LUT. Za pomocą programowalnego menu, FPGA może być zaprogramowany do wyboru zarejestrowanego lub niezarejestrowanego wyjścia. Ta kombinacja LUT, rejestru i menu jest ogólną strukturą elementu logicznego.

Do połączenia tych elementów logicznych wykorzystywane są tranzystory przepustowe. Tranzystor może być zaprogramowany tak, aby albo łączył sygnał, albo nie, co daje FPGA możliwość bardzo specyficznego łączenia ze sobą elementów logicznych. Na przykład, jeśli wyjście jednego z elementów logicznych zasila wejście innego, tranzystor przelotowy może być zaprogramowany tak, aby połączyć te dwa przewody razem i dopasować je do określonej logiki. Pomiędzy elementami logicznymi a tranzystorami przepustowymi, kompilator może pobrać opis sprzętowy z HDL, stworzyć logikę dla elementów logicznych i połączyć je razem za pomocą tranzystorów przepustowych.

Pytania i odpowiedzi

P: Co to jest Field-programmable gate array (FPGA)?

O: Field-programmable gate array (FPGA) to elektroniczny komponent używany do budowy rekonfigurowalnych obwodów cyfrowych. W momencie produkcji ma nieokreśloną funkcję i musi zostać zaprogramowana lub przekonfigurowana, zanim będzie można ją zastosować w układzie.

P: Czym różni się FPGA od bramki logicznej?

O: FPGA różni się od bramki logicznej tym, że bramka logiczna ma stałą funkcję, natomiast FPGA ma funkcję nieokreśloną w momencie produkcji.

P: Jakim rodzajem układu scalonego jest FPGA?

O: FPGA to układ scalony z kategorii programowalnych urządzeń logicznych lub PLD.

P: Jakie są wady stosowania FPGA w porównaniu z innymi PLD?

O: Jedną z wad stosowania FPGA w porównaniu z innymi PLD jest to, że nie pamiętają one swojego projektu po odłączeniu zasilania, dlatego potrzebują oddzielnego układu pamięci konfiguracyjnej, w którym przechowywany jest projekt. Są one również droższe niż inne rodzaje PLD.

P: Jak programuje się FPGA?

O: Aby zaprogramować FPGA, inżynierowie używają oprogramowania inżynierskiego dla Windows lub Linux do opracowania projektów napisanych w językach opisu sprzętu, takich jak VHDL i Verilog. Następnie oprogramowanie tłumaczy ten kod na elementy logiczne dostępne w wybranych FGPA i pozycjonuje je za pomocą procesów place and route, co tworzy plik bitowy, który można zaprogramować w pamięci konfiguracyjnej lub bezpośrednio w samym FGPA za pomocą programatora USB podłączonego do portu JTAG.

P: Czy mikroprocesory i mikrokontrolery są podobne do FGPA?

O: Nie, mikroprocesory i mikrokontrolery różnią się od FGPA, ponieważ w swojej podstawowej formie nie mogą uruchamiać oprogramowania; dopiero po podaniu konfiguracji zawierającej architekturę procesora mają tę zdolność.

Powiązane artykuły

Autor

AlegsaOnline.com Bezpośrednio programowalna macierz bramek (FPGA)

URL: https://pl.alegsaonline.com/art/34210

Udostępnij