Instrukcja
Transkrypt
Instrukcja
Mirosław Łazoryszczak Technika cyfrowa Laboratorium nr 7 Temat: Liczniki synchroniczne Katedra Architektury Komputerów i Telekomunikacji Zakład Systemów i Sieci Komputerowych SPIS TREŚCI 1. Wymagania ................................................................................................. 3 2. Przebieg ćwiczenia....................................................................................... 3 2.1. Przykład projektowy ............................................................................. 3 2.2. Weryfikacja projektu w środowisku Xilinx ISE ....................................... 7 3. Zadania...................................................................................................... 14 4. Podsumowanie.......................................................................................... 14 5. Literatura................................................................................................... 14 Technika cyfrowa – Laboratorium nr 7 1. W Y M A GAN I A Wykonanie niniejszego ćwiczenia wymaga od studenta posiadania wiedzy i umiejętności z zakresu: • zasad działania oraz sposobów formalnego opisu przerzutników synchronicznych typu D i JK ze szczególnym uwzględnieniem tablicy wzbudzeń, • własności i zastosowań automatów Moore’a oraz Mealy’ego do opisu układów sekwencyjnych, • zasad działania i sposobu projektowania liczników synchronicznych zliczających w założonym zakresie liczenia, w różnych kierunkach (w przód, w tył, rewersyjnie) z wykorzystaniem różnych sposobów kodów i różnych przerzutników, • podstaw posługiwania się narzędziem Xilinx ISE, a w szczególności tworzenia projektu opartego na schemacie, wykonania operacji implementacji, przeprowadzenia symulacji opartej na jednostce testowej (ang. test bench) implementowanej w języku VHDL. 2. PRZEBI EG ĆW I CZEN I A Projektowanie liczników synchronicznych jest zagadnieniem bardzo obszernym i jako takie jest szeroko omawiane w dostępnej literaturze. Niniejsze ćwiczenie ma na celu jedynie wstępne przedstawienie zasady działania, struktur oraz elementów projektowania różnorodnych liczników synchronicznych. W ramach wstępu do praktycznych ćwiczeń zaprezentowany zostanie przykład projektowy wybranego licznika synchronicznego. Liczniki synchroniczne stanowią pewien podzbiór synchronicznych układów sekwencyjnych. Jednak w stosunku do ogólnych metod projektowania układów sekwencyjnych projektowanie liczników charakteryzuje się szeregiem uproszczeń. Licznik, o którym mowa w przykładzie jest układem, który nie posiada wejścia. W tym sensie stanowi więc układ autonomiczny. W omawianym przypadku redukcji ulega także funkcja wyjścia, bowiem wyjściem układu jest wektor stanów wewnętrznych, reprezentujący kolejne wartości „zliczanych” impulsów zegarowych. Z punktu widzenia teorii automatów, wejście zegarowe nie może być traktowane jako wejście układu. W znaczeniu praktycznym sygnał zegarowy jest właśnie tym wejściem, którego zmiany będą rejestrowane przez układ licznika. 2.1. PRZYKŁAD PROJEKTOWY Zadanie Zaprojektuj synchroniczny licznik binarny trzybitowy (modulo 8) oparty na przerzutnikach typu JK zliczający wstecz. Ze względu na brak wejść, opis za pomocą grafu nie jest zbyt przydatny i dlatego też zastosowany zostanie opis w postaci tabeli stanów. W przypadku licznika nie występuje także proces kodowania stanów, a w konkretnym omawianym przykładzie nie będą realizowane także funkcje wyjścia. W celu wypełnienia tablic Karnaugh konieczne będzie posłużenie się tablicą wzbudzeń przerzutnika JK, znaną np. z wykonanych wcześniej ćwiczeń laboratoryjnych. Wszystkie założenia projektowe zawarte są w treści zadania. Licznik binarny trzybitowy determinuje konieczność użycia trzech przerzutników, których rodzaj jest również określony w treści zadania. W procesie projektowym znany jest także arbitralnie przyjęty model ogólnej struktury układu przedstawiony na rys. 1, w którym zespół przerzutników taktowany jest wspólnym sygnałem zegarowym. Na wyjścia licznika składają się wyjścia poszczególnych przerzutników. Projektowanie licznika w praktyce sprowadza się zatem do wyznaczenia zbioru funkcji logicznych nazywanych funkcjami przejść δi. Strona 3 z 14 Technika cyfrowa – Laboratorium nr 7 Rys. 1. Ogólna struktura układu licznika synchronicznego opartego na przerzutnikach JK W szczególnym przypadku funkcje dla poszczególnych wejść kolejnych przerzutników mogą być funkcjami tożsamościowymi lub stałymi, co oznacza np. dołączenie wybranego wyjścia przerzutnika (w postaci prostej lub zanegowanej) lub logicznego „0”, lub „1” do wejścia J lub K innego przerzutnika. Projektowanie licznika o parametrach określonych w zadaniu należy rozpocząć od skonstruowania tablicy przejść. Tabela 1: Tablica przejść ilustrująca działanie licznika Qn Qn+1 q3q2q1 q3’q2’q1’ 0 000 111 1 001 000 2 010 001 3 011 010 4 100 011 5 101 100 6 110 101 7 111 110 W kolumnie Qn podano stan bieżący układu, na który to stan składają się wyjścia poszczególnych przerzutników, zaś kolumna Qn+1 zawiera stan następny układu, który jest konsekwencją pojawienia się impulsu taktującego na wejściu zegarowym układu. Licznik zliczający wstecz działa w ten sposób, że jeśli na jego wyjściach pojawia się kombinacja binarna odpowiadająca liczbie n, to w kolejnym takcie zegara na wyjściu powinna pojawić się liczba n-1. Licznik powinien działać bez zatrzymania, czyli po osiągnięciu wartości minimalnej powinien rozpocząć zliczanie od wartości maksymalnej w dół. Przy czym należy zauważyć, że powyższą tablicę przejść trzeba czytać wierszami, obserwując zmiany stanu z bieżącego na następny. Wobec jeśli na wyjściu licznika w stanie bieżącym występuje kombinacja „000”, to w stanie następnym powinna się pojawić kombinacja „111”. W kolejnym kroku wykorzystana zostanie tablica wzbudzeń przerzutnika JK (tablica 2). Dzięki niej możliwe będzie określenie wartości logicznych koniecznych do dostarczenia na wejścia J oraz K poszczególnych przerzutników tak, aby uzyskać wymaganą zmianę stanów ich wyjść zgodnie z tablicą przejść licznika. Strona 4 z 14 Technika cyfrowa – Laboratorium nr 7 Następny etap projektowania licznika polega na wyznaczeniu funkcji przejść. W omawianym przykładzie należy wyznaczyć po jednej funkcji na każde wejście wszystkich przerzutników. Trzy bity licznika wymagają trzech przerzutników, z których każdy posiada dwa wejścia (J, K). Łacznie potrzebne będzie wyznaczenie sześciu funkcji przejść za pomocą sześciu tablic Karnaugh. Tabela 2: Tablica wzbudzeń przerzutnika JK Qn→Qn+1 J K 0→0 0 X 0→1 1 X 1→0 X 1 1→1 X 0 Sposób wyznaczania wartości dla poszczególnych funkcji przejść podano na rys. 2. Przedstawiono tam schemat wraz z objaśnieniami wypełniania dwóch tablic Karnaugh jednocześnie dla przerzutnika nr 3. Strzałkami zaznaczono mechanizm wypełniania pierwszej kratki obu tablic Karnaugh dla argumentów q3=0, q2=0, q3=0. Pozostałe pola wypełniane są w sposób analogiczny, tzn. po przejściu do kolejnego wiersza należy sprawdzić zmianę wartości dla kolumn odpowiednio q3 oraz q3’. Po wypełnieniu tablic dla wejść J i K przerzutnika Q3 procedura ulega powtórzeniu, przy czym obserwuje się zmienność wartości dla kolumn q2 oraz q2’, a następnie q1 oraz q1’. Qn Qn+1 q3q2q1 q3’q2’q1’ 0 000 111 1 001 000 2 010 001 3 011 010 Qn→Qn+1 J K 4 100 011 0→0 0 X 5 101 100 0→1 1 X 1→0 X 1 1→1 X 0 6 110 101 7 111 110 δ 3K δ 3J q2q1 q2q1 00 01 11 10 0 0 X X X X X 1 1 0 0 0 00 01 11 10 0 1 0 0 1 X X X q3 Rys. 2. q3 Schemat wyznaczania wartości funkcji przejść Po utworzeniu zestawu tablic Karnaugh dokonujemy minimalizacji wszystkich funkcji logicznych. W poniższym zestawie tablic (Tabele od 3 do 5) pod odpowiednimi tablicami zamieszczono wyznaczone funkcje przejść. Funkcje te następnie należy zaimplementować wewnątrz odpowiednich bloków funkcji logicznych z rysunku 1. Strona 5 z 14 Technika cyfrowa – Laboratorium nr 7 Tabela 3: Tablice Karnaugh dla funkcji q2q1 oraz 00 01 11 10 0 0 X X X X X 1 1 0 0 0 01 11 10 0 1 0 0 1 X X X q3 δ 3J = q 2 q1 δ 3K = q 2 q1 Tabela 4: Tablice Karnaugh dla funkcji q2q1 δ 2J oraz δ 2K q2q1 00 01 11 10 X 0 X X 0 1 X 1 X X 0 1 00 01 11 10 0 1 0 X 1 1 0 X q3 δ 3K q2q1 00 q3 δ 3J q3 δ 2J = q1 δ 2K = q1 Tabela 5: Tablice Karnaugh dla funkcji q2q1 oraz δ1K q2q1 00 01 11 10 1 0 X 1 1 X 1 1 X 1 1 X 00 01 11 10 0 1 X X 1 1 X X q3 δ1J q3 δ 1J = 1 δ 1K = 1 Po wyznaczeniu wszystkich funkcji przejść możliwe jest skonstruowanie licznika wg znanej struktury. Dzięki relatywnie nieskomplikowanym funkcjom logicznym układ licznika trzybitowego liczącego wstecz przyjmie postać jak na rys. 3 Rys. 3. Schemat zaprojektowanego licznika binarnego trzybitowego (modulo 8) zliczającego wstecz Układ ten może zostać następnie wprowadzony do środowiska projektowego Xilinx ISE w postaci schematu oraz sprawdzony pod względem funkcjonalnym w sposób analogiczny do poprzednich zajęć laboratoryjnych. Strona 6 z 14 Technika cyfrowa – Laboratorium nr 7 2.2. WERYFIKACJA PROJEKTU W ŚRODOWISKU XILINX ISE UWAGA: Przed rozpoczęciem pracy z komputerem należy bezwzględnie wykonać proces mapowania dysku sieciowego zgodnie z dodatkową instrukcją znajdującą się na stanowisku laboratoryjnym. 1. Uruchom skrót Xilinx ISE Design Suite. znajdujący się na pulpicie. Jeśli brak odpowiedniego skrótu, uruchom Start → Programy → Xilinx ISE Design Suite 13.2 → ISE Design Tools → Project Navigator. Jeśli po uruchomieniu środowiska automatycznie otwarty zostanie projekt, zamknij go za pomocą opcji menu FIle | Close Project. 2. Utwórz nowy projekt za pomocą opcji File | New Project. W oknie dialogowym wpisz nazwę projektu, zwracając uwagę na lokalizację nowego projektu na zmapowanym dysku sieciowym użytkownika oraz wybierz Schematic jako typ źródła najwyższego poziomu (Toplevel source type) Rys. 4. Okno kreatora nowego projektu 3. W kolejnym oknie dialogowym ustaw opcje zgodnie z rys. 5. Zwróć uwagę, aby ustawić opcje dotyczące platformy sprzętowej w celu uniknięcia ew. komplikacji w późniejszej fazie projektu. Strona 7 z 14 Technika cyfrowa – Laboratorium nr 7 Rys. 5. Okno ustawień projektu 4. Następnie zostanie wyświetlone okno podsumowania kreatora projektu (rys. 6). Zatwierdź je przyciskiem Finish. Rys. 6. Okno podsumowania kreatora projektu Strona 8 z 14 Technika cyfrowa – Laboratorium nr 7 5. W oknie Design kliknij prawym klawiszem myszy na pozycji oznaczającej platformę sprzętową (xc2c256) i wybierz opcję New Source... (rys. 7) Rys. 7. Operacja dodawania nowego źródła do projektu 6. W oknie z rys. 8 określ typ źródła jako Schematic, nadaj mu dowolną nazwę i wciśnij przycisk Next, a następnie zatwierdź okno podsumowania pliku źródłowego za pomocą przycisku Finish. Rys. 8. Utworzenie nowego źródła w postaci schematu 7. Utwórz schemat korzystając z elementów FJKC (przerzutnik JK) oraz odpowiednich bramek, korzystając z panelu Symbols (rys. 9). Strona 9 z 14 Technika cyfrowa – Laboratorium nr 7 Rys. 9. Panel Symbols 8. Następnie połącz elementy umieszczone na schemacie korzystając z narzędzia Add Wire oraz dodaj porty We/Wy przy pomocy Add I/O Marker i zmień nazwy portów klikając prawym klawiszem myszy na wybranym porcie i wybierając z menu podręcznego opcję Rename Port (rys. 10) Rys. 10. Przybornik narzędziowy w oknie schematu 9. Przykładowy widok ukończonego schematu przedstawiono na rys. 11 Strona 10 z 14 Technika cyfrowa – Laboratorium nr 7 Rys. 11. Schemat licznika utworzony w oknie schematu 10. Następnie przełącz tryb widoku w panelu Design na Simulation i dodaj nowe źródło w postaci jednostki testowej (Test Bench) do projektu (rys. 12). Rys. 12. Dodawanie nowej jednostki testowej do projektu 11. Określ typ dodawanego źródła jako VHDL Test Bench i nadaj nazwę plikowi zawierającemu jednostkę testową oraz kliknij przycisk Next (rys. 13). W kolejnym oknie dialogowym zatwierdź powiązanie nowej jednostki testowej z układem licznika wprowadzonym uprzednio w postaci schematu. Przyciskiem Next przejdź do kolejnego kroku i zatwierdź okno podsumowania za pomocą przycisku Finish. Strona 11 z 14 Technika cyfrowa – Laboratorium nr 7 Rys. 13. Utworzenie nowego źródła w postaci jednostki testowej 12. Po utworzeniu jednostki testowej w edytorze automatycznie powinien ukazać się kod VHDL jednostki testowej w postaci podobnej jak na wydruku 1. ARCHITECTURE behavioral OF counter_1_counter_1_sch_tb IS COMPONENT counter_1 PORT( X1 : OUT X2 : OUT CLK : IN X3 : OUT END COMPONENT; SIGNAL SIGNAL SIGNAL SIGNAL X1 X2 CLK X3 : : : : STD_LOGIC; STD_LOGIC; STD_LOGIC; STD_LOGIC); STD_LOGIC; STD_LOGIC; STD_LOGIC; STD_LOGIC; BEGIN UUT: counter_1 PORT MAP( X1 => X1, X2 => X2, CLK => CLK, X3 => X3 ); -- *** Test Bench - User Defined Section *** tb : PROCESS BEGIN WAIT; -- will wait forever END PROCESS; -- *** End Test Bench - User Defined Section *** END; Wydruk 1: Fragment kodu automatycznie utworzonej jednostki testowej Strona 12 z 14 Technika cyfrowa – Laboratorium nr 7 13. Pomiędzy słowami kluczowymi BEGIN oraz END PROCESS wyróżnionymi na powyższym wydruku czcionką pogrubioną umieść fragment kodu przedstawiony na wydruku 2, pamiętając o zapisaniu pliku. -- *** Test Bench - User Defined Section *** tb : PROCESS BEGIN for i in 0 to 20 loop clk <= '0'; WAIT for 1 ns; clk <= '1'; WAIT for 1 ns; end loop; --WAIT; -- will wait forever END PROCESS; -- *** End Test Bench - User Defined Section *** Wydruk 2: Kod jednostki testującej uzupełniony o kod umożliwiający weryfikację funkcjonalną zaprojektowanego licznika 14. Następnie w panelu Design w bloku Hierarchy podświetl plik z jednostką projektową i w bloku Processes kliknij dwukrotnie opcję Simulate Behavioral Model (rys. 14). Rys. 14. Panel Design umożliwiający uruchomienie procesu symulacji układu licznika Jeśli proces uruchomienia symulacji przebiegnie bez błędów, powinno automatycznie ukazać okno programu ISim (rys. 15). Przeskaluj widok przebiegów czasowych na ekranie tak, aby możliwa była obserwacja wszystkich przebiegów czasowych licznika wyznaczonych przez jednostkę projektową. Przeanalizuj poprawność działania licznika na podstawie otrzymanych wykresów czasowych. Rys. 15. Fragment okna programu ISim z widocznymi przebiegami czasowymi testowanego licznika Strona 13 z 14 Technika cyfrowa – Laboratorium nr 7 3. ZA D A N IA Zadanie 1 Zaprojektuj dwubitowy licznik synchroniczny, zliczający w przód w kodzie binarnym oparty na przerzutnikach typu JK. Przedstaw odpowiednie tablice ilustrujące proces projektowania, wyznacz funkcje przejść układu oraz wykonaj weryfikację poprawności działania układu przy pomocy narzędzia Xilinx ISE. Zadanie 2 Zaprojektuj trzybitowy licznik synchroniczny zliczający wstecz w kodzie binarnym oparty na przerzutnikach typu D. Przedstaw odpowiednie tablice ilustrujące proces projektowania, wyznacz funkcje przejść układu oraz wykonaj weryfikację poprawności działania układu przy pomocy narzędzia Xilinx ISE. Zadanie 3 Zaprojektuj trzybitowy licznik synchroniczny rewersyjny (zliczający w przód lub wstecz) oparty na przerzutnikach typu JK. Przedstaw odpowiednie tablice ilustrujące proces projektowania, wyznacz funkcje przejść układu oraz wykonaj weryfikację poprawności działania układu przy pomocy narzędzia Xilinx ISE. WSKAZÓWKI: 1. Do zaprojektowania licznika rewersyjnego konieczne jest zastosowanie dodatkowego wejścia, które określa kierunek zliczania. Można przyjąć, że stan niski na wejściu kierunku oznacza zliczanie w przód, natomiast stan wysoki oznacza zliczanie wstecz. 2. Wejście określające kierunek zliczania powinno stanowić jeden z argumentów dla funkcji przejść wraz ze stanem wewnętrznym układu reprezentowanym przez wyjścia poszczególnych przerzutników. 4. PO D SUM O W A N IE W wyniku przeprowadzonego ćwiczenia, a także ćwiczeń poprzednich student powinien nabyć bądź utrwalić następujące umiejętności: • projektowanie liczników synchronicznych opartych na przerzutnikach typu D oraz JK zliczających w przód oraz wstecz, • posługiwanie się narzędziem Xilinx ISE w zakresie utworzenia schematu oraz przeprowadzenia elementarnego testowania układu za pomocą pliku zawierającego jednostkę testującą (test bench). 5. L I TERA TURA [1] [2] [3] [4] Kalisz J.: Podstawy elektroniki cyfrowej, WNT, Warszawa 1999 Pieńkos J., Turczyński J.: Układy scalone TTL w systemach cyfrowych, WKŁ, Warszawa 1986 Wilkinson B.: Układy Cyfrowe, WKŁ, Warszawa 2000 Zwoliński M., Projektowanie układów cyfrowych z wykorzystaniem języka VHDL, WKŁ, Warszawa 2002 Strona 14 z 14