Modelarea in VHDL a automatelor secventiale

Slides:



Advertisements
Prezentări similare
ELECTRONICĂ II Notiţe de curs Cursul nr. 8
Advertisements

Algoritmii Dijkstra si Bellman-Ford pentru determinarea costului minim
-Algebra Relațională II-
Muşcături de şarpe.
Registrul Potentialilor Contractori (RPC)
Recapitulare – rezolvați următorul rebus:
Sisteme de calcul în timp real
ELECTRONICĂ ANALOGICĂ
Absorbant dinamic de vibraţii
TEORIA SISTEMELOR AUTOMATE
MODELE USI PVC 100% MADE IN GERMANY.
TEORIA SISTEMELOR AUTOMATE
Structura sistemelor de calcul (03-5)
Incluziune si valorizare sociala
ELECTRONICĂ ANALOGICĂ
Universitatea Politehnica Bucuresti Anul universitar
Reorganizarea judiciară, între mit și realitate
GoPro.net Managementul proceselor de business si al documentelor aferente Integrator: CG&GC IT SA Partener: GoPro Ltd. Islanda 12 Aprilie 2005.
Birotica  Excel_2 C6 / Prezentare generală Ferestra Excel
Curs 4 Analiza structurii unei lucrări (de ce mi-a plăcut această lucrare?) Analiza conţinutului unei abordări în QA.
Constantin Alexandru Sebastian
Facultatea de Informatică Universitatea “Al. I
ELECTRONICĂ ANALOGICĂ
Conținut Matrice.
DISPOZITIVE DE INTRARE
MEDIUL LIMBAJULUI DE PROGRAMARE STUDIAT
PROTOCOALE PE O LEGĂTURĂ DE DATE
1 CIRCUITE NUMERICE III.2.3 Numărătoare sincrone
Sisteme Încorporate Curs 2.
Activitatea Serviciului Informatizare-Comunicaţii în anul 2004
Continutul cursului Conceptul de arhitectura software
Distribuit de.
Universitatea Politehnica Bucuresti Anul universitar
Organizarea informaţiilor pe disc
Generalități despre fișiere
PROTOCOALE PE O LEGĂTURĂ DE DATE
Armare/Dezarmare centrale DSC prin BGSM120
Programare Avansata cu FPGA - 2
SORTAREA PRIN METODA BULELOR
2. Unitatea aritmetică și logică
Algoritmi.
SISTEME ANALOGICE DE INTERFAȚARE ȘI CONDIȚIONARE
PIATA CREDITULUI IN ROMANIA – FAST FORWARD >>
ALGORITMI PENTRU SORTAREA UNUI VECTOR
TDA şir Structuri de date şi algoritmi -laborator-
5. Introducere în arhitecturi paralele
Verificarea unei relatii între date. Funcţia IF Functia COUNTIF
Tarifele de transport în perioada octombrie 2016 – septembrie 2019
METODA PROIECTULUI.
concepte si instrumente de lucru e-Learning si software educational
UNIUNEA EUROPEANĂ Fondul Social European GUVERNUL ROMANIEI
Elena Apostolescu, FCCA
Cursul 7: Memorarea şi managementul informațiilor economice
Curs 10-Operatii cu pointeri -Pointeri la tablouri
Teoremele lui Kirchhoff
ESANTIONAREA SI CUANTIZAREA IMAGINILOR 1. Introducere
Zidiţi Casa! Eu Mă voi bucura de lucrul acesta şi voi fi proslăvit, zice Domnul Hagai 1:1-2:23.
Sisteme de operare în timp real Contiki
A i r b o r.
Curs 9-Pointeri la variabile -Pointeri la siruri de caractere
Formularul 097“Notificare privind aplicarea / încetarea aplicării sistemului TVA la încasare“ 2015.
Structura sistemelor de calcul (02-3)
VĂ ROG SĂ PĂSTRAŢI LINIŞTEA !.
TEORIA SISTEMELOR AUTOMATE
Facultatea de ………………………………………
Metodologia elaborării proiectelor de intervenţie
Tipuri de placi video,sunet si retea
Transcriere de prezentare:

Modelarea in VHDL a automatelor secventiale Finite state machines Modelarea in VHDL a automatelor secventiale

Tipuri de automate Un automat secvential are Tipuri: Intrari Stari (un numar finit de stari) Iesiri Tranzitii dintr-o stare in alta Tipuri: Moore: iesirile depind doar de starea in care se afla automatul Mealy: iesirile depind atat de stare, cat si de intrari

Implementare in VHDL Se poate face cu Un proces Doua procese Trebuie sa ne definim un tip stari (de tip enumerare) TYPE stari IS (s0, s1, s2, s3); TYPE stari IS (init, add, shift); Trebuie sa avem: Fie stare prezenta (present_state) si stare urmatoare (next_state) de tip stari Fie doar stare (state) de tip stari Starile (present_state, next_state, state) pot fi semnale sau variabile, dependent de implementare (neaparat semnale la implementarea cu doua procese) Procesul principal determina starea urmatoare si iesirile Contine un CASE dupa starea prezenta, iar pe fiecare ramura de CASE contine instructriuni IF in functie de intrari

Implementare Cu doua procese: Cu un proces: Moore / Mealy: Un proces avanseaza starea si e senzitiv la clock si face doar present_state<=next_state; Celalalt proces e senzitiv la present_state si la intrari Cu un proces: Procesul e senzitiv la clock Starea stare poate fi variabila Moore / Mealy: La Moore iesirile depind doar de stare, nu si de intrari La Mealy iesirile depind atit de stare, cit si de intrari Se recomanda lucrul pe frontul cazator al semnalului de clock, daca restul circuitelor secventiale (registre, bistabile) din schema lucreaza pe frontul crescator al semnalului de clock Iesirile FSM sint comenzi pentru celelalte circuite

Exemplu Moore x=‘0’ x=‘1’ stare = s0 z=“00” s0 s3 stare = s1 z=“01” s1

ENTITY FSM_Moore IS GENERIC(tp:TIME:=5ns); PORT(x: IN BIT; clock: IN BIT; z: OUT BIT_VECTOR(1 DOWNTO 0)); END ENTITY; ARCHITECTURE un_proces OF FSM_Moore IS TYPE stari IS (s0, s1, s2, s3); SIGNAL afisare_stare: stari; BEGIN PROCESS (clock) VARIABLE stare: stari:=s0; --VARIABLE count: integer:=0; IF clock='0' AND clock'EVENT THEN --afisare_stare<=stare; -- vizualizez starea prezenta CASE stare IS WHEN s0 => z<="00" after tp; --count:=0;--initializare count IF x='0' THEN stare:=s0; ELSE stare:=s3; END IF;

WHEN s1 => z<="01" after tp; --count:= count+1;-- incrementare count IF x='0' THEN stare:=s1; ELSE stare:=s0; END IF; WHEN s2 => z<="10" after tp; --IF count>=5 THEN -- testare count stare:=s2; WHEN s3 => z<="11" after tp; END CASE; afisare_stare<=stare;--vizualizez starea urmatoare END PROCESS; END ARCHITECTURE;

Exemplu Mealy x=‘0’ x=‘1’ present_state = s0 s0 / “00” s3 / “11”

ENTITY FSM_Mealy IS GENERIC(tp:TIME:=5ns); PORT(x: IN BIT; clock: IN BIT; z: OUT BIT_VECTOR(1 DOWNTO 0)); END ENTITY; ARCHITECTURE doua_procese OF FSM_Mealy IS TYPE stari IS (s0, s1, s2, s3); SIGNAL present_state, next_state: stari:=s0; BEGIN proc_clock: PROCESS(clock) IF clock='0' AND clock'EVENT THEN present_state <= next_state; END IF; END PROCESS proc_clock; avansare_stare: PROCESS (present_state, x) --VARIABLE count: integer:=0; CASE present_state IS WHEN s0 => --count:=0;--initializare count IF x='0' THEN next_state<=s0; z<="00" after tp; ELSE next_state<=s3; z<="11" after tp;

WHEN s1 => --count:= count+1;-- incrementare count IF x='0' THEN next_state<=s1; z<="01" after tp; ELSE next_state<=s0; z<="00" after tp; END IF; WHEN s2 => --IF count>=5 THEN -- testare count next_state<=s2; z<="10" after tp; WHEN s3 => END CASE; END PROCESS avansare_stare; END ARCHITECTURE;