(1) Projekt procesora NIOSII w strukturze programowalnego układu logicznego CYCLONEII EP2C35F672C6

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

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

Projektowanie z użyciem procesora programowego Nios II

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

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

Tworzenie nowego projektu w asemblerze dla mikroprocesora z rodziny 8051

Bramki logiczne Instrukcja do ćwiczeń laboratoryjnych

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

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

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

SYSTEMY DEDYKOWANE W UKŁADACH PROGRAMOWALNYCH

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

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

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

Instrukcja podstawowego uruchomienia sterownika PLC LSIS serii XGB XBC-DR20SU

Programowanie niskopoziomowe

LabVIEW PLATFORMA EDUKACYJNA Lekcja 5 LabVIEW i Arduino konfiguracja środowiska i pierwszy program

Podstawy programowania w środowisku Totally Integration Automation Portal

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

Konfiguracja pakietu CrossStudio for MSP

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Programowanie procesora Microblaze w środowisku SDK

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

Bezpieczeństwo informacji oparte o kryptografię kwantową

Istnieją trzy sposoby tworzenia kopii zapasowej na panelu Comfort:

Parametryzacja przetworników analogowocyfrowych

Moduł USB GREISINGER EBW3 EASYBUS

cmt + CODESYS, oraz zdalne wejścia/ wyjścia

Pobieranie edytora CodeLite

Instrukcja aktualizacji oprogramowania. Wersja dokumentu: 01i00 Aktualizacja:

Programowanie sterowników

Nagrywamy podcasty program Audacity

Galileo v10 pierwszy program

Projektowanie baz danych za pomocą narzędzi CASE

Instalacja sterownika USB do central MICRA, SIGMA, OPTIMA ver. 2.05

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

Instrukcja wgrywania aktualizacji oprogramowania dla routera Edimax LT-6408n

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

Instalacja protokołu PPPoE

Komunikacja z wykorzystaniem Protokołu TCP oraz funkcji AG_SEND/AG_RECV

Konfigurowanie sterownika BC8150 firmy Beckhoff wprowadzenie

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

SYSTEMY DEDYKOWANE W UKŁADACH PROGRAMOWALNYCH

Tomasz Greszata - Koszalin

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

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Aktualizacja oprogramowania sprzętowego bezprzewodowych pilotów zdalnego sterowania WR-1/WR-R10

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

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

1.1 Co to jest USBasp? Parametry techniczne Obsługiwane procesory Zawartość zestawu... 4

CoDeSys 3 programowanie w języku CFC

1. Tworzenie nowego projektu.

ODCZYT PRZEZ ZŁĄCZE OBD

dokument DOK wersja 1.0

Aktualizacja systemu Android do wersji 4.4 dla smartfonów Kruger&Matz DRIVE 2 - KM0408, KM0414, SOUL - KM0409 oraz LIVE 2 - KM0410

Instrukcja instalacji oraz konfiguracji sterowników. MaxiEcu 2.0

Załącznik 1 instrukcje instalacji

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Czytnik kart pamięci 8w1, Conrad USB 2.0 Instrukcja obsługi

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 1 (3h) Wprowadzenie do systemu Quartus II

Informatyka I : Tworzenie projektu

PRZETWORNIK USB - RS232

Konfiguracja oprogramowania w systemach MS Windows dla kont z ograniczonymi uprawnieniami

Instrukcja instalacji i konfiguracji Karty EDGE/GPRS SonyEricsson GC85

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

Instytut Teleinformatyki

Aplikacja do podpisu cyfrowego npodpis

Ewidencja Wyposażenia PL+

Aktualizacja oprogramowania sprzętowego bezprzewodowych pilotów zdalnego sterowania WR-R10

INSTRUKCJA INSTALACJI DRUKARKI. (Dla Windows CP-D70DW/D707DW)

MMfpga01. MMfpga11. Instrukcja konfiguracji środowiska, przykładowy projekt oraz programowanie układu

PRZETWORNIK USB - RS232

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

Załącznik 1 instrukcje instalacji

Aktualizacja oprogramowania sprzętowego przekaźnika bezprzewodowego WT 7

TWORZENIE OD PODSTAW PROJEKTU W ŚRODOWISKU QUARTUS PRIME

Instrukcja programowania płytek edycji 2014

Instrukcja instalacji oprogramowania. CardioScan 10, 11 i 12. w wersji 54a i 76a

Konfiguracja oprogramowania w systemach MS Windows dla kont z ograniczonymi uprawnieniami

Instalacja PPPoE w systemie Windows 98SE i Me

Instrukcja obsługi programatora AVR Prog USB v2

INSTRUKCJA DO OPROGRAMOWANIA KOMPUTEROWEGO

ZESTAW LABORATORYJNY I ZESTAW FARMACEUTYCZNY : Instrukcja instalacji

Instrukcja obsługi programu DS150E. Dangerfield March. 2009V3.0 Delphi PSS

Instrukcja instalacji BMW INPA do interfejsu BMW USB VIAKEN

Instrukcja obsługi programatora AVR Prog USB v2

Symfonia Produkcja Instrukcja instalacji. Wersja 2013

Moduł Handlowo-Magazynowy Przeprowadzanie inwentaryzacji z użyciem kolektorów danych

Ćwiczenia 9: Zarządzanie konfiguracją Zadania:

INSTRUKCJA WGRYWANIA OPROGRAMOWANIA DO URZĄDZENIA PARROT CK3100 LCD

Instrukcja konfiguracji wybranych funkcji skanera Datalogic Heron HD3130

JDK 7u25 NetBeans Zajęcia 1 strona - 1

inode instalacja sterowników USB dla adaptera BT 4.0

Edytor tekstu OpenOffice Writer Podstawy

Multimetr cyfrowy VA18B Instrukcja instalacji i obsługi. oprogramowania PC-LINK

WARIATOR WYPRZEDZENIA ZAPŁONU WARIATOR USTAWIENIA

Instalowanie VHOPE i plików biblioteki VHOPE

Instalacja Czytnika Kart GemPc Twin 1.4 dla przeglądarek 32 bitowych dla systemów Windows XP/Vista/2000/7/8 32 bity i 64 bity Wersja 1.

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

Transkrypt:

(1) Projekt procesora NIOSII w strukturze programowalnego układu logicznego CYCLONEII EP2C35F672C6 Laboratorium Mikroprocesorowych Układów Sterowania instrukcja wspomagająca realizację projektu

Przed przystąpieniem do pracy lub w przypadku wystąpienia problemów z kompilacją proszę sprawdzić: a. Nazwy plików nie mogą zawierać spacji oraz polskich znaków b. Nazwy folderów nie mogą zawierać spacji oraz polskich znaków c. Nazwa pliku oraz nazwa folderu nie może zaczynać się cyfrą d. Grupa otwiera projekt nie plik. Najpierw uruchomić środowisko Quartus a następnie menu File, Open Project e. Grupa otwiera swoją przestrzeń roboczą w środowisku NiosII EDS. Kiedy pojawi się okno Select Workspace proszę wskazać odpowiednią ścieżkę do swojego katalogu. Jeśli okno się nie pojawi proszę przełączyć workspace: menu File, Switch Workspace f. Nazwy plików oraz folderów nie mogą być takie same jak nazwy bloków cyfrowych i symboli tworzonych przez projektanta systemu g. Bez względu na ilustracje zawarte w instrukcji proszę sprawdzić czy używane (wprowadzone przez Państwa) nazwy wyprowadzeń znajdują się na zaimportowanej liście h. Proszę sprawdzić czy płytka DE2 jest zasilona oraz czy wtyczka przewodu USB znajduje się w miejscu przeznaczonym dla programatora USB BLASTER i. W razie wystąpienia błędu polegającego na nierozpoznawaniu elementów wprowadzonych przez użytkownika proszę odszukać i wskazać właściwy folder zawierający układy i bloki cyfrowe zaprojektowane przez Państwa: menu Project, Add/Remove Files in Project j. W przypadku tworzenia elementów za pomocą tzw. wizzarda (kreatora elementów) proszę bezwzględnie wskazywać ścieżkę do swojego katalogu k. Nazwy elementów tworzonych przez wizzarda nie mogą być takie jak nazwy elementów istniejących już w bibliotece l. Jeśli nie można programować układu należy sprawdzić, czy nie jest przypadkiem aktywna sesja w środowisku NIOSII EDS. Aby programować układ FPGA trzeba przerwać debagowanie układu z poziomu NIOSII EDS m. Zawsze gdy struktura procesora NIOS zmieni się należy przed generacją nowego układu zaktualizować adresy: menu System, Assign Base Addresses. Należy również pamiętać o aktualizacji biblioteki BSP w projekcie NIOSII EDS

1. Wstęp Laboratorium Mikroprocesorowych Układów Sterowania składa się jedynie z kilku spotkań, na których realizowany jest projekt polegający na: a) utworzeniu struktury cyfrowej zawierającej wejścia, wyjścia, układ PLL oraz procesor NIOSII b) wyborze i parametryzacji modułów procesora takich jak CPU, pamięć, układy transmisji szeregowej, układy portów równoległych oraz ustawieniu właściwych połączeń logicznych i adresów w powstałej strukturze procesora c) napisaniu programu w języku C wykonywanego przez procesor NIOSII służącego testom wybranych układów elektronicznych umieszczonych na płytce edukacyjnej DE2 Na wstępnie należy pobrać i zainstalować program Quartus13.0sp1 ze strony www.altera.com Wybrać Design Tools & Services, Design Software i wybrać Quartus II Web Edition Software

Nacisnąć przycisk Download Software Web Edition Free. Wskazać na wersję 13.0sp1

Można pobrać pełne oprogramowanie w postaci obrazu DVD lub zdecydować się na pobranie wersji minimalnej ale wystarczającej. Sprowadza się to do wyboru jedynie dwóch komponentów i naciśnięciu przycisku Download Selected File. Następnie program należy zainstalować przy zachowaniu jego defaultowych ustawień i podpowiedzi. Gdyby pojawiła się potrzeba zainstalowania sterowników dla programatora Byte-Blaster należy odszukać te sterowniki w folderze c:\altera\13.0sp1\quartus\drivers\ lub podobnym.

Istalacja powinna spowodować, że w menu start pojawi się folder Altera 13.0.1.232 Web Edition. Proszę zwrócić uwagę na dwa środowiska: a) Quartus II 13.0sp1 (63-bit) --- tutaj powstaje struktura cyfrowa oraz procesor b) Nios II 13.0sp1 Software Build Tool For Eclipse --- tutaj piszemy kod program dla procesora NIOSII 2. Materiały pomocnicze oraz literatura Na stanowisku komputerowym w folderze MUS_NS umieszczono materiały pomocnicze: a) Procesory_NiosII_cz1.pdf, Procesory_NiosII_cz2.pdf, Procesory_NiosII_cz3.pdf, Procesory_NiosII_cz4.pdf artykuły poświęcone tworzeniu procesora NIOS II b) DE2_System_v1.5.zip pakiet przykładowych projektów, ćwiczeń oraz dokumentacji dla zestawu DE2, znajdują się tu między innymi DE2_UserManual.pdf, DE2_schematics.pdf oraz DE2_Pin_Table.pdf c) RAPID_SOPC.pdf książka napisana w języku angielskim wprowadzająca do projektowania i prototypowania z wykorzystaniem układów FPGA d) Materiały do wykładu w postaci plików pdf Materiały pomocnicze znajduje się również w zasobach internetowych.

3. Projekt struktury startowej w środowisku Quartus II 1. Uruchomić z menu START program Quartus II 13.0sp1 (64-bit) 2. Wybrać z menu górnego głównego paska File, New Project Wizard 3. Po pojawieniu się nowego okna, w odsłonie 1/5 (Directory, Name, Top-Level Entity ) należy wprowadzić ścieżki i nazwy projektu, krótkie, bez spacji oraz polskich czcionek 4. W odsłonie Add Files [page 2 of 5] wybieramy next 5. W odsłonie Family & Device Settings [page 3 of 5] należy zaznaczyć opcje jak na ilustracji poniżej i kliknąć Next 6. W odsłonie EDA Tool Settings [page 4 of 5] wybieramy next a następnie kończymy naciskając przycisk Finish 7. Tworzymy plik struktury cyfrowej, wybieramy menu New a następnie zaznaczamy Desing Files, Block Diagram/Schematic File. Naciskamy OK. 8. Zapisujemy plik z nazwą sugerowaną przez system 9. Należy teraz zaimportować listę nazw wyprowadzeń jest to plik, który znajduje się w materiałach pomocniczych, w pliku DE2_System_v1.5.zip. Należy rozpakować i odszukać plik \DE2_demonstrations\DE2_Default\DE2_Default.qsf. Wskazówki umieszczone są na następnej ilustracji

Wybrać Import Assigments Wskazać plik DE2_Default.qsf Upewnić się, że import zostały zakończony powinien pojawić się napis w oknie konsoli środowiska QUARTUS II 10. Na tym etapie można przystąpić do budowy procesora NIOS, która raczej przypomina składanie procesora z dostępnych komponentów. Wybrać menu Tools a następnie nacisnąć Qsys pojawi się nowe okno, w którym projektant tworzy procesor NIOSII

11. W małym oknie po lewej stronie o nazwie Component Library, w gałęzi Embedded Processors wybieramy Nios II Processor i klikamy przycisk znajdujący się poniżej +Add 12. Pojawi się okno parametryzacji modułu CPU, który został właśnie wybrany. Proszę zwrócić uwagę na zakładki, zwłaszcza na zakładkę Core Nios II, w której wybieramy wersję rdzenia CPU (zaznaczyć wybór Nios II/e) oraz wskazujemy pamięci, z którymi rdzeń CPU będzie współpracował. Jednakże pamięci te pojawią się dopiero po ich dodaniu do projektu procesora oraz skonfigurowaniu połączeń logicznych między wszystkimi modułami. Należy więc nastawić się na parametryzację iteracyjną. W niniejszym punkcie wybieramy jedynie Nios II/e i klikamy Finish 13. W małym oknie po lewej stronie o nazwie Component Library, w gałęzi Memories and Memory Interfaces wybieramy SDRAM Interfaces, SDRAM Control i klikamy przycisk znajdujący się poniżej +Add. Tutaj zmieniamy jedynie szerokość szyny danych z 32 bitów na 16 i zatwierdzamy przyciskiem Finish 14. Teraz postępując analogicznie, należy odszukać komponent JTAG UART i dodać do struktury 15. Dodać ostatni element jakim jest port PIO (Parallel I/O) 8-bitowy 16. Ustanowić połączenia logiczne między komponentami, na ten czas należy zaznaczyć wszystkie punkty gdzie krzyżują się ścieżki powiązań. Po zaznaczeniu (kropki, miejsca przecięcia powinny być czarne) należy wybrać z menu System, Assign Base Addresses służy to uporządkowaniu adresów komponentów. Liczba błędów powinna być teraz zredukowana do dwóch tak jak jest to pokazane na ilustracjach

Przez zaznaczeniem powiązań Po zaznaczeniu powiązań oraz uporządkowaniu adresów 17. Teraz należy powrócić do edycji i parametryzacji modułu CPU. Kliknąć na moduł nios2_qsys_0 oraz wskazać oraz wybrać pamięć SDRAM w zakładce Core Nios II

18. Po wskazaniu pamięci, z którymi współpracuje CPU powinny pozostać jedynie trzy ostrzeżenia. Aby je usunąć należy wykonać trzy czynności polegające na podwójnym kliknięciu w miejsca oznaczone na ilustracji czerwoną strzałką 19. Aktualizujemy adresy modułów tak jak w punkcie 16 a następnie w zakładce Generation naciskamy przycisk Generate. Po udanej kompilacji struktury procesora zamykamy okno główne narzędzia Qsys i przechodzimy do głównego okna projektu w środowisku Quartus. 20. Wprowadzić do schematu symbol procesora klikając dwukrotnie lewym przyciskiem myszy. Otworzy się okno biblioteki elementów. Wskazujemy na procesor i zatwierdzamy. Następnie na schemacie klikamy prawym przyciskiem myszy wskazując na procesor i wybieramy z menu kontekstowego Generate Pins For Symbol Ports. Aby sprawdzić poprawność projektu na tym etapie wybieramy z menu głownego Processing, Analyze Current File. Jeśli pojawi się błąd jak na ilustracji

Należy dodać plik opisujący procesor. Menu Project, Add/Remove Files In Project. Na ilustracji poniżej nazwa procesora jest px, tutaj należy wskazać pliki własne. 21. Jeśli sprawdzenie schematu zakończyło się bez błędów należy zmienić nazwy wyprowadzeń na takie, które występują w mapie wyprowadzeń, które została zaimportowana w punkcie 9 22. Dodanie układu PLL z dwoma zegarami 50MHz. Należy wprowadzić element z biblioteki o nazwie ALTPLL i ustawić jego parametry tak, by były one zgodne z poniższą ilustracją. Zegar C0: 50MHz, faza 0, zegar C1: 50MHz, faza -60. Następnie należy uruchomić pełną kompilację menu Procesing, Start Compilation 23. Po kompilacji włączyć zasilanie płytki i zaprogramować ją. Wybrać z menu Tools, Programmer a następnie nacisnąć przycisk START 24. W tej chwili rozpoczyna się etap programowania procesora NIOSII, którego struktura cyfrowa została wgrana do zestawu DE2. Proszę uruchomić z menu Tools, Nios II Software Build Tools For Eclipse. Bezwzględnie należy wskazać swój folder, czyli workspace. W przeciwnym razie środowisko otworzy strukturę projektu innej grupy laboratoryjnej

25. Po uruchomieniu nowego środowiska do pisania kodu w języku C i pisania programów dla procesora NIOSII należy utworzyć nowy projekt, menu File, New, Nios II Application and BSP form Template 26. Po otwarciu okna dialogowego należy podać ścieżkę do pliku opisu procesora, nazwę właśnie tworzonego projektu oraz wybrać template projektu (wzorzec). Ilustruje to rysunek na następnej stronie

Proszę pamiętać o wskazaniu swojego procesora, może on mieć nazwę różną od px 27. Teraz można przystąpić do kompilacji wzorca (później można ten kod zmienić na swój). Prawym przyskiem myszy wskazać na folder projektu w oknie drzewa projektu. Następnie z menu kontekstowego wybrać Run As, Nios II Hardware

28. Przed finałowym połączeniem z procesorem NIOSII znajdującym się w układzie CYCLONEII na płytce DE2 może wystąpić potrzeba wskazania urzadzenia ByteBlaster. Sprowadza się do naciśnięcia REFRESH CONNCECTION 29. Po połączeniu środowiska NiosII Build Tools oraz załadowaniu kodu programu, w konsoli systemowej powinien pojawić się napis wysłany z procesora NIOSII/e do komputera PC: Hello from Nios II Celem ćwiczenia jest utrwalenie postępowania wg instrukcji oraz wstępna zmiana kodu programu procesora.

(2) Projekt procesora NIOSII w strukturze programowalnego układu logicznego CYCLONEII EP2C35F672C6 podłączenie i obsługa wyświetlacza LCD. Laboratorium Mikroprocesorowych Układów Sterowania instrukcja wspomagająca realizację projektu

1. Otworzyć projekt. Nacisnąć prawy przycisk myszy i wybrać Open Design File. Wybrać plik z rozszerzeniem qsys. 2. Po otwarciu głównego okna narzędzia Q-SYS zawierającego projekt struktury procesora należy dodać moduł Altera Avalon LCD 16207. 3. W kolumnie Connection zaznaczyć punkty przecięcia się powiązań logicznych. 4. Uwzględniając uwagę programu należy wyeksportować opis LCD_16207_0-external poprzez dwukrotne kliknięcie w kolumnie export. 5. Uaktualnić adresy modułów: menu System, Assign Base Addresses 6. Wygenerować strukturę procesora 7. Przejść do scheamtu głownego projektu w środowsku Quartus a następnie kliknąć prawym przyciskiem myszy i z menu wybrać Update Symbol or Block a nstępnie potwierdzić, że zmiana dotyczy jedynie zaznaczonych elementów

8. Po zmianie wyglądu symbolu procesora należy dodać wyprowadzenia wyświetlacza LCD 9. Aby wyświetlacz działał należy do schematu głównej struktury dodać dwa pojedyncze wyprowadzenia typu output. Jedno o nazwie LCD_ON, drugie o nazwie LCD_BLON. Nazwy sugerują, że piny te odpowiadają za zasilanie i opcjonalne podświetlenie wyświetlacza. Oba piny połączyć ze stanem wysokim, czyli elementem o nzawie VCC. 10. Aby uniknąć błędu kompilacji należy na nowo nadać oznaczenie porządkujące dla procesora, na przykład procesor1 zamiast inst 11. Aby upewnić się, że zostały wykorzystane odpowiednie wyprowadzenia można właczyć lub/i wyłączyć znaczniki lokalizacji zgodnie z poniższą ilustracją 12. Po kompilacji zakończonej bez błędów nową strukturę cyfrową należy wgrać do układu FPGA a następnie otworzyć środowisko do tworzenia kodu dla procesora, czyli NiosII EDS. 13. Sprawdzić tzw. workspace i ewentualnie wybrać swój katalog roboczy. 14. Usunąć istniejące projekty w swoim obszarze roboczym. Po wybraniu DELETE zaznaczyć usuwanie z dysku.

15. Postępując tak jak w poprzednim ćwiczeniu dodać dwa projekty o nazwie drugi oraz pomoc. Pierwszy z nich utworzyć ze wzorca Hello Word drugi z wzorca Board Diagnostic. 16. W drugim projekcie odszukać fragment kodu programu związany z obsługą wyświetlacza LCD. Proszę przeanalizować ten fragment i ewentualnie go skopiować do projektu drugi. Następnie należy doprowadzić do tego, by kod programu był następujący: #include <stdio.h> #include "system.h" FILE *lcd; int main() { printf("hello from Nios II!\n"); lcd = fopen(lcd_16207_0_name, "w"); if (lcd!= NULL ) { fprintf(lcd, "\nthis is the LCD Display.\n"); fprintf(lcd, "123456789.\n"); printf("lcd is opened!\n"); } else { printf("error!\n"); } return 0; } 17. Uruchomić wgrywanie programu Rus As Nios II Hardware. Może pojawić się okno konfiguracji połączenia tak jak poniżej. Należy zignorować i pominąć sprawdzenie ID (krok 1 oraz 2 na ilustracji) oraz odświeżyć połączenie (krok trzeci na ilustracji w dalszej części instrukcji).

18. Po połączeniu oraz uruchomieniu programu, w tym wyświetlacza LCD należy przeanalizować kod i utrwalić sobie zasady obsługi tego modułu. Proszę przypomnieć sobie funkcje sprintf, fprintf oraz zasady formatowania tekstów zawierających wartości całkowite, zmiennoprzecinkowe albo heksadecymalne.

(3) Projekt procesora NIOSII w strukturze programowalnego układu logicznego CYCLONEII EP2C35F672C6 podłączenie i obsługa wyświetlacza siedmiosegmentowego. Laboratorium Mikroprocesorowych Układów Sterowania instrukcja wspomagająca realizację projektu

Zakłada się, że podstawowe czynności związane z narzędziem Q-SYS oraz środowiskami QUARTUS oraz NIOSII EDS są już opanowane. Dlatego też niniejsza instrukcja nie będzie miała charakteru szczegółowego przewodnika określającego czynności krok po kroku. W razie problemów należy przeczytać i zastosować się do sugestii zawartych na początku instrukcji w poprzednim ćwiczeniu. Plan działania jest następujący: 1. Dodać 8 portów wyjściowych 7-bitowych o wartości wstępnej 0x7f. Można wprowadzić i sparametryzować jeden port a następnie zduplikować go oszczędzi to czasu przy projektowaniu struktury procesora. 2. Wygenerować procesor i zaktualizować jego wygląd w projekcie w środowisku QUARTUS a następnie wprowadzić piny typu OUTPUT o nazwach HEX0,, HEX7. 3. Zatwierdzić zmiany po czym skompilować strukturę a następnie wgrać do układu FPGA. 4. Nie trzeba tworzyć nowego projektu środowisku NIOSII EDS, można pracować na jednym ale trzeba pamiętać o aktualizacji biblioteki BSP patrz ilustracja poniżej. 5. Dodać do programu dla procesora NIOSII/e kod umożliwiający obsługę dołączonych 8 wyświetlaczy siedmiosegmentowych. Wartości potrzebne do transkodowania formatu binarnego na kod wyświetlacza można umieścić w tablicy. Wartość, która ma być wizualizowana adresuje odpowiedni element poniższej tablicy const unsigned char segments [16] = { 0x81,0xCF,0x92,0x86,0xCC,0xA4,0xA0,0x8F,0x80,0x84,/* 0 9 */ 0x88, 0xE0, 0xF2, 0xC2, 0xB0, 0xB8 };/* a f */ 6. Dołączyć następujące biblioteki lub załączyć brakujące. #include "alt_types.h" #include <stdio.h> #include <unistd.h> #include "system.h" #include "sys/alt_irq.h" #include "altera_avalon_pio_regs.h"

7. Poniżej podano fragment kodu program realizującego wyświetlenie liczb od 0 do 7. Proszę zwrócić uwagę na sposób zapisu do portu równoległego typu output wykorzystujący wskaźnik oraz STAŁE zdefiniowane w pliku system.h znajdującym się w bibliotece BSP. *(int*)hex_0_base=segments[0]; *(int*)hex_1_base=segments[1]; *(int*)hex_2_base=segments[2]; *(int*)hex_3_base=segments[3]; *(int*)hex_4_base=segments[4]; *(int*)hex_5_base=segments[5]; *(int*)hex_6_base=segments[6]; *(int*)hex_7_base=segments[7]; 8. Napisać i zastosować funkcję służącą do wyświetlenia wartości 32-bitowej w kodzie szesnastkowym na 8 wyświetlaczach siedmiosegmentowych.

(4) Projekt procesora NIOSII w strukturze programowalnego układu logicznego CYCLONEII EP2C35F672C6 podłączenie i obsługa przerwania zewnętrznego. Laboratorium Mikroprocesorowych Układów Sterowania instrukcja wspomagająca realizację projektu

Zakłada się, że podstawowe czynności związane z narzędziem Q-SYS oraz środowiskami QUARTUS oraz NIOSII EDS są już opanowane. Dlatego też niniejsza instrukcja nie będzie miała charakteru szczegółowego przewodnika określającego czynności krok po kroku. Plan działania: 1. Dodać jednobitowe wejście do procesora o nazwie BUTTON_PIO. Skonfigurować je tak jak na rysunku poniżej. 2. Wygenerować procesor. Zaktualizować symbol procesora na schemacie. Podłączyć wejście jednobitowe o nazwie KEY[2] do wejścia BUTTON_PIO. Po poprawnej kompilacji wgrać strukturę do układu FPGA. 3. W środowisku NIOSII EDS utworzyć projekt tymczasowy, z którego przekopiować fragmenty kodu związanego z obsługą przerwania zewnętrznego podłączonego do wyprowadzenia BUTTON_PIO. Następnie zaktualizować bibliotekę BSP. Kod programu, w którym wykorzystany jest LCD, wskaźniki siedmiosegmentowe oraz pojedyncze przerwanie zewnętrzne reagujące na zmianę stanu na pinie, może wyglądać następująco:

#include "alt_types.h" #include <stdio.h> #include <unistd.h> #include "system.h" #include "sys/alt_irq.h" #include "altera_avalon_pio_regs.h" FILE *lcd; const unsigned char segments [16] = {0x81,0xCF,0x92,0x86,0xCC,0xA4,0xA0,0x8F,0x80,0x84, /* 0 9 */ 0x88, 0xE0, 0xF2, 0xC2, 0xB0, 0xB8 }; /* a f */ #ifdef BUTTON_PIO_BASE /* A variable to hold the value of the button pio edge capture register. */ volatile int edge_capture,x=0; #ifdef ALT_ENHANCED_INTERRUPT_API_PRESENT static void handle_button_interrupts(void* context) #else static void handle_button_interrupts(void* context, alt_u32 id) #endif { /* Cast context to edge_capture's type. It is important that this be * declared volatile to avoid unwanted compiler optimization.*/ volatile int* edge_capture_ptr = (volatile int*) context; /* Store the value in the Button's edge capture register in *context. */ *edge_capture_ptr = IORD_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_BASE); /* Reset the Button's edge capture register. */ IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_BASE, 0); /* * Read the PIO to delay ISR exit. This is done to prevent a spurious * interrupt in systems with high processor > pio latency and fast * interrupts. */ IORD_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_BASE); //funkcja uzytkownika wykonywana w przerwaniu #ifdef LEDG_BASE *(int *)LEDG_BASE=x++; #endif } /* Initialize the button_pio. */ static void init_button_pio() { /* Recast the edge_capture pointer to match the alt_irq_register() function * prototype. */ void* edge_capture_ptr = (void*) &edge_capture; /* Enable all 4 button interrupts. */ IOWR_ALTERA_AVALON_PIO_IRQ_MASK(BUTTON_PIO_BASE, 0xf); /* Reset the edge capture register. */ IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_BASE, 0x0); /* Register the interrupt handler. */ #ifdef ALT_ENHANCED_INTERRUPT_API_PRESENT alt_ic_isr_register(button_pio_irq_interrupt_controller_id,button_pio_irq,handle_button_interrupts, edge_capture_ptr, 0x0); #else alt_irq_register( BUTTON_PIO_IRQ, edge_capture_ptr,handle_button_interrupts); #endif } #endif /* BUTTON_PIO_BASE */ int main() { printf("hello from Nios II!\n"); lcd = fopen(lcd_16207_0_name, "w"); if (lcd!= NULL ) { fprintf(lcd, "\nthis is the LCD Display.\n");

fprintf(lcd, "123456789.\n"); printf("lcd is opened!\n"); } else { printf("error!\n"); } *(int*)hex_0_base=segments[0]; *(int*)hex_1_base=segments[1]; *(int*)hex_2_base=segments[2]; *(int*)hex_3_base=segments[3]; *(int*)hex_4_base=segments[4]; *(int*)hex_5_base=segments[5]; *(int*)hex_6_base=segments[6]; *(int*)hex_7_base=segments[7]; #ifdef BUTTON_PIO_BASE init_button_pio(); #endif } return 0; Zadania te kończą etap ćwiczeń. Na następnych spotkaniach realizowane będą zadania projektowe.

1. Zaprojektować następujący system mikroprocesorowy oraz napisać funkcje odczytu i zapisu: a) niezależne trzy szyny systemowe, b) szyna danych dwukierunkowa 8-bitowa, c) szyna adresów 4-bitowa, d) sygnały sterujące OE, WR, RD, e) adresacja zgodna z tabelą poniżej. adres dziesiętnie zapis odczyt 0 LEDR[7..0] SW[7..0] 1 LEDR[15..8] SW[15..8] 2 LEDR[17..16] SW[17..16] 3 LEDG[7..0] KEY[2] 4 LEDG[8] KEY[3] 5 HEX0[6..0] HEX0[6..0] 6 HEX1[6..0] HEX1[6..0] 7 HEX2[6..0] HEX2[6..0] 8 HEX3[6..0] HEX3[6..0] 9 HEX4[6..0] HEX4[6..0] 10 HEX5[6..0] HEX5[6..0] 11 HEX6[6..0] HEX6[6..0] 12 HEX7[6..0] HEX7[6..0] 13 --- --- 14 --- --- 15 --- ---

2. Zaprojektować następujący system mikroprocesorowy oraz napisać funkcje odczytu i zapisu: a) niezależne trzy szyny systemowe, b) szyna danych dwukierunkowa 8-bitowa, c) szyna adresów 4-bitowa, d) sygnały sterujące OE, WR, RD, e) adresacja zgodna z tabelą poniżej. adres dziesiętnie zapis odczyt 0 HEX0[6..0] HEX0[6..0] 1 HEX1[6..0] HEX1[6..0] 2 HEX2[6..0] HEX2[6..0] 3 HEX3[6..0] HEX3[6..0] 4 HEX4[6..0] HEX4[6..0] 5 HEX5[6..0] HEX5[6..0] 6 HEX6[6..0] HEX6[6..0] 7 HEX7[6..0] HEX7[6..0] 8 LEDG[0] SW[0] 9 LEDG[1] SW[1] 10 LEDG[2] SW[2] 11 LEDG[3] SW[3] 12 LEDG[4] SW[0] 13 LEDG[5] SW[5] 14 LEDG[6] SW[6] 15 LEDG[7] SW[7]

3. Zaprojektować następujący system mikroprocesorowy oraz napisać funkcje odczytu i zapisu: a) niezależne trzy szyny systemowe, b) szyna danych dwukierunkowa 8-bitowa, c) szyna adresów 4-bitowa, d) sygnały sterujące OE, WR, RD, e) adresacja zgodna z tabelą poniżej. adres dziesiętnie zapis odczyt 0 HEX0[6..0] HEX0[6..0] 1 HEX1[6..0] HEX1[6..0] 2 HEX2[6..0] HEX2[6..0] 3 HEX3[6..0] HEX3[6..0] 4 HEX4[6..0] HEX4[6..0] 5 HEX5[6..0] HEX5[6..0] 6 HEX6[6..0] HEX6[6..0] 7 HEX7[6..0] HEX7[6..0] 8 LEDR[1..0] SW[1..0] 9 LEDR[3..2] SW[3..2] 10 LEDR[5..4] SW[5..4] 11 LEDR[7..6] SW[7..6] 12 LEDR[9..8] SW[9..8] 13 LEDR[11..9] SW[11..9] 14 LEDR[13..12] SW[13..12] 15 LEDR[15..14] SW[15..14]

4. Zaprojektować następujący system mikroprocesorowy oraz napisać funkcje zapisu: a) szyna danych tylko do zapisu 8-bitowa, b) multipleksowana szyna dane/adres, c) sygnały WR, ALE, d) adresacja niepełna zgodna z tabelą poniżej. adres dziesiętnie zapis 0 LEDR[7..0] 1 LEDR[15..8] 2 LEDR[17..16] 3 LEDG[7..0] 4 LEDG[8] 5 HEX0[6..0] 6 HEX1[6..0] 7 HEX2[6..0]

5. Zaprojektować następujący system mikroprocesorowy oraz napisać funkcje zapisu: a) szyna danych tylko do zapisu 16-bitowa, b) multipleksowana szyna dane/adres, c) sygnały WR, ALE, d) adresacja niepełna zgodna z tabelą poniżej. adres dziesiętnie zapis 0 LEDR[15..0] 1 HEX1[6..0], HEX0[6..0] 2 HEX3[6..0], HEX2[6..0] 3 HEX5[6..0], HEX4[6..0] 4 HEX7[6..0], HEX6[6..0]

6. Zaprojektować następujący system mikroprocesorowy oraz napisać funkcje odczytu: a) szyna danych tylko do odczytu 8-bitowa, b) multipleksowana szyna dane/adres, c) sygnały WR, ALE, d) adresacja niepełna zgodna z tabelą poniżej. adres dziesiętnie odczyt 0 SW[7..0] 1 SW[15..8] 2 KEY[1..0] 3 KEY[3..2]

7. Zaprojektować następujący system mikroprocesorowy oraz napisać funkcje odczytu i zapisu: a) niezależne trzy szyny systemowe, b) szyna danych dwukierunkowa 8-bitowa, c) szyna adresów 4-bitowa, d) sygnały sterujące OE, WR, RD, e) adresacja zgodna z tabelą poniżej. adres dziesiętnie zapis odczyt 0 HEX0[6..0] HEX0[6..0] 1 HEX1[6..0] HEX1[6..0] 2 HEX2[6..0] HEX2[6..0] 3 HEX3[6..0] HEX3[6..0] 4 HEX4[6..0] HEX4[6..0] 5 HEX5[6..0] HEX5[6..0] 6 HEX6[6..0] HEX6[6..0] 7 HEX7[6..0] HEX7[6..0] 8 LEDR[7..0] SW[7..0] 9 LEDR[15..8] SW[15..8] 10 LEDR[17..16] SW[17..16] 11 LEDG[7..0] KEY[2] 12 LEDG[8] KEY[3]

8. Zaprojektować następujący system mikroprocesorowy oraz napisać funkcje odczytu i zapisu: a) niezależne trzy szyny systemowe, b) szyna danych dwukierunkowa 4-bitowa, c) szyna adresów 2-bitowa, d) sygnały sterujące OE, WR, RD, e) adresacja zgodna z tabelą poniżej. adres dziesiętnie zapis odczyt 0 LEDG[3..0] SW[3..0] 1 LEDG[7..4] SW[7..4] 2 LEDR[3..0] SW[11..8] 3 LEDR[7..0]] SW[15..12]

9. Zaprojektować następujący system mikroprocesorowy oraz napisać funkcje odczytu i zapisu: a) niezależne trzy szyny systemowe, b) szyna danych dwukierunkowa 16-bitowa, c) szyna adresów 2-bitowa, d) sygnały sterujące OE, WR, RD, e) adresacja zgodna z tabelą poniżej. adres dziesiętnie zapis odczyt 0 LEDR[15..0] SW[15..0] 1 LEDR[17..16] KEY[3..0] 2 HEX1[6..0],HEX0[6..0] --- 3 HEX3[6..0],HEX2[6..0] ---

10. Zaprojektować następujący system mikroprocesorowy oraz napisać funkcje zapisu: a) tylko szyna danych do zapisu 7-bitowa, b) 8 niezależnych sygnałów aktywacji zapisu, po jednym na każdy wskaźnik HEX, c) 1 globalne wyjście aktywujące świecenie HEX, d) wykorzystać bloki DFFE.