Projektowanie z użyciem softprocesora picoblaze w układach programowalnych firmy Xilinx CEL ĆWICZENIA Celem ćwiczenia jest utrwalenie wiedzy dotyczącej budowy, działania i własności programowalnych układów FPGA firmy Xilinx, a w szczególności nauczenie projektowania układów cyfrowych z użyciem procesora picoblaze [p1,..,p5]. PROGRAM ĆWICZENIA Zadanie polega na zaprojektowaniu mikrosystemu sterującego tekstowym wyświetlaczem LCD. Projekt będzie zrealizowany z użyciem płytki testowej Spartan-3 Starter Board (Digilent), wyposażonej w układ programowalny Spartan-3 (XC3S700A lub XC3S700AN) i generator kwarcowy o częstotliwości 50 MHz. Do przygotowania projektu zastosowany będzie system projektowy ISE WebPack v.10.1 (Xilinx) oraz kompilator assemblera dla procesora picoblaze. W pierwszym podejściu należy wykonać projekt mikrosystemu z użyciem wzorców umieszczonych w katalogu C:\picoBlaze\wzorce (wg szczegółowej instrukcji postępowania). W następnych podejściach wystąpi potrzeba modyfikacji wzorcowych opisów stosownie do zadań stawianych indywidualnie każdemu studentowi. REALIZACJA ZADANIA 1. Wzorcowy projekt systemu wyświetlania danych Projekt wzorcowy powstał na bazie układu dalmierza laserowego przeznaczonego do pomiaru odległości z dokładnością centymetrową. Zadanie projektu wzorcowego zostało ograniczone do wyświetlania danych na wyświetlaczu LCD z użyciem mikrosystemu wbudowanego w układ FPGA składającego się z procesora picoblaze, odpowiednio przygotowanej zawartości pamięci programu oraz generatora cyfr do wyświetlenia. Utworzyć kopię katalogu C:\picoBlaze\wzorce (od tej chwili wszystkie działania będą dotyczyć plików umieszczonych w kopii) Uruchomić system ISE: w tym celu użyć ikony ISE na pulpicie systemu Windows lub wybrać Start Programy Xilinx ISE Design Suite 10.1 ISE Project Nawigator W Project Navigator wybrać kolejno: File Open Project, co spowoduje otwarcie okna
W katalogu ISE_projekt wybrać distance.ise i kliknąć Otwórz W oknie Sources znajduje się lista plików źródłowych wchodzących w skład projektu. Podwójne kliknięcie top.sch otwiera schemat będący opisem projektu na najwyższym poziomie hierarchii. Blok Counter_32 wraz z blokiem bin_bcd służy do generacji liczb w pięciocyfrowym kodzie BCD, natomiast blok LCD_CTRL służy sterowania wyświetlaniem danych. Danymi są w tym przypadku pięciocyfrowe liczby w kodzie BCD oraz numer 2
nastawy SW(7:0) ustalany z użyciem przełączników umieszczonych na płytce uruchomieniowej. Całość jest taktowana zegarem clk o częstotliwości 50 MHz. Przyjrzeć się opisom źródłowym każdego z bloków kolejno od lewej. Counter_32 oraz bin_bcd są opisane w języku VHLD i jako elementy pomocnicze, służące do generowania informacji testującej działanie bloku LCD_CTRL - nie będą omawiane. Blok LCD_CTRL został opisany z użyciem schematu. Schemat zawiera blok procesora picoblaze kcpsm3, blok pamięci programu distance, oraz dodatkowe proste bloki pomocnicze opisane w języku VHDL odpowiadające za kontakt procesora z otoczeniem. Zadanie polega na przygotowaniu opisu pamięci programu dla procesora w języku VHDL. W tym celu należy pozostawić środowisko projektowe Xilinxa i uruchomić program pblazide.exe znajdujący się w katalogu picoblaze_software. Następnie otworzyć plik distance.psm zawierający opis programu w języku assemblera. W oknie programu pojawi się opis źródłowy programu oraz możliwość jego edycji. 3
W tym środowisku można prowadzić symulację, jednak przed jej rozpoczęciem należy wybrać właściwy typ procesora oraz wykonać import danych z pliku distance.psm do pliku o innej nazwie, który będzie używany w symulacji. Szczegółowy opis obsługi symulatora można znaleźć, np. w [p4]. Można też zrezygnować z symulacji jak i z programu pblazide.exe. Wtedy jest potrzebny dowolny edytor tekstowy do edycji kodu programu, np. notatnik systemu Windows oraz plik wsadowy compile.bat do uruchamiania kompilacji. Plik compile.bat, znajduje się w tym samym katalogu co pblazide.exe. Jego uruchomienie skutkuje wykonaniem kompilacji projektu oraz wyświetleniem raportu w oknie konsoli. 4
Jeśli raport informuje o utworzeniu pliku distance.vhd, to oznacza, iż właśnie utworzyliśmy nowy program do naszego systemu wyświetlania. Należy ten plik przekopiować do katalogu ISE_projekt i uruchomić kompilację w środowisku ISE Xilinxa. 5
2. Programowanie układu FPGA Włączyć zasilanie płytki z układem FPGA. W oknie Processes for: rozwinąć podmenu Configure Target Device i dwukrotnie kliknąć Manage Configuration Project (impact) W automatycznie otwartym oknie programu impact kliknąć Finish Wybrać plik top.bit i kliknąć Open Kliknąć kolejno Bypass i OK Kliknąć prawym klawiszem myszki na symbolu układu FPGA i wybrać opcję Program i układ FPGA zostanie zaprogramowany Poprawność przygotowanego projektu i prawidłowe zaprogramowanie układu FPGA można stwierdzić obserwując ekran LCD. Na początku wyświetli się czołówka 6
A po kilku sekundach właściwe zobrazowanie Liczby wyświetlane na wyświetlaczu powinny się zmieniać zgodnie z szybkością, która została ustalona w opisie bloku Counter_32. Ponadto ustawienie przełączników SW(0:3) decyduje o wyświetlanym numerze trybu MODE. 3. Modyfikacja projektu Do każdego zadania projektowego studenci przygotowują rozwiązania w postaci schematu ideowego układu lub pliku źródłowego w języku VHDL oraz kodu programu w języku asemblera. Rozwiązania powinny być umieszczone w protokole, który jest podstawą do wykonania sprawozdania. OPRACOWANIE WYNIKÓW 1. Sprawozdanie z ćwiczenia laboratoryjnego powinno zawierać zwięzłe opisy postawionych zadań projektowych wraz z rozwiązaniami, a w szczególności z opisem w językach asemblera i VHDL oraz schematami zaprojektowanych układów. 2. Do sprawozdania należy dołączyć wydruki z wynikami przeprowadzonych symulacji (ew. wybranych fragmentów wyników symulacji, o ile kompletna symulacja nie jest możliwa na przykład ze względu na zbyt długi czas trwania). ZALICZENIE ĆWICZENIA 1. Zaliczenie kolokwium wstępnego oraz poprawne wykonanie zadań laboratoryjnych postawionych przez osobę prowadzącą ćwiczenie. 2. Złożenie sprawozdania, zawierającego zwięzły opis wykonanych zadań, wnioski i poprawne odpowiedzi na postawione pytania. 7
PRZYKŁADOWE ZADANIA PROJEKTOWE We wszystkich zadaniach do realizacji projektowanych układów należy zastosować blok procesora picoblaze kcpsm3. 1. Zmienić wygląd czołówki, tzn. zobrazowania wyświetlającego się na ekranie przez pierwsze pięć sekund od momentu włączenia urządzenia. 2. Umożliwić wyświetlanie czołówki zawsze dla określonego ustawienia przełączników. 3. Dodać funkcję przewijania ekranu w płaszczyźnie pionowej/poziomej. 4. Dodanie kursora i sterowanie jego położeniem. 5. Różne odmiany gier zręcznościowych i logicznych. ZAGADNIENIA DO OPRACOWANIA PRZED PRZYSTĄPIENIEM DO ĆWICZENIA 1. Proces projektowania układów cyfrowych z użyciem programowalnych matryc bramkowych FPGA [p1, u1, u2]. 2. Architektura, zasoby logiczne i parametry układów serii Spartan (Xilinx) [p3]. 3. Zasady stosowania mikroprocesora picoblaze [p4, p5]. 4. Zapoznanie się z opisem płytki testowej - Instrukcja obsługi systemu WebPack oraz zestawu z układem XC3S700. LITERATURA podstawowa: 1. J. Kalisz, Podstawy elektroniki cyfrowej, 5 wydanie, WKŁ, 2008. 2. J. Kalisz, Język VHDL w praktyce, WKŁ, 2002. 3. Spartan-3 FPGA Family (http://www.xilinx.com/support/documentation/data_sheets/ds099.pdf). 4. M. Nowakowski, PicoBlaze Mikroprocesor w FPGA, BTC, 2010. 5. PicoBlaze 8-bit Embedded Microcontroller. User Guide for Spartan-3, Virtex-II, and Virtex-II Pro FPGAs. UG129 (v1.1.2) June 24, 2008. www.xilinx.com uzupełniająca: 1. J. Pasierbiński, P. Zbysiński, Układy programowalne w praktyce, WKŁ, 2002. 2. J. Pasierbiński, P. Zbysiński, Układy programowalne: pierwsze kroki, BTC, 2004. 8