Laboratorium Sprzętowej Implementacji Algorytmów
Transkrypt
Laboratorium Sprzętowej Implementacji Algorytmów
Wydział: Elektrotechniki, Automatyki, Informatyki i Elektroniki Kierunek: Elektronika i Telekomunikacja Rok studiów: III Laboratorium Sprzętowej Implementacji Algorytmów Autor: dr inŜ. Ernest Jamro TUTORIAL do w programie Xilinx ISE symulacji graficznej projektu Kreator tworzenia nowego projektu 1. Uruchom ISE Projekt Navigator przez podwójne kliknięcie na ikonę znajdująca się na pulpicie : 2. Kliknij przycisk New Project w oknie kreatora. 3. Wpisz nazwę oraz lokalizacje nowego projektu. 4. Kliknij przycisk next. 5. W kolejnym oknie wybierz urządzenie i właściwości projektu. 6. Zmień ustawienia tak aby były zgodne z ustawieniami z rysunkiem (zapytaj się prowadzącego jaki dokładnie układ FPGA będzie uŜywany, najprawdopodobniej XC3S500E4FG320C), zwróć uwagę na wybrany symulator: ISim. W kaŜdej chwili moŜliwe jest zmienienie poniŜszych ustawień poprzez wybranie menu: Project/Design Properties 7. Kliknij next Ŝeby kontynuować do zamknięcia kreatora nowego projektu. Pobierz ze strony www (tuŜ obok miejsca gdzie znajduje się tekst tego tutoriala) plik ze źródłami. Następnie skopiuj (rozpakuj) wszystkie pliki *.vhd do katalogu głównego niniejszego tutoriala. Następnie przejdź do programu ISE. Prawym przyciskiem myszki wybierz nazwę układu FPGA a następnie wybierz: Add Source. W ten sposób dodajemy istniejące juŜ pliki *.vhd do naszego projektu. 9. W kolejnym oknie sprawdzamy czy dodane przez nas pliki są traktowane jako moduły do implementacji czy teŜ symulacji. Symulacja za pomocą programu ISim 1. Program ISim jest wbudowany w pakiet ISE i podobnie jak ActiveHDL słuŜy do symulacji HDL. Aby przeprowadzić symulację ISim naleŜy (zob. poniŜszy rysunek): wybrać zakładkę Simulation wybrać element nadrzędny (top level), który ma być symulowany kliknij podwójnie myszką: Simulate Behav. Model co spowoduje uruchomienie programu ISim. Zwróć uwagę, Ŝe moŜliwa jest zmiana rodzaju symulacji poprzez zmianę ustawień Behavioral na inną (okienko zaraz pod wybranym widokiem Simulation). 2. W konsekwencji pokaże nam się następujące okno: Na tym oknie naleŜy odpowiednio pomniejszyć skalę czasu, np. klikając ikonę: Zoom to Full View. Zaleca się równieŜ zmianę formatu wyświetlanych danych wejściowych i wyjściowych din i dout z binarnego na heksagonalny. Następnie naleŜy wybrać sygnały które chcemy obserwować postępując z poniŜszym rysunkiem: wybierz moduł uut (Unit Under Test) w oknie Instance and Process Name dodaj sygnały empty i count_dif poprzez wybranie ich z okna Objects i przeciągnięcie ich na okno przebiegów czasowych. wybierz ikonę Restart zmień czas symulacji na 400ns uruchom symulację ikoną: Run for the time specified on the toolbar zapisz ustawienia waveform poprzez wybranie: Manu File/Save As. KaŜda zmiana kodu pliku VHDL wymaga zamknięcia powtórnego uruchomienia ISim . Dlatego przy powtórnym uruchomieniu ISim moŜliwe jest łatwe odtworzenie poprzednich ustawień poprzez wybranie Manu/File/Open i wybranie zapisanych uprzednio ustawień. 3. Zaobserwuj działanie bufora FIFO (First In First Out). Zwróć szczególą uwagę na sygnały: Prześledź otrzymane przebiegi czasowe: din- sygnał danych wejściowych dout – sygnał danych wyjściowych stbI – sygnał gotowości wpisu danych na wejściu ackI – zezwolenie wpis danych na wejściu (potwierdzenie transmisji danych na wejściu) stbO – sygnał gotowości bufora FIFO do wysłania danych na wyjście – zaprzeczenie sygnału empty (bufor pusty). ackO- zezwolenie na odczyt danych na wyjściu (potwierdzenie transmisji danych na wyjściu). count_dif – sygnał wewnętrzny pokazujący ile danych jest wewnątrz bufora FIFO (uwaga stan 0 oznacza Ŝe nie znajduje się Ŝadna dana lub teŜ znajduje się tylko jedna dana). full –bufor FIFO jest pełny Sprawdź co oznaczają sygnały: almost_empty, almost_full, half_full oraz czy nie następuje przepełnienie lub niedopełnienie bufora FIFO. 5. Postępując z poniŜszym rysunkiem stwórz nowy przebieg czasowy poprzez wybieranie menu File/New/Wave Configuration. Następnie wybierz moduł sr w oknie Instance and Process Name. Dodaj wszystkie sygnały do nowego przebiegu czasowego. Zrestartuj symulacje (ikona restart) i powtórnie uruchom symuulację (ikona run for ...). Zaobserwuj otrzymany przebieg czasowy. Przedstawia on moduł SRL – rejestr przesuwny umiejscowiony w pamięci LUT wewnątrz układu FPGA. Adres określa który rejestr jest czytany. Sygnał Adr jest tożsamy z sygnałem count_dif występujący na poprzednim wykresie. Implementacja projektu Niestety bufor FIFO posiada zbyt duŜo wejść i wyjść aby w prosty sposób nimi ręcznie sterować. Dlatego implementowany będzie duŜo prostszy moduł: licznik (counter.vhd). którego starsze bity sterują diodami.Przejść z powrotem do programu ISE. Zaznacz teraz zakładkę Implementation zgodnie z poniŜszym rysunkiem. Następnie dodaj do projektu plik counter.vhd (ściągnięty z sieci razem z fifo.vhd), co przedstawia poniŜszy rysunek (kliknij prawym przyciskiem myszki na wybrany kład FPGA). Następnie wybierz moduł counter.vhd jako nadrzędny (top module), klikając na niego prawym przyciskiem myszki, co przedstawia poniŜszy rysunek. W podobny sposób dodaj plik counter.ucf klikając prawym przyciskiem myszki plik counter.vhd i wybierając menu add source. MoŜliwa jest edycja pliku counter.ucf zarówno w trybie teksotowym jak i specjalnym edytorem przeznaczonym dla plików ucf. Aby tego dokonać kliknij dwukrotnie myszką plik counter.ucf. Następnie zaimplementuj projekt i wygeneruj plik konfigurujący układ FPGA poprzez naciśnięcie przycisku Generate Programming File. MoŜliwe jest odczytanie raportu oraz zmiana ustawień na poszczególnych etapach działania programu zgodnie z poniŜszym rysunkiem. Sprawdź zajmowane zasoby układu FPGA. MoŜna tego dokonać na dwóch etapach – po syntezie (raport syntezy) gdzie pokazywane są uŜyte elementy biblioteczne (macro), takie jak liczniki, multipleksery, układy dodające. W dalszej części raportu po syntezie szacowane są uŜyte podstawowe elementy (zasoby) układu FPGA takie jak rejestry, pamięci LUT, pamięci RAM, itd. UŜyte podstawowe elementy (zasoby) układu FPGA wyŜwietlane są równieŜ w raporcie po MAPowaniu. Wyniki są jednak dokładniejsze (uaktualnione), dodatkowo pokazywane są uŜyte wyprowadzenia układu FPGA oraz procentowa zajętość układu FPGA. Raport po Place & Route pokazuje spełnienie załoŜeń czasowych oraz maksymalne czasy propagacji. Warto równieŜ zwrócić uwagę na moŜliwość zmian ustawień (properties), np. dla syntezy moŜna zmienić optymalizację względem szybkości (maksymalnej częstotliwości pracy) lub teŜ zajmowanej powierzchni, metod kodowania automatu, ekstrakcji pamięci RAM, itd. Impact Impact – programowanie układu FPGA. Podobnie jak w przypadku generacji pliku konfigurującego aby zaprogramować układ FPGA naleŜy wybrać: Configure Target Device/Impact. Programowanie układu FPGA naleŜy dokonać poprzez wybranie Launch Wizard. Następnie najedz prawym przyciskiem myszki na znaleziony układ FPGA, wybierz plik konfigurujący *.bit oraz zaprogramuj układ FPGA (prawy przycisk myszki / program).