logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak rozpocząć przygodę z układami Xilinx Zynq

ghost666 27 Wrz 2017 20:34 3258 0
  • Jak rozpocząć przygodę z układami Xilinx Zynq
    Xilinx Zynq to nowatorski układ typu System-na-Chipie (SoC), który może być w pełni programowalny przez użytkownika. W poniższym tekście opisano, jak łatwo rozpocząć swoją przygodę z tego rodzaju układem.

    Czym jest FPGA?

    Firma Xilinx znana jest z produkcji układów programowalnych (FPGA). Układ taki, w dużym uproszczeniu, składa się z programowalnych bloków logicznych, połączonych - także programowalnymi - połączeniami. Układy FPGA charakteryzują się dużą szybkością działania, możliwością równoległego wykonywania wielu zadań czy też różnego, asynchronicznego taktowania poszczególnych segmentów układu. Układy te mogą być wielokrotnie programowane po opuszczeniu fabryki, często także już w systemie gdzie mają pracować, dzięki czemu są bardzo elastyczne. Układy takie znajdują swoje zastosowanie wszędzie tam, gdzie wymagane jest szybkie działanie i duża wydajność obliczeniowa podczas realizacji konkretnego algorytmu. Znalazły swoje aplikacje w systemach uczenia maszynowego, rozpoznawania obrazów czy w systemach serwerowych.

    Czym jest ZYNQ

    Xilinx Zynq?-7000 to w pełni programowalny układ SoC. Składa się on z procesora z rdzeniem ARM, który w dowolny sposób oprogramować można kodem oraz z elementów układu FPGA, które skonfigurować można w dowolny sposób. W układ wbudowano także dodatkowe bloki dedykowane do konkretnych zadań, takie jak rdzenie DSP, systemy do obróbki sygnałów czy układy szyfrujące do kryptografii. Wszystko to zintegrowane jest w pojedynczym, bardzo elastycznym układzie scalonym.

    Jak rozpocząć przygodę z układami Xilinx Zynq


    Układy te wydawać mogą się bardzo złożone, jednakże dzięki odpowiedniemu środowisku bardzo szybko można zacząć się ich uczyć. Wystarczy, krok po kroku, prześledzić poniższy poradnik i wykonać zawarte w nim zadania. Wszystko zrealizowane jest na płytce deweloperskiej ZYBO.

    Instalacja Vivado, SDK oraz wsparcia dla ZYBO

    Zanim rozpoczniemy programowanie czy projektowanie logiki układu, zainstalować musimy Xilinx Vivado Design Suite. Wersja Webpack jest darmowa, a na stronie Digilenta znajdziemy także kompletny poradnik, jak zainstalować ten pakiet.

    Pobierając Vivado zwróćmy uwagę, aby zaznaczyć okienko podpisane "Software Development Kit" w menu Design Tools, aby ściągnąć SDK. Jeśli zapomnimy, to nic strasznego - można później ściągnąć i zainstalować samo SDK.

    Jak rozpocząć przygodę z układami Xilinx Zynq


    Po ściągnięciu i zainstalowaniu Vivado, doinstalować musimy pliki wsparcia dla płytki ZYBO. Pozwoli to na konfigurację interfejsów i peryferiów na płytce. Pliki te umieszczamy w folderze wraz z Xilinx Vivado. Dokładną instrukcję jak to zrobić znaleźć możemy na stronie Digilenta: https://reference.digilentinc.com/reference/software/vivado/board-files?redirect=1.

    Uwaga: Podczas instalacji wsparcia dla poszczególnych płytek (board_files) w naszym folderze lokalnym. Rekomendujemy jednakże, aby skopiować tam tylko pliki konkretnej płytki, które znajdziemy w folderze vivado-boards-master\new\board_files\zybo.

    Utwórzmy nowy projekt

    Wykorzystując Digilent ZYBO utwórzmy przykładowy projekt, który pozwoli nam sprawdzić działanie modułu.

    W projekcie tym kontrolować będziemy wbudowane w moduł uruchomieniowy diody LED (LD0 - LD3) z pomocą czterech przełączników, jakie są na płytce (SW0 - SW3). Dodatkowo, wykorzystując przyciski w module (BTN0 - BTN3) przesyłać będziemy komunikaty na terminal komputera PC, podłączonego do modułu.

    Tok projektowania hardware

    Wykonujemy kolejne czynności:

    1. Uruchamiamy Vivado i wybieramy płytkę ZYBO.
    2. Tworzymy nowy projekt w Vivado.
    3. Tworzymy nowy, pusty blok w projekcie.
    4. Dodajemy do utworzonego bloku potrzebne elementy wykorzystując IP Integrator.
    5. Syntezujemy projekt hardware.
    6. Sprawdzamy poprawność projektu bloku sprzętowego i zapisujemy projekt.
    7. Tworzymy wrapper HDL dla systemu.
    8. Uruchamiamy syntezę i implementację systemu w wbudowanym FPGA.
    9. Generujemy plik bitowy dla układu programowalnego.
    10. Eksportujemy wygenerowany strumień bitowy do SDK.
    11. Uruchamiamy SDK.

    Podczas konfiguracji możemy dokładniej skonfigurować procesor w systemie. Jeśli naciśniemy dwa razy na dodany rdzeń axi_gpio_0 pojawi się okienko, gdzie możemy skonfigurować procesor. Zaznaczamy tam "Enable Dual Channel" i naciskamy OK. Dodajemy tam także dwa wejścia - SW i BTN. Każdy rdzeń axi_gpio_core wspiera 32 bity wejść GPIO, ale w naszym wypadku wykorzystujemy tylko 4.

    W kolejnym menu konfiguracyjnym dodajemy kolejny rdzeń GPIO, ale nie włączamy w nim opcji "Dual Channel". Posłuży on nam do kontroli wyjść na diody LED.

    Finalnie uruchamiamy Connection Automation, aby połączyć ze sobą interfejsy i/lub porty z zewnętrznymi pinami I/O.

    Domyślnie jeden z interfejsów UART (UART1) jest zapełniony ZYNQ IP.

    Więcej informacji znaleźć możemy tutaj.

    Jak rozpocząć przygodę z układami Xilinx Zynq


    Tok tworzenia programu

    Możemy powtórzyć kroki z poprzedniego opisu, aby utworzyć nowy projekt dla oprogramowania. Gdy otworzymy helloworld.c w folderze src, możemy tam znaleźć predefiniowane funkcje i biblioteki dla interfejsu użytkownika.

    Funkcje i biblioteki

    Jak rozpocząć przygodę z układami Xilinx Zynq


    Klikamy prawym przyciskiem myszy na predefiniowanych funkcjach/bibliotekach, aby podejrzeć ich deklaracje.

    Jak rozpocząć przygodę z układami Xilinx Zynq


    Kod przykładowego programu zaprezentowany jest poniżej. Wykorzystajmy go do przetestowania stworzonego systemu.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Uruchamianie projektu

    Ostatnim krokiem jest skonfigurowanie FPGA i wgranie programu, jaki stworzyliśmy. Po uruchomieniu systemu możemy zaobserwować działanie systemu:

    * Gdy przełączać będziemy przełączniki SW0 - SW3, zapalać będą się odpowiednie diody LED.
    * Gdy naciskać będziemy przyciski BTN0 - BTN3, system wysyłać będzie poprzez port szeregowy do komputera wiadomość, o tym że naciśnięty został dany przycisk.

    Źródło: https://www.rs-online.com/designspark/getting-started-with-xilinx-zynq-all-programmable-soc

    Fajne? Ranking DIY
    O autorze
    ghost666
    Tłumacz Redaktor
    Offline 
    Fizyk z wykształcenia. Po zrobieniu doktoratu i dwóch latach pracy na uczelni, przeszedł do sektora prywatnego, gdzie zajmuje się projektowaniem urządzeń elektronicznych i programowaniem. Od 2003 roku na forum Elektroda.pl, od 2008 roku członek zespołu redakcyjnego.
    https://twitter.com/Moonstreet_Labs
    ghost666 napisał 11960 postów o ocenie 10197, pomógł 157 razy. Mieszka w mieście Warszawa. Jest z nami od 2003 roku.
REKLAMA