Ćwiczenie nr 3 - WordPress.com

Transkrypt

Ćwiczenie nr 3 - WordPress.com
Ćwiczenie nr 3:
Maszyny stanów oraz wprowadzenie do symulacji
1. Cel ćwiczenia
Celem ćwiczenia jest zapoznanie się z podstawowym mechanizmem
pozwalającym kontrolować funkcjonowanie projektowanej logiki. Jest nim maszyna
stanów skończonych (ang. Finite State Machine - FSM). Ćwiczenie będzie polegało
na napisaniu maszyny zmieniającej stany w wyniku naciskania na przyciski
znajdujące się na płytce testowej oraz wyświetlaniu aktualnego stanu za pomocą
diod LED. Dodatkowo wprowadzony zostanie proces symulacji logiki, jako jeden ze
sposobów sprawdzania działania programu.
2. Wiadomości teoretyczne
2.1
Maszyny stanów skończonych
W tradycyjnych językach programowania w danym momencie czasu
wykonywany jest tylko jeden proces (jeden rozkaz) na jednym rdzeniu procesora. W
przypadku układów FPGA, gdzie logika jest wykonywana równolegle, mechanizmem
kontrolującym wykonywanie się procesów są maszyny stanów skończonych (FSM).
Określają one możliwy zbiór stanów, w których może znaleźć się logika, oraz
warunki przejść pomiędzy nimi. W danym momencie czasu, automat może
znajdować się tylko w jednym, aktualnym stanie.
Do projektowania maszyny stanów można użyć reprezentacji w postaci grafu (
: Przykład grafu maszyny stanów).
Figure : Przykład grafu maszyny stanów
Tworząc maszynę stanów należy przewidzieć wszystkie możliwe sytuacje,
które mogą mieć wpływ na wykonywanie się logiki oraz uwzględnić je w przejściach
pomiędzy stanami. Każdy stan musi mieć jasno zdefiniowane warunki logiczne, które
przy spełnieniu zmienią aktualny stan maszyny.
W języku VHDL, maszynę stanów definiuje się jako:
•
Zbiór możliwych stanów w formie zadeklarowania nowego typu,
•
Dwóch sygnałów typu wyżej zdefiniowanego, reprezentujących stan aktualny
oraz stan przyszły, który stanie się aktualnym przy kolejnym takcie zegara
(przy spełnieniu określonych warunków),
•
Procesu przepisującego stany: proces SYNCHRONICZNY do zegara, w którym
następuje przepisania następnego stanu na aktualny
•
Procesu ASYNCHRONICZNEGO, opisującego warunki przejścia z każdego
stanów (warunki mogą znajdować się w maszynie stanów lub na zewnątrz
maszyny)
Przykładowy kod opisujący maszynę stanów został pokazany na (Figure :
Przykładowy kod)
Należy podkreślić iż sygnały wychodzące bezpośrednio z maszyny stanów są
sygnałami ASYNCHRONICZNYMI – należy je więc zsynchronizować z zegarem FPGA w
innym procesie.
Figure : Przykładowy kod
2.2
Symulacja
Symulacja jest jednym z podstawowych narzędzi do debuggowania, czyli
wyszukiwania problemów oraz błędów w projektowanej logice. Proces ten nie
wymaga fizycznego sprzętu, przez co nie odzwierciedla w pełni realnego zachowania
się układu FPGA po zaprogramowaniu, jednak w wysokim stopniu pozwala znaleźć
większość błędów logicznych.
Proces symulacji polega na wcześniejszym przygotowaniu tak zwanego
wektora wymuszeń. Jest to zbiór sygnałów wejściowych do badanego komponentu
VHDL. Wektor wymuszeń jest modułem VHDL, w którym zawiera się instancję
badanego komponentu oraz za pomocą procesów przygotowuje się przykładowe
zachowanie wejściowych sygnałów.
Następnie uruchamia się symulator, który wylicza odpowiedź i działanie w
czasie logiki. Wynik przedstawiony jest w formie przebiegów czasowych
obserwowanych sygnałów (Figure : Przykładowy przebieg symulacji).
Środowisko XILINX ISE posiada wbudowany symulator, pozwalający w kilku prostych
krokach uruchomić proces.
Figure : Przykładowy przebieg symulacji
3. Ćwiczenie
3.1 Zaimplementowanie maszyny stanów
1. Utworzyć pusty projekt w ISE Project Navigator,
2. Dodać pusty top moduł VHD,
3. Utworzyć interfejs zawierający zegar, cztery przyciski, reset oraz diody
LED,
4. Odpowiednio uaktualnić plik UCF,
5. Zdefiniować nowy typ zawierający stany,
6. Dodać dwa sygnały wyżej zdefiniowanego typu,
7. Napisać synchroniczny z zegarem proces ustawiający aktualny stan
maszyny według grafu przedstawionego na Rys.1,
8. Napisać asynchroniczny proces opisujący przejścia pomiędzy stanami,
9. Aktualny stan maszyny wyświetlić na diodach LED,
10.Skompilować projekt i sprawdzić na sprzęcie. Przejść do symulacji
(niekonieczna jest poprawna funkcjonalność programu).
Rys.1 Graf przejść pomiędzy stanami maszyny stanów (N - przycisk „north”...).
3.2 Symulacja maszyny stanów
1. Dodać do projektu nowy plik .vhd będący wektorem wymuszeń, tak
zwany testbench,
2. Utworzyć jedną instancję głównego komponentu,
3. Dodać sygnał zegara oraz reset,
4. Napisać proces zegara przy pomocy wyrażenia wait, działającego z
częstotliwością 50MHz,
5. Napisać proces wymuszeń, ustawiający na początek sygnał reset na
100 ns w stan aktywny a następnie symulujący wciskanie przycisków,
6. Uruchomić symulacje:
•
Przejść na widok symulacji
• Wybrać
procesów
moduł
testbenchu
oraz
uruchomić
proces
z
listy
7. Dodać do widoku wszystkie sygnały z głównego, symulowanego
komponentu,
8. Uruchomić symulację określonego przedziału czasowego.