Wprowadzenie do języka VHDL
Transkrypt
Wprowadzenie do języka VHDL
Wprowadzenie do języka VHDL 1 . Cel ćwiczenia Celem ćwiczenia jest zapoznanie studentów z układami FPGA i środowiskiem ISE WebPack firmy Xilinx, a także realizacja prostych układów logicznych bazujących na podstawowych bramkach logicznych. 2. Teoretyczne wprowadzenie na temat FPGA Układy FPGA (field programmable gate array) to urządzenie logiczne zawierające tablicę skłądającą się z komórek logicznych ogólnego zastosowania oraz przełączników konfiguracyjnych. Struktura koncepcyjna przedstawiona jest na rysunku 1. Komórki mogą być konfigurowane(programowane) w celu realizacji prostych funkcji i łączone z innym komórkami przy pomocy konfigurowalnych przełączników. Rysunek 1. Koncepcyjna struktura układu FPGA źródło "FPGA PROTOTYPING BY VHDL EXAMPLES" PONG P. CHU 3. Ćwiczenie Rysnek 2. Podstawowa komórka logiczna LUT(a) oraz tablica prawdy(b) Głównym celem ćwiczenia jest przedstawienie relizacji równania zgodnie z algebrą Bool'a z zastosowaniem opisu schematycznego oraz opisu w języku VHDL. Równanie jest opisane następujcą zależnością: Y= (A and B) or (C and D) Poniżej link do dobrego kursu VHDL, którym można się posiłkować podczas wykonywania zadań: http://home.elka.pw.edu.pl/~pkaleta/vhdl/praktyka/wstep.html 1. Uruchom program 'Xilinx ISE Design Suite 1 2.3 '. W głównym oknie programu należy wybrać New Project... w celu utworzenia nowego projektu. 2. W polu name należy wpisać nazwę projektu. Natomiast w Top level source należy wybrać sposób opisu projektu, w tym przypadku będzie to schemat. Po tym klik na Next. 3. W tym miejscu należy określić dla jakiego urządzenia dedykowany jest projekt, z praktycznego punktu widzenia istotne to jest dopiero po procesie projektowania i weryfikacja projektu. Product Category określa zastosowanie układu, bowiem układy FPGA mają zastosowanie w różnych dziedzinach elektronika przemysłowa, użytkowa itp. Family to wybór konkretnego układu architektury. Układy z tej samej rodziny zróżnicowana są pod względem ilości elementów logicznych(bramki, pamięci...) Device . Package określa obudowę w jakiej umieszczony jest układ. 4. Podusmowanie wybranych parametrów. Finish zatwierdza wybrane parametry i przechodzi do edycji projektu. 5. W celu edycji projektu należy dodać plik źródłowy. 6. Z założenia tworzony projekt będzie przedstawiony w postaci schematu. Należy wybrać schemat i podać jego nazwę. Następnie należy to zatwierdzić. 7. Zatwierdzenie wyboru i utworzenie pliku. 8. Okno w którym edytowany będzie schemat. Zakładka z elementami, które można umieścić na schemacie. Symbol układu wykonującego logiczne mnożenie AND Symbol układu wykonującego logiczne dodawanie OR Teoria Tabela prawdy A 0 0 1 1 B 0 1 0 1 Y 0 0 0 1 A 0 0 1 1 B 0 1 0 1 Y 0 1 1 1 Tabela prawdy Tabele prawdy przedstawiają odpowiedzi układu na poszczególne wymuesznia zgodnie z algebrą Boole'a. A i B są to wartości logiczne, zmienne wejściowe, natomiast Y jest odpowiedzią, czyli wartością funkcji. Stwórz tablicę prawdy dla zależności Y= (A and B) or (C and D), tablica ta posłuży do definiowania wymuszeń testujących w daleszej części. 9. W zakładce z symbolami, znajduje się okno z kategoriami na które można podzielić układy cyfrowe. Poniżej okno z poszczególnymi elementami należącymi do danej kategorii. Informacje o danym symbolu. 10. Wybierz kategorię Logic i z elementów AND2 oraz OR2 zbuduj schemat wg rysunku. 11. Aby połączyć ze sobą elementy należy wybrać ikonkę i kliknąć lewym przyciskiem na końcówki, aby je połączyć. 12. Następnie należy dodać porty i połączyć je z układami. Porty to nic innego jak elementy określające gdzie w projekcie mają wchodzić sygnały wejściowe (wymuszenia), a gdzie sygnały wyjściowe (odpowiedzi). 13. Klikając dwukrotnie lewym przyciskiem na dany port uruchamia się okno konfiguracji. 14. Istotne w tym miejscu jest by edytowany port posiadał właściwości na których zależy projektantowi. Należy zmienić nazwę portu i zatwierdzić przyciskiem. Jeżeli projekt ma być wykorzystany z fizycznym układem FPGA należy podać fizyczną lokalizację tego portu dodając parametr LOC, w celu określenia lokalizacji portu przejdź do następnego punktu. 15. W celu określenia portu należy otworzyć dokumentację płytki Spartan3E Starer Kit Board i w spisie treści wybrać suwaki. Po czym pojawi się rysunek ze zdjęciem elementów oraz nazwy portów do których są one podłączone, element SW0, czyli pierwszy suwak podłączony jest pod L1 3 . Uzupełnij nazwy portów wejściowych nazwami od A do D oraz podłącz je pod suwaki. Następnie odnajdź diody LED w dokumentacji i podepnij jedną diodę pod port wyjściowy i nazwij go Y. 16. Ostatecznie schemat powinien wyglądać jak na obrazku obok. 17. Ostatecznie schemat powinien wyglądać jak na obrazku obok. 18. W celu weryfikacji projektu należy dodać plik testujący(dodawanie pliku patrz punkt 5), wybrać sposób reprezentacji pliku, w tym przypadku będzie to plik opisany w języku VHDL oraz podać jego nazwę. Wcześniejsze wersje środowiska umożliwiały graficzną edycję pliku testowego, niestety Xilinx od wersji ISE 11.1 nie wspiera już tej metody. 19. W kolejnym okienku należy wybrać element dla którego tworzony jest plik testujący, w tym przypadku zbyt dużego wyboru nie ma , następnie następuje czas na podsumowanie wyboru. 20. Nic dodać, nic ująć. Wszystko zgodnie z oczekiwaniami. 21. Gdyby wystąpiły jakieś problemy należy być na tak. 22. Gdyby jednak problemów nie było, powinno pokazać się okienko z zawartością zbliżoną do tej z obrazka. W tym miejscu należało by coś dodać na temat VHDL, ale z oczywistych względów opisane zostanie tylko to co najistotniejsze w tym momencie. Tą część trzeba opisać i rozszerzyć o pozostałe kombinacje w sumie ma być ich 16. A <= '0'; oznacza przypisanie do sygnału A wartości logicznej 0. WAIT FOR 1 0 NS; określa czas po którym układ przechodzi do stanów znajdujących się za tą linijką. W celu sprawdzenia poprawności zapisanego kodu należy wybrać weryfikację składni, zielony znaczek oznacza poprawność kodu. Po wprowadzeniu kodu klinij symulację. 23. Po przeprowadzeniu symulacji powinno pojawić się okno z przebiegiem prostokątnym. Kliknięcie na przebieg pokazuje aktualną wartość dla danej wartości czasu. Porównaj przebiegi z tabelą prawdy. 24. Czas na implementację cudownego rozwiązania w postaci oto tego projektu na płytę z układem FPGA. W tym celu należy wygenerować plik konfigurujący układ FPGA z projektu. Następnie kliknij programowanie płytki i poproś prowadzącego o dalsze instrukcje. Zadanie na dodatkową ocenę. Stwórz projekt realizujący zamek elektroniczny, który otwiera się na kombinację będącą bitową reprezentacją numeru grupy do której należy student, np. dla grupy 1 przy kombinacji wejściowej 001 powinna zapalić się dioda. A B C Y 1 0 0 1 0 0 1 0 1 0 1 0 1 1 0 0 1 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 Dodatkowo klucz powinien być zatwierdzony po wciśnięciu pokrętła na płycie, w tym celu można dodatkowo użyć przerzutnika zatrzaskowego (Latch). Zrealizuj projekt przy wykorzystaniu dowolnych elementów. Wykonaj symulację i zaprogramuj płytę. Projekt wyślij prowadzącemu na maila. 25. Alternatywą dla schematów jest popularny język opisu sprzętu VHDL. Stwórz nowy projekt z ustawieniami takimi jak na obrazku. Ustawienia dla układów FPGA powinny być takie same jak w poprzednim projekcie(patrz punkt 3). 26. Następnie dodaj plik będący modułem w języku VHDL. 27. Na tym etapie należy podać nazwy sygnałów wchodzących do układu i wychodzących z niego. Oraz określić ich kierunek. Pozostałe opcje służą do definicji szyny danych, dzięki czemu przetwarzane sygnały mogą mieć długość większą niż jeden bit. 28. Podsumowanie. 29. Środowisko ISE automatycznie stworzy podstawy do defnicji danej jednostki. Auotmatycznie dodaje biblioteki i dodaje je do użytku. Definiuje jednostkę z parametrami podanymi podczas tworzenia pliku(są wszystkie sygnały i ich definicje). Tworzy miejsce na implementację układu. Żeby projekt posiadał właściwości układu ze schematu wystarczy wpisać jedną magiczną linijkę w miejscu na implementację: Y <= (A and B) or (C and D); Interpretacja tej linijki jest trywialna można ją zinterpretować w następujący sposób: do sygnału Y przypisz wynik działania logicznego na sygnałach. Przeprowadź symulację projektu(patrz punkt 18). 30. Aby zaimplementować układ na płycie należy jeszcze dodać plik łączący sygnały z nóżkami układu. 31. Aby dodać definicję nóżek należy odnaleźć UCF Location Constraints w pliku z dokumentacją dla danego elementu. I wpisać zawartość do pliku UCF z poprzedniego punktu. Należy pamiętać o zmianie nazw sygnałów tzn. zamiast SW<0> wpisać A itd. Pamiętaj o dodanie diody dla sygnału Y. Po uzupełnieniu pliku przejdź do programowania płyty(patrz punkt 24). Zainteresowanych elektroniką i językiem VHDL zapraszam serdecznie w imieniu swoim i kolegów na Przedmiot Obieralny Mikroelektronika. Dla zachęty dodam, że raczej nie będę prowadził tego przedmiotu