SPRZĘTOWA IMPLEMENTACJA ALGORYTMÓW

Podobne dokumenty
Realizacja własnych modułów IP Cores w srodowisku EDK

1. Synteza układów opisanych w języku VHDL Xilinx ISE Design Suite 10.1 VHDL 2. Obsługa przetwornika CA Project Add source...

SYSTEMY DEDYKOWANE W UKŁADACH PROGRAMOWALNYCH

Bezpieczeństwo informacji oparte o kryptografię kwantową

Symulacja systemu z procesorem MicroBlaze w środowisku ActiveHDL

1. ISE WebPack i VHDL Xilinx ISE Design Suite 10.1 VHDL Tworzenie projektu Project Navigator Xilinx ISE Design Suite 10.1 File

SYSTEMY DEDYKOWANE W UKŁADACH PROGRAMOWALNYCH

Programowanie procesora Microblaze w środowisku SDK

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

Systemy Czasu Rzeczywistego FPGA

Systemy Czasu Rzeczywistego FPGA

Krótkie wprowadzenie do ModelSim i Quartus2

Układy reprogramowalne i SoC Implementacja w układach FPGA

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Aby w pełni przetestować układ o trzech wejściach IN_0, IN_1 i IN_2 chcemy wygenerować wszystkie możliwe kombinacje sygnałów wejściowych.

Konfigurowanie modułu BK9050 firmy Beckhoff wprowadzenie

MentorGraphics ModelSim

Bramki logiczne Instrukcja do ćwiczeń laboratoryjnych

Projektowanie z użyciem procesora programowego Nios II

Projektowanie układów VLSI-ASIC techniką od ogółu do szczegółu (top-down) przy użyciu pakietu CADENCE

Programowalne układy logiczne Wydziałowy Zakład Nanometrologii SEMESTR LETNI

Ćwiczenie 1 VHDL - Licznik 4-bitowy.

Rys. 1. Główne okno programu QT Creator. Na rysunku 2 oznaczone zostały cztery przyciski, odpowiadają kolejno następującym funkcjom:

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

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

Instrukcja podstawowego uruchomienia sterownika PLC LSIS serii XGB XBC-DR20SU

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

Projektowanie Urządzeń Cyfrowych

Projektowanie z użyciem bloków funkcjonalnych w układach programowalnych firmy Xilinx

Lista zadań nr 5. Ścieżka projektowa Realizacja każdego z zadań odbywać się będzie zgodnie z poniższą ścieżką projektową (rys.

Projektowanie systemów za pomocą języków wysokiego poziomu ESL

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 4 (3h) Przerzutniki, zatrzaski i rejestry w VHDL

AKADEMIA GÓRNICZO-HUTNICZA IM. STANISŁAWA STASZICA W KRAKOWIE. QuIDE Quantum IDE PODRĘCZNIK UŻYTKOWNIKA

Projekt prostego procesora

Tutorial projektowanie systemu dwuprocesorowego FPGA

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

Altera Quartus II. Opis niektórych komponentów dostarczanych razem ze środowiskiem. Opracował: mgr inż. Leszek Ciopiński

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

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH

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

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

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

Kodery, dekodery, transkodery Synteza sprzętu przy pomocy VHDL

Systemy Czasu Rzeczywistego FPGA

Inwentarz Optivum. Jak wykorzystać kolektor danych do wypełniania arkuszy spisowych?

Instalacja aplikacji

Konfigurowanie sterownika CX9000 firmy Beckhoff wprowadzenie

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

Tworzenie nowego projektu w asemblerze dla mikroprocesora z rodziny 8051

Technika Cyfrowa Wprowadzenie do laboratorium komputerowego

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 8 (3h) Implementacja pamięci ROM w FPGA

Instrukcja użytkowania

BLUETOOTH INSTRUKCJA PODŁĄCZENIA I KONFIGURACJI.

Państwowa Wyższa Szkoła Zawodowa w Gorzowie Wlkp. Laboratorium architektury komputerów

PC0060. ADAPTER Kabel Easy Copy PC-Link USB 2.0 Proste kopiowanie, bez instalacji. Instrukcja obsługi

PROGRAMOWALNE UKŁADY CYFROWE

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

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

Projektowanie z użyciem softprocesora picoblaze w układach programowalnych firmy Xilinx

1. Aplikacja LOGO! App do LOGO! 8 i LOGO! 7

Projektowanie systemów za pomocą języków wysokiego poziomu ESL

Konfigurowanie sterownika CX1000 firmy Beckhoff wprowadzenie. 1. Konfiguracja pakietu TwinCAT do współpracy z sterownikiem CX1000

7 Business Ship Control dla Symfonia Handel

Systemy Czasu Rzeczywistego FPGA

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej

Technika cyfrowa. Laboratorium nr 7. Liczniki synchroniczne. Mirosław Łazoryszczak. Temat:

Akceleracja symulacji HES-AHDL. 1. Rozpoczęcie pracy aplikacja VNC viewer

Konfiguracja oprogramowania w systemach MS Windows dla kont z ograniczonymi uprawnieniami

FAQ: /PL Data: 14/06/2007 Konfiguracja współpracy programów PC Access i Microsoft Excel ze sterownikiem S7-200

7 Business Ship Control dla Systemu Zarządzania Forte

Instalowanie VHOPE i plików biblioteki VHOPE

Przełącznik USB 2.0. Podręcznik użytkownika. Typ: DA & DA

Gromadzenie danych. Przybliżony czas ćwiczenia. Wstęp. Przegląd ćwiczenia. Poniższe ćwiczenie ukończysz w czasie 15 minut.

TECHNIKA MIKROPROCESOROWA II

Divar - Archive Player. Instrukcja obsługi

Konfigurowanie sterownika CP6601 firmy Beckhoff wprowadzenie

Livebox konfiguracja drukarki

Wygląd okna aplikacji Project Navigator.

OPTIMA PC v Program konfiguracyjny dla cyfrowych paneli domofonowy serii OPTIMA ELFON. Instrukcja obsługi. Rev 1

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Laboratorium Badanie topologii i budowa małej sieci

podstawowa obsługa panelu administracyjnego

Instalacja protokołu PPPoE

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Inwerter logiczny. Ilustracja 1: Układ do symulacji inwertera (Inverter.sch)

PORADNIK KORZYSTANIA Z SERWERA FTP ftp.architekturaibiznes.com.pl

Laboratorium Projektowania Systemów VLSI-ASIC Katedra Elektroniki Akademia Górniczo-Hutnicza

LICZNIKI LABORATORIUM. Elektronika AKADEMIA GÓRNICZO-HUTNICZA IM. STANISŁAWA STASZICA W KRAKOWIE. Wydział Informatyki, Elektroniki i Telekomunikacji

Podstawy programowania w środowisku Totally Integration Automation Portal

Konfigurowanie sterownika BX9000 firmy Beckhoff wprowadzenie. 1. Konfiguracja pakietu TwinCAT do współpracy ze sterownikiem BX9000

Konfigurowanie sterownika BC8150 firmy Beckhoff wprowadzenie

Kopiowanie, przenoszenie plików i folderów

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

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

Instrukcja instalacji Zespołu Diagnostycznego Delphi w systemie Vista.

FAQ: /PL Data: 2/07/2013 Konfiguracja współpracy programów PC Access i Microsoft Excel ze sterownikiem LOGO!

Livebox podłączenie drukarki USB

NPS-520. Serwer druku do urządzeń wielofukcyjnych. Skrócona instrukcja obsługi. Wersja 1.00 Edycja 1 11/2006

Transkrypt:

Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie Wydział EAIiE Katedra Elektroniki SPRZĘTOWA IMPLEMENTACJA ALGORYTMÓW Moduły IP Core EDK Zespół Rekonfigurowalnych Systemów Obliczeniowych Grzegorz Gancarczyk & Sebastian Koryciak & Paweł Russek http://www.fpga.agh.edu.pl 16.12.2012

1. Wstęp Celem ćwiczenia jest zapoznanie Uczestników kursu z możliwościami realizacji własnych modułów urządzeń peryferyjnych, które następnie będą mogły współpracować z softprocesorem MicroBlaze firmy Xilinx. Za komunikację przygotowanych modułów z mikroprocesorem odpowiedzialna będzie magistrala AXI (Advanced extensible Interface), zaś cały projekt zostanie zintegrowany w środowisku Xilinx Platform Studio (XPS). Spełnienie pewnych formalnych założeń przy projektowaniu własnego elementu IP Core umożliwia jego późniejsze wykorzystanie jako modułu automatycznie rozpoznawanego i zintegrowanego ze środowiskiem XPS. W ćwiczeniu zaproponowano metodę projektowania własnego sprzętu z wykorzystaniem interfejsu IPIC (IP Interconnect) skojarzonego z elementem bibliotecznym IPIF (IP Interface) dostarczanym przez firmę Xilinx. Wykorzystanie uniwersalnego elementu pośredniczącego w komunikacji modułu użytkownika z magistralą AXI, przyspiesza integrację własnych elementów ze środowiskiem XPS oraz chroni przed koniecznością zachowania dbałości o spełnienie rygorystycznych wymagań czasowych modułów IP Core projektowanych dla XPS. Co bardzo ważne, IPIC umożliwia migrację urządzeń peryferyjnych pomiędzy różnymi magistralami systemowymi dostępnymi w środowisku XPS (np. AXI / PLB) oraz pomiędzy kolejnymi wersjami pakietu (np. 13.4 / 14.2). Jako przykład zaprezentowany zostanie dodatkowy moduł RTC (Real Timie Clock) i sposób jego integracji ze środowiskiem EDK. Moduł zostanie uruchomiony w konfiguracji z procesorem MicroBlaze, modułem obsługi wyświetlacza siedmiosegmentowego znajdującego się na płycie ewaluacyjnej Nexys 3, modułem interfejsu szeregowego axi_uart_light, pojedynczą magistralą AXI oraz dwoma magistralami LMB (Local Memory Bus). Wymagania sprzętowe: komputer klasy PC spełniający wymagania sprzętowe aplikacji ISE Design Suite, zestaw ewaluacyjny Nexys 3 firmy Digilent. Wymagania programowe: system operacyjny Windows XP lub wyższy, środowisko ISE Design Suite. Wymagane doświadczenie: podstawowa umiejętność obsługi komputera klasy PC, podstawowa znajomość systemów operacyjnych rodziny Windows, podstawowa znajomość języka ANSI C, podstawowa wiedza na temat cyfrowych układów elektronicznych, ukończone zajęcia nr IXA kursu Projektowania systemów cyfrowych w układach FPGA z wykorzystaniem języków HDL. 2

2. Tworzenie projektu sprzętowego Projekt sprzętowy zostanie utworzony poprzez rozszerzenie projektu bazowego o przygotowane wcześniej i dostarczone w trakcie zajęć pliki modułu sprzętowego (vhd i vhi) oraz kodu aplikacji (c). Postępując identycznie jak opisano to w instrukcji IXA kursu Projektowania systemów cyfrowych w układach FPGA z wykorzystaniem języków HDL, proszę utworzyć nowy projekt sprzętowy o jednoznacznie brzmiącej nazwie (np. czwartek_9_00). Proszę dopilnować, aby projektowany system był taktowany sygnałem zegarowym o częstotliwości 50 [MHz] i wykorzystywał jedynie jeden moduł peryferyjny, tj. moduł obsługi zespołu wyświetlaczy siedmiosegmentowych Digilent_SevSeg_Disp. 2.1. Repozytorium plików Wspomniane wcześniej, przygotowane specjalnie na potrzeby zajęć pliki znajdują w repozytorium o nazwie ip_sources.zip. Proszę je pobrać ze strony http:\\www.fpga.agh.edu.pl\sia\ Menu Laboratorium Materiały do ćwiczeń Ćwiczenie 3 i zachować na dysku twardym komputera. Archiwum zawiera 3 pliki. W pliku system.c zawarto prostą aplikację napisaną w języku C, która wykorzystuje moduł rtc_core. Plik RTC.vhd stanowi sprzętową realizację zegara czasu rzeczywistego wykonaną w języku VHDL. Plik RTC.vhi jest szablonem deklaracji komponentu RTC (instantiate) w projekcie. Archiwum proszę rozpakować w katalogu projektu narzędzia Xilinx EDK. C:\MyXilDesigns\EDK_2 (przykładowo) 3

2.2. Moduł zegara czasu rzeczywistego Moduł RTC jest bardzo prostym układem zegara czasu rzeczywistego. Jego symbol i opis funkcji poszczególnych wejść/wyjść przedstawiono poniżej. Wejście/Wyjście Wr Stop Rst Clk BCDHourIn(7:0) BCDMinIn(7:0) BCDSecIn(7:0) BCDHourOut(7:0) BCDMinOut(7:0) BCDSecOut(7:0) Funkcja Sygnał wejściowy odpowiedzialny za zapis czasu do modułu TRC. Dla Wr = '1', przy narastającym zboczu zegara Clk wpisywany jest czas wystawiony na magistralach BCDHourIn, BCDMinIn, BCDSecIn. Sygnał wejściowy odpowiedzialny za zatrzymania zegara. Dla Stop = '1' licznik zostaje zatrzymany. Reset układu. Zegar układu. Magistrala wejściowa. Przenosi informację zapisaną w kodzie BCD o aktualnej godzinie. Magistrala wejściowa. Przenosi informację zapisaną w kodzie BCD o aktualnej minucie. Magistrala wejściowa. Przenosi informację zapisaną w kodzie BCD o aktualnej sekundzie. Magistrala wyjściowa. Przenosi informację zapisaną w kodzie BCD o aktualnej godzinie. Magistrala wyjściowa. Przenosi informację zapisaną w kodzie BCD o aktualnej minucie. Magistrala wyjściowa. Przenosi informację zapisaną w kodzie BCD o aktualnej sekundzie. Proszę zapoznać się z zawartością pliku TRC.vhd, po czym przejść do kolejnego punktu instrukcji. 4

2.3. Import modułu IP Core do projektu XPS Wykorzystanie w projekcie własnego modułu wymaga umieszczenia jego opisu w katalogu pcores. Katalog taki znajduje w drzewie każdego projektu XPS. W katalogu pcores znajdują się elementy IP Core użytkowników, a zawartość tego katalogu jest wczytywana przez XPS każdorazowo podczas otwierania projektu. Każdy moduł użytkownika ma swój własny podkatalog o nazwie składającej się z nazwy modułu i numeru jego wersji (np..\pcores\rtc_core_v1_00_a). W pierwszej fazie przygotowywania własnego modułu IP Core, kompatybilnego z magistralą AXI, najwygodniej posłużyć się narzędziem do generowania szablonu nowo tworzonego IP Core'a. Narzędzie Create-Import Peripheral ułatwia zastosowanie odpowiedniego nazewnictwa dla nowo tworzonego modułu (nazwa musi uwzględniać numer wersji modułu), tworzy odpowiednią strukturę katalogów oraz plików dla projektowanego modułu, a także wyręcza projektanta w wielokrotnym powielaniu informacji wspólnych dla wielu elementów IP Core. Proszę uruchomić narzędzie importu nowych modułów peryferyjnych. Hardware Create or Import Peripheral W nowo otwartym oknie powitalnym czarodzieja proszę kliknąć na przycisku Next. Next 5

W następnym oknie proszę wybrać opcję stworzenia szablonu dla nowego modułu peryferyjnego, po czym kliknąć na przycisku Next. Select flow Create templates for a new peripheral Next 6

W następnym kroku proszę zadbać, aby nowy moduł został dodany (przechowywany) w katalogu istniejącego projektu. Następnie proszę kliknąć na przycisku Next. To an XPS project Next 7

W kolejnym oknie określa się nazwę modułu oraz numeruje jego wersję. Proszę nazwać moduł IP Core rtc_core i wedle uznania dodać jego opis w specjalnie przygotowanym do tego celu polu. Po wszystkim należy kliknąć na przycisku Next. Name rtc_core Next 8

W nowo otwartym oknie należy dokonać wyboru interfejsu magistrali komunikacyjnej modułu. W tym przypadku będzie to uproszczona wersja magistrali AXI4. Po zaznaczeniu stosownej opcji proszę kliknąć przycisk Next. AXI4-Lite Next 9

W pierwszym oknie konfiguracji wrappera IPIF proszę zaznaczyć opcję dołączenia do modułu układu przesuwnika fazy danych i odznaczyć opcję użycia rejestrów programowych. Po zaznaczeniu/odznaczeniu stosownych opcji proszę nacisnąć przycisk Next. Include data phase timer User logic software register Next 10

W drugim oknie konfiguracji wrappera IPIF definiuje się linie, które połączą moduł IP Core z magistralą AXI. Proszę dopilnować, aby dołączone zostały następujące porty Bus2IP_clk Bus2IP_Resetn Bus2IP_Data Bus2IP_BE Bus2IP_RdCE Bus2IP_WrCE Bus2IP_Data Bus2IP_RdAck Bus2IP_WrAck Bus2IP_Error Proszę kliknąć na przycisku Next. Next Pierwsze okno opcji dodatkowych wrappera IPIF proszę pominąć klikając Next. Next 11

W drugim oknie opcji dodatkowych wrappera IPIF proszę zaznaczyć opcję odpowiedzialną za generację plików ISE i syntezera XST, które ułatwią proces implementacji własnego moduły IP Core. Następnie proszę kliknąć na przycisku Next. Generate ISE and XST project files to help you implement the peripheral using XST flow Next W ostatnim oknie czarodzieja proszę kliknąć przycisk Finish. Finish Efektem pracy czarodzieja jest powstanie nowego katalogu rtc_core_v1_00_a wraz z zawartością. W katalogu rtc_core_v1_00_a/data znaleźć można plik mpd opisujący sposób dołączenia modułu IP Core do magistrali AXI. Plik pao zawiera z kolei informację o tym, jak należy skompilować ten moduł. W katalogu rtc_core_v1_00_a/hdl/vhdl znajdują się pliki opisujące moduł w wybranym języku opisu sprzętu. Plik rtc_core.vhd jest nadrzędnym plikiem projektu. Zawiera on deklarację elementów składowych modułu IP Core oraz mapę połączeń poszczególnych portów, linii, magistral. Występujący w nim komponent USER_LOGIC jest szablonem służącym do dodania elementu o własnej funkcjonalności, natomiast komponent AXI_LITE_IPIF_I jest elementem bibliotecznym IPIC. Plik user_logic.vhd to szablon, w którym znaleźć powinien się opis układu stworzonego przez użytkownika. Plik ten jest wstępnie przygotowany tak, aby dobrze współgrał z interfejsem AXI_LITE_IPIF. W katalogu rtc_core_v1_00_a/devl/projnav znaleźć można projekt ISE, który umożliwia niezależną implementację modułu IP Core. 12

2.4. Integracja elementu RTC z USER_LOGIC Do katalogu pcores/rtc_core_v1_00_a/hdl/vhdl proszę skopiować plik RTC.vhd z katalogu IPCores_sources. Proszę uruchomić plik projektu ISE stworzony przez czarodzieja. Projekt ten znacząco ułatwia wprowadzenie jakichkolwiek modyfikacji w utworzonym automatycznie szablonie. W celu uruchomienia projektu proszę dwukrotnie kliknąć na ikonie pliku rtc_core.xise znajdującej się w katalogu pcores/rtc_core_v1_00_a/devl/projnav rtc_core.xise Do projektu ISE proszę dodać plik RTC.vhd. Add Copy of Source Proszę zmodyfikować architekturę USER_LOGIC w pliku user_logic.vhd w następujący sposób: dodać komponent RTC (jego definicję można znaleźć w pliku RTC.vhi), podłączyć magistralę Bus2IPData do portów BCDHourIn, BDCMinIn oraz BCDSecIn, podłączyć magistralę IP2BusData do portów BCDHourOut, BCDMinOut oraz BCDSecOut, podłączyć sygnał strobujący Bus2IP_wrCE(0) do portu Wr, dodać port Stop do entity user_logic, a następnie podłączyć go do portu Stop modułu RTC, właściwie wysterować sygnały potwierdzenia transakcji zapisu i odczytu IP2Bus_WrAck oraz IP2Bus_RdAck. Wprowadzone modyfikacje spowodują połączenie sygnałów IPIC z sygnałami modułu zegarowego RTC oraz zapewnią sygnał strobu zapisu/odczytu. Przykładową realizację przedstawiono poniżej. -- ADD USER PORTS BELOW THIS LINE ------------------ Stop : in std_logic; -- ADD USER PORTS ABOVE THIS LINE ------------------ ---------------------------------------------------------------------------- -- Architecture section ---------------------------------------------------------------------------- architecture IMP of user_logic is component RTC is port ( Rst : in std_logic; -- asynchronious Clk : in std_logic; -- 50MHz BCDHourIn : in std_logic_vector (7 downto 0); BCDMinIn : in std_logic_vector (7 downto 0); BCDSecIn : in std_logic_vector (7 downto 0); BCDHourOut : out std_logic_vector (7 downto 0); BCDMinOut : out std_logic_vector (7 downto 0); BCDSecOut : out std_logic_vector (7 downto 0); Wr : in std_logic; Stop : in std_logic); 13

end component RTC; signal Wr: std_logic; ---------------------------------------------------------------------------- -- Begin architecture ---------------------------------------------------------------------------- begin -- architecture IMP RTC_0: RTC port map ( Rst => Bus2IP_Resetn, Clk => Bus2IP_Clk, BCDHourIn => Bus2IP_Data(15 downto 8), BCDMinIn => Bus2IP_Data(23 downto 16), BCDSecIn => Bus2IP_Data(31 downto 24), BCDHourOut => IP2Bus_Data(15 downto 8), BCDMinOut => IP2Bus_Data(23 downto 16), BCDSecOut => IP2Bus_Data(31 downto 24), Wr => Bus2IP_WrCE(0), Stop => Stop ); IP2Bus_WrAck <= Bus2IP_WrCE(0); IP2Bus_RdAck <= Bus2IP_RdCE(0); IP2Bus_Error <= '0'; end architecture IMP; 2.5. Dodawanie sygnałów zewnętrznych Ponieważ narzędzie importu Create-Import Peripheral nie zapewnia możliwości dodania do elementu IPIC sygnałów zewnętrznych nie będących częścią interfejsu IPIC, toteż takie sygnały użytkownik musi dodać ręcznie w kodzie źródłowym elementu rtc_core. Moduł zegara RTC zawiera sygnał Stop zatrzymujący zliczanie czasu. Sygnał ten powinien być dostępny z zewnątrz systemu/układu FPGA. Proszę dodać port Stop w entity rtc_core w pliku rtc_core.vhd. -- ADD USER PORTS BELOW THIS LINE ------------------ Stop : in std_logic; -- ADD USER PORTS ABOVE THIS LINE ------------------ Proszę wykonać stosowne połączenie pomiędzy portami Stop logiki użytkownika i interfejsu IPIC w mapie portów elementu USER_LOGIC_I w pliku rtc_core.vhd. -- ADD USER PORTS BELOW THIS LINE ------------------ Stop => Stop, -- ADD USER PORTS ABOVE THIS LINE ------------------ 14

Po wykonaniu powyższych zmian linia Stop powinna uzyskać drożność od poziomu najwyższego modułu RTC_CORE, aż do modułu użytkownika RTC. W celu weryfikacji tej drożności proszę sprawdzić poprawność składni całego projektu. Uwaga! Próba syntezy całego projektu zakończy się ostrzeżeniami i/lub błędami, dlatego też należy sprawdzić jedynie poprawność składni VHDL. Synthesize Check Syntax Run 2.6. Integracja z pakietem EDK Opis pracy modułu znajduje się w plikach VHDL, aby jednak możliwa była jego integracja z pakietem EDK, konieczne są dodatkowe opisy elementu zawarte w plikach mpd (Microprocessor Peripheral Description) i pao (Peripheral Analyze Order). Proszę otworzyć plik rtc_core_vx_x_x.mpd znajdujący się w katalogu pcores/rtc_core_v1_00_a/data. Plik proszę otworzyć w dowolnym edytorze tekstu. Na końcu pliku (ale przed słowem kluczowym END) proszę dodać poniższą deklarację portu użytkownika Stop. # --USER-- change to user core ports PORT Stop = "", DIR = IN Wprowadzone zmiany sprawią, że narzędzia XPS łączące mikroprocesor MicroBlaze z peryferiami typu IP Core będą potrafić prawidłowo podłączyć moduł użytkownika rtc_core. Po wprowadzeniu zmian plik proszę zapisać. Proszę otworzyć plik rtc_core_vx_x_x.pao znajdujący się w katalogu pcores/rtc_core_v1_00_a/data (w dowolnym edytorze tekstu). Plik pao zawiera listę elementów składowych modułu wraz z nazwami bibliotek, w których moduły te się znajdują. Ponieważ przy tworzeniu logiki użytkownika wykorzystany został dodatkowy moduł RTC (niewygenerowany przez czarodzieja XPS), dlatego też element ten należy dopisać do biblioteki kompilatora ręcznie. Proszę sprawdzić, czy w pliku znajdują się deklaracje poniższych elementów bibliotecznych. W razie ich braku, proszę dopisać brakujące elementy i zapisać plik. lib rtc_core_v1_00_a user_logic vhdl lib rtc_core_v1_00_a rtc_core vhdl lib rtc_core_v1_00_a RTC vhdl 15

3. Konfiguracja modułów peryferyjnych Moduł IP Core użytkownika został dodany do repozytorium projektu XPS i po wprowadzonych zmianach jest gotowy do użycia. Jeśli to konieczne proszę uruchomić narzędzie XPS i otworzyć swój projekt. W przeciwnym wypadku proszę jedynie odświeżyć zawartość repozytorium plików użytkownika. Project Rescan User Repositories Zmianie uległo drzewo dostępnych modułów IP. W katalogu modułów IP pojawiła się nowa zakładka Project Local PCores, a w niej grupa elementów użytkownika, w tym moduł RTC_CORE. Proszę zwrócić uwagę na widoczny opis modułu. Moduł proszę dodać do aktualnego projektu. IP Catalog Project Local PCores USER RTC_CORE 16

Proszę nie zmieniać w żaden sposób domyślnych ustawień dla modułu rtc_core i kliknąć na przyciskach OK w kolejno pojawiających się oknach. OK OK Proszę dopilnować, aby adres bazowy modułu rtc_core_x wynosił 0x70600000. 17

Proszę uczynić z portu Stop modułu rtc_core port zewnętrzny oraz dopilnować, by port S_AXI_ACLK został podpięty do 50 [MHz] zegara taktującego cały system cyfrowy (CLKOUT0). rtc_core Stop Make External Proszę otworzyć plik ucf projektu i zdefiniować w nim przypisane portu zewnętrznego rtc_core_0_stop_pin do wyprowadzenia C9 układu FPGA. Wzorcowy kod zaprezentowany został poniżej. Po wprowadzeniu stosownych zmian plik ucf proszę zapisać. NET rtc_core_0_stop_pin LOC = "C9"; Po wprowadzonych zmianach port Stop modułu IP Core rtc_core uzyskał dostęp do świata zewnętrznego (z wnętrza układu FPGA do jednego z jego wyprowadzeń). Do sterowania nim wykorzystany został przycisk monostabilny Push Button BTND na płycie Nexys 3. 3.1. Poprawki w module obsługi wyświetlacza siedmiosegmentowego Przyglądając się liście portów modułu Digilent_SevSeg_Disp łatwo stwierdzić, że w konfiguracji jaką posiada on na tę chwilę z pewnością nie wyświetli on żadnych danych na zespole wyświetlaczy siedmiosegmentowych płyty Nexys 3. Porty AN i SEG modułu Digilent_SevSeg_Disp proszę skonfigurować jako porty zewnętrzne. Jednocześnie proszę zwrócić uwagę na fakt, że czarodziej XPS dodał już te porty do pliku ucf i skonfigurował jako podłączone do zespołu anod i katod wyświetlaczy siedmiosegmentowych. Port zegara magistrali AXI został przez czarodzieja zwarty z poziomem masy. Edytując zawartość pliku mhs proszę połączyć port S_AXI_ACLK modułu svn_seg_axi z linią clk_50_0000mhz. Po wprowadzeniu zmian plik mhs proszę zapisać. 18

Moduł Digilent_SevSeg_Disp posiada port zegara magistrali AXI (skonfigurowany poprawnie przed chwilą) oraz drugi, którego rolą jest "przemiatanie" wyświetlacza siedmiosegmentowego. W celu zmniejszenia poboru energii elektrycznej przez wyświetlacz siedmiosegmentowy należy do tego portu doprowadzić sygnał o częstotliwości od 1 [khz] do 60 [Hz]. Proszę dwukrotnie kliknąć na module Digilent_SevSeg_Disp, a następnie przy pomocy GUI skonfigurować częstotliwość zegara odpowiedzialnego za przemiatanie. Po wprowadzeniu zmian proszę kliknąć na przycisku OK. Digilent_SevSeg_Disp All CLK_FREQUENCY_HZ 100 (przykładowo) OK 3.2. Budowa i eksport projektu Ostatni krok budowy projektu sprzętowego to generacja netlisty, bitsreamu oraz eksport plików wynikowych do środowiska EDK. Wszystkie trzy operacje można zautomatyzować (przeprowadzić od razu) klikając na przycisk eksportu projektu do środiwska EDK. Export Design Export & Launch SDK W narzędziu SDK proszę utworzyć nowy, pusty projekt w języku C o stosownej nazwie (np. soft_1). W razie konieczności proszę posiłkować się instrukcją nr IXA nieniejszego kursu, w której cały ten proces został opisany. 19

Do katalogu projektu soft_1 narzędzia SDK (np. MyXilDesigns\SDK_2\soft_1\src) proszę skopiować plik system.c z katalogu MyXilDesigns\EDK_2\IPCores_sources. Następnie proszę odświerzyć zawartość katalogu projektu wciskając klawisz F5. Alternatywna metoda polega na kliknięci prawym przyciskiem myszy na katalogu projektu i wybraniu z menu kontekstowego stosownej opcji. soft_1 Refresh Projekt zostanie skompilowany z błędami. Proszę je wyeliminować, a następnie uruchomić całość na płycie Nexys 3. 20

5. Symulacja systemu MicroBlaze w symulatorze ISim Aby ograniczyć czas trwania symulacji, proszę zmniejszyć dzielnik zegara wejściowego clk modułu rtc_core w pliku RTC.vhd. W tym celu plik RTC.vhd znajdujący się w katalogu pcores/rtc_core_v1_00_a/hdl/vhdl należy otworzyć w dowolnym edytorze tekstu, po czym zmienić warunek przy którym następuje wyzerowanie licznika. Wartość 49 999 999 w procesie clock_div proszę zmienić na wartość 49. Po wprowadzeniu zmian plik proszę zapisać. Proszę usunąć starą implementację projektu w XPS. Pojawi się okno potwierdzenia decyzji, w otkórym proszę kliknąć na przycisku Yes. Hardware Clean Hardware Yes W programie SDK proszę zakomentować linie odwołujące się do STDIO oraz opóźnienia czasowego. Po wprowadzeniu zmian projekt proszę skompilować. W narzędziu XPS proszę wybrać stosowny plik elf, który posłuży do przeprowadzenia symulacji. Project Select Elf File 21

W nowym oknie, zarówno na potrzeby implementacji jak i symulacji, proszę wybrać plik egzekucyjny elf znajdujący się w katalogu soft_1 projektu SDK i użyty wcześniej podczas uruchomienia projektu na płycie Nexys 3. Następnie proszę okliknąć na przycisku OK. Choose Implementation Elf File /soft_1.elf ChooseSimulation Elf File /soft_1.elf OK W programie XPS proszę wybrać opcje projektu. Project Project Options 22

W oknie opcji projektu, w zakładce Design Flow proszę dopilnować, aby wybrana została symulacja behawioralna oraz utworzony został test bench. Po upewnieniu się, że wybrano poprawny rodzaj symulacji proszę okliknąć na przycisku OK. Design Flow Simulation Models Behavioral Design Flow Simulation Test Bench Generate test bench template OK Korzystajć z ikony w głównym oknie XPS proszę wygenerować pliki HDL na potrzeby symulacji. Korzystajć z ikony w głównym oknie XPS proszę uruchomić symulację. 23

W symulatorze ISim proszę dwukrotnie kliknąć na instancji system_tb w celu otwarcia pliku test bencha w oknie głównym symulatora. Instances and Processes system_tb Proszę odszukać architekturę STRUCTURE of system_tb i umieścić w niej deklarację wymuszenia dla portu Stop. -- START USER CODE (Do not remove this line) rtc_core_0_stop_pin <= '0'; -- END USER CODE (Do not remove this line) W celu skompilowania kodu VHDL po wprowadzonych zmianiach, proszę ponownie uruchomić symulację (przycisk Re-launch). Po zakończeniu symulacji proszę przełączyć widok na okno przebiegów czasowych (Default.wcfg) i wpisać w konsoli symulatora ISim kolejno komendy w_top i run 5000ns. Obserwując przebieg sygnału zegarowego gclk oraz sygnału zerującego reset, proszę określić moment zmiany stanu sygnału reset na nieaktywny. 24

W oknie instanscji proszę odnaleźć i podświetlić moduł rtc_core_0. W oknie konsoli proszę wpisać kolejno polecenia w_instance rtc_core_0, restart i run 5000ns. Korzystając z okna przebiegów czasowych proszę przeanalizować pracę modułu rtc_core. 1. Proszę odszukać momenty zmianu czasu. Jaki sygnał przenosi informację o aktualnym czasie? 2. Proszę zaobserwować cykl zapisu przez MicroBlaze'a nowej wartości czasu do modułu rtc_core. Ile wynosi względny czas symulacji, w którym zachodzi zapis czasu? 3. Proszę zaobserwować cykl odczytu przez MicroBlaze z modułu rtc_core. Jaka jest odczytana przez MicroBlaze godzina? 25

Proszę dodać do okna przebiegów sygnały BCDHourOut, BCDMinOut oraz BCDSecOut. W tym celu proszę wybrać moduł RTC_0 znajdujący się wewnątrz modułu rtc_core_0 i przeciągnąć wspomniane sygnały w okno symulatora. Po dodaniu nowych sygnałów proszę zrestartować symulację i zaobserwować zmiany czasu. Z okna symulatora proszę usunąć wszystkie sygnały dotyczące modułu rtc_core_0, po czym w oknie instancji zaznaczyć moduł microblaze_0 a w konsoli wpisać kolejno polecenia w_instance microblaze_0, restart i run 5000ns. Korzystając z okna przebiegów czasowych proszę przeanalizować pracę magistrali ILMB (szyny adresowej Instr_Addr i szyny danych Instr). 1. Kiedy na magistrali zwalnia się sygnał reset? 2. Dlaczego adresy rosną co 4 bajty (sygnał Instr)? 3. Ile taktów zegara trwa cykl odczytu rozkazu z magistrali? 4. Ćwiczenie 4.1. Wstęp Celem niniejszego ćwiczenia jest weryfikacja praktycznych umiejętności Uczestników kursu z zakresu tworzenia i użytkowania własnych modułów IP Core w połączeniu z softprocesorem MicroBlaze.. Zadaniem Uczestników będzie przygotowanie modułu IP Core o funkcjonalności polegającej na obliczeniu wyniku dodawania dwóch liczb 4 bitowych. Moduł ten zostanie połączony z procesorem MicroBlaze przy użyciu magistrali AXI. Wynik natomiast będzie wyświetlany na wyświetlaczu siedmiosegmentowym. Cały układ zostanie zaimplementowany na płytce ewaluacyjnej Nexys 3 firmy Digilent. Wymagania sprzętowe: komputer klasy PC spełniający wymagania sprzętowe aplikacji ISE Design Suite, zestaw ewaluacyjny Nexys 3 firmy Digilent. Wymagania programowe: 26

system operacyjny Windows XP lub wyższy, środowisko ISE Design Suite. Wymagane doświadczenie: podstawowa umiejętność obsługi komputera klasy PC, podstawowa znajomość systemów operacyjnych rodziny Windows, podstawowa znajomość języka ANSI C, podstawowa wiedza na temat cyfrowych układów elektronicznych, ukończone zajęcia nr IA, IIA, IXA i XA kursu Projektowania systemów cyfrowych w układach FPGA z wykorzystaniem języków HDL. 4.2. Założenia projektowe Projekt składać się będzie z trzech części: 1. Modułu IP Core przygotowanego w pełni samodzielnie przez Uczestników kursu. Do przygotowania modułu należy wykorzystać język VHDL i środowisko projektowe ISE. Funkcjonalność modułu powinna ograniczać się do wystawienia na jego 5 bitowej magistrali wyjściowej Y sumy argumentów podanych na jego dwie 4 bitowe magistrale wejściowe A i B. Przed przystąpieniem do realizacji dalszej części projektu należy sprawdzić poprawność działania modułu IP Core przygotowując specjalnie spreparowany w tym celu test bench. Wskazówka. Moduł można przygotować jako w pełni synchroniczny (synchronizowany sygnałem zegarowym magistrali AXI), jednak znacznie prościej zaimplementować go jako układ kombinacyjny. 2. Systemu cyfrowego zbudowanego z wykorzystaniem softprocesora MicroBlaze. System należy utworzyć w środowisku XPS. Jedynym urządzeniem peryferyjnym dla procesora MircoBlaze, które musi się znaleźć w systemie jest sterownik zespołu wyświetlaczy siedmiosegmentowych. Po stworzeniu systemu należy zaimportować do niego przygotowany wcześniej moduł IP Core, po czym przystosować do jego obsługi cały projekt. Należy m.in. uczynić z magistral AN i SEG (sterownika wyświetlacza siedmiosegmentowego) oraz A i B porty zewnętrzne, stosownie uzupełnić zawartość plików mhs, ucf, pao i mdp. Należy również pamiętać o wprowadzeniu zmian do wrappera user_logic i pliku top modułu IP Core. 3. Prostej aplikacji w języku C, która zostanie uruchomiona na procesore MicroBlaze. Będąc w nieskończonej pętli while procesor powinien przepisywać wynik odczytany z modułu IP Core do sterownika wyświetlacza siedmiosegmentowego. 27