Menu
Jest wolny
rejestracja
Dom  /  Oprogramowanie układowe/ Mały projekt na FPGA. FPGA

Mały projekt FPGA. FPGA

FPGA (Programmable Logic Integrated Circuit) to układ scalony przeznaczony do budowy układów cyfrowych na podstawie opisu w specjalnym języku programowania. Innymi słowy, FPGA to niejako układ zawierający mnóstwo elementów, takich jak 74HCxx. Jakie to będą elementy logiczne, jakie będą między nimi połączenia i jakie będą połączenia powstałe w wyniku układu ze światem zewnętrznym, określa się na etapie programowania FPGA.

Notatka: O ile mogłem się dowiedzieć, w dzisiejszym języku rosyjskim terminy FPGA i FPGA (Field-Programmable Gate Array, User-Programmable Gate Array) są uważane za zamienne i będą używane w dalszej części tekstu. Warto jednak wiedzieć o istnieniu i alternatywnym punkcie widzenia, według którego FPGA (FPGA) jest jedną z odmian FPGA (PLD, Programmable Logic Device).

Podstawy FPGA

Do programowania FPGA używane są języki opisu sprzętu (HDL, Hardware Description Language). Wśród nich najbardziej popularne są Verilog (i jego dialekty, w szczególności SystemVerilog), a także VHDL. Języki są podobne pod wieloma względami, ale mają inną składnię i różnią się niektórymi szczegółami. Jeśli Verilog jest takim C w świecie opisu sprzętu, to VHDL jest odpowiednio Pascalem. O ile mi wiadomo, VHDL jest nieco mniej popularny, częściowo ze względu na jego szczegółowość w porównaniu z Verilog. Z zalet VHDL (lub wad, jak każdy) można nazwać ścisły pisanie statyczne. Verilog czasami pozwala na rzutowanie niejawne. Kontynuując analogię z C i Pascalem, języki nie różnią się tak bardzo, że nie można nauczyć się ich obu.

Obecnie wiodącymi producentami układów FPGA są Altera (obecnie należąca do Intela) i Xilinx. Według informacji z różnych źródeł, razem kontrolują co najmniej 80% rynku. Inni gracze, na których warto zwrócić uwagę, to Actel (przejęty przez Microsemi), Lattice Semiconductor, Quicklogic i SiliconBlue. Możesz pracować ze sprzętem Xilinx tylko ze środowiska programistycznego Xilinx (zwanego Vivado), a środowisko programistyczne Altra (zwane Quartus) rozumie tylko sprzęt Altera. Oznacza to pełną blokadę dostawcy, a wybierając konkretny układ FPGA do swojego projektu, automatycznie wybierasz narzędzia programistyczne odpowiedniego producenta, ich wsparcie techniczne, dokumentację, warunki licencjonowania oprogramowania, politykę dotyczącą zakończenia wsparcia sprzętowego i tak dalej .

Układy FPGA są często używane w zadaniach, w których chcesz przyspieszyć niektóre obliczenia, implementując je bezpośrednio w sprzęcie. Na przykład FPGA są szeroko stosowane w przetwarzaniu sygnałów, takie jak oscyloskopy, analizatory widma, analizatory logiczne, generatory sygnałów, radio programowe, a nawet niektóre monitory. W szczególności LimeSDR wykorzystuje Altera Cyclone IV, a oscyloskop Rigol DS1054Z wykorzystuje Xilinx Spartan-6, a także ProASIC 3 firmy Actel. Inne aplikacje, o których słyszałem, to widzenie komputerowe, rozpoznawanie mowy i bioinformatyka. Istnieją inne projekty, w szczególności dotyczące rozwoju serwerów WWW i DBMS działających na FPGA. Ale o ile wiem, ten kierunek jest nadal wysoce eksperymentalny.

Xilinx czy Altera?

Biorąc to pod uwagę, najlepszy Linux to ten, którego używa twój kolega Linuxowy guru.

Mój przyjaciel, guru FPGA, Dmitrij Oleksyuk, doradził mi, abym zaczął od platformy programistycznej Arty Artix-7 firmy Digilent. Zastosowany w nim układ FPGA to Artix-7 firmy Xilinx. Sam Digilent nie jest wysyłany do Rosji, ale urządzenie jest również dostępne na AliExpress, choć z zauważalną marżą (oficjalna cena to 99 USD). Jest również sprzedawany w serwisie eBay. To całkiem potężna deska, która mimo wszystko kosztuje adekwatne pieniądze.

Śmieszny fakt! Jeśli chcesz po prostu programować w Verilog lub VHDL, ściśle mówiąc, nie musisz kupować żadnej płytki FPGA. Na początku możesz ograniczyć się do symulatora, z którym praca zostanie omówiona później.

Ciekawą cechą płytki jest rozmieszczenie slotów w sposób zgodny z nakładkami Arduino. Do tablicy dołączona jest również wkładka do uzyskania licencji na Vivado, która otwiera wszystkie jego możliwości. Licencja jest ważna przez rok od daty aktywacji i jest również powiązana z jednym komputerem według typu systemu operacyjnego i adresu MAC.

Na zamówienie. Słyszałem, że urządzenia z układami FPGA na pokładzie mają duże szanse na nie odprawę celną. Sklep na AliExpress, do którego link podałem powyżej, dostarcza deski do Rosji za pośrednictwem firmy kurierskiej SPSR. Aby przejść przez odprawę celną, wymagane było wypełnienie formularza online z danymi paszportowymi (tylko dane, bez zdjęcia) oraz numerem telefonu kontaktowego, zgodnie z obowiązującymi przepisami rosyjskimi. Następnie deska została dostarczona kurierem pod same drzwi bez żadnych pytań.

Instalowanie Vivado

Środowisko programistyczne Vivado jest dostępne do pobrania na stronie internetowej Xilinx. Przygotuj się psychicznie na to, że przed pobraniem będziesz musiał się zarejestrować i wypełnić dość szczegółowy formularz o sobie. Pobierz archiwum o nazwie „Vivado HLx 2017.2: Instalator wszystkich systemów operacyjnych Pobieranie pojedynczego pliku”. Nie pomyl go przypadkowo z żadnymi "Vivado Lab Solutions", to absolutnie nie jest to, czego potrzebujesz. Archiwum waży ponad 20 GB, więc musimy uzbroić się w cierpliwość.

Rozpakuj archiwum, uruchom instalator. Zainstaluj Vivado HL System Edition. Jego pełna wersja zajmie 47 GB miejsca na dysku. Osobiście odznaczyłem Software Development Kit i pozostawiłem wsparcie tylko dla urządzeń serii 7, co zmniejszyło rozmiar do 12 GB. Biegnąc trochę do przodu, zauważę, że ta konfiguracja okazała się wystarczająca.

Przed uruchomieniem Vivado musisz dodać do niego obsługę Arty Artix-7, ponieważ po wyjęciu z pudełka nie wie nic o tej płycie. Robi się to jakoś tak:

cd ~ / opt / xilinx / Vivado / 2017.2 / dane / tablice / board_files
wget https: // github.com/ Digilent / vivado-boards / archiwum / master.zip
rozpakuj master.zip
mv vivado-boards-master / new / board_files / * ./
rm -r vivado-boards-master
rm master.zip

Pobierz i zapisz gdzieś plik Arty_Master.xdc. Będziemy tego dalej potrzebować. Plik zawiera opis diod na płytce, przełączników i tak dalej. Bez tego miganie diod LED na Verilog nie będzie łatwe.

Pierwszy projekt na SystemVerilog

W Vivado powiedz Plik → Nowy projekt ... Wybierz Projekt RTL jako typ projektu, zaznacz pole wyboru Nie określaj źródeł w tym czasie. W oknie wyboru typu planszy znajdź Arty'ego na liście.

Przede wszystkim dodaj do projektu pobrany wcześniej plik XDC. Skopiuj go do katalogu projektu. Następnie mówimy Plik → Dodaj źródła… → Dodaj lub utwórz ograniczenia → Dodaj pliki, znajdź kopię pliku, kliknij Zakończ. Plik Arty_Master.xdc, lub jakkolwiek nazwałeś kopię, pojawi się w drzewie plików projektu (Źródła) w grupie Ograniczenia. Otwórz go i odkomentuj wszystkie linie w grupach Sygnał zegara, Przełączniki i diody LED.

Następnie mówimy Plik → Dodaj źródła… → Dodaj lub utwórz źródła projektu → Utwórz plik. W typie pliku wybierz SystemVerilog, w nazwie pliku wpisz coś takiego jak cześć. Mówimy Zakończ. Następnie pojawi się okno dialogowe Define Module, które zaoferuje kliknięcie interfejsu modułu. Okno dialogowe jest dość bezużyteczne, ponieważ wygodniej jest zrobić to samo w kodzie, więc kliknij Anuluj.

Znajdź nowy plik hello.sv w drzewie źródłowym, będzie on znajdował się w grupie Źródła projektu. Otwórz i napisz następujący kod:

`Skala czasowa 1ns / 1ps

moduł cześć (
logika wejściowa CLK100MHZ,
logika wejściowa [3: 0] sw,
logika wyjściowa [3: 0] led
) ;

zawsze @ (posaż CLK100MHZ)
rozpocząć
jeśli (sw [0] == 0)
rozpocząć
prowadzony<= 4"b0001 ;
kończyć się
w przeciwnym razie
rozpocząć
prowadzony<= 4"b0000 ;
kończyć się
kończyć się

moduł końcowy

Jeśli wszystko zostało zrobione poprawnie, na tym etapie Twoje Vivado będzie wyglądać mniej więcej tak (klikalne, PNG, 71 KB):

Kompilacja programu odbywa się w dwóch etapach - synteza i implementacja. Na etapie syntezy program jest tłumaczony na abstrakcyjny obwód bramek logicznych i innych elementów. Na etapie wdrożenia podejmowana jest decyzja, w jaki sposób sflashować ten obwód do konkretnego elementu sprzętowego.

Uruchommy syntezę, mówiąc Flow → Uruchom syntezę lub po prostu naciskając F11. W prawym górnym rogu zobaczysz informację, że proces jest w toku. Może to zająć dość dużo czasu, w zależności od komputera i złożoności programu. Na moim laptopie synteza powyższego programu została zakończona w około 10 sekund.Jeśli teraz powiemy Flow → Open Synthesized Design, to możesz zobaczyć piękny obrazek taki:

Czas flashować naszą tablicę. Mówimy Flow → Uruchom implementację, a następnie Flow → Generuj strumień bitów. Płytkę podłączamy do komputera przez USB, w Vivado mówimy Flow → Open Hardware Manager → Open target → Auto Connect → Program device. Będziesz musiał określić ścieżkę do pliku bitowego. Miałem to w następujący sposób:

./first-project.runs/impl_1/hello.bit

Mówimy Program. Dioda LD4 na płycie jest teraz włączona, jeśli przełącznik SW0 jest w dół (patrz zdjęcie płyty powyżej). Jeśli przełącznik jest w górę, dioda LED jest wyłączona. Proste, oczywiście, ale to jest „witaj świecie”, czego się spodziewałeś? :)

Symulacja

Symulacja to wirtualne wykonanie kodu w Verilog lub VHDL bezpośrednio na twoim komputerze, bez żadnych FPGA. Jest to zarówno narzędzie do debugowania, jak i rodzaj frameworka do pokrywania kodu testami.

Kiedy poznałem symulację, pierwszą rzeczą, jaką odkryłem, było to, że dla mnie nie działa. Dzienniki były proste:

BŁĄD: Nie udało się skompilować wygenerowanego pliku C [...] xsim_1.c.

Google na tym błędzie znalazł tylko wszelkiego rodzaju bzdury w stylu „spróbuj wyłączyć swój program antywirusowy”. Ostatecznie dodanie flagi -v 2 do skryptu ~/opt/xilinx/Vivado/2017.2/bin/xelab pomogło rozwiązać problem. Z jego pomocą dowiedziałem się, że Clang, którego plik binarny ciągnie Vivado, ulega awarii z następującym błędem:

/ a / long / path / to / clang: błąd podczas ładowania bibliotek współdzielonych:
libncurses.so.5: nie można otworzyć udostępnionego pliku obiektu: Brak takiego pliku lub
informator

I ten błąd i jego rozwiązanie zostało już opisane na Arch Wiki. Osobiście po prostu skopiowałem już istniejący plik z katalogu Vivado_HLS:

cp ~ / opt / xilinx / Vivado_HLS / 2017.2 / lnx64 / narzędzia / gdb_v7_2 / libncurses.so.5 \
~ / opt / xilinx / Vivado / 2017.2 / lib / lnx64.o / libncurses.so.5

... po czym wszystko działało. A więc teraz właściwie przykład symulacji.

Podobnie jak wcześniej stworzyliśmy hello.sv, utwórz nowy plik hello_sim.sv w grupie Simulation Sources. W pliku zapisujemy następujący kod:

`Skala czasowa 1ns / 1ps

moduł hello_sim ();
logika clck_t;
logika [3:0] sw_t;
logika [3:0] led_t;

Witaj hello_t (clck_t, sw_t, led_t);

początkowy początek
clck_t<= 0 ;
sw_t<= 4"b0000 ; # 1 ; clck_t <= 1 ; # 1 ; clck_t <= 0 ; # 1 ;
asercja (led_t === 4 "b0001);

Sw_t<= 4"b0001 ; # 1 ; clck_t <= 1 ; # 1 ; clck_t <= 0 ; # 1 ;
asercja (led_t === 4 "b0000);
kończyć się

moduł końcowy

W drzewie źródłowym kliknij plik prawym przyciskiem myszy, wybierz Właściwości węzła źródłowego. W sekcji Używane w odznacz pola Synteza i Implementacja. Nie chcemy, żeby jakieś testy zapchały nasz daleki od gumowego FPGA, prawda?

Teraz mówimy Flow → Uruchom symulację → Uruchom symulację behawioralną. W rezultacie zobaczysz coś takiego:

Widać, że gdy sw wynosi zero, led to jeden i na odwrót. W tym przypadku wszystkie zmiany zachodzą na krawędzi sygnału zegarowego. Wygląda na to, że program działa poprawnie. Cóż, nic nie padło na twierdzenia, co wydaje się sugerować.

Wniosek

Archiwum z opisanym powyżej projektem można pobrać. Jako dodatkowe źródła informacji polecam:

  • Jeśli interesują Cię szczegóły dotyczące sprzętu, zwróć uwagę

Wyobraź sobie, że procesor zamiast wykonywać zestaw instrukcji, odbuduje każdy program i zamieni algorytm bezpośrednio w sprzęt. Tak działają FPGA! W tym artykule wyjaśnię, jak to jest możliwe i przedstawię różne sposoby projektowania FPGA.

Może wiesz, jak hakować urządzenia na drugim końcu świata lub kodować niesamowite aplikacje internetowe, ale czy rozumiesz, jak działa Twój komputer? I nie chodzi o to, co robi system operacyjny, jak działa garbage collector w Javie, ani jak działa kompilator C++. Mówię o najniższym poziomie sprzętowym, poniżej asemblera: jak działa sprzęt.

Co dzieje się z chipem karty sieciowej po nadejściu pakietu Ethernet? W jaki sposób ten pakiet jest przekazywany do pamięci RAM komputera za pośrednictwem magistrali PCI Express? Jak działają najszybsze sprzętowe systemy rozpoznawania obrazu?

Aby odpowiedzieć na te pytania, musisz trochę zrozumieć logikę cyfrową układów ASIC, ale zaczynanie od nich jest bardzo trudne i drogie, a zamiast tego lepiej jest zacząć od FPGA.

INFORMACJE

FPGA to skrót od field-programmable gate array, w języku rosyjskim programowalne macierze bramek, FPGA. Mówiąc bardziej ogólnie, są one nazywane FPGA - programowalnymi układami logicznymi.

Dzięki FPGA możesz dosłownie projektować cyfrowe mikroukłady siedząc w domu z dostępną płytą debugowania na biurku i oprogramowaniem dla programistów za kilka kilo dolców. Istnieją jednak również bezpłatne opcje. Uwaga: dokładnie projektować, a nie programować, ponieważ wyjściem jest fizyczny obwód cyfrowy, który wykonuje określony algorytm na poziomie sprzętowym, a nie program dla procesora.

To działa tak. Jest gotowa płytka drukowana z zestawem interfejsów, które są podłączone do układu FPGA zainstalowanego na płytce, jak fajna płytka do centrum danych lub płytka do debugowania do szkolenia.

Dopóki nie skonfigurujemy FPGA, w mikroukładzie po prostu nie ma logiki przetwarzania danych z interfejsów, a zatem nic oczywiście nie będzie działać. Ale w wyniku projektu powstanie firmware, który po załadowaniu do FPGA stworzy potrzebny nam układ cyfrowy. Na przykład możesz stworzyć kontroler 100G Ethernet, który będzie odbierać i przetwarzać pakiety sieciowe.

Ważną cechą FPGA jest możliwość rekonfiguracji. Dziś potrzebujemy kontrolera Ethernet 100G, a jutro ta sama płyta może być wykorzystana do implementacji czterech niezależnych interfejsów Ethernet 25G.

Istnieją dwaj główni producenci układów FPGA, Xilinx i Intel, którzy kontrolują odpowiednio 58% i 42% rynku. Założyciele Xilinx wynaleźli pierwszy układ FPGA w 1985 roku. Intel niedawno wszedł na rynek w 2015 roku, przejmując Altera, założoną w tym samym czasie co Xilinx. Technologie Xilinx i Altera są podobne pod wieloma względami, podobnie jak środowiska programistyczne. Przez większość czasu pracowałem z produktami Xilinx, więc nie zdziw się, że ciągle o nim wspominam.

WDROŻENIE PROJEKTU NA FPGA

Po opracowaniu układu logicznego za pomocą modelowania funkcjonalnego konieczne jest umieszczenie go na chipie. Następnie zasymuluj obwód w oparciu o rzeczywiste opóźnienie elementów uzyskanych po umieszczeniu obwodu na chipie. W razie potrzeby popraw otrzymane rozwiązania. Następnie układ jest ładowany do FPGA i testowany na stoisku.

Ryż. 82. Etapy projektowania urządzenia cyfrowego na FPGA

Główne etapy projektowania na FPGA (z wykładów):

    Schemat urządzenia jest opracowywany i wprowadzany do XILINX.

    Wykonywane przez IMPLEMENTACJĘ (tłumaczenie, tworzenie schematów poprzez wyodrębnianie elementów bibliotecznych, optymalizacja, umieszczanie na chipie).

    Programowanie.

  1. Pamięć skojarzeniowa. Organizacja, metoda próbkowania, różnice w pamięci adresowej.

Dostęp asocjacyjny realizuje wyszukiwanie informacji według jakiegoś atrybutu, a nie według jego lokalizacji w pamięci (adresu lub miejsca w kolejce). W najpełniejszej wersji wszystkie słowa przechowywane w pamięci są jednocześnie sprawdzane pod kątem zgodności z cechą, na przykład pod kątem zbieżności pewnych pól słów (znaczników - ze słowa angielskiego tagu) z cechą określoną przez słowo wejściowe (adres tagu ). Na wyjściu podawane są słowa, które spełniają kryterium. Dyscyplina wydawania słów, jeśli kilka słów spełnia tag, jak również dyscyplina pisania nowych danych mogą być różne. Głównym obszarem zastosowania pamięci asocjacyjnej we współczesnych komputerach jest buforowanie danych.

W asocjacyjnych urządzeniach pamięci informacje są wyszukiwane przez asocjacyjną cechę zapisaną w każdej komórce pamięci.

W rejestrze masek zapisywane jest słowo, które umożliwia zapytanie o wszystkie lub tylko niektóre bity atrybutu asocjacyjnego, użycie maski pozwala na zmniejszenie lub rozszerzenie obszaru wyszukiwania.

Wyszukiwanie informacji odbywa się równolegle we wszystkich komórkach, porównując żądanie z atrybutem asocjacyjnym każdej komórki.

Wynik wyszukiwania jest tworzony przez specjalny układ kombinacyjny, który generuje sygnały informujące o braku słów spełniających warunki wyszukiwania, o obecności tylko jednego słowa, o obecności kilku słów z taką cechą skojarzeniową.

Po utworzeniu i przetworzeniu sygnałów ostrzegawczych obwód sterujący odczytuje niezbędne informacje. Podczas zapisu wyszukiwana jest wolna komórka według wartości bitu zajętości, informacja jest zapisywana do pierwszej znalezionej wolnej komórki.

Sprawdzenie bitu zajętości odbywa się poprzez ustawienie n-tego bitu (bitu zajętości) maski. Korzystając z dodatkowych układów kombinacyjnych w pamięci asocjacyjnej można wykonywać różne operacje logiczne, określając maksymalną lub minimalną liczbę, liczbę słów o tym samym atrybucie asocjacyjnym itp. Komórki pamięci pamięci asocjacyjnej muszą być elementami pamięci statycznej; w pamięci asocjacyjnej wszystkie komórki są dostępne jednocześnie i nie mogą być przerywane cyklami regeneracji. Pamięć asocjacyjna jest najszybsza, ale bardzo kosztowna, ponieważ wymaga wprowadzenia dodatkowego schematu porównawczego, który umożliwia wyszukiwanie każdej komórki pamięci. Dlatego taka pamięć zwykle nie jest używana w czystej postaci, a szybkie urządzenia pamięci, takie jak pamięć podręczna, są zwykle wykonywane jako częściowo asocjacyjne.

Vw pełni asocjacyjny pamięć podręczna (FACM, Fully Associated Cache Memory), każda komórka przechowuje dane, aw polu „tag” - pełny fizyczny adres informacji, którego kopia jest zapisywana. W każdej wymianie fizyczny adres żądanych informacji jest porównywany z polami „znaczników” wszystkich komórek, a jeśli pasują, sygnał trafienia jest ustawiany w dowolnej komórce.

Przy odczycie i wartości sygnału Hit = 1 dane są wysyłane na szynę danych, ale jeśli nie ma dopasowań (Hit = 0), to przy odczycie z pamięci głównej dane wraz z adresem są umieszczane w wolna lub ostatnio nieużywana komórka pamięci podręcznej.

Podczas zapisywania danych, wraz z adresem, najpierw z reguły są umieszczane w pamięci podręcznej (w wykrytej komórce przy trafieniu = 1 i wolnej przy trafieniu = 0). Kopiowanie danych do pamięci głównej odbywa się pod kontrolą specjalnego kontrolera w przypadku braku dostępu do pamięci.

Pamięć FACM jest bardzo złożonym urządzeniem i jest używana tylko dla małych pojemności, głównie w zastosowaniach specjalnych. Jednocześnie ten rodzaj pamięci podręcznej zapewnia największą elastyczność funkcjonalną i wolne od konfliktów adresy, ponieważ dowolna jednostka informacji może zostać załadowana do dowolnej komórki pamięci podręcznej.

Z wykładów:

Urządzenia pamięci asocjacyjnej

Podstawowa różnica polega na tym, że system pobierania z nich informacji nie jest realizowany pod unikalnym adresem, pod którym znajduje się informacja, ale według jakiegoś atrybutu, który w rzeczywistości jest częścią wymaganych informacji.

Informacja

Znacznik to wyróżnik, przez przypadek, z którym dostaje się informacja.

Uproszczony schemat pamięci asocjacyjnej:

Obszar przechowywania to adresowalna pamięć z ponumerowanymi komórkami, w których przechowywane są informacje i znaczniki.

Aby uzyskać dostęp do pamięci asocjacyjnej, próbka wymaganego znacznika jest umieszczana w rejestrze żądań. Schemat porównania porównuje zapytanie. Ustaw dopasowanie w rejestrze dopasowań, w którym znacznik z pamięci pasował do wzorca. Możliwe są reakcje (brak dopasowań; jest co najmniej jedno dopasowanie – w tym przypadku znaleziona komórka jest umieszczana w rejestrze danych; dopasowanie wielokrotne – CC musi zdecydować, którą z komórek pobrać do przetwarzania).

Zastosowanie: DB, baza wiedzy, PC jako pamięć podręczna.

65 nanometrów to kolejny cel zelenogradzkiej fabryki „Angstrem-T”, która będzie kosztować 300-350 mln euro. Przedsiębiorstwo złożyło już wniosek o pożyczkę uprzywilejowaną na modernizację technologii produkcyjnych do Wnieszekonombanku (WEB), podał w tym tygodniu Wiedomosti, powołując się na Leonida Reimana, prezesa zarządu zakładu. Teraz „Angstrem-T” przygotowuje się do uruchomienia linii produkcyjnej mikroukładów o topologii 90 nm. Płatności za poprzedni kredyt VEB, za który została zakupiona, rozpoczną się w połowie 2017 roku.

Pekin upada Wall Street

Kluczowe amerykańskie indeksy zaznaczyły pierwsze dni Nowego Roku rekordowym spadkiem, miliarder George Soros już ostrzegł, że świat spodziewa się powtórki kryzysu z 2008 roku.

Pierwszy rosyjski procesor konsumencki Baikal-T1 w cenie 60 USD zostaje wprowadzony do masowej produkcji

Firma "Baikal Electronics" na początku 2016 roku obiecuje wprowadzić do produkcji przemysłowej rosyjski procesor Baikal-T1 o wartości około 60 USD. Na urządzenia będzie popyt, jeśli ten popyt będzie kreowany przez państwo, mówią uczestnicy rynku.

MTS i Ericsson wspólnie opracują i wdrożą 5G w Rosji

Mobile TeleSystems PJSC i Ericsson podpisały porozumienie o współpracy w zakresie rozwoju i wdrożenia technologii 5G w Rosji. W projektach pilotażowych, w tym podczas Mistrzostw Świata 2018, MTS zamierza przetestować rozwój szwedzkiego dostawcy. Na początku przyszłego roku operator rozpocznie dialog z Ministerstwem Telekomunikacji i Komunikacji Masowej na temat kształtowania wymagań technicznych dla telefonii komórkowej piątej generacji.

Sergey Chemezov: Rostec jest już jedną z dziesięciu największych korporacji produkujących maszyny na świecie

W rozmowie z RBC szef Rostecu Siergiej Chemezow odpowiadał na ostre pytania: o systemie Platon, problemach i perspektywach AVTOVAZ, interesach Państwowej Korporacji w biznesie farmaceutycznym, mówił o współpracy międzynarodowej w obliczu sankcji presja, substytucja importu, reorganizacja, strategie rozwoju i nowe możliwości w trudnych czasach.

Rostec „odgradza się” i wkracza na laury Samsunga i General Electric

Rada Nadzorcza Rostec zatwierdziła „Strategię rozwoju do 2025 roku”. Główne cele to zwiększenie udziału zaawansowanych technologicznie produktów cywilnych oraz dogonienie General Electric i Samsung pod względem kluczowych wskaźników finansowych.

W artykule podjęto próbę określenia składu dokumentacji towarzyszącej opracowanym modułom cyfrowym programowalnych układów logicznych (FPGA). Ta towarzysząca dokumentacja musi zostać dostarczona przez programistów do konsumenta / klienta w celu pomyślnego dalszego wykorzystania opracowanego modułu cyfrowego w swoich projektach na etapie projektowania urządzeń cyfrowych opartych na układach FPGA.

Wstęp

O jaką więc dokumentację projektową należy zapytać dewelopera, jeśli firma lub przedsiębiorstwo klienta lub inny deweloper będzie w przyszłości wykorzystywał w swoich projektach „zagraniczne” urządzenie? Ten artykuł może służyć jako „ściągawka”, aby najpierw poprawnie wydać zadanie techniczne na opracowanie urządzenia cyfrowego dla FPGA, a następnie poprosić programistę o dokumentację projektową dla już opracowanego urządzenia cyfrowego. Bazując na wcześniejszych doświadczeniach z dokumentacją projektową, zazwyczaj przedsiębiorstwo lub firma stosuje następujące normy i przepisy:

  • GOST 2.102-68 ESKD. Rodzaje i kompletność dokumentów projektowych.
  • GOST 15.101-98. System rozwoju produktu i wprowadzania do produkcji. Procedura wykonywania prac badawczych.
  • GOST R 15.201-20-00. System rozwoju produktu i wprowadzania do produkcji. Produkty do celów przemysłowych i technicznych. Procedura opracowania i uruchomienia produktów do produkcji.

Z reguły były to plik firmware i program (opis urządzenia cyfrowego w VHDL/Verilog lub zestaw układów cyfrowych opracowany w edytorze obwodów z wykorzystaniem bibliotek elementów logiki cyfrowej, takich jak wyzwalacze, rejestry, liczniki, dekodery itp.) na płycie CD lub DVD oraz instrukcje programowania. I to wszystko.

Na przykład autor napotkał następujący problem. Jeden z pracowników opracował zaawansowane, wielomodułowe urządzenie cyfrowe. Opisał wszystkie moduły w VHDL i przyjrzał się sekwencjom działania tych modułów i całego urządzenia cyfrowego na dobrym i drogim oscyloskopie. Nie wiedział o plikach Test Bench i o możliwości modelowania lub nie umiał je napisać, przy okazji nie było też komentarzy do projektu i opisów modułów. Sytuacja może być jeszcze gorsza, jeśli moduły są reprezentowane przez układy cyfrowe opracowane w edytorze schematów z wykorzystaniem elementów bibliotecznych. To jedna z głównych wad: poza samym deweloperem mało kto zrozumie to cyfrowe urządzenie, zwłaszcza jeśli projekt jest wielomodułowy, a opis każdego modułu to więcej niż 100 linii lub więcej niż jeden ekran monitora. Tak więc, jeśli inny programista chce wprowadzić takie już opracowane urządzenie cyfrowe dla FPGA do nowego rozwoju lub projektu, ponownie musi poświęcić czas na opracowanie tego urządzenia cyfrowego.

Historia projektowania układów FPGA

Obecnie rynek FPGA jest jednym z najdynamiczniej rozwijających się. Układy FPGA znajdują zastosowanie w wielu gałęziach technologii. Na chwilę obecną nie ma jednoznacznej metodyki uzyskania konfiguracji FPGA z modelu funkcjonalnego urządzenia na poziomie systemu, który satysfakcjonuje wszystkich twórców sprzętu. Najpopularniejszym podejściem do rozwiązania tego problemu jest wykorzystanie technologii IP-core (Intellectual Property Cores). Rdzenie IP to gotowe komponenty, które pozwalają łatwo zintegrować je z własnym projektem w celu stworzenia bardziej złożonego systemu. Takie podejście ma jedną istotną wadę - przyczepienie jąder IP do podstawy pierwiastkowej. Każdy rdzeń IP jest zoptymalizowany pod kątem określonej serii mikroukładów konkretnego producenta, co znacznie ogranicza możliwość przenoszenia już stworzonych urządzeń z jednej bazy elementów do drugiej. Zamknięty charakter komercyjnych architektur CAD uniemożliwia dodawanie własnych funkcjonalnych modeli urządzeń na poziomie systemu w celu uzyskania opartych na nich modeli urządzeń na poziomie transferu rejestru (RTL). Opracowanie modułu cyfrowego odbywa się w postaci układu cyfrowego narysowanego w edytorze układów z wykorzystaniem biblioteki podstawowych elementów układu wbudowanej w system CAD producenta, takich jak wyzwalacze, dekodery, liczniki, sumatory itp.

Innym popularnym podejściem pozwalającym na przejście od modelu funkcjonalnego na poziomie systemu do modelu urządzenia na poziomie transferu rejestru jest wykorzystanie języków opisu sprzętu na poziomie systemu (języki projektowania na poziomie systemu, SLDL). Do takich języków należą: SystemC, Handel-C, VHDL, Verilog, System Verilog. Główną zaletą jest niezależność od podstawy sprzętowej, w której będzie zaimplementowane urządzenie.

Tak więc z jednej strony, korzystając z technologii rdzeni IP, twórca sprzętu otrzymuje rozwiązanie wysokiej jakości, ale sztywno powiązane z podstawą sprzętową, w której zaimplementowano urządzenie. Z drugiej strony, w przypadku używania języków opisu sprzętu na poziomie systemu, implementacja urządzenia jest niezależna od sprzętu. Z powyższego wynika, że ​​w chwili obecnej istotne jest wspólne stosowanie modułów cyfrowych w języku opisu sprzętu i rdzeni IP producenta (Xilinx, Altera, Actel itp.) oraz zewnętrznych programistów w celu przyspieszenia procesu projektowania. W przypadku korzystania z modułów cyfrowych innych firm czasami brakuje informacji zawartych w dołączonej dokumentacji.

Udostępnienie informacji o opracowanym module cyfrowym dla FPGA

W zależności od metodyki uzyskiwania konfiguracji FPGA zgodnie z modelem funkcjonalnym urządzenia na poziomie systemu, deweloper może wyróżnić następujące typy modułów cyfrowych dla FPGA:

  • Oprogramowanie - rozbudowany moduł cyfrowy przekazywany do konsumenta w postaci opisu w języku opisu sprzętu (VHDL, Verilog) lub/i opracowany w Edytorze Schematów do dalszego wykorzystania w programach do automatycznej syntezy układów logicznych i zoptymalizowany pod względem funkcjonalnym parametry.
  • Oprogramowanie układowe - moduł cyfrowy opracowany przez niezależnego dewelopera, zwany rdzeniem IP, przekazywany konsumentowi w postaci obwodu logicznego (netlista) na podstawie biblioteki elementów logicznych producenta FPGA i zoptymalizowany pod kątem funkcjonalnym i parametry elektryczne.

Na etapie opracowywania dokumentacji, w oparciu o osobiste doświadczenie, konieczne jest sporządzenie, oprócz zwykłej dokumentacji projektowej i specyfikacji technicznych, wykonanej zgodnie z GOST 15.101, GOST 15.201, GOST 2.102, GOST 2.114, dokumentacja dla wszystkich typów modeli (systemowych, logicznych, schematycznych) tworzonych na etapie projektowania urządzeń cyfrowych na FPGA.

Innymi słowy, do kompletu dokumentacji projektowej urządzenia cyfrowego dla FPGA, oprócz pliku firmware, instrukcji programowania i nagranego projektu na płycie CD/DVD, powinna znaleźć się również dokumentacja towarzysząca.

Tabela. Wykaz sekcji dokumentacji towarzyszącej

Tytuł sekcji Pogląd
Oprogramowanie Oprogramowanie układowe
Informacje ogólne
Cel i zakres O r
Specyfikacje O O
Opis sygnałów resetowania O O
Opis sygnałów synchronizacji O O
Opis interfejsów O r
Wykresy czasowe r O
Opis rejestrów kontrolnych O O
Schemat strukturalny (funkcjonalny) r r
Przewodnik programowania O O
model lub rodzina FPGA,
producent firmy
r O
Prezentacja modułu cyfrowego
do projektowania logiki na FPGA
Model RTL O Nie
Model logiczny Nie O
Ograniczenia projektowe O O

Oto lista sekcji (tabela), które powinny znaleźć się w dokumentacji towarzyszącej do projektu modułu cyfrowego dla FPGA. Dla każdej sekcji wskazano oznaki konieczności włączenia sekcji do kompletu dokumentów:

  • "О" - obowiązkowo dostarczona sekcja;
  • "R" - sekcja zalecana do dostawy.

Zalecane formaty plików do przesyłania dokumentacji towarzyszącej - MS Word, PDF (najlepszy format), HTML. Pliki opisowe w języku opisu sprzętu (VHDL, Verilog) lub/i opracowane w Edytorze schematów są dostarczane zgodnie z wymaganiami oprogramowania CAD do rozwoju. Wyjątkiem może być dodatkowe udostępnienie w formacie graficznym (JPEG, BMP) cyfrowych plików schematów opracowanych w Edytorze schematów.

Informacje ogólne

W tym rozdziale opisano ogólne informacje o rozwijanym module cyfrowym w formie opisu:

  • schemat funkcjonalny i jego bloki / części składowe;
  • sygnały resetowania, synchronizacja;
  • używane interfejsy;
  • rejestry kontrolne;
  • wykres czasu;
  • programowanie.

Cel i zakres

Określono przeznaczenie modułu cyfrowego i jego zakres.

Specyfikacje

Podano opis jego głównych cech technicznych, takich jak wydajność, pobór mocy dla konkretnego kryształu FPGA, liczba zajętych bramek i rodzaj użytego kryształu FPGA. Dodatkowo wskazano producenta FPGA wykorzystanego do opracowania cyfrowego modułu CAD oraz oprogramowanie służące do modelowania i weryfikacji. W przypadku wszystkich używanych programów podana jest wersja i zainstalowane aktualizacje. Podano graficzną reprezentację modułu cyfrowego w postaci „czarnej skrzynki” z oznaczeniem zewnętrznych wejść/wyjść oraz krótki opis ich przeznaczenia.

Opis sygnałów resetowania

Podano szczegóły sygnałów resetowania:

  • Lista zewnętrznych i wewnętrznych sygnałów resetu.
  • Parametry czasowe i wykresy czasowe sygnałów resetujących.
  • W module cyfrowym znajdują się obwody do generowania wewnętrznych sygnałów resetu, jeśli występują.
  • Związek z innymi sygnałami (zwłaszcza z sygnałami synchronizacji).

Opis sygnałów synchronizacji

Podano szczegóły sygnałów synchronizacji:

  • opis zewnętrznych sygnałów synchronizacji;
  • parametry czasowe sygnałów synchronizacji;
  • opis wewnętrznych sygnałów synchronizacji i schematów ich generowania;
  • zależności czasowe między sygnałami synchronizacji z różnych źródeł;

Opis interfejsów

Podano możliwości wykorzystania wszystkich interfejsów wchodzących w skład opracowanego modułu cyfrowego, najlepiej zunifikowanych do organizowania interakcji z innymi węzłami systemu na chipie. Dodatkowo podany jest link internetowy do pełnego opisu standardowego interfejsu lub podany jest opis samego interfejsu. W chwili obecnej interfejsy do magistrali AMBA, PLB, Wishbone są akceptowane jako zunifikowane interfejsy dla modułów cyfrowych.

Wykresy czasowe

Dostarczane są informacje niezbędne do organizacji wymiany danych przez interfejsy i inne wejścia/wyjścia modułu cyfrowego: graficzna prezentacja wykresów czasowych, opis protokołów przesyłania danych, wymagania dotyczące sygnałów zewnętrznych dostarczanych do modułu cyfrowego (czas trwania, częstotliwość, itp.) i inne informacje ...

Opis rejestrów kontrolnych

Przedstawiono opis wszystkich rejestrów kontrolnych modułu cyfrowego. Typowy opis rejestru sterującego zawiera nazwę rejestru, adres rejestru w wewnętrznej przestrzeni adresowej, wartość początkową po usunięciu sygnału resetu, rodzaj dostępu (odczyt/zapis) oraz opis wewnętrznej pola.

Schemat strukturalny (funkcjonalny)

Wyświetlany jest obraz wewnętrznej struktury połączeń głównych wewnętrznych węzłów / bloków modułu cyfrowego, a także ich krótki opis tekstowy. Dodatkowo podany jest opis głównych wewnętrznych bloków modułu cyfrowego. Celem tego dokumentu jest dostarczenie konsumentowi informacji niezbędnych do zrozumienia zasad działania modułu cyfrowego.

Ilość opisywanych bloków oraz zakres opisu określa twórca modułu cyfrowego. Korzystnie minimalna liczba opisanych modułów odpowiada liczbie elementów obwodu strukturalnego (funkcjonalnego) modułu cyfrowego.

Typowy opis jednostki wewnętrznej zawiera:

  • cel bloku;
  • strukturalny (funkcjonalny) schemat blokowy (jeśli to konieczne);
  • tryby i algorytmy pracy;
  • wykresy czasowe pracy;
  • organizacja zarządzania blokami;
  • organizacja komunikacji z innymi blokami;
  • Wszelkie inne informacje.

Przewodnik programowania

Dostarcza wszystkich niezbędnych informacji o procesie programowania z wykorzystaniem CAD producenta modułu cyfrowego w FPGA, niezbędnych narzędzi do tworzenia i debugowania oprogramowania, bibliotek oprogramowania.

Model lub rodzina FPGA, producent

W przypadku oprogramowania układowego modułu cyfrowego wskazany jest producent FPGA, model lub rodzina FPGA i ich charakterystyka prędkości. Dla modułu cyfrowego Software podawane są informacje o ilości zajętych zasobów, wymaganiach dla zastosowanego układu FPGA.

Reprezentacja modułu cyfrowego do projektowania logicznego

W artykule omówiono trudności w korzystaniu z "obcego" projektu w VHDL - brak odpowiednich wytycznych dotyczących nazewnictwa i zasad pisania programów. Zawierał również ogólne wskazówki dotyczące nazewnictwa, zasady dobrej formy przy pisaniu programów oraz wskazówki dotyczące syntezy. Pytania te należy omówić z deweloperem jak najbardziej szczegółowo, jeśli w przyszłości planujesz samodzielnie kontynuować rozwój lub modernizację, zanim zacznie opracowywać model RTL modułu cyfrowego na FPGA. Dotyczy to w szczególności typu oprogramowania modułu cyfrowego w FPGA. Ta sama część artykułu opisuje ogólne wymagania dla całego projektu opracowanego modułu cyfrowego na FPGA. Oto kwestie, na które należy zwrócić uwagę przy sporządzaniu zadania technicznego opracowania modułu cyfrowego na FPGA, a zwłaszcza dotyczy to transferu wyników pracy.

Model RTL

Moduł cyfrowy opisany w zsyntetyzowanym podzbiorze języka Verilog lub VHDL lub/i opracowany w Edytorze Schematów przeznaczony jest do wykorzystania na etapie logicznej syntezy FPGA. Dostarczony do Software jako złożony projekt modułu cyfrowego w CAD od producenta FPGA. W przypadku cyfrowego oprogramowania układowego model RTL jest dostarczany na podstawie oddzielnej umowy.

Oprócz plików modeli RTL przesyłane są:

  • Instrukcja korzystania z modelu.
  • Opis bloków pamięci zawartych w modelu, w tym typ pamięci, rozmiar, liczba bloków pamięci, hierarchiczna nazwa bloku pamięci.
  • Opis procesu tworzenia gotowych jąder z wykorzystaniem programów do ich tworzenia (np. CoreGenerator dla Xilinx ISE). W przypadku braku opisów mogą wystąpić ograniczenia dotyczące przeprojektowania i zastosowania ze względu na zależności technologiczne i producenta.
  • W przypadku zastosowania mikroprocesora producenta (np. Altera - procesor Nios; od Xilinx - Microblaze, mikroprocesory PowerPC) wymagany jest opis procesu konfiguracji rdzenia procesora i jego peryferiów.
  • Zestaw testów (pliki Test Bench) do weryfikacji i symulacji modułu cyfrowego, napisanych w języku Verilog lub/i w VHDL lub/i w System Verilog.
  • Wszelkie inne dodatkowe informacje.

Model logiczny

Model jest listą sieci, opisanych za pomocą Verilog lub VHDL w bazie biblioteki producenta FPGA i dostarczonych dla Firmware modułu cyfrowego.

Oprócz plików modelu logicznego przesyłane są:

  • Instrukcje dotyczące korzystania z tego modelu.
  • Zestaw testów (pliki Test Bench) do weryfikacji i symulacji modułu cyfrowego, napisanych w języku Verilog lub/i w VHDL lub/i w System Verilog.
  • Wytyczne dotyczące pracy z zestawem testów do modelowania i weryfikacji modułu cyfrowego.
  • Wszelkie inne dodatkowe informacje.

Ograniczenia projektowe

Ograniczenia projektowe są dostarczane w postaci pliku opisującego zestaw ograniczeń nałożonych na moduł cyfrowy, gdy jest on uwzględniony w logicznym modelu system-on-chip. Ten zestaw zawiera ograniczenia zegarowe, ograniczenia czasowe, ograniczenia dotyczące interakcji modułu cyfrowego z innymi modułami oraz warunki pracy modułu cyfrowego. Preferowanym formatem jest Synopsis Design Constraints (SDC) lub format CAD producenta FPGA.

Przykładowa lista ograniczeń dla sygnałów synchronizacji:

  • wykres czasowy (przebieg zegara);
  • niestabilność częstotliwości zegara (jitter);
  • zmiana fazy częstotliwości zegara;
  • czas trwania czasów przełączania (czasy przejścia);
  • Generowane przebiegi zegara
  • wszelkie inne dodatkowe informacje.

Zestaw ograniczeń dla sygnałów taktowania jest obowiązkowy dla modułów cyfrowych oprogramowania i oprogramowania układowego.

Przybliżona lista ograniczeń czasowych:

  • Czasy przybycia na wejściach;
  • czas pojawienia się sygnałów na wyjściach (Wymagane czasy na wyjściach);
  • ścieżki wielorowkowe;
  • fałszywe ścieżki;
  • czas trwania czasów przejścia sygnału danych;
  • wszelkie inne dodatkowe informacje.

Wniosek

Podany skład dokumentacji towarzyszącej opracowanym modułom cyfrowym dla FPGA jest dostarczany w drodze umowy między konsumentem a deweloperem. Najczęściej deweloper udostępnia prosty moduł cyfrowy, opisany w VHDL, Verilog, System Verilog i/lub opracowany w edytorze schematów. Jeśli chodzi o dodatkową dokumentację, to najczęściej odpowiedź od dewelopera brzmi: „Moduł cyfrowy działa, więc weź go i używaj. Nie ma nic skomplikowanego w opisaniu obwodu w języku sprzętu: sam to rozwiążesz ”.

W opinii autora można wymyślić wszystko, wszystko zależy od chęci i poświęconego czasu, a czas spędzony na próbie wymyślenia „obcego” projektu dla już opracowanego modułu cyfrowego jest wprost proporcjonalny do doświadczenia opisywania sprzętu w VHDL, Verilog i wiedzy w obwodach cyfrowych i mikroprocesorowych. Można tego uniknąć, jeśli wstępnie uzgodnisz z deweloperem skład dołączonej dokumentacji, wtedy wykorzystanie modułu cyfrowego w twoim projekcie stanie się łatwiejsze, a jego wdrożenie nastąpi szybciej.

Podsumowując, autor pragnie zauważyć, że formułując zadanie opracowania urządzenia cyfrowego na FPGA należy stosować się do zaleceń podanych w artykule, wtedy nie będzie problemów z ponownym wykorzystaniem lub modernizacją wcześniej opracowanego urządzenia cyfrowego.

Literatura

  1. Denisov A. Kilka wskazówek dotyczących projektowania urządzeń cyfrowych w VHDL dla FPGA // Komponenty i technologie. 2009. nr 12.
  2. GOST 2.102-68 ESKD. Rodzaje i kompletność dokumentów projektowych.
  3. GOST 2.114-95 ESKD. Warunki techniczne.
  4. GOST 15.101-98. System rozwoju produktu i wprowadzania do produkcji. Kolejność wykonywania prac naukowo-badawczych.
  5. GOST R 15.201-20-00. System rozwoju produktu i wprowadzania do produkcji. Produkty do celów przemysłowych i technicznych. Procedura opracowania i uruchomienia produktów do produkcji.