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
Spartan­3E 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