Laboratorium Układów Mikroprocesorowych |
||||||
Rok akademicki |
Termin |
Rodzaj studiów |
Kierunek |
Prowadzący |
Grupa |
Sekcja |
2008/2009 |
Wtorek 18:15-19:45 |
wieczorowe |
INF |
BS |
2 |
1 |
Sprawozdanie z ćwiczenia numer 3
Data wykonania ćwiczenia: 2008-10-16
Temat ćwiczenia:
Projektowanie systemów cyfrowych w oparciu o układy programowalne
Skład podsekcji: |
Rafał Pacan Paweł Sadowski Grzegorz Kwiatkowski Robert Uszok |
Wojciech Szymoszek Ireneusz Zydroń |
|
|
|
|
|
|
|
|
1. TEMAT ĆWICZENIA
Tematem ćwiczenia było zaprojektowanie i napisanie programu dla urządzenie wyświetlającego na wyświetlaczu 7-segmentowym liczby w zapisie szesnastkowym, posiadające wejście testujące oraz wygaszające.
2. ROZWIĄZANIE PROBLEMU
Kod programu w języku Abel:
module c3z1
a,b,c,d,e,f,g pin istype 'com'; "wyjscia
w,t,a3,a2,a1,a0 pin; "wejscia
S = [w,t]; "w - wygaszenie
"t - test
A = [a3,a2,a1,a0]; "a3..a0 - cyfra szesnastkowa do
"wysw podana binarnie
W = [a,b,c,d,e,f,g]; "a..h - segmenty wyświetlacza 7-segm
equations
truth_table ([A,S] -> [a,b,c,d,e,f,g])
[0,0] -> [1,1,1,1,1,1,0];
[1,0] -> [0,1,1,0,0,0,0];
[2,0] -> [1,1,0,1,1,0,1];
[3,0] -> [1,1,1,1,0,0,1];
[4,0] -> [0,1,1,0,0,1,1];
[5,0] -> [1,0,1,1,0,1,1];
[6,0] -> [1,0,1,1,1,1,1];
[7,0] -> [1,1,1,0,0,0,0];
[8,0] -> [1,1,1,1,1,1,1];
[9,0] -> [1,1,1,1,0,1,1];
[10,0] -> [1,1,1,0,1,1,1];
[11,0] -> [0,0,1,1,1,0,1];
[12,0] -> [1,0,1,1,1,0,0];
[13,0] -> [0,1,1,1,1,0,1];
[14,0] -> [1,0,0,1,1,1,1];
[15,0] -> [1,0,0,0,1,1,1];
[.x.,1] -> [1,1,1,1,1,1,1];
[.x.,2] -> [0,0,0,0,0,0,0];
[.x.,3] -> [0,0,0,0,0,0,0];
test_vectors ([A,S] -> [a,b,c,d,e,f,g])
[0,0] -> [1,1,1,1,1,1,0];
[1,0] -> [0,1,1,0,0,0,0];
[2,0] -> [1,1,0,1,1,0,1];
[3,0] -> [1,1,1,1,0,0,1];
[4,0] -> [0,1,1,0,0,1,1];
[5,0] -> [1,0,1,1,0,1,1];
[6,0] -> [1,0,1,1,1,1,1];
[7,0] -> [1,1,1,0,0,0,0];
[8,0] -> [1,1,1,1,1,1,1];
[9,0] -> [1,1,1,1,0,1,1];
[10,0] -> [1,1,1,0,1,1,1];
[11,0] -> [0,0,1,1,1,0,1];
[12,0] -> [1,0,1,1,1,0,0];
[13,0] -> [0,1,1,1,1,0,1];
[14,0] -> [1,0,0,1,1,1,1];
[15,0] -> [1,0,0,0,1,1,1];
@const i=0;
@repeat 16{
[i,1] -> [1,1,1,1,1,1,1]; "aktywne wejscie t
[i,2] -> [0,0,0,0,0,0,0]; "aktywne wejscie w
[i,3] -> [0,0,0,0,0,0,0]; "aktywne oba wejscia (w ma
"wyzszy priorytet
@const i=i+1;}
End
3. OPIS
a, b, c, d, e, f, g - wyjścia dekodera, segmenty wyświetlacza
w, t, a3, a2, a1, a - wejścia
t - wejście testujące zapalające wszystkie diody na wyświetlaczu
w - wejście wygaszające wszystkie diody na wyświetlaczu
a3..a0 - cyfra szesnastkowa do wyświetlenia podana binarnie
4. WYNIK DZIAŁANIA KOMPILATORA
Kompilacja programu powiodła się bez większych problemów. Testowa symulacja nie wykazała błędów - wszystkie wektory otrzymały wynik pozytywny. Tablicę prawdy sporządzono poprawinie.
5. WNIOSKI
Początkowo próbowaliśmy wprowadzić każde równanie z osobna. Jednakże okazało się to dość skomplikowane i czasochłonne. Dlatego zastosowaliśmy tablicę prawdy. Przyspieszyło to naszą pracę a program okazał się o wiele czytelniejszy. Działał jak najbardziej prawidłowo.