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.