Sunteți pe pagina 1din 25

SISTEME CU CIRCUITE INTEGRATE DIGITALE (EA II)

ELECTRONICA DIGITALA (CAL I)

Prof.univ.dr.ing. Oniga Ștefan


Automate finite
Automate finite

 Modelul abstract al dispozitivelor de prelucrare a informației se


numește AUTOMAT (mașină de stare)
 Un automat este un sistem dinamic a cărui comportare se poate
descrie ca o succesiune de evenimente numite stări, ce apar la
momente discrete ale variabilei timp

• Automat finit - dacă mulțimea stărilor interne s(t) este finită.


• FSM = Finite state machine
• Automatul finit interacționează cu mediul:
• La un anumit moment de timp t este supus unui semnal de intrare x(t)
• La momentul t+dt oferă ca răspuns la ieșire semnalul z(t)
Automate finite
• Automat finit - cvintuplu A = { X, Z, S, f, g }
X , Z si S sunt mulțimi finite nevide, f și g sunt funcții definite pe aceste
mulțimi
X = { x1, x2, … xn } – mulțimea variabilelor de intrare
Z = { z1, z2, … zn } – mulțimea variabilelor de ieșire
S = { s1, s2, … sn } – mulțimea stărilor automatului
• Funcția de tranziție f : S  X → S
Transformă mulțimea tuturor perechilor ordonate (si, xj) în mulțimea S
Are rolul de a preciza starea în care ajunge automatul în urma aplicării
unei intrări (dă starea următoare, funcție de intrare şi de starea prezentă)
 Funcția de ieșire g : S  X → Z
Transformă mulțimea tuturor perechilor ordonate (si, xj) în mulțimea Z
Are rolul de a preciza ieşirea automatului în urma aplicării unei intrări
Automate sincrone
• Sunt circuite logice secvențiale care prezintă în structura lor:
– circuit logic combinațional pentru determinarea stării viitoare (pe baza intrărilor și
a stării prezente);
– registru de stare pentru memorarea stării curente;
– circuit logic combinațional pentru determinarea valorilor ieșirilor (pe baza intrărilor
și a stării prezente).
CLK RESET

NEXT STATE OUTPUT OUTPUTS


INPUTS STATE REGISTER FUNCTION

Mealy model

• După dependența ieșirilor de intrări, automatele se clasifică în:


– automatele de tip Moore, ieșirea este dependentă exclusiv de starea prezentă;
– automatele de tip Mealy, ieșirea este dependentă atât de starea prezentă cât și
de intrări.
Automate sincrone

• După întârzierea ieșirilor față de intrări, automatele se clasifică in:


– automatele imediate, ieșirea este generată dintr-un circuit combinațional;
– automatele cu întârziere, ieșirea este generată de un circuit combinațional urmat
de un registru.
Automate sincrone
• Comportamentul automatelor poate fi descris în mai multe forme de
reprezentare:
– Organigrama
– Tabelul de tranziție al stărilor
– Graful de tranziție al stărilor

• Organigrama este o formă de reprezentare grafică funcționării unui


automat. O organigramă conține următoarele tipuri de simboluri:
– Simbolul de stare (dreptunghi) care conține în interior numele ieșirilor active în
acea stare și în exterior numele simbolic al stărilor și codul binar al acestora.
– Simbolul de decizie (romb) care conține în interior o condiție a intrărilor și în
exterior valorile cu care se poate evalua condiția 0 și 1.
– Simbolul de ieșire imediată (oval) care conține în interior numele ieșirilor activate
în cazul îndeplinirii condiției din simbolul de decizie precedent.
Tabelul de tranziții
• Include informații complete despre comportamentul automatului într-o
formă ușor de utilizat pentru implementare. Tabelul conține următoarele
secțiuni:
– Intrări, câte o coloană pentru fiecare intrare. Valorile logice ale intrărilor pot fi 0 și
1 sau pot fi considerate indiferente pentru tranziția din anumita stare (se
marchează cu X).
– Stare prezenta, pe o coloană denumirea generică a stării curente.
– Stare viitoare, pe o coloana denumirea generică a stării viitoare.
– Ieșiri, cate o coloana pentru fiecare ieșire.
Graful de tranziții
• Este o formă de reprezentare grafică a comportamentului unui automat într-o
manieră algoritmică, utilizând noduri și arce. Nodurile sunt asociate stărilor, iar
arcele modelează tranzițiile între stări. Arcul pornește din nodul asociat stării
prezente și ajunge in nodul asociat stării viitoare.
• În noduri se marchează codul stării (și ieșirea la automatele Moore).
• Pe arce se marchează:
• condițiile intrărilor la automatele Moore
• condițiile intrărilor și starea ieșirilor la automatul Mealy.

Automat Mealy Automat Moore


Codificarea stărilor

• Se poate face în diferite feluri:


• Numărare efectivă, în binar: de exemplu, la o codificare pe 3 biți, se
numără stările de la 000, 001, 010, … 111
• Codul Gray, în care numerele consecutive diferă doar printr-un singur bit:
000, 001, 011, 010 …
• Codul “one-hot”, în care avem nevoie de atâția biți câte stări există. În
starea i, toți biții sunt 0, mai puțin bitul i, care e pe 1 (hot).
• Codul “one-cold”, asemănător cu cel de mai sus, numai că valorile sunt
inversate.

Zecimal Binar One-hot Gray


0 000 00000001 000
1 001 00000010 001
2 010 00000100 011
3 011 00001000 010
4 100 00010000 110
5 101 00100000 111
6 110 01000000 101
7 111 10000000 100
Detectarea unei secvențe cu un automat Moore

• Se cere desenarea grafului de tranziții pentru un automat Moore folosit pentru


detectarea unei secvențe.
• Secvența de detectat 1101.
• Starea ieșirii va fi 1 daca se va detecta secvența așteptată.
• Starea inițială este s0 corespunzătoare stării in care încă nu s-a recepționat nici un 1.

0
Registrul de stare
CLK RESET

NEXT STATE OUTPUT OUTPUTS


INPUTS STATE REGISTER FUNCTION

Mealy model
CLC pentru determinarea stării viitoare

CLK RESET

NEXT STATE OUTPUT OUTPUTS


INPUTS STATE REGISTER FUNCTION

Mealy model
CLC pentru determinarea ieșirii
CLK RESET

NEXT STATE OUTPUT OUTPUTS


INPUTS STATE REGISTER FUNCTION

Mealy model
Simulare automat Moore
pentru detectarea secvenței 1101
Detectarea unei secvențe cu un automat Mealy

• Se cere desenarea grafului de tranziții pentru un automat Mealy folosit pentru


detectarea unei secvenței 1101.
• Starea ieșirii va fi 1 daca se va detecta secvența așteptată.
• Starea inițială este s0 corespunzătoare stării in care încă nu s-a recepționat nici un 1.
Registrul de stare automat Mealy
CLK RESET

NEXT STATE OUTPUT OUTPUTS


INPUTS STATE REGISTER FUNCTION

Mealy model
CLC pentru determinarea stării viitoare

CLK RESET

NEXT STATE OUTPUT OUTPUTS


INPUTS STATE REGISTER FUNCTION

Mealy model
CLC pentru determinarea ieșirii

CLK RESET

NEXT STATE OUTPUT OUTPUTS


INPUTS STATE REGISTER FUNCTION

Mealy model
Simulare automat Mealy pentru detectarea
secvenței 1101
Exemplu FSM

R
• Semafor (simplu)
– Stări: roșu, roșu-galben, verde, galben
– Intrări: temporizatoare pentru diferitele stări RY Y

– Ieșiri: starea
G
Codificare stări semafor (Verilog)

• Semafor se află in fiecare stare un timp determinat.


• Codificare binară:

module light( input clk, rst, output reg [2:0] led);

// codificare stari

parameter RED = 2'b00;


parameter RY = 2'b01;
parameter GREEN = 2'b10;
parameter YELLOW = 2'b11;

reg [15:0] timer;


reg [1:0] state_reg;
reg [1:0] next_state;

// registru de stare

always @ (posedge clk)


if (rst)
state_reg <= RED;
else
state_reg <= next_state;
CLC pentru determinarea stării viitoare
always @ (*)
case(state_reg)
RED: begin
if (timer == 0)
next_state <= RY;
else
next_state <= R;
R end
RY: begin
if (timer == 0)
next_state <= GREEN;
else
RY Y next_state <= RY;
end
YELLOW: begin
if (timer == 0)
G next_state <= RED;
else
next_state <= YELLOW;
end
GREEN: begin
if (timer == 0)
next_state <= YELLOW;
else
next_state <= GREEN;
end
default:
next_state <= 2'bxx;
endcase
Temporizator
always @ (posedge clk)
case(state_reg)
RED: begin
if (timer == 0)
timer <= 500; //next_state <= RY;
else

end
timer <= timer - 1; • Încarcă noua valoare când
RY: begin
if (timer == 0)
se schimbă starea
timer <= 4000; //next_state <= GREEN;
else • Numărare în jos
timer <= timer - 1;
end • ==0: schimbare stare
YELLOW: begin
if (timer == 0)
timer <= 4500; //next_state <= RED;
else
timer <= timer - 1;
end
GREEN: begin
if (timer == 0)
timer <= 500; //next_state <= YELLOW;
else
timer <= timer - 1;
end
endcase
CLC pentru decodificarea ieșirilor

always @ (*)
case (state_reg)

RY : led <= 3'b110;


RED: led <= 3'b100;
YELLOW: led <= 3'b010;
GREEN: led <= 3'b001;
default: led <= 3’b100;

endcase

endmodule

S-ar putea să vă placă și