D. Dascalu, Gh. Stefan, Gh. Brezeanu, A. Rusu - Dispozitive Si Circuite Electronice - Probleme
labVHDL10 E new - cs.ucv.ro · ,6' prghoduh 9+'/ 0rghoduhd xqxl uhfxqrvf wru gh vhfyhq glqdplf...
Transcript of labVHDL10 E new - cs.ucv.ro · ,6' prghoduh 9+'/ 0rghoduhd xqxl uhfxqrvf wru gh vhfyhq glqdplf...
ISD modelare VHDL
Laborator 10 Modelarea şi sinteza FSM
10.1 Prezentare generală
Modelarea VHDL a maşinilor de stare depinde de modelul maşinii (Mealy, Moore, Medvedev).
Ideea de bază este de a împărţi schema într-un bloc secvenţial care memorează starea prezentă şi un bloc combinaţional pentru generarea semnalelor de excitaţie şi semnalelor de ieşire.
Blocul secvenţial este un registru paralel-paralel realizat cu bistabile D sincrone comutabile pe front.
Pentru modelul Mealy se consideră schema bloc din Fig. 4.1.
Fig. 10.1
Semnalele saSP şi saSU reprezintă starea prezentă respectiv starea
următoare. În programul VHDL acestea pot să apară fie codificate binar fie în notaţie simbolică (vezi exemplele de mai jos) .
Pentru modelul Moore se consideră schema bloc din Fig. 10.2.
Registru stare
CLC stare urmatoare
n
saSU
CLC iesiri
n
saSP
pmiaData
iClock
oaQ
ISD modelare VHDL
Fig. 10.2
Se observă că structura este foarte asemănătoare cu cea de la modelul Mealy dar valoarea ieşirilor nu depinde de valorile comenzilor externe ci doar de starea prezentă.
Pentru modelul Medvedev se consideră schema bloc din Fig. 10.3.
Fig. 10.3
Deşi în general pentru modelul Medvedev se consideră că numărul
variabilelor de stare este identic cu numărul ieşirilor, în anumite situaţii se pot utiliza mai multe variabile de stare (n>p) pentru a simplifica implementarea.
ISD modelare VHDL
10.2 Modelarea unui recunoscător de secvenţă dinamic Moore
Pentru exemplificare vom consideraun recunoscător de secvenţă dinamic care semnalează prin 1 logic apariţia în şirul de biţi de la intrare a secvenţei utile 1010.
Schema bloc a dispozitivului este cea din Fig. 10.4. Diagrama de stare
pentru modelul Moore este prezentată în Fig. 10.5.
Fig. 10.4
Diagrama de stare a modelului pentru dispozitivul avut în vedere este prezentată în Fig. 10.5.
Fig. 10.5
În funcţie de modul de asignare a stărilor, pot fi folosite diferite variante pentru scrierea programului de modelare. Vom analiza două variante de modelare în funcţie de modul de specificare a asignării.
Registru stare
CLC stare urmatoare
n
saStareUrmatoare
CLC iesiri
n
saStarePrezenta
iData
iClock
oRecunoscut
ISD modelare VHDL
10.2.1 Modelarea cu folosirea notaţiei simbolice
În acest caz stările sunt de tip enumerare, cu nume simbolice. Asignarea stărilor se realizează automat sau se declară de către proiectant. Avantajul îl reprezintă uşurinţa citirii şi interpretării programului de modelare şi a rezultatului simulării. Se recomandă în special atunci când nu ne interesează codificarea stărilor.
Programul pentru modelare este cel din Fig. 10.6 iar rezultatul
simulării este prezentat în diagrama din Fig. 10.7.
Fig. 10.6
ISD modelare VHDL
Tipul enumerare tStari este declarat în linia program 37. Variabilele de tip tStari sunt declarate în linia program 38.
Starea următoare este generată cu instrucţiunea de asignare condiţiontă din liniile program 40-50.
Tranziţia stărilor este controlată cu ajutorul instrucţiunii din liniile program 51-52.
Pentru generarea ieşirii se utilizează instrucţiunea de asignare din linia program 53.
Fig. 10.7
10.2.2 Modelarea cu folosirea stărilor codificate
Este o soluţie complet opusă celei prezentate anterior în sensul că toate stările sunt reprezentate prin combinaţia de cod specifică asignării utilizate. În exemplul considerat a fost aleasă o asignare naturală deci avem nevoie de 3 variabile de stare.
Programul pentru modelare este cel din Fig. 10.8 În acest caz semnalele saStarePrezentă şi saStareUrmătoare sunt
vectori de aceeaşi lungime şi anume lungimea vectorilor de stare (3) aşa cum se specifică în linia program 38.
Generarea stării următoare este modelată prin instrucţiunea din liniile program 40-50.
Tranziţia stărilor se realizează conform instrucţiunii de asignare din liniile program 51-52.
Rezultatul execuţiei testbench-ului propus este cel din Fig. 10.9.
ISD modelare VHDL
Fig. 10.8
Fig. 10.9 10.3 Modelarea unui recunoscător de secvenţă dinamic Mealy
Pentru exemplificare vom considera un recunoscător de secvenţă dinamic care semnalează prin 1 logic apariţia în şirul de biţi de la intrare a secvenţei utile 1010.
Schema bloc a dispozitivului este cea din Fig. 10.4. Diagrama de stare pentru modelul Mealy este prezentată în Fig. 10.11.
ISD modelare VHDL
Fig. 10.10
Diagrama de stare a modelului Mealy este cea din Fig. 10.11.
S0 S3S1
INIT#
0/0 1/0 1/00/0
1/0
0/1
1/0
S2
0/0
Fig. 10.11
10.3.1 Modelarea cu folosirea stărilor codificate
Programul de modelare este prezentat în Fig. 10.12. Deoarece modelul Mealy are în acest caz numai 4 stări, sunt necesare două
variabile de stare. Rezultă că semnalele saStarePrezentă şi saStareUrmătoare sunt vectori
logici cu lungimea de doi biţi, declaraţi în linia program 37. Generarea stării următoare este desrisă cu instrucţiunea de asignare
condiţionată din liniile program 39-47. Tranziţia stărilor şi iniţializarea asincronă se realizează cu instrucţiunea
din liniile program 48-49.
ISD modelare VHDL
Valoarea de la ieşire este calculată în linia program 50. Rezultatul verificării este prezentat în diagrama din Fig. 10.13
Fig. 10.12
Fig. 10.13
10.3.2 Modelarea cu folosirea notaţiei simbolice
Să se modifice programul de modelare din în Fig. 10.12, pentru diagrama
din Fig. 10.11, folosind notația simbolică a stărilor așa cum s-a văzut în Fig. 10.6. Apoi să se verifice prin simulare implementarea.
ISD modelare VHDL
10.4 Modelarea unui numărător modulo 5 Gray cu ştergere sincronă Diagrama de stare a numărătorului este cea din Fig. 10.16.
Fig. 10.16
Programul pentru modelare este cel din Fig. 10.17. Diagrama de timp din Fig. 10.18 este rezultatul unei simulări a
schemei obţinute.
Fig. 10.17
ISD modelare VHDL
Fig. 10.18
10.5 Modelarea unui numărător modulo 5 Gray reversibil Diagrama de stare a numărătorului este cea din Fig. 10.19. Programul pentru modelare este cel din Fig. 10.20. Se observă că modelul este un compromis între modelarea cu variabile
de stare simbolice şi varianta cu variabile de stare codificate binar. Asignarea stărilor (în cod Gray) se realizează în liniile program 36-40 prin declararea unor constante. În locul codului unei variabile de stare se va utiliza numele constantei asignate.
Modelul din liniile program 42-55 este asemănător celui care foloseşte reprezentarea simbolică a variabilelor de stare.
Diagrama de timp din Fig. 10.21 este rezultatul unei simulări a schemei obţinute.
Fig. 10.19
ISD modelare VHDL
Fig. 10.20
Fig. 10.21
ISD modelare VHDL
10.6 Modelarea unui numărător modulo 5 Gray cu autoblocare
Diagrama de stare a numărătorului este cea din Fig. 10.22. Programul pentru modelare este cel din Fig. 10.23. Se observă că modelul este un compromis între modelarea cu variabile
de stare simbolice şi varianta cu variabile de stare codificate binar. Asignarea stărilor (în cod Gray) se realizează în liniile program 36-40 prin declararea unor constante. În locul codului unei variabile de stare se va utiliza numele constantei asignate.
Modelul din liniile program 42-55 este asemănător celui care foloseşte reprezentarea simbolică a variabilelor de stare.
Diagrama de timp din Fig. 10.24 este rezultatul unei simulări a schemei obţinute.
Fig. 10.22
ISD modelare VHDL
Fig. 10.23
Fig. 10.24