Układy cyfrowe i systemy wbudowane 1 – laboratorium mgr inż. Antoni Sterna Pt 1245 - 1500
SPRAWOZDANIE
W czasie zajęć mieliśmy za zadanie skonstruować automat Moore’a wykrywający sekwencję 000 na przerzutnikach T, następnie ten automat zrealizować na rejestrze oraz stworzyć układ zliczający sygnały z Rotary Encodera i wyświetlający wynik na wyświetlaczu w ten sposób, że pierwsze 2 pozycje wyświetlacza pokazywałyby ile sygnałów pojawiło się podczas kręcenia w lewo, zaś 2 kolejne – ile sygnałów pojawiło się przy kręceniu w prawo. Układy zrealizowaliśmy w programie Xilnix ISE Project Navigator, następnie przetestowaliśmy ich działanie na wbudowanym w to środowisko symulatorze, a później zaprogramowaliśmy je w układzie XC9572XL.
Automat Moore’a wykrywający sekwencję 000 na przerzutnikach T
Poniżej zamieszczony jest schemat naszego układu:
Z = { z0, z1 } – wejściowy Y = { y0, y1 } – wyjściowy Q = { q0, q1, q2, q3 }
Przerzutnik T: Tablica przejść:
T | Q(t) | Q(t+1) | WY | y0 | y0 | y0 | y1 | q0 -> y0 | |
---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | q0 | q1 | q2 | q3 | q1 -> y0 | ||
0 | 1 | 1 | z0 | q1 | q2 | q3 | q3 | q2 -> y0 | |
1 | 0 | 1 | z1 | q0 | q0 | q0 | q0 | q3 -> y1 | |
1 | 1 | 0 |
Kodowanie stanów:
Q0 | Q1 | Z0 | Z1 | Y0 | Y1 | |||||
---|---|---|---|---|---|---|---|---|---|---|
q0 | 0 | 0 | z0 | 0 | 0 | y0 | 0 | 0 | ||
q1 | 0 | 1 | z1 | 0 | 1 | y1 | 0 | 1 | ||
q2 | 1 | 0 | ||||||||
q3 | 1 | 1 |
Graf:
t | t+1 | Q0 | Q1 | z0 | z1 | Q0 | Q1 | T0 | T1 | |
---|---|---|---|---|---|---|---|---|---|---|
qi | zi | qi | ||||||||
q0 | z0 | q1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | |
q1 | z0 | q2 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | |
q2 | z0 | q3 | => | 1 | 0 | 0 | 0 | 1 | 1 | 0 |
q3 | z0 | q3 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | |
q0 | z1 | q0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | |
q1 | z1 | q0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | |
q2 | z1 | q0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | |
q3 | z1 | q0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 |
Automat Moore’a wykrywający sekwencję 000 - jako rejestr
Poniżej zamieszczony jest schemat układu:
Układ ten realizowaliśmy jako rejestr przesuwny.
Układ zliczający sygnały z Rotary Encodera i wyświetlający wynik na wyświetlaczu w ten sposób, że pierwsze 2 pozycje wyświetlacza pokazywałyby ile sygnałów pojawiło się podczas kręcenia w lewo, zaś 2 kolejne – ile sygnałów pojawiło się przy kręceniu w prawo
Poniżej zamieszczony jest schemat układu:
Układ realizowaliśmy korzystając z gotowych modułów RotaryEnc (odpowiedzialny za odczytywanie sygnałów z Rotary Encodreda), Display4x7S (obsługa wyświetlacza) oraz dwóch liczników 8-bit.
Wnioski:
Wszystkie zbudowane przez nas układy działały prawidłowo. Układ 1 i 2 dodatkowo sprawdziliśmy w symulatorze, zanim został one zaprogramowane. Dzięki tym zajęciom nauczyliśmy się jak wyświetlać wartości na wyświetlaczu oraz w jaki sposób działa moduł Rotary Encoder. Zapoznaliśmy się także z gotowymi układami liczników, które można znaleźć w środowisku Xilinx.