Ć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.