O czym (nie) jest ta książka?

Podobne dokumenty
STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

ZL28ARM. Zestaw uruchomieniowy dla mikrokontrolerów AT91SAM7XC

1. Wprowadzenie Programowanie mikrokontrolerów Sprzęt i oprogramowanie... 33

ZL29ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

LITEcompLPC1114. Zestaw ewaluacyjny z mikrokontrolerem LPC1114 (Cortex-M0) Sponsorzy:

Systemy na Chipie. Robert Czerwiński

Zestaw uruchomieniowy z mikrokontrolerem LPC1114 i wbudowanym programatorem ISP

dokument DOK wersja 1.0

ZL27ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F103

STM32 Butterfly. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

Kurs programowania mikrokontrolerów ARM z rodziny Cortex-M3

Spis treści. Wykaz ważniejszych skrótów Wprowadzenie Rdzeń Cortex-M Rodzina mikrokontrolerów XMC

ZL15AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega32

ZL15AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega32

ZL5PIC. Zestaw uruchomieniowy dla mikrokontrolerów PIC16F887

MAXimator. Zestaw startowy z układem FPGA z rodziny MAX10 (Altera) Partnerzy technologiczni projektu:

ZL16AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega8/48/88/168

ZL30ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F103

SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701. SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701.

1.2. Architektura rdzenia ARM Cortex-M3...16

ADuCino 360. Zestaw uruchomieniowy dla mikrokontrolerów ADuCM360/361

ZL4PIC. Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

ZL25ARM. Płyta bazowa dla modułów diparm z mikrokontrolerami STR912. [rdzeń ARM966E-S]

LABORATORIUM - ELEKTRONIKA Układy mikroprocesorowe cz.2

o Instalacja środowiska programistycznego (18) o Blink (18) o Zasilanie (21) o Złącza zasilania (22) o Wejścia analogowe (22) o Złącza cyfrowe (22)

Programowanie Układów Logicznych kod kursu: ETD6203. Szczegóły realizacji projektu indywidualnego W dr inż.

WYKŁAD 5. Zestaw DSP60EX. Zestaw DSP60EX

Sprawozdanie z projektu MARM. Część druga Specyfikacja końcowa. Prowadzący: dr. Mariusz Suchenek. Autor: Dawid Kołcz. Data: r.

Lista zadań nr 1. Zagadnienia stosowanie sieci Petriego (ang. Petri net) jako narzędzia do modelowania algorytmów sterowania procesami

ZL4PIC uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC (v.1.0) Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

Przegląd rozwiązań z oferty firmy 4D Systems

Opis przedmiotu zamówienia CZĘŚĆ 1

AVREVB1. Zestaw uruchomieniowy dla mikrokontrolerów AVR. Zestawy uruchomieniowe

Płytka uruchomieniowa AVR oparta o układ ATMega16/ATMega32. Instrukcja Obsługi. SKN Chip Kacper Cyrocki Page 1

Szkolenia specjalistyczne

Zaliczenie Termin zaliczenia: Sala IE 415 Termin poprawkowy: > (informacja na stronie:

Opis przedmiotu zamówienia

ZL3ST7. Zestaw uruchomieniowy dla mikrokontrolerów

Arduino dla początkujących. Kolejny krok Autor: Simon Monk. Spis treści

Programator ICP mikrokontrolerów rodziny ST7. Full MFPST7. Lite. Instrukcja użytkownika 03/09

Wstęp Architektura... 13

KAmduino UNO. Płytka rozwojowa z mikrokontrolerem ATmega328P, kompatybilna z Arduino UNO

2. Code Composer Studio v4 zintegrowane środowisko projektowe... 41

ZL6PLD zestaw uruchomieniowy dla układów FPGA z rodziny Spartan 3 firmy Xilinx

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH. PROCESORY OSADZONE kod kursu: ETD 7211 SEMESTR ZIMOWY 2017

Systemy wbudowane. Paweł Pełczyński

Szczegółowy opis przedmiotu zamówienia. Część 1 - Laboratoryjny zestaw prototypowy

ZL19PRG. Programator USB dla układów PLD firmy Altera

2. Architektura mikrokontrolerów PIC16F8x... 13

ZL9AVR. Płyta bazowa dla modułów ZL7AVR (ATmega128) i ZL1ETH (RTL8019)

Zestaw Startowy EvB. Więcej informacji na stronie:

Kurs Elektroniki. Część 5 - Mikrokontrolery. 1/26

ZL2ARM easyarm zestaw uruchomieniowy dla mikrokontrolerów LPC2104/5/6 (rdzeń ARM7TDMI-S)

KAmduino UNO. Rev Źródło:

UNO R3 Starter Kit do nauki programowania mikroprocesorów AVR

Porty wejścia/wyjścia w układach mikroprocesorowych i w mikrokontrolerach

ZL4PIC. Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

Technika Mikroprocesorowa

ZL2AVR. Zestaw uruchomieniowy z mikrokontrolerem ATmega8

MOD STM32 explorem0 z STM32F051C8T6. sklep.modulowo.pl akademia.modulowo.pl zestawy.modulowo.pl app.modulowo.pl blog.modulowo.

Projektowanie Systemów Wbudowanych

DOKUMENTACJA PROJEKTU

ZL9ARM płytka bazowa dla modułów diparm z mikrokontrolerami LPC213x/214x

ZL2ARM easyarm zestaw uruchomieniowy dla mikrokontrolerów LPC2104/5/6 (rdzeń ARM7TDMI-S)

LITEcomp. Zestaw uruchomieniowy z mikrokontrolerem ST7FLITE19

AVR DRAGON. INSTRUKCJA OBSŁUGI (wersja 1.0)

Politechnika Białostocka

Laboratorium 2 Sterowanie urządzeniami z wykorzystaniem systemu plików Intel Galileo

MOD Xmega explore z ATXmega256A3BU. sklep.modulowo.pl akademia.modulowo.pl zestawy.modulowo.pl app.modulowo.pl blog.modulowo.

Zgrana para - NerO i CleO

Spis treści. Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

E-TRONIX Sterownik Uniwersalny SU 1.2

Spis treści 1. Wstęp 2. Ćwiczenia laboratoryjne LPM

Tab. 1. Zestawienie najważniejszych parametrów wybranych mikrokontrolerów z rodziny LPC2100, które można zastosować w zestawie ZL3ARM.

BF30 OCDLINK/USBASP ARM-JTAG/AVR-ISP Programmer-debugger Instrukcja obsługi

Moduł uruchomieniowy AVR ATMEGA-16 wersja 2

Mikrokontrolery AVR techniczne aspekty programowania

Mikrokontroler Wykład 5

ZASTOSOWANIE PLATFORM CYFROWYCH ARDUINO I RASPBERRY PI W NAUCZANIU STEROWANIA OBIEKTEM PNEUMATYCZNYM

Język C. Wykład 9: Mikrokontrolery cz.2. Łukasz Gaweł Chemia C pokój 307

Laboratorium Procesorów Sygnałowych

Ćwiczenie 5 Zegar czasu rzeczywistego na mikrokontrolerze AT90S8515

Porty wejścia/wyjścia w układach mikroprocesorowych i w mikrokontrolerach

Katedra Mikroelektroniki i Technik Informatycznych

2. PRZERZUTNIKI I REJESTRY

Instrukcja obsługi programatora AVR Prog USB v2

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Projektowanie z użyciem procesora programowego Nios II

Systemy Wbudowane. Arduino - rozszerzanie. Podłączanie wyświetlacza LCD. Podłączanie wyświetlacza LCD. Podłączanie wyświetlacza LCD

Systemy uruchomieniowe

SML3 październik

ZL6ARM Zestaw uruchomieniowy dla mikrokontrolerów LPC213x. Tab. 1. Zestawienie najważniejszych parametrów wybranych mikrokontrolerów z rodziny LPC213x

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Moduł prototypowy.. Leon Instruments. wersja 1.0

ISBN. Copyright by Wydawnictwo BTC Legionowo 2010

Narzędzia uruchomieniowe dla systemów Embedded firmy Total Phase

Instrukcja obsługi programatora AVR Prog USB v2

MOD Xmega explore z ATXmega256A3BU. sklep.modulowo.pl akademia.modulowo.pl zestawy.modulowo.pl app.modulowo.pl blog.modulowo.

Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów AVR

Pierwsze kroki z FPGA (2)

Transkrypt:

10 FPGA (ang. field-programmable gate array) są układami konfigurowalnymi, w których zrealizować można praktycznie dowolny obwód elektroniki cyfrowej od prostej bramki NAND aż po układ mogący transmitować obraz za pomocą interfejsu HDMI. Możliwości są ograniczone jedynie zasobami dostępnymi w układzie, jego parametrami dynamicznymi oraz wyobraźnią projektanta. Układy FPGA wykorzystywane są wszędzie tam, gdzie zasoby standardowych mikrokontrolerów nie są wystarczające, a z drugiej strony projektowanie i produkcja układów scalonych (ASIC ang. application specific integrated circuit) jest nieopłacalna ekonomicznie lub konieczna może być zmiana sposobu działania takiego podzespołu. Niektóre układy FPGA (nazywane układami SoC ang. system on chip) mają w swojej strukturze rdzenie mikroprocesorowe (najczęściej ARM) wszystko dlatego, że niektóre funkcje jest prościej zrealizować w układzie FPGA (np. wspomniany interfejs HDMI, interfejs do kamery czy też wspomaganie specyficznych obliczeń), zaś inne stanowią idealne zadanie dla procesora (np. obsługa menu użytkownika). To właśnie z tego powodu w złożonych projektach wykorzystanie takiego połączenia pozwala osiągnąć optymalne efekty lepiej wykonać połączenia między procesorem a specjalizowanym układem wewnątrz jednego scalaka, niż umieszczać na płytce kolejny komponent i precyzyjnie projektować wysokoczęstotliwościowe połączenia do niego. Nie zawsze jednak konieczne jest stosowanie potężnych układów SoC z wysokowydajnymi rdzeniami często zadowoli nas wydajność średniej klasy mikrokontrolera i możliwość zastosowania tańszego układu. W takich przypadkach rozwiązaniem może być tzw. soft processor skoro w układzie FPGA możemy umieścić dowolny układ logiczny możemy w ten sposób umieścić tam także procesor. Takie podejście jest szeroko stosowane (np. w niektórych odbiornikach SDR, oscyloskopach) i dostępnych jest wiele rozwiązań począwszy od w pełni płatnych (można w ten sposób wykorzystać m.in. rdzeń ARM Cortex-M1), a skończywszy na rozwiązaniach dostępnych na zasadach open source (jak np. implementacje procesorów RISC-V). Co więcej, wszyscy znaczący gracze na rynku układów FPGA udostępniają użytkownikom swoje rozwiązania, wraz z całym ekosystemem ułatwiającym pracę nad projektem. Właśnie takiemu rozwiązaniu, systemowi Nios II dostarczonemu przez Intel FPGA, poświęcona jest niniejsza książka. O czym (nie) jest ta książka? Książka ta zawiera zbiór ćwiczeń prowadzących krok po kroku przez budowę systemu mikroprocesorowego opartego na rdzeniu Nios II e począwszy od najprostszej działającej konfiguracji, a skończywszy na projektowaniu własnych modułów. Każda część wzbogacona jest dodatkowo o komentarze, wyjaśniające kluczowe zagadnienia związane z omawianym tematem (np. interfejsem, problemem do rozwiązania). Ponadto przygotowano także ćwiczenia pokazujące, w jaki sposób za pomocą systemu Nios II obsługiwać powszechnie wykorzystywane komponenty, jak np. karty pamięci czy enkodery.

11 Z drugiej strony książka ta nie zastąpi kompletnego kursu programowania w języku C ani projektowania układów w języku opisu sprzętu VHDL. Przy założeniu, że Czytelnik sięga po tę pozycję uzbrojony w podstawową wiedzę na temat programowania mikrokontrolerów (np. AVR czy STM32), wydanie to zostało wzbogacone o dodatkowy rozdział autorstwa Jakuba Tyburskiego, przedstawiający najważniejsze zagadnienia związane z językiem VHDL, wykorzystane do projektowania dedykowanych modułów. Oprogramowanie i zestaw sprzętowy Do nauki konieczny jest rzecz jasna odpowiedni zestaw sprzętowy, umożliwiający praktyczną realizację wszystkich wskazówek. Z racji współpracy z firmą Kamami podczas przygotowania tej pozycji wykorzystany został zestaw maximator z układem Intel FPGA z serii MAX10 (10M08DAF256C8G) i niektóre wskazówki odwołują się bezpośrednio do możliwości tej płytki edukacyjnej. Nie oznacza to jednak, że Czytelnik nie może użyć innego stosownego układu produkcji Intel FPGA wszystkie zaprezentowane wskazówki można, czasem jedynie z drobnymi modyfikacjami (jak np. inne piny układu podłączone z jakimś interfejsem), zastosować do innego zestawu wyposażonego w FPGA z serii MAX10. Co więcej, można użyć też układów z innych serii Intel FPGA, mając jednak na uwadze w każdym przypadku różnice ich parametrów, szczególnie jeśli są to różnice w dół (np. mniejsza ilość wbudowanej pamięci RAM, mniejsza liczba elementów logicznych, brak wbudowanego przetwornika ADC) w drugą stronę, wybierając mocniejszą płytkę, nie ryzykujemy praktycznie nic. Schematy płytki maximator oraz wszelkich dodatków firmy Kamami są dostępne on-line, więc każdy może sprawdzić sposób połączeń i ewentualne układy peryferyjne zdobyć we własnym zakresie. Największy problem stanowi dodanie złącza HDMI do zestawu, który go nie ma niestety przesłanie sygnałów o częstotliwości rzędu 250 MHz może okazać się niemożliwe z wykorzystaniem prostych kabelków połączeniowych. Tak czy inaczej jednak, jesteśmy nastawieni tylko i wyłącznie na układy FPGA firmy Intel, więc środowiskiem, którego użyjemy, będzie darmowy Quartus Prime Lite Edition, który możemy pobrać po bezpłatnej rejestracji na stronie producenta. W chwili pisania tego tekstu najnowszą dostępną wersją była wersja 18.1 i trzeba liczyć się z tym, że w nowszych wersjach mogą wystąpić mniejsze lub większe różnice. Pobierając oprogramowanie, musimy zadbać, aby koniecznie zaopatrzyć się w pełną wersję instalacyjną, a na pewno poniższe komponenty: 1. Quartus Prime Lite Edition, 2. ModelSim-Intel FPGA Edition, 3. MAX 10 FPGA device suport (lub jeśli korzystamy z innej rodziny układów wybieramy właściwe pliki device suport). Instalację rozpoczynamy, uruchamiając plik *.bat w folderze z pobranymi wersjami instalacyjnymi, w jej czasie instalujemy także sterowniki dla USB Blaster.

12 Zestaw maximator, tak jak każdy inny zestaw, ma mocne i słabe strony. Poniżej przedstawiam w tabeli elementy składowe oraz cechy zestawu, wraz ze swoimi subiektywnymi opiniami. Komponent maximator Komentarz autora Układ FPGA 10M08DAF256C8G Złącze HDMI Złącze VGA Złącze karty micro SD (SPI) Wejścia/wyjścia na złączach zgodnych z Arduino układy zapewniające zgodność ze standardem napięciowym 5 V Potencjometr + Rozsądny układ dla początkujących + Wbudowana pamięć konfiguracyjna + 2 pętle PLL (każda z 5 wyjściami zegarowymi) + Przetwornik ADC 12-bitowy z dostępnymi w zestawie 6 wejściami z zewnątrz +/ Ma średnią ilość pamięci RAM, która wystarczy do wielu zastosowań + Niedostępne na wielu płytkach w tej klasie cenowej + Można uzyskać nawet 24-bitową głębię kolorów +/ 3-bitowa głębia kolorów wystarcza do większości eksperymentów + Umożliwia wykorzystanie karty do przechowywania danych i ich wymiany z komputerem + Możliwość podłączenia wielu modułów zgodnych z Arduino bez ich modyfikacji + Dodatkowe zabezpieczenie układu FPGA przed uszkodzeniem w przypadku błędnego połączenia +/ Liczba dostępnych pinów może nie wystarczyć do bardziej zaawansowanych eksperymentów Zastosowane bufory mogą w pewnych specyficznych sytuacjach (duże obciążenie pojemnościowe) stwarzać problemy + Możliwość zadawania wartości analogowej bez dodatkowych komponentów +/ Zajęty dedykowany pin wejścia analogowego Punkt testowy GND + Możliwość pewnego podłączenia sondy oscyloskopowej 4 diody LED Przycisk Złącze dla modułu USB-UART Można wykorzystać w dowolnym celu Kompatybilne z modułem ZL5USB Złącze JTAG KAMAMI USB Blaster + Programator w pełni zgodny z oryginałem + Zatwierdzony przez Intel FPGA +/ Brak obudowy maximator expander Wyświetlacz 4 7-seg 3 przyciski Termometr analogowy + Podstawowe peryferia służące do nauki różnych aspektów pracy z układami FPGA 2 diody WS2812

13 10M08DAF256C8G czy 10M08DAF256C8GES Niektóre wersje zestawu maximator zostały wytworzone z użyciem, dostępnych we wcześniejszej fazie produkcji rzeczonego układu FPGA, egzemplarzy przeznaczonych m.in. do testów w aplikacjach użytkowników. Zostały one oznaczone końcówką ES. Układy te są praktycznie identyczne i nie powinniśmy zauważyć żadnych różnic, niezależnie do tego, którą wersję mamy na płytce. Tworząc projekty, dla porządku, wybierajmy taką wersję układu, jak zamontowana w naszym zestawie, ja jednak będę posługiwał się już w dalszej części tylko wersją docelową, bez końcówki ES. Co jeszcze będzie nam potrzebne? Oprócz zestawu z układem FPGA firmy Intel i ewentualnych komponentów zastępujących funkcjonalności zestawu maximator i rozszerzenia maximator expander, jeśli oczywiście chcemy zrealizować wszystkie zadania, potrzebować będziemy komponentów wymienionych w tabeli poniżej. Komponenty oznaczone * są opcjonalne i nie stanowią głównego elementu żadnego z wykonywanych ćwiczeń. Komponent Konwerter USB-UART Układ BMP280 Układy MCP23008 oraz MCP23S08 Wyświetlacz zgodny z HD44780 oraz klawiatura rezystancyjna Mechaniczny enkoder inkrementalny Moduł z terminalami połączeniowymi* Moduł z diodami WS2812* Karta pamięci micro SD Monitor komputerowy Komentarz Moduł ZL5USB lub inny konwerter podający sygnały interfejsu UART w standardzie 3,3 V albo 5 V (konieczne wtedy jest podpięcie konwertera poprzez złącza Arduino). Czujnik ciśnienia z przełączanymi interfejsami I 2 C i SPI używany w czasie poznawania tych interfejsów. Ekspandery I/O z interfejsami I 2 C i SPI. Układy te oraz układ BMP280 zastąpić możemy oczywiście innymi elementami, na których możliwe będzie przetestowanie tych dwóch interfejsów (choćby różne modele zegarów RTC). Połączenia możemy wykonać na płytce stykowej lub używając modułu dla Arduino. Posłuży do demonstracji możliwości obsługi takich enkoderów sprzętowo. Tak zwany Screw Shield, umożliwiający połączenie dodatkowych przewodów przy równoczesnym podłączeniu klasycznego modułu Arduino. Dodatkowy moduł z większą liczbą diod WS2812 Pixel Shield. Dowolna karta, na której nie przechowujemy aktualnie żadnych danych, powinna spełnić swoje zadanie. Z wejściami VGA oraz HDMI/DVI. Kabel VGA Kabel HDMI Jeśli posiadany monitor z wejściem cyfrowym innym niż HDMI, musimy mieć stosowny kabel-przejściówkę.

14 Wiedza, jaką trzeba posiadać Jak już wcześniej wspomniano, książka niniejsza nie jest kompendium pozwalającym na dogłębne poznanie wszystkich aspektów omawianego tematu. Zakładam, że Czytelnik posiada podstawową wiedzę z zakresu programowania w języku C (lub pokrewnych), a jeszcze lepiej, jeśli wiedza ta dotyczy programowania mikrokontrolerów. Wiedza z zakresu programowania układów FPGA czy języków opisu sprzętu (w szczególności VHDL) będzie pomocna, jednak nie jest wymagana i może zostać uzupełniona w trakcie lektury dodatku w końcu okaże się, że układy FPGA wcale nie są tak skomplikowane, jak niektórzy twierdzą. Materiały dodatkowe Książce tej towarzyszą materiały dodatkowe, bez których realizacja niektórych zadań jest niemożliwa. Są one dostępne na stronie www.wydawnictwo.btc.pl. Materiały te zorganizowane są w folderach, których nazwy rozpoczynają się od numeru rozdziału, którego dotyczą. W tych folderach znajdują się (niektóre pozycje mogą występować w zależności od tematu): 1. Folder Projekt zawierający finalną wersję projektu, jaką powinniśmy osiągnąć pod koniec danego rozdziału: a) projekt oprogramowania Quartus, a) /Nios projekt systemu mikroprocesorowego (Platform Designer), a) /Nios/software oprogramowanie oraz BSP (przygotowane w Eclipse), a) /Nios/software/TutorialXX kody źródłowe oprogramowania oraz biblioteki. 2. Plik XX_Projekt_start.zip zawierający wersję projektu, od której powinniśmy rozpocząć pracę w czasie lektury danego rozdziału (na wszelki wypadek, gdyby ktoś miał problemy i chciał zacząć na świeżo ). 3. Pliki main_xx_...c zawierające różne wersje pliku main.c oprogramowania procesora Nios, podsumowujące kluczowe fragmenty pracy nad danym zagadnieniem. 4. Dodatkowe materiały, jak na przykład noty katalogowe/dokumentacje/schematy stosowanych układów/modułów czy oprogramowanie wykorzystywane w czasie kursu (np. do generowania czcionek). Kto jest kim? O ile w przypadku programowania mikrokontrolerów kwestie używanego oprogramowania i rodzajów plików są niezwykle jasne, o tyle w czasie spotkań z systemem Nios II będziemy pracowali na wielu poziomach i w wielu programach. Aby nie pogubić się w gąszczu nowych, postanowiłem w tabeli 0.1 zebrać wszystkie używane przez nas składowe oprogramowania, zaś w tabeli 0.2 ważniejsze formaty plików, z jakimi mieć będziemy styczność. Na pewno wyraźnego zaznaczenia wymaga fakt, że pracować będziemy na dwóch głównych płaszczyznach. Po pierwsze, będziemy się zajmować projektem systemu mikroprocesorowego, który będzie potem przetłumaczony na

15 konfigurację układu FPGA czyli w uproszczeniu odpowiednie połączenie bramek, przerzutników itp. Po drugie, dla takiego procesora będziemy przygotowywali oprogramowanie podobnie jak na każdy inny mikrokontroler. Tab. 0.1. Spis ważniejszych funkcji używanego oprogramowania Nazwa programu lub okna/modułu Quartus Platform Designer Pin Planner ModelSim Eclipse Signal Tap Zastosowanie Jego podstawowym zastosowaniem jest praca z plikami tworzonymi w językach opisu sprzętu i tłumaczenie ich na konkretną konfigurację (bramek, przerzutników, ) w układzie FPGA czyli dokonywanie syntezy. Tu także tworzymy główny projekt systemu. Służy do tworzenia systemów mikroprocesorowych, np. w oparciu o rdzeń Nios II. W tym programie będziemy mogli do wybranego rdzenia podpinać różne układy peryferyjne (i je konfigurować), korzystając z interfejsu graficznego. Następnie na podstawie tego projektu zostaną wygenerowane pliki dla głównego programu Quartus (na podstawie których przygotowana zostanie potem konfiguracja układu FPGA) oraz pliki zawierające definicje podłączonych komponentów (układów peryferyjnych, np. URAT czy GPIO) niezbędne do tworzenia oprogramowania. Narzędzie pakietu Quartus służące do przypisywania fizycznych wyprowadzeń układu FPGA do konkretnych portów w projekcie. Oprogramowanie do symulacji działania projektu w układzie FPGA. Oprogramowanie, w którym będziemy pisać programy uruchamiane potem w zbudowanym przez nas systemie mikroprocesorowym. Pozwala także na debugowanie programu. Moduł wewnętrznego analizatora stanów logicznych, który pozwala na podglądanie pracy układu FPGA na żywo. Tab. 0.2. Spis ważniejszych formatów plików Rozszerzenie pliku.qpf.sof.pof.vhd /.v.qsys.sopcinfo.c /.h.elf.hex.mif.tcl ( _hw.tcl) Plik projektu programu Quartus. Zastosowanie Plik konfiguracyjny układu FPGA umożliwiający konfigurację nietrwałą (generowany przez Quartus po syntezie). Plik konfiguracyjny układu FPGA umożliwiający konfigurację trwałą przez zapis do pamięci FLASH (generowany przez Quartus po syntezie). Plik źródłowy w języku opisu sprzętu VHDL/Verilog (tworzone przez użytkownika lub częściowo generowane przez Platform Designer lub Model Sim jako testbench). Plik projektu programu Platform Designer, przechowuje skład naszego systemu mikroprocesorowego. Plik związany z projektem Platform Designer służący do wygenerowania BSP (zestawu driverów oraz opisu rejestrów naszego systemu mikroprocesorowego) wykorzystywany przez Eclipse, generowany przez Platform Designer. Pliki źródłowe/nagłówkowe tworzące oprogramowanie, używamy ich w Eclipse. Tworzone przez użytkownika lub generowane przez Eclipse. Plik wynikowy po kompilacji oprogramowania w Eclipse używany przez nas zwykle podczas procesu debugowania. Plik wynikowy po kompilacji oprogramowania w Eclipse używany przez nas zwykle jako plik inicjalizacyjny dla pamięci RAM. Inny format pliku inicjalizującego pamięć RAM. Pliki skryptowe języka TCL. W naszym przypadku używane są one do przechowywania definicji tworzonych przez nas komponentów dla Platform Designer i są przez niego generowane w czasie tworzenia nowego komponentu.

16 Podziękowania Pragnąłbym w szczególny sposób podziękować osobom, które przyczyniły się do powstania tej książki: Rodzicom, za wspieranie w rozwijaniu pasji i wskazywanie drogi w życiu. Panu Piotrowi Zbysińskiemu za pomoc przy jej wydaniu oraz motywację do działania. Wykładowcom z AGH w Krakowie, Panom: Ernestowi Jamro, Jerzemu Kasperkowi i Pawłowi Rajdzie, za cenne wskazówki w czasie zgłębiania tajników FPGA. Panom: Łukaszowi Krzakowi oraz Piotrowi Chodorowskiemu, za zgodę na wykorzystanie kodów przez nich opracowanych. Panu Jakubowi Tyburskiemu za cenne konsultacje oraz przygotowanie rozdziału o języku VHDL. Panu Dominikowi Bieczyńskiemu, po rozmowach z którym w 2013 roku stałem się posiadaczem swojego pierwszego zestawu edukacyjnego z układem FPGA. Wszystkim bezpośrednio związanym z przygotowaniem i wydaniem niniejszej książki, bez których moje teksty nie zyskałyby tak czytelnej formy. Wielu innym osobom, których nie sposób wymienić, a które pomagały mi i uczyły wielu rzeczy, bez których nie mógłbym osiągnąć tego miejsca w życiu. Lista poruszanych zagadnień praktycznych Rozdział 1 Pierwszy mikroprocesor w układzie FPGA Tworzenie projektu w Quartus Budowa podstawowego systemu z rdzeniem Nios II w Platform Designer Ustawienia pinów w Pin Planner Kompilacja projektu Programowanie układu FPGA Generowanie projektu oprogramowania w Ecplipse Wgrywanie oprogramowania do procesora Używanie konsoli JTAG UART Rozdział 2 Wyjście na świat, czyli rzecz o GPIO Dodawanie portów wejścia/wyjścia do systemu Obsługa programowa portów wejścia/wyjścia Integrowanie oprogramowania z plikiem konfiguracyjnym układu FPGA Używanie nieulotnej pamięci konfiguracyjnej w układzie FPGA Rozdział 3 Timery i przerwania, część 1 Obsługa wyświetlaczy 7-segmentowych z multipleksowaniem Dodawanie do systemu timera Przerwania Wykorzystanie timera i przerwań do obsługi wyświetlacza Odmierzanie czasu za pomocą timera

17 Rozdział 4 Timery i przerwania, część 2 Przerwania zewnętrzne z portów wejścia/wyjścia Eliminacja drgań styków z wykorzystaniem timera Precyzyjny pomiar czasu z zastosowaniem timera Dostęp atomowy i wyłączanie przerwań Rozdział 5 UART Dodanie modułu UART do systemu Obsługa UART z wykorzystaniem standardowego wejścia/wyjścia Obsługa UART z użyciem przerwań i buforów kołowych Rozdział 6 Interfejs SPI Dodanie modułu SPI do systemu Obsługa przykładowych układów z interfejsem SPI Rozdział 7 Interfejs I 2 C Dodanie modułu I 2 C do systemu Podstawy tworzenia własnych komponentów Platform Designer Obsługa przykładowych układów za pomocą interfejsu I 2 C Rozdział 8 Przetwornik analogowo-cyfrowy Dodanie przetwornika ADC do systemu Obsługa klawiatury rezystancyjnej Obsługa wyświetlacza HD44780 Rozdział 9 Własne moduły Avalon-MM generator PWM Magistrala Avalon-MM Tworzenie własnego modułu Generowanie sygnału PWM Tworzenie modułów z parametrami Rozdział 10 Własne moduły Avalon-MM enkoder i wyświetlacz 7-segmentowy Sprzętowa obsługa wyświetlaczy 7-segmentowych Sprzętowa eliminacja drgań styków Sprzętowa obsługa enkoderów inkrementalnych Tworzenie modułów Platform Designer składających się z wielu plików źródłowych Konfiguracja rezystorów podciągających w układzie FPGA Rozdział 11 Własne moduły Avalon-MM diody WS2812, czyli czas na kolor Podstawowy moduł sterujący diodami WS2812 Tworzenie portu Master dla magistrali Avalon-MM Moduł sterujący diodami WS2812 z zewnętrzną, 2-portową pamięcią RAM Rozdział 12 Więcej pamięci, czyli karty SD Dodanie modułów do obsługi karty SD

18 Przystosowanie biblioteki FatFs na podstawie przykładów dla procesorów AVR Metody porządkowania i współdzielenia własnych modułów Rozdział 13 VGA, czyli czas na duże wyświetlacze Projektowanie zaawansowanego modułu generatora znaków z wyjściem VGA Projektowanie własnych czcionek Rozdział 14 HDMI, czyli duży cyfrowy wyświetlacz Transmisja różnicowa Moduł generatora znaków z wyjściem HDMI Rozdział 15 Kilka drobiazgów, które nigdzie nie pasują, czyli uzupełnienie Symulacja systemu Nios II z oprogramowaniem Symulacja pojedynczych komponentów systemu Używanie systemu Nios II jako komponentu w większym projekcie Wykorzystanie analizatora stanów logicznych SignalTap. Rozdział 16 Krótki kurs VHDL