Co to jest FPGA? Pojęcia, definicje, zasady programowania i podstawy dla początkujących

FPGA oznacza "Field Programmable Gate Array" i reprezentuje ogromny zestaw zaworów, które można zaprogramować i przebudować w dowolnym miejscu i czasie. Wielu użytkowników wciąż nie rozumie, co to jest FPGA. "Ogromny zestaw bram" - uproszczony opis modelu. Niektóre FPGA mają wbudowane dyski twarde: kontrolery pamięci, szybkie interfejsy komunikacyjne i punkty końcowe PCIe. Wewnątrz FPGA znajduje się wiele zaworów, które można swobodnie ze sobą łączyć. Zasada działania jest mniej więcej podobna do połączenia poszczególnych układów elementów logicznych. FPGA są produkowane przez wiodące firmy na świecie, Xilinx, Altera i Microsemi.

Historia rozwoju FPGA

Przemysł FPGA rozwinął się z zaprogramowanej pamięci stałej PROM i urządzeń logicznych PLD. W 1970 Philips wynalazł programowalną matrycę. Konstrukcja takich FPGA, składający się z dwóch planów osiągnąć specyficzną logikę wdrożenia, funkcjonalny przewodowy „I” lub „OR”. To dało jej możliwość realizacji funkcji w postaci Suma produktów.


Altera powstała w 1983 roku i w 1984 roku zwolniony pierwszy na rynku, który może przeprogramowania układ logiczny - EP300 z oknem kwarcu w opakowaniu, które pozwoliły nam na użyciu matrycy lampy UV, aby usunąć etykietę EPROM. W celu przezwyciężenia wyzwań kosztów i szybkości, został opracowany programowalny układ logiczny, który obejmował tylko jeden programowalny „AND”, wprowadzony do stałych „lub” bram. PAL iPLA, wraz z innymi wariantami, są zgrupowane jako proste programowalne urządzenia logiczne SPLD. Takie FPGA, zintegrowane w jeden układ z dostarczonymi interkonektami do programowego łączenia bloków, zostały wykorzystane do spełnienia rosnących wymagań technologicznych. Nazywane są one zintegrowanymi PLD i opracowane przez Altera.


Tranzystory - inna klasa urządzeń elektronicznych oparta na programowalnych maskach macierzy bramkowych. Składają się z układów tranzystorowych, które można łączyć za pomocą przewodów użytkownika. Ustąpiły miejsca logicznym blokom, a teraz użytkownik może je dostroić, a nie w laboratorium produkcyjnym. Pomysł stworzenia pierwszego komercyjnie opłacalnego FPGA należy do współzałożycieli Xilinx Ross Freeman i Bernard Wondershmitt. XC2064 został wynaleziony w 1985 roku i składał się z 64 konfigurowalnych bloków logicznych z 3 tabelami referencyjnymi. Zapewnia to nowoczesne zrozumienie tego, czym jest FPGA. To było pod koniec 1980 roku, kiedy eksperyment Steve'a Casselmana na temat tworzenia komputera z 600 000 przeprogramowanych bram znalazł sponsorów w Departamencie Marynarki Wojennej Stanów Zjednoczonych w Naval Warfare, a następnie otrzymał patent w 1992 roku.
Pod koniec 1990 roku w produkcji FPGA doszło do dużej konkurencji, a udział w rynku Xilinx zaczął spadać. Gracze tacy jak Actel, Altera, Lattice, QuickLogic, Cypress, Lucent i SiliconBlue, zajęli swoją niszę na globalnym rynku FPGA obok Xilinx. W 1997 roku Adrian Thompson zdołał połączyć programowanie FPGA i technologii algorytmu genetycznego z FPGA, rozpoczynając nową erę Evolvable.
Dzisiaj FPGA stała się całkiem wystarczającadostępne, w związku z czym nadal zyskują popularność na rynkach konsumenckich. Składają się z zestawu komórek logicznych zwanych tabelami wyszukiwania LUT otoczonymi przez połączoną sieć, która zapewnia elastyczny system, który może implementować praktycznie dowolny algorytm cyfrowy.

Zasady programowania

Programowanie FPGA dla początkujących jest procesem badania, planowania, projektowania i wdrażania rozwiązania na FPGA. Liczba i rodzaj planowania różni się w zależności od programu. Stworzenie dokumentu z wymaganiami i stworzenie dokumentu projektowego, wyjaśniającego, w jaki sposób zostanie wdrożone proponowane rozwiązanie, może być bardzo przydatne w rozwiązywaniu potencjalnych problemów.
Czas poświęcony na stworzenie wysokiej jakości dokumentu projektu pozwoli zaoszczędzić w przyszłości na refaktoryzacji, debugowaniu i naprawianiu błędów. Wdrożenie rozwiązania programowego FPGA polega na zaprojektowaniu projektu przy użyciu jednej z metod realizacji projektu. Wśród nich są schematy lub kod HDL, taki jak Verilog lub VHDL. FPGA może zaprogramować plik źródłowy na fizycznym urządzeniu FPGA za pomocą narzędzi do programowania FTP Altera. Wprowadzenie projektu za pomocą schematów nie jest już stosowane w branży. Synteza i programowanie niemal całkowicie zajęły się narzędziami dostawców, takimi jak narzędzia konfiguracyjne ISE i Vivado oraz laboratorium Numato.

Wskaźnik transferu transferu RTL

RTL wskazuje stawkę transferu w rejestrze. Deweloper może również napotkać terminy Logika transferu transferowego lub Język transferu rejestru, wszystkie one oznaczająto samo w projektowaniu sprzętu. RTL jest wyższym poziomem abstrakcji dla cyfrowego sprzętu, który znajduje się gdzieś pomiędzy symulacją behawioralną na jednym końcu i czysto strukturalnym na poziomie bramy - z drugiej. Symulacja bramy oznacza opis sprzętu za pomocą podstawowych zaworów, co jest dość wyniszczające. RTL może być postrzegany jako analogowy termin "pseudo-kod" używany w ramach programowania FPGA. Możesz opisać projekt sprzętu jako sekwencję kroków lub strumieni danych z jednego zestawu rejestrów do następnego w każdym cyklu zegara. RTL jest również określany jako projekt "strumienia danych". Jak tylko projekt RTL jest gotowy, łatwiej jest przekształcić go w prawdziwy kod HDL przy użyciu języków takich jak Verilog, VHDL, SystemVerilog lub inny język sprzętowy. FPGA to znacznie więcej niż zestaw bramek. Chociaż możliwe jest budowanie schematów logicznych o dowolnej złożoności, organizowanie i łączenie elementów logicznych. Jest to sposób na wyrażenie logiki w prostym formacie, który ostatecznie może zostać przekształcony w szereg elementów. Dwie popularne metody to: wprowadzenie schematu i opisu języka sprzętu HDL. Zanim stał się powszechnie stosowany, inżynierowie zaprojektowali wszystko poprzez schematy. Były bardzo proste przy małych projektach, ale boleśnie niezarządzane - dla dużych. Wyobraź sobie, jak inżynierowie Intela narysowali obwód dla Pentium z milionami bramek! Jest to niedopuszczalnie trudne.

Verilog to opis sprzętu HDL, z którego można korzystaćobwody cyfrowe w postaci zwykłego tekstu. Nauka Verilog nie jest tak trudne, jeśli użytkownik ma doświadczenie w programowaniu. VHDL to kolejny popularny HDL, szeroko stosowany w branży. Verilog i VHDL mają mniej więcej takie samo rozpoznanie na rynku, ale użytkownicy zwykle wybierają Verilog, ponieważ jest łatwy do nauczenia i ma syntaktyczne podobieństwo do języka C.

Technologie programowania

Układy FPGA można uznać za elementy konstrukcyjne, które pozwalają na prawidłowe ustawienie sprzętu. Jest to specjalna forma PLD o większej gęstości i rozszerzonej funkcjonalności w krótszym czasie z wykorzystaniem CAD. FPGA są dostępne w różnych wersjach w oparciu o zastosowaną technologię programowania. Można je zaprogramować za pomocą:
  • technologii przeciw zamarzaniu.
  • Programowanie oparte na technologii urządzenia Flash firmy Actel.
  • FPGA można przeprogramować kilka tysięcy razy, co zajmuje kilka minut na samym polu w celu przeprogramowania i posiada pamięć nieulotną.
  • FPGA na bazie SRAM, który oferuje nieograniczone przeprogramowanie i bardzo szybką rekonfigurację lub częściową rekonfigurację podczas samej pracy z niewielką liczbą dodatkowych obwodów. Większość tych firm, takich jak Altera, Actel, Atmel i Xilinx, produkuje te urządzenia.

    Skonfigurowane bloki logiczne

    Niezależnie od różnych producentów i kilku różnych architektur i zestawów funkcji, większość układów FPGA ma wspólne podejście. Głównymi składowymi blokami dowolnej FPGA są elastyczne programowalne "bloki logiczne" (CLB), otoczone programowalnymi blokamiI /O "z hierarchią kanałów routingu łączących różne bloki na planszy.
    Ponadto mogą one składać się z bibliotek DLL do przydzielania i kontrolowania godzin i pamięci RAM wybranego bloku za pomocą głównego bloku konstrukcyjnego komórki logicznej. Ten ostatni składa się z generatora funkcji wejściowych, logiki transferu i przechowywania elementów. Generatory są implementowane w formie tabel referencyjnych i zależą od danych wejściowych. Na przykład, Xilinx Spartan II ma 4 wejścia LUT, zapewniając każdemu 16X1-bitowemu synchronicznemu RAM przy użyciu multiplekserów jako rejestrów przesuwnych do przechwytywania danych w trybie wsadowym. Elementy pamięci są wrażliwe na krawędzie wyzwalaczy lub do poziomu zamków. Fragmentacja układów FPGA:
  • Logika arytmetyczna zawiera bramkę XOR do pracy z pełnym sumatorem i przydziela logiczne linie przesyłania.
  • Blok I /O i macierz routingu. To urządzenie ma wejścia i wyjścia, które obsługują szeroki zakres standardów i interfejsów do sygnalizacji.
  • Podstawowy blok wejścia /wyjścia pokazany jest poniżej. Bufor pod ścieżkami wejściowymi i wyjściowymi wysyła sygnały do ​​wewnętrznej logiki i końcowej platformy bezpośrednio lub za pośrednictwem wyzwalacza. Są one skonfigurowane tak, aby spełniały różne obsługiwane standardy alarmów, które mogą być definiowane przez użytkownika i instalowane z zewnątrz.

    Routing Matrix

    W dowolnej linii montażowej wolny segment określa ogólną wydajność. Algorytmy routingu służą do opracowania najbardziej efektywnych sposobówzapewnienie optymalnej wydajności. Routing odbywa się na różnych poziomach, takich jak lokalne, routing celu między CLB, routing IO pomiędzy blokami i CLB, poświęconej routing dla niektórych klas sygnałowych w celu zmaksymalizowania wydajności i globalnego Routing do dystrybucji zegara i innych sygnałów o bardzo dużym rozgałęzieniem . Rodziny mają również duże konstrukcje blok FPGA RAM w celu uzupełnienia rozproszoną LUT RAM, której wielkość jest różna dla różnych urządzeń FPGA.

    FPGA projektu zapewnia zasadniczo takie samo podejście, jak każdy system VLSI, faz które są projektowania, modelowania zachowania, Synthesis, symulacji po syntezie, translacji i mapowania trasy i dalszej analizy, takiej jak synchronizacja modelowania i statyczna analiza synchronizacji. Konstrukcja komputera wygląda uporządkowany i położył płytki, ale w rzeczywistości jest niedoskonała placement i routingu, co zmniejsza wydajność. Zawsze możesz użyć więcej tranzystorów, aby zwiększyć wydajność FPGA. Obszar usług jest wysoki. Instalacja większej liczby tranzystorów oznacza, że ​​możliwe są projekty na dużą skalę. Przeciek jest poważnym problemem dla FPGA i jednocześnie jest przedmiotem zainteresowania. Asynchroniczny FPGA architektura pokazuje lepsze wyniki w połączeniu z technologią przetwarzania rurociąg, który zmniejsza wejścia globalnych i poprawia wydajność.

    Kwestie dotyczące jakości i bramy

    Bezpieczeństwo systemu zawsze byłogłówny problem, ponieważ kod powinien być otwierany za każdym razem po załadowaniu do FPGA. Ta elastyczność czyni FPGA potencjalnym zagrożeniem dla złośliwych modyfikacji w procesie produkcyjnym, więc szyfrujące strumienie strumienia bitów przybyły na jego pomoc na czas. Często niedoświadczeni projektanci i użytkownicy stają przed dylematem, jak potężna jest FPGA dla ich rozwoju. Producenci często wskazują metryki, na przykład "liczba bramek". Na przykład, oprogramowanie FPGA Xilinx wykorzystuje trzy wskaźniki do pomiaru objętości, logiczne FPGA elementów maksimum, maksymalne bitów pamięci i typowy szereg bramek. Tak długo, jak są one zgodne, migracja między modelami jest nieco uproszczony, ale to rzadko zapewnia dokładne porównanie różnych dostawców poprzez różnorodność architektury i ze względu na różnice w wydajności. Najlepszym wskaźnikiem jest porównanie rodzaju i ilości dostarczonych zasobów logicznych. Ponadto programista musi w pełni zrozumieć, co dokładnie jest wymagane od urządzenia, ponieważ producenci mogą pochwalić się funkcjami, które będą najmniej ważne do pracy. Na przykład, Stratix II EP2S180 Altera ma około 186.576 LUT z 4 wejściami i Xilinx Virtex-4 zawiera XC4VLX200 według 178176. Jednak, jeśli projekt wymaga tylko 177.000. LUT, to będzie za mało.
    Jeżeli RAM - pożądane metryki dla projektanta, ani Xilinx XC4VLX200 6 Mbps lub 9 Mbps nie Altera EP2S180 być lepiej, w porównaniu do mniej niż reklamowane, starszy model XC4VFX140 99 Mbps.

    Języki programowania i oprogramowanie

    Programowanie FPGA Altera dla początkujących rozpoczyna się od wyboru języka. Opcja C, C ++ lubSystem C pozwala wykorzystać możliwości największych urządzeń, a jednocześnie osiągnąć podobieństwo realistycznej grafiki programistycznej. Możliwość zastosowania projektowania opartego na C dla FPGA jest zapewniona przez HLS (synteza wysokiego poziomu), która od wielu lat znajduje się na przełomie dzięki narzędziu typu Handle-C. Niedawno stało się to rzeczywistością dzięki temu, że duże firmy Altera i Xilinx oferują HLS w zestawach narzędzi Spectra-Q i Vivado HLx. Dostępnych jest wiele innych programów programowania FPGA Altera dla początkujących opartych na języku C, takich jak OpenCL, który jest przeznaczony dla programistów, którzy chcą zwiększyć wydajność dzięki FPGA bez głębokiego zrozumienia konstrukcji FPGA. Podobnie jak w przypadku HDL, HLS ma ograniczenia w stosowaniu programowania FPGA do C, podobnie jak w przypadku tradycyjnych HDL, programiści muszą pracować z podzestawem języka. Na przykład trudno jest zsyntetyzować i wdrożyć wywołania systemowe, ponieważ trzeba się upewnić, że wszystko jest ograniczone i ma stały rozmiar. W HLS dobrze jest zaprojektować własne algorytmy zmiennoprzecinkowe i istnieje narzędzie do konwersji zmiennoprzecinkowej HLS na stałe. Programowanie FPGA z Xilinxem nie jest wcale trudne. Możesz go nabyć, kupując produkty Xilinx za darmo lub w modelu zależnym od ceny. Możesz uzyskać dostęp do wideo na stronie profilu, która wyraźnie pokazuje procedurę użycia. Spośród wszystkich firm, które można wybrać przy poszukiwaniu programowalnych tablic, Xilinx jest zdecydowanie najlepszy ze wszystkich. Są twórcami tego produktu i ponadwiele lat uczyniło go lepszym. Oprogramowanie układowe stało się potężniejsze niż kiedykolwiek wcześniej.

    Etapy projektowania

    Programowanie FPGA można przeprowadzić online, ponieważ platforma jest dobrze przedstawiona w Internecie. Podczas tworzenia FPGA, pierwszym krokiem jest zaprojektowanie obwodu, dla którego wymagana jest wiedza cyfrowa elektroniki. W przeciwieństwie do programowania, znacznie trudniej jest rozpocząć cięcie kodu, jeśli architektura programu nie jest jasna. Jak tylko okaże się, że konieczne jest wdrożenie, zacznij opisywać schemat, używając jednego z języków: Verilog lub VHDL. Fakt, że zmienia się paradygmat, polega na tym, że nie są one nazywane językami programowania FPGA, ale są językami opisu. Ze względu na złożoność testowania układów cyfrowych zwykle na tym etapie banki używają testów symulujących zachowanie sprzętu. Ten typ narzędzia pozwala zobaczyć stan sygnału w dowolnym momencie i sprawdzić, czy są przejścia z pożądanymi wynikami.
    Trzeci etap, znany jako synteza schematu, jest jednym z kluczowych. Wybiera elementy używane i ich połączenia zgodnie z plikami opisów. Do tego etapu potrzebne są narzędzia, które w większości sytuacji upraszczają i automatyzują zadania.

    Sprzęt i debugowanie

    Intel Quartus Prime Software Suite Lite Edition - oprogramowanie do projektowania układów FPGA. Jest idealny dla początkujących, ponieważ można go pobrać za darmo i nie potrzebujesz pliku licencji. Możesz pobrać oprogramowanie na stronie producenta. Rozmiar (kilka gigabajtów) z nichPobieranie i instalowanie może zająć dużo czasu. Aby zminimalizować czas i wymagane miejsce na dysku, zaleca się pobranie tylko tych elementów, które są wymagane do niestandardowych zadań. Na żądanie, pliki do pobrania, usuń zaznaczenie "Wybierz wszystko" i wybierz tylko Quartus Prime i wsparcie dla urządzenia Cyclone V. Algorytm dla projektu:
  • Otwórz kreatora nowego projektu.
  • Wybierz Dalej & gt; Katalog & gt; & gt; Nazwij obiekt najwyższego poziomu.
  • ​​
  • Wybierz katalog do umieszczenia projektu, na przykład "Mrugnięcie" i umieść go w folderze intelFPGA_lite, ale możesz umieścić go w dowolnym miejscu i kliknąć "Dalej".
  • Po wyświetleniu monitu o utworzenie katalogu wybierz "Tak".
  • Wybierz "Pusty projekt" i kliknij "Dalej".
  • Dodaj pliki i "Dalej".
  • Dostosuj rodzinę, urządzenie i planszę, wybierając: rodzina - Cyclone V, urządzenie - Cyclone V SE, baza, nazwa urządzenia: 5CSEBA6U2317.
  • Aby wybrać konkretne urządzenie, należy kliknąć strzałki w górę /w dół, aby wyświetlić listę obsługiwanych urządzeń, aż pojawi się 5CSEBA6U2317.
  • Użytkownik może potrzebować rozwinąć pole "Nazwa", aby zobaczyć pełną nazwę urządzenia, kliknąć "Dalej".
  • Podczas konfigurowania narzędzia EDA używa się standardowych narzędzi, więc nie zostaną wprowadzone żadne zmiany, kliknij "Dalej" i "Gotowe". Pojawi się ekran podsumowania.
  • Utwórz plik HDL, wprowadzając Verilog jako HDL.
  • Przejdź do zakładki Plik (główne okno) i wybierz Nowy.
  • Wybierz Verilog HDL File i kliknij OK.
  • Wybierz polecenie Plik & gt; "Zapisz jako".
  • Wybierz nazwę pliku. Jest to nazwa pliku najwyższego poziomu i powinna pasować do nazwy projektu.
  • Kliknij "Zapisz".
  • Utwórz moduł Verilog.
  • Skopiuj i wklej poniższy kod Verilog do okna blink.v, a następnie zapisz plik kodu.
  • Kliknij prawym przyciskiem myszy Analysis and Synthesis, a następnie kliknij Start, aby przeprowadzić weryfikację składni i syntezy Verilog.
  • Jeśli proces zakończy się pomyślnie, wraz z analizą i syntezą, pojawi się zielony znacznik wyboru. Jeśli wystąpi błąd, sprawdź składnię i upewnij się, że dokładnie pasuje do powyższego bloku kodu. Wszyscy doświadczeni programiści wiedzą, że złożone programy, nawet podprogramy, nie działają prawidłowo od pierwszego razu. Zdolność abstrakcyjna osoby oparta na doświadczeniu pozwala mu znaleźć rozwiązanie, nie martwiąc się o najdrobniejsze szczegóły. Jednak ścisłą prawdą jest to, że fizyczny system, w którym program jest osadzony, wymaga, aby każdy najmniejszy szczegół był brany pod uwagę, zanim wszystko będzie działać. Wraz z rozwojem narzędzi programistycznych do rozwoju FPGA, głównie od tradycyjnych dostawców, a także niezależnych dostawców narzędzi: Synplicity, FPGA - staje się coraz bardziej popularny z dnia na dzień. Teraz FPGA zaczęła obejmować specjalistyczny sprzęt, aby zapewnić klientowi niezbędne funkcje, zmniejszając koszty dla producentów. Tak więc w przyszłości w przyszłości może pojawić się konkurencja pomiędzy twardymi i tanimi systemami z elastycznymi jądrami. Oczekuje się, że w najbliższej przyszłości koszty spadną jeszcze bardziej ze względu na popularność FPGAwzrośnie czasem. Producenci zaczęli eksperymentować z koncepcją osadzania układów FPGA w układach scalonych w celu utworzenia urządzenia hybrydowego. Koncentrujemy się nadal na połączeniach routingu, a mniejsze zmiany obserwuje się w architekturach CLB. Ponieważ FPGA nadal zawierają procesory, nowa generacja wymaga nie tylko znajomości sprzętu cyfrowego projektowania, ale także doświadczenia programistów w procesie jednorazowego programowania FPGA. Ogólnie rzecz biorąc, oczekuje się, że FPGA odbierze udział w rynku w urządzeniach ASIC i stanie się dominującą technologią, która obejmuje wiele aplikacji z różnych dziedzin.

    Powiązane publikacje