Wykonanie: Krakowian Konrad 140059 Rakowski Bartosz 140116 |
mgr inż. A. Sterna Poniedziałek, godz. 15.15 03.04.2006r. |
Sprawozdanie nr 6
KOMPUTEROWA REALIZACJA AUTOMATÓW SKOŃCZONYCH
Cel ćwiczenia
Celem ćwiczenia jest praktyczne zapoznanie się ze sposobem programowej realizacji na komputerze lub mikrokomputerze automatów skończonych (na przykładzie automatów typu Moore'a).
Program ćwiczenia:
Zaprojektować zamek szyfrowy otwierający się na kombinację 1001
Przypadek, w którym nie wolno popełnić żadnego błędu aby otworzyć zamek szyfrowy:
y0 y0 y0 y0 y1
z1 z0 z0 z1
z0 z1 z1 z0 z0, z1
y0
z0, z1
Alfabet wejściowy:
Z = {z0,z1}
z0 = 0
z1 = 1
Alfabet wyjściowy:
Y = {y0,y1}
y0 - zamknięte
y1 - otwarte
Stany wewnętrzne:
Q = {q0,q1,q2,q3,q4,q5}
q0 - stan początkowy
q4 - stan zatrzymania automatu (po wprowadzeniu błędnego kodu)
Funkcja przejść:
Gi+ = 0(q01(z2q12(z1q23(z1q34(z2q55(z1q46(z1q4,z2q4)6,z2q4)5,z1q4)4,z2q4)3,
z2q4)2,z1q4)1)0
Funkcja wyjść:
Q[t] |
Y[t+1] |
q0 |
y0 |
q1 |
y0 |
q2 |
y0 |
q3 |
y0 |
q4 |
y0 |
q5 |
y1 |
Symulacja komputerowa:
a) dla poprawnego słowa wejściowego:
x = 1001
x = {z1,z0,z0,z1}
Q[t] |
x[t] |
Q[t+1] |
Y[t+1] |
q0 |
z1 |
q1 |
y0 |
q1 |
z0 |
q2 |
y0 |
q2 |
z0 |
q3 |
y0 |
q3 |
z1 |
q4 |
y1 |
b) dla przykładowego błędnego słowa wejściowego
x = 1011
x = {z1,z0,z1,z1}
Q[t] |
x[t] |
Q[t+1] |
Y[t+1] |
q0 |
z1 |
q1 |
y0 |
q1 |
z0 |
q2 |
y0 |
q2 |
z1 |
q4 |
y0 |
q4 |
z1 |
q4 |
y0 |
Przypadek, w którym dopuszczalne jest popełnienie jednego błędu:
z1
y0 y0 y0 y0 y0 y0 y0 y0 y1
z1 z0 z0 z0 z1 z0 z0 z1
z1
z0 z1 z1 z0 z0,z1
z1
z0
y0
z0 z1
Zaprojektować generator U2:
z0 z0 z1
z0 z0
y0 y1 y0
z0
Alfabet wejściowy:
Z = {z0,z1}
z0 - 0 w NKB
z1 - 1 w NKB
Alfabet wyjściowy:
Y = {y0,y1}
y0 - 0 w U2
y1 - 1 w U2
Stany wewnętrzne:
Q = {q0,q1,q2}
q0 - stan początkowy
Funkcja przejść:
Gi+ = 0(q01(z1q12(z1q23(zoq1,z1q2)3,z0q1)2,z0q0)1)0
Funkcja wyjść:
Q[t] |
Y[t+1] |
q0 |
Y0 |
q1 |
y1 |
q2 |
y0 |
Symulacja komputerowa:
x = 1001
x = {z1,z0,z0,z1}
Q[t] |
x[t] |
Q[t+1] |
Y[t+1] |
q0 |
z1 |
q1 |
y0 |
q1 |
z0 |
q1 |
y1 |
q1 |
z0 |
q1 |
y1 |
q1 |
z1 |
q2 |
y1 |
Zaprojektować subtraktor szeregowy:
Graf automatu Mealy'ego:
z2,y1 z0,y0
z3,y0
z1,y1 z2,y0
z3,y1
z1,y0 z0,y1
Przejście z automatu Mealy'ego na automat Moore'a:
Tablica przejść: Tablica wyjść:
|
b0 |
b1 |
z0 |
b0 |
b1 |
z1 |
b1 |
b1 |
z2 |
b0 |
b0 |
z3 |
b0 |
b1 |
|
b0 |
b1 |
z0 |
y0 |
y1 |
z1 |
y1 |
y0 |
z2 |
y1 |
y0 |
z3 |
y0 |
y1 |
|
b0/q0 |
b1 |
z0 |
b0y0/q01 |
b1y1/q11 |
z1 |
b1y1/q02 |
b1y0/q12 |
z2 |
b0y1/q03 |
b0y0/q13 |
z3 |
b0y0/q04 |
b1y1/q14 |
Tablica przejść automatu Moore'a:
sygn. wyjść. |
y1 |
y0 |
y1 |
y1 |
y0 |
y1 |
y0 |
y0 |
y1 |
|
q0 |
q01 |
q02 |
q03 |
q04 |
q11 |
q12 |
q13 |
q14 |
z0 |
q01 |
q01 |
q11 |
q01 |
q01 |
q11 |
q11 |
q01 |
q11 |
z1 |
q02 |
q02 |
q12 |
q02 |
q02 |
q12 |
q12 |
q02 |
q12 |
z2 |
q03 |
q03 |
q13 |
q03 |
q03 |
q13 |
q13 |
q03 |
q13 |
z3 |
q04 |
q04 |
q14 |
q04 |
q04 |
q14 |
q14 |
q04 |
q14 |
q03 = q0
q01 = q04 = q13 = q1
q02 = q11 = q14 = q2
q12 = q3
Zminimalizowana tablica przejść automatu Moore'a:
sygn. wyjść. |
y1 |
y0 |
y1 |
y0 |
|
q0 |
q1 |
q2 |
q3 |
z0 |
q1 |
q1 |
q2 |
q2 |
z1 |
q2 |
q2 |
q3 |
q3 |
z2 |
q0 |
q0 |
q1 |
q1 |
z3 |
q1 |
q1 |
q2 |
q2 |
Graf automatu Moore'a:
z2
y1
z0,z3
z1 z1 z2
z0,z3
y0 z2
y0
z0,z3 z2
z1 z1
y1
z0,z3
Alfabet wejściowy:
Z = {z0,z1,z2,z3}
z0 = 00
z1 = 01
z2 = 10
z3 = 11
Alfabet wyjściowy:
Y = {y0,y1}
y0 = 0
y1 = 1
Stany wewnętrzne:
Q = {q0,q1,q2,q3}
q0 - stan początkowy
Funkcja przejść:
Gi+ = 0(q01(z0q12(z1q23(z1q34(z2q1,z0q2,z3q2,z1q3)4,z2q1,z0q2,z3q2)3,z2q0, z0q1,
z3q1)2,z3q1,z1q2,z2q0)1)0
Funkcja wyjść:
Q[t] |
Y[t+1] |
q0 |
y1 |
q1 |
y0 |
q2 |
y1 |
q3 |
y0 |
Symulacja komputerowa:
x = 111110 - 100101
x = {z1,z2,z3,z2,z2,z3}
Q[t] |
x[t] |
Q[t+1] |
Y[t+1] |
q0 |
z1 |
q2 |
y1 |
q2 |
z2 |
q1 |
y0 |
q1 |
z3 |
q1 |
y0 |
q1 |
z2 |
q0 |
y1 |
q0 |
z2 |
q0 |
y1 |
q0 |
z3 |
q1 |
y0 |
Uwagi i wnioski:
Symulacja komputerowa jest bardzo dobrym sposobem na testowanie poprawności układu na poziomie grafu. Dzięki niej możemy zauważyć i poprawić ewentualne błędy jeszcze w trakcie projektowania danego układu.
1
q5
q3
q2
q1
q0
b1
b0
q2
q4
q4
q5
q6
q7
q9
q8
q0
q1
q2
q3
q1
q0
q3
q2
q1
q0