wersja mobilna | kontakt z nami

Pierwsze kroki z FPGA, Szkoła MAXimatora - sprzęt i oprogramowanie. cz. 1

Numer: Kwiecień/2016

Zainteresowanie projektowaniem w układach FPGA wśród elektroników jest duże, ale - mam wrażenie - przede wszystkim potencjalne. Jednym z podstawowych powodów takiej sytuacji jest historyczne przekonanie propagujące się wśród konstruktorów o wysokich cenach tych układów, trudnej obsłudze i wysokich kosztach oprogramowania do ich projektowania i podstawowych narzędzi sprzętowych, a także trudnym procesie pisania dla nich "programów" (jak często, nieprawidłowo, mówią konstruktorzy niemający doświadczenia z językami HDL). Rynkowa nowość - zestaw startowy MAXimator firmy KAMAMI - daje szansę taniego zweryfikowania dotychczasowych poglądów na FPGA.

Pobierz PDF

Zestaw MAXimator jest rozwiązaniem nie tylko dla początkujących elektroników, charakteryzującym się kompleksowością, niską ceną, zastosowanym nowoczesnym układem FPGA o dużych zasobach logicznych, a także dobrym wyposażeniem, dostępem do bezpłatnych narzędzi i przyzwoitym wsparciem.

Zacznijmy od krótkiej prezentacji zestawu, który będzie naszą platformą bazową, szczegółowy opis tego zestawu przedstawiliśmy w EP2/2016. Rozmieszczenie najważniejszych elementów wyposażenia pokazano na rysunku 1.

"Sercem" zestawu jest układ FPGA 10M08DAF256C-8GES z oferty firmy Altera, należący do rodziny MAX10 (prezentowanej na łamach EP w zeszłym roku).

Udostępnia on użytkownikom duże zasoby logiczne, m.in.: ponad 8000 komórek LE, 378 kb konfigurowalnej pamięci podzielonej na moduły M9K, 1376 kb wewnętrznej pamięci Flash dla aplikacji użytkownika, wewnętrzną pamięć konfiguracji Flash (nie ma konieczności używania zewnętrznego konfiguratora!), wewnętrzny generator sygnału zegarowego, wbudowany 12-bitowy przetwornik A/C o częstotliwości próbkowania 1 MHz, 2 wewnętrzne wielokanałowe syntezery PLL, które mogą także spełniać rolę dzielników częstotliwości.

Rysunek 1. Rozmieszczenie najważniejszych elementów wyposażenia zestawu MAXimator

Fotografia 2. Wygląd płytki bazowej MAXimator

W bardziej wyrafinowanych aplikacjach przydatne mogą okazać się także 24 sprzętowe multiplikatory, wbudowany sensor temperatury oraz interfejsy LVDS zintegrowane w komórkach wejściowo-wyjściowych.

Płytka MAXimator została przez producenta wyposażona w złącza zgodne z Arduino Uno Rev 3, wyposażonymi na liniach cyfrowych w translatory poziomów napięć 3,3/5 V, które umożliwiają współpracę zestawu ze standardowymi shieldami Arduino, zasilanymi napięciem 5 V.

Na złącza Arduino wprowadzono także 5 kanałów ADC (12 bitów/1 MSPS) z ochroną nadnapięciową, która zabezpiecza linie wejściowe przed przekroczeniem zakresu pomiarowego ADC, który wynosi 0…+2,5 V.

Kolejnymi elementami wyposażenia MAXimatora są:

  • interfejs HDMI (z warstwą fizyczną CEC oraz DDC),
  • interfejs VGA,
  • kwarcowy generator sygnału zegarowego 10 MHz,
  • 4 diody LED dla aplikacji użytkownika,
  • 2 diody LED sygnalizacyjne (zasilanie, konfiguracja FPGA),
  • potencjometr analogowy dołączony do dedykowanej linii wejściowej ADC,
  • gniazdo karty Flash MicroSD,
  • złącze konwertera USB/UART,
  • przycisk globalnego zerowania DEV_CLR,
  • złącze JTAG zgodne z USB Blasterem.

Zestaw jest przystosowany do zasilania napięciem 5 V ze złącza USB lub napięcia o tej samej wartości doprowadzonego do jednego z pinów na listwie PWR złącza Arduino Uno Rev. 3, oznaczonego symbolem "+5 V". Linia zasilająca jest zabezpieczona bezpiecznikiem polimerowym, który chroni interfejs USB zasilający zestaw przed przeciążeniem.

Z napięcia 5 V w zestawie MAXimator są wytwarzane 3 napięcia niezbędne do prawidłowej pracy FPGA: 1,2 V, 2,5 V oraz 3,3 V. Napięcia te są wytwarzane w MAXimatorze za pomocą miniaturowych przetwornic DC/DC z serii Altera Enpirion, oznaczonych symbolem EP5388QI.

Fotografia 3. Wygląd programatora USB Blaster, który wchodzi w skład zestawu MAXimator

Fotografia 4. Wygląd ekspandera z zestawu MAXimator

Wygląd płytki bazowej zestawu MAXimator przedstawiono na fotografii 2.

Dobrze wyposażona płytka bazowa to nie koniec atrakcji oferowanych przez zestaw MAXimator, w którego skład wchodzi także programator-debugger JTAG (fotografia 3), który jest zgodny z oferowanym przez Alterę interfejsem USB Blaster.

Za jego pomocą można programować i konfigurować układ MAX10 zastosowany w zestawie, można także debugować pracę zaimplementowanej w nim logiki, do czego służy funkcja o nazwie SignalTAP II, dostępna także w bezpłatnej wersji pakietu narzędziowego Quartus Prime Lite.

Dokumentacje, schematy, przykłady, pin-outy…

W Internecie jest dostępna specjalna strona supportowa zestawu MAXimator - www.maximator-fpga.org, na której są dostępne m.in.: schematy elektryczne, pliki produkcyjne PCB, instrukcja, rozmieszczenie wyprowadzeń zestawu, przykładowe projekty, zdjęcia, linki do filmów itp. materiały, które mogą się przydać użytkownikom zestawu MAXimator.

Kolejną, bardzo przydatną w praktyce, atrakcją zestawu MAXimator jest ekspander (shield - fotografia 4) zgodny z formatem mechanicznym Arduino, który wyposażono w 4-pozycyjny, 7-segmentowy wyświetlacz LED sterowany multipleksowo, dwie diody LED-RGB z wbudowanymi sterownikami (WS2812B), czujnik temperatury z wyjściem analogowym (świetne opracowanie STMicroelectronics - STLM20), a także trzy przyciski - jeden to "arduinowy" RESET, pozostałe do dowolnego wykorzystania przez użytkownika w aplikacjach.

W ten sposób poznaliśmy sprzęt, który będzie naszą kursową platformą, przechodzimy do oprogramowania.

Firma Altera opracowała własne środowisko projektowe dla produkowanych przez siebie układów FPGA, które nosi nazwę Quartus Prime. Jest ono dostępne w trzech wersjach o odmiennych funkcjonalnościach, z których jedna wersja - Lite - jest dostępna bezpłatnie, pozostałe dwie (Standard i Pro) są dostępne komercyjnie.

Rysunek 5. Pierwszy etap pobierania oprogramowania - Downloads na stronie altera.com

Rysunek 6. Wybieramy bezpłatną wersję Lite Edition

Do nauki projektowania w FPGA w zupełności wystarcza bezpłatna wersja Lite, która bez istotnych wyłączeń obsługuje możliwości układów MAX10, oferując bogatą gamę predefiniowanych elementów bibliotecznych. Dostępne są zarówno funkcjonalne odpowiedniki rodziny układów TTL, często stosowane bloki (liczniki, multipleksery, demultipleksery, pamięci) z możliwością łatwej parametryzacji przez użytkownika, a także spora gama IP Core'ów, które łącznie upraszczają implementację projektów i to zarówno budowanych w którymś z języków HDL jak i definiowanych za pomocą edytora schematów.

Na takim właśnie sposobu przygotowania projektów skupimy się w naszym cyklu - zapewnia on bowiem dużą przejrzystość struktury projektu, łatwe zarządzanie zmianami i jego rozbudową, jest także bliskie elektronikom, ze względu na bliskość metody implementacji projektu z projektowaniem standardowych urządzeń dla elektroników z tym, że zamiast projektu PCB implementujemy moduły cyfrowe w FPGA.

Zaczynamy od pobrania programu Quartus Prime Lite, co wymaga wejścia na stronę www.altera.com i wybranie na niej opcji Downloads ( rysunek 5). W kolejnym oknie (rysunek 6) wybieramy najnowszą dostępną wersję Lite oprogramowania (w chwili pisania artykułu była to wersja 15.1), następnie konfigurujemy listę pobrań jak pokazano na rysunku 7 - nie ma konieczności pobierania relatywnie dużych plików z narzędziami i bibliotekami do syntezy logicznej dla układów innych niż MAX10.

Rysunek 7. Nie ma konieczności pobierania całego środowiska - w zupełności wystarczą opcje pokazane na rysunku

Rysunek 8. W kolejnym kroku trzeba się zalogować lub założyć bezpłatne konto

Niezbędny dla nas jest pakiet Quartus Prime, przydatny będzie także symulator ModelSIM Altera Edition. Po naciśnięciu przycisku Download Selected Files wyświetla się okno pokazane na rysunku 8 - jeżeli mamy już założone bezpłatne konto dostępowe należy się zalogować, jeżeli nie mamy takiego konta - trzeba się zarejestrować (także bez jakichkolwiek kosztów).

W zależności od aktualnej sytuacji może się okazać konieczne pobranie update'u plików instalacyjnych, ich dostępność jest sygnalizowana wykrzyknikiem na zakładce Updates (rysunek 9).

Instalacja oprogramowania przebiega standardowo, jedynym dodatkowym zabiegiem, jaki trzeba zazwyczaj wykonać ręcznie jest wskazanie systemowi operacyjnemu Windows ścieżki do driverów obsługujących programator USB Blaster.

Rysunek 9. Opcjonalnie można pobrać także update - ich dostępność jest sygnalizowana za pomocą wykrzyknika na zakładce Updates

Rysunek 10. Prawidłowe zainstalowanie sterowników USB Blastera można zweryfi kować w systemowym Menedżerze Urządzeń

Są one instalowane w katalogu sciezka_instalacjiquartusdriversusb-blaster (dostępne są wersje 32- i 64-bitowa), po zainstalowaniu pakietu oraz pierwszym dołączeniu interfejsu USB Blaster trzeba go ręcznie wskazać. Ręczna interwencja jest potrzebna ze względu na ulokowanie sterowników w nieoczywistym z punktu widzenia OS katalogu instalacji całego pakietu.

Poprawność zainstalowania sterowników można zweryfikować sprawdzając w Menedżerze Urządzeń obecność w sekcji Kontrolery uniwersalnej magistrali szeregowej urządzenia o nazwie Altera USB-Blaster (rysunek 10).

Tak skonfigurowane środowisko sprzętowo-programowe będzie dla nas bazą do kolejnych kroków - za miesiąc zaimplementujemy w FPGA pierwszy projekt. Krok-po-kroku!

Piotr Zbysiński, EP

Pozostałe artykuły

Nucleo i wyświetlacz OLED. Sterowanie wyświetlaczem OLED z kontrolerem SSD1306 za pomocą STM32

Numer: Kwiecień/2016

Doskonałym rozszerzeniem płytki Nucleo może być wyświetlacz OLED. Przyda się on do realizacji interfejsu użytkownika w budowanych urządzaniach lub po prostu do prezentowania wyników pracy programu. W artykule opisano sposób dołączenia i sterowania takiego wyświetlacza.

Obsługa wyświetlacza ze sterownikiem SSD1306

Numer: Marzec/2016

Niewielkie wyświetlacze z matrycami OLED cieszą się dużą popularnością wśród konstruktorów projektujących interfejsy użytkownika. Ich zaletami są: bardzo dobra czytelność w różnych warunkach oświetlenia, brak konieczności podświetlania tła, mały pobór prądu oraz stosunkowo niska cena. Niewielkie wymiary mogą być zaletą w aplikacjach wymagających małych w obudów. Jednym z takich elementów jest opisywany wyświetlacz ...

STM32: urządzenie USB-CDC. Wykonanie za pomocą CubeMX

Numer: Marzec/2016

Środowisko CubeMX, udostępniane przez ST Microelectronics, umożliwia łatwe konfigurowanie mikrokontrolerów rodziny STM32 i generowanie szkieletów programów. CubeMX zawiera wiele gotowych modułów programowych, które mogą być włączane do tworzonych programów. Znajdziemy wśród nich m.in. stos USB wraz z obsługą wybranych klas urządzeń. Jedną z obsługiwanych klas jest CDC, umożliwiająca implementację wirtualnego portu szeregowego. ...

STM-owa układanka: Nucleo, AC6, HAL

Numer: Marzec/2016

Od dłuższego czasu sprzedaż mikrokontrolerów STM32 jest powiązana ze wsparciem dla projektów bazujących na tych układach. Jest to wsparcie polegające zarówno na dystrybucji tanich płytek ewaluacyjnych, jak i na opracowywaniu darmowych narzędzi programistycznych. Takie działanie ma na celu przybliżenie świata STM-ów potencjalnym użytkownikom, ułatwienie i przyśpieszenie pisania oprogramowania. W cyklu kilku artykułów pokażemy ...

Programowanie urządzeń mobilnych. Debugowanie kodu natywnego Java. cz. 9

Numer: Marzec/2016

W poprzedniej części kursu omówiliśmy sposób debugowania aplikacji tworzonych w Cordovie. Pokazaliśmy jak analizować kod JavaScript, HTML i CSS oraz ruch sieciowy, a więc wszystko to, co przeciętny twórca aplikacji Cordovy buduje samodzielnie. Zademonstrowane dotąd narzędzia umożliwiają wgląd w aktualnie wykonywany kod aplikacji i podgląd zmiennych, ale niestety nie rozwiązują wszystkich problemów, z jakimi borykają się ...

Mobilna
Elektronika
Praktyczna

Elektronika Praktyczna

Kwiecień 2017

PrenumerataePrenumerataKup w kiosku wysyłkowym

Elektronika Praktyczna Plus

lipiec - grudzień 2012

Kup w kiosku wysyłkowym