Tutorial projektowanie systemu dwuprocesorowego FPGA

Podobne dokumenty
1.Wstęp. 2.Generowanie systemu w EDK

SYSTEMY DEDYKOWANE W UKŁADACH PROGRAMOWALNYCH

Programowanie procesora Microblaze w środowisku SDK

SYSTEMY DEDYKOWANE W UKŁADACH PROGRAMOWALNYCH

Projektowanie z użyciem procesora programowego Nios II

Ćwiczenia z S S jako Profinet-IO Controller. FAQ Marzec 2012

Konfiguracja pakietu CrossStudio for MSP

Bezpieczeństwo informacji oparte o kryptografię kwantową

Warsztaty AVR. Instalacja i konfiguracja środowiska Eclipse dla mikrokontrolerów AVR. Dariusz Wika

Projekt procesora NIOSII w strukturze programowalnego układu logicznego CYCLONEII EP2C35F672C6 podłączenie i obsługa wyświetlacza LCD.

Ćwiczenia z S Komunikacja S z miernikiem parametrów sieci PAC 3200 za pośrednictwem protokołu Modbus/TCP.

podstawowa obsługa panelu administracyjnego

Projekt procesora NIOSII w strukturze programowalnego układu logicznego CYCLONEII EP2C35F672C6 wersja startowa dla słuchaczy studiów niestacjonarnych.

Instrukcja instalacji systemu. CardioScan 10, 11 i 12

Unreal Engine 4 - Samsung Gear VR

Instrukcja instalacji systemu. CardioScan 10, 11 i 12

Zadanie1. Wykorzystując serwis internetowy Wikipedii wyjaśnij następujące pojęcia: wirtualizacja, VirtualBox, Vmware, KVM, Virtual PC, Hyper-V.

SKRÓCONA INSTRUKCJA INSTALACJI MODEMU I KONFIGURACJA POŁĄCZENIA Z INTERNETEM NA WINDOWS 8 DLA AnyDATA ADU-520L

Tomasz Greszata - Koszalin

podstawowa obsługa panelu administracyjnego

Instrukcja aktualizacji oprogramowania. Wersja dokumentu: 01i00 Aktualizacja:

Utworzenie aplikacji mobilnej Po uruchomieniu Visual Studio pokazuje się ekran powitalny. Po lewej stronie odnośniki do otworzenia lub stworzenia

Estomed2. 1. Wstęp. 2. Instalacja Systemu Estomed Jak zainstalować Estomed2. Hakon Software sp. z o. o. Podręcznik instalacji

Konfiguracja i podłączenie sterownika Horner APG do oprogramowania Cscape po RS232

Programator AVR MKII. Instrukcja obsługi. Copyright by Barion

Systemy Czasu Rzeczywistego FPGA

Instrukcja importu dokumentów z programu Fakt do programu Płatnik

Instrukcja instalacji oraz konfiguracji sterowników. MaxiEcu 2.0

Załącznik 1 instrukcje instalacji

Instalacja i konfiguracja konsoli ShadowControl

Internet bezprzewodowy

Kopiowanie i instalowanie pliku w systemie Windows CE

Dokumentacja techniczna

Instalacja aplikacji

AKTYWNY SAMORZĄD. Instrukcja instalacji, aktualizacji i konfiguracji.

MultiTool instrukcja użytkownika 2010 SFAR

SKRÓCONA INSTRUKCJA INSTALACJI MODEMU I KONFIGURACJA POŁĄCZENIA Z INTERNETEM NA WINDOWS 8 DLA AnyDATA ADU-510L

MentorGraphics ModelSim

SPRZĘTOWA IMPLEMENTACJA ALGORYTMÓW

Dodatki. Dodatek A Octave. Język maszyn

SPRZĘTOWA IMPLEMENTACJA ALGORYTMÓW

Instrukcja wgrywania aktualizacji oprogramowania dla routera Edimax LT-6408n

INSTRUKCJA UŻYTKOWNIKA MPCC

Symulacja systemu z procesorem MicroBlaze w środowisku ActiveHDL

Instrukcja instalacji oraz obsługi czytników i kart procesorowych dla Klientów SBI Banku BPH S.A.

Papyrus. Papyrus. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

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

Konfiguracja oprogramowania w systemach MS Windows dla kont z ograniczonymi uprawnieniami

SYSTEM REJESTRACJI VIDEO PRO SURVEILLANCE SYSTEM V R

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

TwinCAT 3 konfiguracja i uruchomienie programu w języku ST lokalnie

Instrukcja instalacji i obsługi modemu ED77 pod systemem operacyjnym Windows 98 SE (wydanie drugie)

FAQ: /PL Data: 3/07/2013 Konfiguracja współpracy programów PC Access i Microsoft Excel ze sterownikiem S7-1200

Instalacja MUSB2232FKA w systemie Windows 7

Zdalny podgląd wizualizacji z panelu XV100 przez przeglądarkę internetową (WebServer)

Uruchomienie Raspberry Pi

Instalacja sterowników w systemie operacyjnym WINDOWS 8 ; 8.1 ; 10

PROJEKTOWANIE APLIKACJI INTERNETOWYCH

Moduł USB GREISINGER EBW3 EASYBUS

Instrukcje dotyczące systemu Windows w przypadku drukarki podłączonej lokalnie

TWORZENIE OD PODSTAW PROJEKTU W ŚRODOWISKU QUARTUS PRIME

Instrukcja obsługi Konfigurator MLAN-1000

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

Załącznik 1 instrukcje instalacji

Przywracanie ustawień fabrycznych

5.2. Pierwsze kroki z bazami danych

Platforma szkoleniowa krok po kroku. Poradnik Kursanta

Samsung Universal Print Driver Podręcznik użytkownika

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

SYSTEMY DEDYKOWANE W UKŁADACH PROGRAMOWALNYCH

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH Wydziałowy Zakład Metrologii Mikro- i Nanostruktur SEMESTR LETNI 2017

Pracownia internetowa w szkole ZASTOSOWANIA

Konfigurowanie modułu BK9050 firmy Beckhoff wprowadzenie

Projekt Komputerowych Systemów Sterowania Wymiana danych pomiędzy dwoma sterownikami Siemens S7-300 po sieci Profibus DP

pomocą programu WinRar.

Jak zainstalować i skonfigurować komunikator MIRANDA, aby wyglądał i funkcjonował jak Gadu Gadu Tutorial by t800.

INTERFEJS LPG/CNG FTDI USB INSTRUKCJA INSTALACJI ORAZ KONFIGURACJI URZĄDZENIA

Instrukcja instalacji i konfiguracji Karty EDGE/GPRS SonyEricsson GC85

Symfonia Produkcja Instrukcja instalacji. Wersja 2013

Opis aktualizacji programu Kancelaria Komornika

Instrukcje dotyczące systemu Windows w przypadku drukarki podłączonej lokalnie

SKRÓCONA INSTRUKCJA INSTALACJI MODEMU I POŁĄCZENIA Z INTERNETEM NA WINDOWS 7 DLA AnyDATA ADU-510L

Programator procesorów rodziny AVR AVR-T910

I2: J2ME programowanie w NetBeans IDE Wydział Transportu PW semestr /11

INFORMATOR TECHNICZNY HORNER. Konfiguracja komunikacji GPRS pomiędzy sterownikiem XLe i oprogramowaniem Proficy HMI/SCADA Cimplicity

USB DVB-T STICK. Instrucja obsługi. Watch & record Digital TV programs on Your PC! MT4152

Product Update Funkcjonalność ADR dla przemienników Częstotliwości PowerFlex 750 oraz 525 6

INSTALACJA W PROGRAMACH MAGAZYNOWYCH KROK PO KROKU FAREX FLEX

Podgląd z rejestratorów IPOX na komputerze z systemem WINDOWS za pomocą programu NVMS-2.0 LITE

Instrukcja do oprogramowania ENAP DEC-1

Wprowadzenie do środowiska Qt Creator

Instrukcja InPro BMS Siemens FC700A InPro Professional 4.1

Expo Composer Garncarska Szczecin tel.: info@doittechnology.pl. Dokumentacja użytkownika

Instrukcja instalacji

Instrukcja instalacji Zespołu Diagnostycznego Delphi w systemie Vista.

Instrukcja użytkownika aplikacji npodpis r.

Aby uruchomić Multibooka, należy podłączyć nośnik USB do gniazda USB w komputerze, na którym program ma być używany.

Transkrypt:

Tutorial projektowanie systemu dwuprocesorowego FPGA Celem niniejszego tutoriala jest zapoznanie się z zagadnieniami związanymi z projektowaniem systemów wieloprocesorowych w układach FPGA. Tutorial jest zgodny z oprogramowaniem EDK w wersji 13.2 i dotyczy projektu dwuprocesorowego systemu FPGA realizującego obsługę kodeka audio AC-97. Implementację projektu należy wykonać na platformie ewaluacyjnej Digilent ATLYS. Przed rozpoczęciem pracy należy zapoznać się z opisem projektu, który zawiera opis architektury oraz sposobu działania systemu. Aby rozpocząć pracę należy otworzyć program Xilinx Platform Studio(XPS). 1. Po otwarciu programu należy wybrać opcję Base System Builder, jest to kreator ułatwiający projektowanie systemów procesorowych. 2. W pierwszym oknie kreatora ustawiamy ścieżkę, pod którą zostanie utworzony projekt(żadna z nazw folderów w ścieżce nie może zawierać spacji!), jako magistralę wybieramy AXI, a następnie ustawiamy ścieżkę do sterowników platformy rozwojowej ATLYS: set peripherial repository serach path:..\multicore_embedded\atlys_axi_bsb_support\lib (Folder zawierający sterowniki jest dołączony do tutoriala) 3. W kolejnym oknie platforma sprzętowa została automatycznie wybrana na Digilent ATLYS, więc wybieramy Dual MicroBlaze Processor System i klikamy Next. 4. W tym kolejnym oknie należy wybrać parametry obu procesorów zawartych w systemie: a. Zegar systemu należy pozostawić w tej części bez zmian. b. Dla obu procesorów należy wybrać local memory size 16KB, a część dotyczącą pamięci podręcznej procesora pozostawić bez zmian. c. W ramce included peripherials powinny znajdować się jedynie peryferia MCB_DDR2 oraz RS232UART. 5. Aby wygenerować podstawę sprzętową systemu należy kliknąć Finish. Po chwili wygenerowany system zostanie przedstawiony w widoku System Assembly View. 6. Dzięki zastosowaniu dwóch procesorów w systemie jesteśmy w stanie zmniejszyć częstotliwość taktowania zegara procesorów tak, aby ograniczyć moc pobieraną przez system przy zachowaniu pełnej funkcjonalności. 7. Zmian związanych z taktowaniem zegarów dokonujemy w narzędziu Hardware- >Launch Clock Wizard. Narzędzie to umożliwia zmianę taktowania zegarów wszystkich komponentów systemu. Zaznaczamy opcję Enable Full Dynamic Range. W przypadku naszego projektu chcemy użyć zegara 25MHz więc ustawiamy taką wartość we wszystkich procesorach, magistralach oraz peryferiach poza MCB_DDR2 gdzie wartości powinny wyglądać dokładnie tak jak na przedstawionym rysunku: Opracował: Damian Mroczek Strona 1

Po takim ustawieniu zegarów systemu należy kliknąć validate clocks, a następnie OK. 8. Kolejnym etapem będzie dodanie do projektu sprzętowego kontrolera kodeka AC-97. a. Aby tego dokonać należy skopiować dołączony do tutoriala folder ac97ctrl_v_1_00_a do folderu pcorces w katalogu projektu. b. Po skopiowaniu należy wybrać Project->Rescan User Repositories, aby program wykrył dodanie nowego IP Core a do katalogu c. Teraz w zakładce IP Catalog po lewej stronie interfejsu w podkatalogu USER pojawił się nowy IP Core o nazwie ac97ctrl d. Należy wybrać ten IP Core prawym klawiszem myszy i wybrać Add IP, następnie dwa razy wybrać OK nie zmieniając domyślnych opcji. e. Po chwili w zakładce Bus Interfaces zostanie dodany nowy sprzęt, następnie należy sprawdzić w zakładce Adresses czy został mu przydzielony adres. f. Kolejnym etapem jest przejście do zakładki Ports w celu modyfikacji ustawień portów kontrolera wszystkie niepodłączone porty należy uczynić portami wyjściowymi w przedstawiony sposób: Opracował: Damian Mroczek Strona 2

g. Kolejnym etapem jest przyporządkowanie zewnętrznych portów do konkretnych pinów układu FPGA, należy to zrobić modyfikując plik system.ucf znajdujący się w zakładce Project h. Dodanie nowego portu zewnętrznego odbywa się poprzez wstawienie następującej linii w tym pliku: NET ac97ctrl_0_sync_pin LOC = "U17" IOSTANDARD = "LVCMOS33"; ( ta linia oznacza dla programu przyporządkowanie sygnału ac97ctrl_0_sync_pin do pinu U17) Korzystając z tego przykładu należy przyporządkować wszystkie 4 pozostałe sygnały związane z kontrolerem według następującego szablonu: ac97ctrl_0_sdi_pin -> T18 ac97ctrl_0_sdo_pin -> N16 ac97ctrl_0_bitclk_pin -> L13 ac97ctrl_0_reset_c_pin ->T17 9. Po wykonaniu tej czynności został zaprojektowny cały system dwuprocesorowy, który posłuży do uruchomienia aplikacji umożliwiającej obsługę kodeka audio AC-97 znajdującego się na płytce rozowjowej. Aby obejrzeć schemat blokowy systemu należy kliknąc Project->Generate Block Diagram Image. 10. Kolejnym krokiem jest przeprowadzenie syntezy oraz implementacji systemu, aby tego dokonać należy wybrać Hardware->Generate Bitstream 11. Jeżeli proces przebiegł bez błędów mamy zaprojektowaną platformę sprzętową, aby przejść do projektu oprogramowania należy kliknąć Export Design to SDK i wybrać opcję Export Only. Dalsza część projektu wykonywana jest w programie Software Development Kit: 12. W celu utworzenia aplikacji na zaprojektowaną platformę należy otworzyć program SDK pakietu Xilinx EDK. 13. Po otworzeniu aplikacji jako workspace wybieramy pusty folder na dysku, po otwarciu programu zamykamy okno powitalne. 14. W celu stworzenia projektu nowej aplikacji wybieramy File->New->Xilinx C Project, następnie zostaniemy zapytani czy chcemy wyspecyfikować platformę sprzętową na jakiej będzie pracował projekt, wybieramy Specify następnie wpisujemy nazwę projektu oraz podajemy ścieżkę do pliku BMM wyeksportowanego przez program XPS, plik znajduje się w lokalizacji projektu, w folderze SDK. Opracował: Damian Mroczek Strona 3

15. Po wykonaniu tej czynności program automatycznie wróci do tworzenia nowego projektu w języku C. W otwartym oknie zmieniamy nazwę projektu na recorder_mb1 i pozostawiamy Project Template: Hello World oraz Processor: microblaze_1 16. W kolejnym oknie zmieniamy nazwę projektu z hello_world_bsp_0 na recorder_bsp i klikamy Finish. 17. W analogiczny sposób tworzymy nowy projekt dla procesora microblaze_0 o nazwie user_system_0 18. W ten sposób wygenerowane zostały dwa puste projekty, które można modyfikować w celu zaprojektowania aplikacji, pierwszym krokiem jest zmiana nazwy pliku hello_world.c w każdym projekcie odpowiednio na recorder.c oraz user_system.c. 19. W kolejnym etapie należy zamienić kod zawarty w tych plikach na kod dołączony do tutoriala nazwy plików odpowiadają sobie. 20. Po wklejeniu kodu do odpowiednich plików należy do każdego projektu dodać bibliotekę kodekac97.h. Biblioteka ta zawiera funkcje obsługujące kodek umieszczony na płytce rozwojowej. a. Aby to zrobić należy kliknąć prawym przyciskiem myszy na folder src, a następnie New->Header file. Jako nazwę należy wpisać kodekac97.h i kliknąć Finish. b. Następnie należy wkleić do tego pliku zawartość załączonej biblioteki o tej samej nazwie. c. Zadanie należy wykonać w obu podprojektach 21. Kolejnym etapem jest zadbanie o to, aby dane instrukcji oraz dane podręczne procesorów nie były umieszczone w jednym obszarze pamięci. Należy to zrobić poprzez modyfikację pliku linkera lscript.ld w obu podprojektach. Należy to wykonać otwierając i modyfikując pliki w sposób przedstawiony na rysunku: Wszystkie sekcje linkera należy przypisać do pamięci BRAM procesora. Opracował: Damian Mroczek Strona 4

Zadanie 1 W kodzie user_system.c celowo został pominięty kod odpowiadający za obsługę bloku mailbox. Należy uzupełnić kod we wskazanym na rysunku miejscu: Konfiguracja bloku mailbox przebiega identycznie jak bloku mutex. Wskazówki: -Należy użyć funkcji konfigurującej odpowiadającej blokowi mailbox: XMbox_LookupConfig(ID); -Jako ID należy użyć znalezionego w bibliotece xparameters.h ID odpowiadającego danemu procesorowi.(np. XPAR_MAILBOX_0_IF_5_DEVICE_ID) Zadanie 2 Procesory podczas pracy programu wysyłają sobie 32 bitowe wiadomości takie jak rozkaz rozpoczęcia nagrywania, komunikat o błędzie, oraz wskaźnik do nagrania. Realizacja wysyłania i odbierania tych wiadomości powinna zostać obsłużona przez funkcje XMbox_Write oraz XMbox_Read, pełen opis użycia tych funkcji znajduje się w dokumentacji bloku mailbox dostępnej w pliku system.mss w mailbox: documentation. Funkcje powinny zostać użyte w następujących miejscach zaznaczonych w kodzie: ///////wyslij polecenie nagrania/////////// //////wyslij polecenie zwolnienia pamieci/////// /////obsluga odebrania wskaznika nagrania/////// W ostatnim punkcie należy dwukrotnie użyć funkcji w zaznaczonych w kodzie miejscach Wskazówki: - jako BytesRecvdPtr użyj zmiennej bytesrcvd zadeklarowanej w programie -jeżeli występują problemy spróbuj rozpocząć Debugowanie programu, aby to zrobić należy kliknąć Program FPGA, a następnie wybrać prawym klawiszem myszy projekt user_system i kliknąć Debug->Launch on Hardware. Następnie krok po kroku obserwujemy działanie kodu. Opracował: Damian Mroczek Strona 5

Zadanie 3 Analogicznych modyfikacji dokonaj w zaznaczonych w kodzie miejscach w pliku recorder.c, aby umożliwić obustronną komunikację programów. 22. Po wykonaniu zadań 1,2 i 3 możliwe jest w sprawdzenie w pełni działającego programu, aby sprawdzić działanie należy skonfigurować program: 23. Należy podłączyć kabel usb->prog oraz drugi usb->uart, aby umożliwić komunikację z programem. Podłączamy również kablami źródło i odbiornik dźwięku, a następnie włączamy płytkę. 24. Programujemy układ FPGA poprzez wybranie Program FPGA, a następnie wykonujemy czynności: a. Uruchamiamy user_system poprzez zaznaczenie prawym klawiszem myszy i wybór Run->Launch on Hardware, a następnie to samo robimy z podprojektem recorder. b. Wybieramy Run->Run Configuratrions c. Wybieramy recorder.elf i zmieniamy Device Initialization na Reset Processor Only, zatwierdzamy zmianę. d. W tym samym oknie dwukrotnie klikamy Launch group gdzie dodajemy pliki elf user_system oraz rekorder (uwaga user_system musi być pierwszy na liście, ponieważ przy inicjalizacji resetuje układ FPGA). e. Następnie klikamy Run w dolnym prawym rogu. f. W tym przypadku oba procesory są uruchamiane jednocześnie i program działa w pełni. Zadanie 4 Zadanie to należy wykonać za pomocą programu PowerAnalyzer znajdującego się w pakiecie Ise Design Tools. Wykonanie będzie polegało na wczytaniu projektu do programu i uruchomieniu analizy. W celu rozpoczęcia analizy należy użyć File->Open Design, następnie jako Design File należy użyć pliku system.ncd znajdującego się w katalogu projektu w folderze implementation. Dodatkowo należy wczytać opcjonalny plik physical constraint file, który znajduje się w tym samym miejscu. Następnie należy uruchomić analizę. Po wykonaniu analizy należy odnaleźć interesujące nas dane i uzupełnić tabelę: Opracował: Damian Mroczek Strona 6

Parametr System dwuprocesorowy 2xMicroBlaze 25MHz System jednoprocesorowy Microblaze 50MHz Wykorzystanie bloków logicznych [%] Całkowita moc pobierana przez system procesorowy [W] Temperatura pracy układu FPGA [ o C] Całkowita moc pobierana przez układ FPGA ze źródła zasilania [W] Drugą analizę należy wykonać analogicznie na plikach załączonych w folderze one_core gdzie znajdują się pliki projektu jednoprocesorowego opartego na tym samy procesorze oraz peryferiach lecz z większą częstotliwością taktowania w celu osiągnięcia wydajności porównywalnej do naszego systemu. Wyniki obu analiz należy porównać w tabeli oraz wyciągnąć odpowiednie wnioski. Opracował: Damian Mroczek Strona 7