Laboratorium przedmiotu Podstawy Techniki Cyfrowej ćw.1: Układy kombinacyjne Wprowadzenie: Wszelkie realizacje układowe projektów w ramach laboratorium z przedmiotu Podstawy Techniki Cyfrowej będą tworzone w oparciu o matryce FPGA (Field Programmable Gate Array). Matryca FPGA to rodzaj programowalnego układu logicznego, który składa się z rozmieszczonych matrycowo bloków logicznych (CLB). W trakcie syntezy układu poszczególne bloki są ze sobą łączone za pośrednictwem linii traktów połączeniowych (Routing Channels) oraz programowalnych matryc kluczy połączeniowych umieszczonych w miejscu krzyŝowania się traktów poziomych i pionowych. Po zaprogramowaniu matrycy FPGA uzyskujemy fizycznie działający rzeczywisty układ (nie jest to symulacja). Obecnie moŝna zlecić stworzenie układu scalonego działającego identycznie jak zaprogramowana matryca (Hard-Copy). W ramach laboratorium uŝywana będzie płyta uruchomieniowa Spartan 3A firmy Xilinx oparta o matrycę FPGA Spartan XC3S700A. Środowiskiem programistycznym uŝywanym podczas laboratorium będzie ISE firmy Xilinx w wersji 10.1. ISE jest środowiskiem, które zapewnia dostęp do wszystkich elementów niezbędnych podczas tworzenia i implementacji projektu w oparciu o matryce FPGA. Głównym elementem środowiska jest Project Navigator, czyli aplikacja z poziomu której moŝemy kontrolować przebieg procesu projektowania oraz uruchamiać inne aplikacje środowiska ISE. Wygląd okna aplikacji Project Navigator jest przedstawiony na rysunku 1. A B C D okno plików źródłowych (Sources) przedstawione wszystkie elementy projektu w formie hierarchicznej; okno procesów (Processes) przedstawione dostępne operacje dla zaznaczonego elementu w części A; główne okno robocze; okno konsoli (Console) wyświetlane informacje, ostrzeŝenia, ewentualne błędy itp.; Część plików będzie dostępna po zmianie dokonanej w oknie A (Implementation / Simulation). Po wybraniu pliku w oknie A uruchomienie wybranego dla niego procesu w oknie B następuje poprzez dwukrotne kliknięcie nazwy procesu. Część procesów wymaga wstępnego ich skonfigurowania (po ich uruchomieniu dostępne będą opcje konfiguracji). Konfiguracja płyty uruchomieniowej: Nie wdając się w szczegóły na temat trybów pracy płyty zawsze przed jej załączeniem naleŝy pamiętać aby sprawdzić konfigurację, tzn. ustawić zworki tak jak na rysunku 2.
rys.1. Wygląd okna aplikacji Project Navigator. Synteza układu opisanego za pomocą schematu: 1) Stworzenie nowego projektu. File->New Project... Określenie nazwy projektu i lokacji na dysku; Wybór Top-level Source type jako Schematic; 2) Wybór cech matrycy oraz sposobów syntezy i symulacji; Family: Spartan 3A; Device: XC3S700A; Package: FG484; Synthesis Tool: XST; Simulator: ISE Simulator; Preffered Language: Verilog; 3) Zakończenie tworzenia projektu; Next -> Next-> Finish; 4) Dodanie pliku typu Schematic; Project -> New Source -> Schematic; Nadanie nazwy, zaznaczenie Add to Project;
rys.2. Defaultowe ustawienie zworek płyty uruchomieniowej Xilinx Spartan-3A. 5) Edycja schematu; Podczas edycji naleŝy umieszczać na schemacie symbole elementów (np. bramek logicznych) oraz połączenia między nimi. Dostępne typy elementów zakładka Categories, dostępne elementy Symbols. Do rysowania połączeń naleŝy uŝywać opcji Add -> Wire, do nadawania sygnałom nazw opcji Add -> Net Name, natomiast do określenia wejścia lub wyjścia układu słuŝy opcja Add -> I/O Marker. Dostęp do opcji dowolnego elementu schematu następuje poprzez dwukrotne kliknięcie elementu. 6) Określenie przyporządkowania sygnałów WE/WY ze schematu do odpowiednich pinów matrycy; Tworzony jest plik ograniczeń (rozszerzenie.ucf) poprzez Project -> New Source -> Implementation Constraint File; Nadanie nazwy, zaznaczenie Add to Project; Wybór pliku w oknie A; Wybór User Constraints -> Edit Constraints File (Text) w oknie B; Edycja pliku w oknie roboczym wg. Zasady (proszę się starać stosować polsko-brzmiące nazwy połączeń w celu wykluczenia pomyłek mogących powstać przez uŝycie zarezerwowanej nazwy): NET Net Name LOC = Nrpin ;
Dla przykładu z rysunku 3 plik ograniczeń moŝe wyglądać następująco: NET We1 LOC = U10 ; NET We2 LOC = V8 ; NET Wy1 LOC = R20 ; rys.3. Przykładowy projekt. Jako fizyczne elementy wyjściowe zaleca się dla celów laboratoryjnych wybierać dostępne na płycie uruchomieniowej diody LED, natomiast jako elementy wejściowe przełączniki lub klawisze. Nr. pinu matrycy do którego kaŝda dioda, klawisz czy przełącznik są podłączone opisane są zarówno bezpośrednio na płytce drukowanej jak i w przewodniku uŝytkownika płyty uruchomieniowej SPARTAN-3A (patrz literatura). 6) Kompilacja Kompilacja całego projektu jest moŝliwa po zaznaczeniu w oknie A pliku (modułu) oznaczonego jako główny (Top Module) oraz uruchomienia w oknie B procesu - Generate Programming File. Plik oznaczony jako Top Module ma do nazwy dołączony rysunek trzech małych kwadracików (patrz rys. 1, okno A). MoŜliwe jest zagnieŝdŝanie modułów. W tym celu po stworzeniu modułu 1 i jego zaznaczeniu w oknie A moŝna uruchomić w oknie B: Processes -> Design Utilities -> Create Schematic Symbol. Następnie po stworzeniu modułu 2 (patrz Synteza Układu, punkt 4) i ustawieniu go jako Top Module moŝna w nim wykorzystać
schemat z modułu 1 poprzez symbol dostępny z Symbols -> Categories (tam gdzie symbole bramek i innych elementów). NaleŜy pamiętać, Ŝe plik ograniczeń *.ucf odnosi się tylko do modułu głównego (Top Module). Wyjścia i wejścia wszystkich podległych modułów traktować naleŝy jako sygnały lokalne w obrębie modułu głównego. 7) Symulacja projektu zgodnie z informacjami zawartymi w części SYMULACJA PROJEKTU; 8) Programowanie matrycy; Do zaprogramowania matrycy uŝywana będzie aplikacja impact (po wygenerowaniu pliku wynikowego syntezy naleŝy uruchomić proces Configure Target Device / Manage Configuration Project impact. W dostępnych łańcuchu JTAG zobaczymy połączone 2 elementy: matrycę XC3S700A oraz pamięć PROM. Programować podczas laboratorium zaleca się tylko matrycę (dla niej naleŝy wskazać plik z rozszerzeniem.bit) natomiast dla pamięci PROM nie naleŝy wskazywać Ŝadnego pliku. Symulacja projektu: W celu zasymulowania układu konieczne jest wygenerowanie wektora pobudzeń (plik z rozszerzeniem.tbw) 1) Dodanie pliku typu Test Bench Waveform; Project -> New Source -> Test Bench Waveform; nadanie nazwy (inna, niŝ nazwa pliku typu Schematic), zaznaczenie Add to Project; W oknie Initialize Timing naleŝy wybrać typ układu (Clock Information) oraz uzupełnić odpowiednie parametry czasowe; Plik wektora pobudzeń.tbw odnosi się zawsze do modułu głównego projektu (Top Module). Klikając w przebiegi wejściowe (niebieskie pola) naleŝy ustalić ich przebieg oraz określić czas trwania symulacji; 2) Wywołanie symulatora ISE Simulator; W oknie A nawigatora projektów naleŝy zmienić Implementation na Behavioral Simulation; Zaznaczyć plik *.tbw; Uruchomić proces Xilinx ISE Simulator -> Simulate Behavioral Model 3) Simulation -> Restart -> Run All; (moŝemy teŝ skracać czas symulacji I uruchamiać Simulation -> Restart -> Run for Specified Time. 4) Simulation -> End simulation
Przebieg ćwiczenia: Celem ćwiczenia jest wprowadzenie do programowania matryc FPGA poprzez realizację wybranych układów kombinacyjnych z wykorzystaniem narzędzi ISE firmy Xilinx oraz Modelsim firmy Mentor Graphics. Przygotowanie do laboratorium: praktyczna znajomość sposobów projektowania układów kombinacyjnych; umiejętność optymalizacji funkcji logicznych; Przebieg ćwiczenia i sposób oceniania: sprawdzanie przygotowania do zajęć (max 1 pkt); zapoznanie ze środowiskiem ISE; zapoznanie ze sprzętem i jego wstępna konfiguracja; symulacja i realizacja prostego układu kombinacyjnego (max 1 pkt); symulacja i realizacja bardziej zaawansowanego układu kombinacyjnego (max 2 pkt); symulacja i realizacja stworzonego z min. 2 modułów układu kombinacyjnego (max 1 pkt); * podczas ćwiczenia kaŝda sekcja tworzy osobny protokół z przebiegu ćwiczenia Protokół: Protokół powinien zawierać: nazwiska osób wykonujących ćwiczenie; tytuł i numer ćwiczenia; poprawny numer grupy i sekcji; komentarze przedstawiające postęp w realizacji ćwiczenia oraz wszelkie niezbędne do zrealizowania ćwiczenia notatki; Literatura: http://toolbox.xilinx.com/docsan/xilinx10/books/docs/qst/qst.pdf - ISE 10.1 Quick Start Tutorial http://direct.xilinx.com/direct/ise10_tutorials/ise10tut.pdf - ISE In-Depth Tutorial http://www.xilinx.com/support/documentation/boards_and_kits/ug334.pdf - Spartan-3A/3AN FPGA Starter Kit Board User Guide http://www.xilinx.com/support/documentation/boards_and_kits/s3astarter_schematic. pdf - Spartan-3A/3AN Starter Kit Board Schematic http://www.xilinx.com/support/documentation/user_guides/ug331.pdf - Spartan-3 Generation FPGA User Guide Opracowanie: Mariusz Latos, 2009