Co się stanie, gdy FPGA zostanie „zaprogramowane”?


13

Z tego, co rozumiem, proces programowania FPGA składa się z dwóch części:

  1. Zakoduj opis sprzętu do bitów, które FPGA może zrozumieć (tj. Napisz trochę HDL i skompiluj)
  2. Załaduj skompilowany HDL do FPGA.

Moje pytanie brzmi: „Co FPGA robi ze skompilowanym HDL?”. W tej chwili myślę o układach FPGA jako o „możliwym do formowania sprzęcie”, w którym przewody i bramki logiczne można formować w dowolny sposób. Jedną z fajnych rzeczy jest to, że łatwość formowania jest stała: FPGA można przeprogramować.

Jak FPGA interpretują skompilowane HDL? Jak osiąga się trwałą formowalność?


4
W rzeczywistości nie jest trwały - strumień bitów FPGA musi być ponownie ładowany z pamięci EEPROM za każdym razem, gdy włączane jest zasilanie. CPLD nie mają tego problemu, a niektóre FPGA mają wbudowaną pamięć EEPROM, która ładuje ich strumień bitów przy każdym włączeniu.
AngryEE

2
Myślę, że ma na myśli „formowalność jest trwała”, tzn. Że sam program nie jest trwały.
ajs410

Odpowiedzi:


23

Sądząc po twoim drugim pytaniu, jesteś facetem Xilinx. Dlatego gorąco polecam pobranie karty danych dla Twojego układu Xilinx i przejście do rozdziału Opis funkcjonalny. Dla używanego przeze mnie układu Spartan 3 jest to 42 strony dobrej zabawy. Szczegółowo wyszczególnia, jakie elementy znajdują się w układzie FPGA - IOB, CLB, plasterki, LUT, blok RAM, mnożniki, Digital Clock Manager, sieć zegarowa, interkonekt i kilka bardzo podstawowych informacji konfiguracyjnych. Musisz zrozumieć tę informację, jeśli chcesz wiedzieć, jak wygląda „skompilowana HDL”.

Po zapoznaniu się z architekturą FPGA możesz zrozumieć ten proces. Po pierwsze, Twój projekt HDL jest uruchamiany przez silnik syntezy, który zamienia HDL w zasadniczo RTL. Następnie Mapper przetwarza wyniki z Syntezy, „mapując” je na dostępne elementy architektury FPGA. Następnie router wykonuje funkcję Place And Route (PAR), która określa, dokąd idą te elementy i jak je połączyć. Wreszcie wyniki z PAR są przekształcane w plik BIT. Zazwyczaj ten plik BIT jest następnie przekształcany w jakiś sposób, aby można go było załadować do układu Flash, aby FPGA mogła zostać automatycznie zaprogramowana po włączeniu.

Ten plik bitów opisuje cały program FPGA. Na przykład CLB w Spartan 3 składają się z wycinków, które składają się z LUT, które są zaledwie 16-adresowymi 1-bitowymi SRAM. Zatem jedną rzeczą, którą będzie zawierać plik BIT, jest dokładnie to, jakie dane trafiają do każdego adresu SRAM. Inną rzeczą, którą zawiera plik BIT, jest sposób podłączenia każdego wejścia LUT do macierzy połączeń. Plik BIT będzie także zawierał wartości początkowe, które wchodzą do pamięci RAM bloku. Opisuje, co jest podłączone do zestawu i resetuje szpilki każdego flip-flopa w każdym wycinku. Opisuje sposób połączenia łańcucha nośnego. Opisuje interfejs logiczny dla każdego IOB (LVTTL, LVCMOS, LVDS itp.). Opisze wszystkie zintegrowane rezystory podciągające lub podciągające. Zasadniczo wszystko.

W przypadku Xilinx pamięć FPGA jest czyszczona po zainicjowaniu konfiguracji (tzn. Potwierdzeniu jest PROG_B). Po wyczyszczeniu pamięci, INIT_B przechodzi w stan wysoki, wskazując, że faza jest zakończona. Plik BIT jest następnie ładowany przez interfejs JTAG lub Flash. Po załadowaniu programu pulsuje Global Set / Reset (GSR), resetując wszystkie klapki do ich stanu początkowego. Pin DONE następnie przechodzi w stan wysoki, co oznacza, że ​​konfiguracja jest zakończona. Dokładnie jeden cykl zegara później wyzwalany jest globalny sygnał trójstanowy (GTS), umożliwiający sterowanie wyjściami. Dokładnie po jednym cyklu zegara zostaje zwolnione globalne zezwolenie na zapis (GWE), dzięki czemu przerzutniki zaczynają zmieniać stan w odpowiedzi na ich dane wejściowe. Zauważ, że nawet ten końcowy proces konfiguracji może być nieco zmieniony w zależności od flag ustawionych w pliku BIT.

EDYTOWAĆ:

Powinienem również dodać, że powodem, dla którego program FPGA nie jest trwały, jest fakt, że struktura logiczna składa się z pamięci ulotnej (np. SRAM). Gdy więc FPGA traci moc, program zostaje zapomniany. Dlatego potrzebują np. Układów Flash jako nieulotnej pamięci dla programu FPGA, aby można ją było ładować za każdym razem, gdy urządzenie jest włączone.


6

Kompilacja HDL daje w wyniku bitowy wzorzec, który wskazuje, które połączenia wewnątrz FPGA powinny zostać aktywowane. FPGA nie musi już interpretować HDL. Wzorzec bitów jest programowany w szeregowy moduł ładujący Flash / EEPROM, a po uruchomieniu ten wzór jest przenoszony do FPGA, tworząc niezbędne połączenia.


1
SYNTEZA oznacza trzy frazy 1. Generowanie listy sieci 2. Optymalizacja poziomu bramki 3. Mapowanie technologii.
Standard Sandun

4

Wynikiem kompilacji jest strumień bitów (dosłownie strumień bitów), który jest ładowany po włączeniu zasilania. To przesuwa się przez FPGA przechowywane w niektórych komórkach pamięci (zatrzaski). Komórki te są połączone z różnymi jednostkami logicznymi, multiplekserami, tablicami przeglądowymi, blokami RAM, macierzami routingu i stanowią tak zwaną „konfigurację”. Po załadowaniu strumienia bitów FPGA zaczyna działać - bity w zatrzaskach konfiguracyjnych „informują” każdy mały kawałek FPGA, jak ma działać.

EDYCJA 24 kwietnia 2012: Wspomniane flip-flopy nie są przeznaczone do tabel przeglądowych ani ich konfiguracji. Jak powiedział @ ajs410, są one w pamięci RAM, która zawiera jeszcze mniej tranzystorów. Przerzutniki służą do przechowywania danych poza LUT, jeśli ta pamięć jest włączona.


Ile obwodów w typowym układzie FPGA stanowi logika i routing, a ile obsługuje programowanie?
supercat

Technicznie „komórki pamięci” to klapki, a nie zatrzaski. Tzn. Są uruchamiane na krawędzi.
Brian Carlton,

@BrianCarlton: Czy klapki naprawdę są używane dla wszystkich komórek pamięci programu? O ile mi wiadomo, klapki potrzebują czegoś rzędu 12-16 tranzystorów MOSFET na bit; dla kontrastu, inne w pełni statyczne techniki blokowania danych wymagają jedynie 5-8.
supercat

1
LUT jest zwykle wykonany z SRAM. Klapki są dołączone do wyjścia SRAM.
ajs410

1
@ supercat: Słyszałem, że 90% FPGA rutuje ... reszta to logika i konfiguracja - jednak nie mogę szybko znaleźć referencji :(
Martin Thompson

1

Standardowym terminem jest „konfiguracja”, a nie „programowanie” dla FPGA. FPGA jest zwykle urządzeniem opartym na SRAM. SRAM przechowuje bity, które wskazują, które połączenia są tworzone i przerywane w „strukturze logicznej” urządzenia. Gdy zachodzi konfiguracja, strumień bitów jest wysyłany do FPGA, która zapisuje w tej pamięci SRAM. Po wyłączeniu układu FPGA opartego na pamięci SRAM dane SRAM są kasowane, a po włączeniu układu FPGA należy go ponownie skonfigurować.

Teraz o tym wiedzą, są to różne metody „konfigurowania” i FPGA, a zatem istnieją różne formaty plików zawierających ten „strumień bitów”. Ostatecznie struktura tych plików i szczegóły dotyczące tego, jak dokładnie skonfigurowano układ FPGA, są zastrzeżone dla producenta i informacje te nigdy nie są udostępniane. Ale ogólna zasada pozostaje taka sama w przypadku układów FPGA.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.