Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: TECHNIKA CYFROWA 2 TS1C300 020 Ćwiczenie Nr 12 PROJEKTOWANIE WYBRANYCH UKŁADÓW STERUJĄCYCH W STRUKTURACH PROGRAMOWALNYCH Opracował: dr inż. Wojciech Wojtkowski dr inż. Walenty Owieczko BIAŁYSTOK 2013
Spis treści instrukcji: 1. Cel i zakres ćwiczenia laboratoryjnego 2 2. Wyświetlacz matrycowy LED... 2 3. Projektowanie automatu sterującego w AHDL.. 5 4. Zagadnienia do przygotowania... 8 5. Wymagania BHP.. 8 6. Sprawozdanie studenckie. 8 7. Przykładowe zadania 9 8. Literatura.. 10 1. CEL I ZAKRES ĆWICZENIA LABORATORYJNEGO Celem ćwiczenia jest poznanie zasad projektowania układów sterujących przy pomocy programu MAX2Plus oraz bloków funkcjonalnych z biblioteki LPM. W ramach ćwiczenia studenci projektują wybrane układy sterujące wyświetlaczem matrycowym LED różnymi metodami. Układ sterujący można zaprojektować znanymi metodami projektowania sekwencyjnego automatu synchronicznego. Zakres ćwiczenia obejmuje: Projektowanie układów sekwencyjnych służących do wyświetlania komunikatów i symboli na wyświetlaczu matrycowym LED z wykorzystaniem pamięci ROM. Projektowanie układów sekwencyjnych służących do wyświetlania komunikatów i symboli na wyświetlaczu matrycowym LED z wykorzystaniem przerzutników. Projektowanie układów sterowania częstotliwością i generatorów słów sterujących. Szczegółowy zakres ćwiczenia ustala prowadzący. 2. WYŚWIETLACZ MATRYCOWY LED Matryca LED wykorzystywana w laboratorium jest zbudowana z dwukolorowych diod LED rozmieszczonych w 8 wierszach i 8 kolumnach (matryca 8x8). Od strony elektrycznej mamy dwie matryce LED (czerwoną i zieloną rys. 1 i 2), z których każda może być podłączona do osobnych wyprowadzeń układu FLEX10k70. Połączenie z układem FLEX następuje po wsunięciu złącza matrycy do gniazda FLEX_EXPAN_B płytki UP2. Rozmieszczenie złącz na płytce prototypowej UP2 jest przedstawione na rysunku 3. Diody w obu matrycach są połączone anodami w kolumnach, natomiast katodami w wierszach (rys. 1 i 2). Taka organizacja pozwala na znaczącą redukcję ilości potrzebnych wyprowadzeń matrycy, natomiast komplikuje sposób wyświetlania. Aby wyświetlić dowolny znak na całej matrycy, trzeba to zrobić w trybie multipleksowym. Wyświetla się najpierw zawartość np. pierwszej 2
kolumny, następnie po wygaszeniu (wygaszenie jest równoważne z podaniem 1 na bazę tranzystora sterującego anodami danej kolumny) załącza się anody drugiej kolumny (poziom logiczny L na bazie odpowiedniego tranzystora sterującego daną kolumną) i na katody podaje się zawartość drugiej kolumny. Jeżeli w ten sposób zostaną wyświetlone po kolei wszystkie kolumny, i cały cykl będzie się powtarzał z odpowiednią częstotliwością, obserwator będzie przekonany, że wyświetlony obraz jest statyczny. Gdy zaistnieje potrzeba uzyskania efektu przewijania napisu, tok postępowania jest identyczny, to znaczy zawartość jednego ekranu jest wyświetlana np. 30 razy na sekundę, jednak co ok. 0,5 sek. następuje przesunięcie napisu o 1 kolumnę w lewo. Wówczas uzyskamy efekt płynnego przewijania. Rys. 1. Matryca czerwona Aby wyświetlone znaki miały jeden z dostępnych kolorów diod LED, należy wyświetlać na jednej matrycy, natomiast drugą wygasić poprzez podłączenie na stałe jedynek logicznych 3
do odpowiednich wyprowadzeń. Wyświetlenie jednoczesne na obydwu matrycach daje efekt koloru pomarańczowego (zmieszanie barwy zielonej i czerwonej). Istnieje możliwość uzyskania kilku odcieni kolorów od zielonego do czerwonego poprzez sterowanie PWM (Pulse Width Modulation). Komplikuje to jednak znacząco układ sterujący wyświetlaczem. Generację sygnałów sterujących matrycą w celu wyświetlenia litery bądź znaku można zrealizować za pomocą prostego automatu Moore a. Najprościej można zaprojektować taki automat korzystając z języka AHDL. Można też zaprojektować automat Moore a korzystając z tradycyjnych metod syntezy, rysując graf przejść, tabelę przejść i wyjść, minimalizując liczbę stanów wewnętrznych, kodując i realizując na przerzutnikach. Rys. 2. Matryca zielona W przypadku wyświetlania przewijanego napisu, celowym wydaje się zastosowanie pamięci ROM (lub RAM w przypadku, gdy napis może się zmieniać w trakcie działania układu np. może zostać wpisany z zewnętrznego urządzenia) do przechowywania matryc 4
znaków lub całego napisu. Wówczas układ sterujący powinien generować odpowiednie adresy dla pamięci ROM. Poszczególne słowa z pamięci ROM mogą wówczas ustawiać zawartość kolumn, natomiast przełączanie wyświetlanych kolumn rozwiązuje demultiplekser 8 bitowy sterowany licznikiem modulo 8. Rys. 3. Rozmieszczenie złącz FLEX_EXPAN na płytce prototypowej UP2 3. PROJEKTOWANIE AUTOMATU STERUJĄCEGO W AHDL Jeżeli stan wyjść automatu zależy wyłącznie od jego stanu bieżącego, można zastosować konstrukcję WITH STATES do opisu stanów wyjść. Przykład wykorzystania takiej konstrukcji przy projektowaniu automatu wyświetlającego dowolny znak na matrycy 8x8 jest przedstawiony na rys. 4. W miejsca oznaczone kropkami należy wpisać definicje kolejnych stanów automatu. Jak widać najstarsze 8 bitów wyjścia jest wykorzystane do sterowania kolumnami wyświetlacza w kodzie 1zn. 8 najmłodszych bitów wyjścia automatu steruje wierszami matrycy. Do sterowania kolumnami można też wykorzystać demultiplekser 8 bitowy sterowany licznikiem modulo 8. 5
Rys. 4. Przykład automatu wyświetlającego dowolny znak na matrycy 8x8 (niekompletny) Inny sposób opisu automatu synchronicznego w języku AHDL jest przedstawiony na rysunku 5. 6
Rys. 5. Przykład automatu wyświetlającego dowolny znak na matrycy 8x8 (niekompletny) Szczegółowe zasady opisu automatów w AHDL można znaleźć w pomocy programu MAX2+ w: Help - AHDL How To Use AHDL State Machines (AHDL). Jeżeli wykorzystujemy pamięć ROM do przechowywania matryc wyświetlanych znaków, musimy utworzyć plik konfigurujący pamięć. Najprostszy jest format MIF (Memory Initialization File). Rys. 6. Przykładowa zawartość pliku konfigurującego MIF 7
Przykładowa zawartość pliku konfigurującego pamięć wraz z komentarzami w formacie.mif, jest przedstawiona na rysunku 6. Wartości adresów i danych są zupełnie przypadkowe i służą wyłącznie ilustracji sposobu konstruowania zawartości pliku konfiguracyjnego. Plik.mif można utworzyć w dowolnym edytorze tekstowym, np. w notatniku Windows. 4. ZAGADNIENIA DO PRZYGOTOWANIA Przed przystąpieniem do wykonania ćwiczenia, student powinien: - zapoznać się z instrukcją, - zapoznać się ze schematem matrycy LED - powtórzyć teorię układów sekwencyjnych wykorzystujących pamięci ROM, - powtórzyć projektowanie automatów sekwencyjnych za pomocą języka AHDL, - opracować rozwiązanie co najmniej dwóch z zadań podanych na końcu instrukcji. 5. WYMAGANIA BHP Warunkiem przystąpienia do praktycznej realizacji ćwiczenia jest zapoznanie się z obowiązującą w laboratorium instrukcją BHP oraz przestrzeganie zasad w niej zawartych. Konieczne jest także zapoznanie z ogólnymi zasadami pracy przy stanowisku komputerowym. Instrukcje BHP powinny być podane studentom podczas pierwszych zajęć laboratoryjnych i dostępne do wglądu w Laboratorium. 6. SPRAWOZDANIE STUDENCKIE Sprawozdanie z ćwiczenia powinno zawierać: stronę tytułowa zgodnie z obowiązującym wzorem, cel i zakres ćwiczenia, opis stanowiska badawczego, opis przebiegu ćwiczenia z wyszczególnieniem wykonywanych czynności, algorytm rozwiązania danego problemu, schematy układów, programy AHDL bądź VHDL z komentarzami, rysunki przedstawiające wyniki symulacji, komentarze i wnioski 8
Na ocenę sprawozdania będą miały wpływ następujące elementy: zgodność zawartości z instrukcją, algorytm rozwiązania problemu, wnioski i uwagi, terminowość i ogólna estetyka Sprawozdanie powinno być wykonane i oddane na zakończenie ćwiczenia, najpóźniej na zajęciach następnych. Sprawozdania oddane później będą oceniane niżej. 7. PRZYKŁADOWE ZADANIA: Z1. Wyświetlić dowolny znak na całej matrycy w różnych odcieniach dostępnych kolorów wykorzystując sterowanie metodą PWM. Z2. Wyświetlić literę bądź znak na całej matrycy, dobrać częstotliwość przełączania kolumn/wierszy która zapewni brak migotania. Zanotować częstotliwość minimalną. Z3. Wyświetlić napis przewijany złożony z co najmniej 8 znaków. Matryce znaków powinny być przechowywane w pamięci ROM. Z4. Zaprojektować układ wyświetlający obiekt (jedna włączona dioda LED) poruszający się i odbijający od brzegów matrycy pod kątem 45 o. Z5. Zaprojektować układ wyświetlający pojedynczą literę, której kolor będzie się cyklicznie zmieniał co 1 s. Z6. Zaprojektować układ wyświetlający napis przewijany z częstotliwością 1 kolumna/0.25 s. ze zmieniającym się kolorem co 5 s. Z7. Zaprojektować automat Moore a na przerzutnikach D, wyświetlający literę A na matrycy 5x7. (Matryce znaków 5x7 są najczęściej stosowane w różnego typu wyświetlaczach. Matryca 5x7 jest minimalną matrycą pozwalającą na wyświetlenie dowolnej litery alfabetu) Z8. Zapoznać się z parametrami, wejściami sterującymi i wyjściami bloku lpm_rom. Utworzyć w edytorze tekstowym przykładowy plik.mif i skonfigurować za pomocą tego pliku pamięć ROM. Wynik sprawdzić w symulacji. Z9. Zaprojektować generator słów 8 bitowych o następującej sekwencji: 23, 34, 42, 84, 12, 32, 43, 45, 100, działający w cyklu zamkniętym. Wykorzystać należy automat sekwencyjny z pamięcią ROM. Z10. Zaprojektować generator słów 8 bitowych o 3 przełączanych sekwencjach wyjściowych; a) 23, 34, 42, 84, 12, 32, 43, 45, 100, 9
b) 10, 42, 12, 43, 29, 83, 23, 43, 223, 5 c) 0, 23, 0, 0, 1, 1, 2, 1, 3, 9 działający w cyklu zamkniętym. Przełączanie sekwencji powinno się odbywać za pomocą przycisku PB1. Wykorzystać należy automat sekwencyjny z pamięcią ROM. 8. Literatura: L1. WWW.altera.com - dsf10k.pdf opis układów rodziny FLEX10K L2. Łuba T.: Syntez układów cyfrowych, WKŁ, 2003r. L3. Skorupski A.: Podstawy techniki cyfrowej, WKŁ, 2004 L4. Małysiak H.: Teoria automatów cyfrowych, laboratorium, Wydawnictwo Politechniki Śląskiej, 2003. L5. Pasierbiński, J., Zbysiński P.: Układy programowalne w praktyce, WKŁ, 2002r. 10