13
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 p m iaData iClock oaQ

labVHDL10 E new - cs.ucv.ro · ,6' prghoduh 9+'/ 0rghoduhd xqxl uhfxqrvf wru gh vhfyhq glqdplf 0rruh 3hqwux h[hpsolilfduh yrp frqvlghudxq uhfxqrvf wru gh vhfyhq

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: labVHDL10 E new - cs.ucv.ro · ,6' prghoduh 9+'/ 0rghoduhd xqxl uhfxqrvf wru gh vhfyhq glqdplf 0rruh 3hqwux h[hpsolilfduh yrp frqvlghudxq uhfxqrvf wru gh vhfyhq

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

Page 2: labVHDL10 E new - cs.ucv.ro · ,6' prghoduh 9+'/ 0rghoduhd xqxl uhfxqrvf wru gh vhfyhq glqdplf 0rruh 3hqwux h[hpsolilfduh yrp frqvlghudxq uhfxqrvf wru gh vhfyhq

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.

Page 3: labVHDL10 E new - cs.ucv.ro · ,6' prghoduh 9+'/ 0rghoduhd xqxl uhfxqrvf wru gh vhfyhq glqdplf 0rruh 3hqwux h[hpsolilfduh yrp frqvlghudxq uhfxqrvf wru gh vhfyhq

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

Page 4: labVHDL10 E new - cs.ucv.ro · ,6' prghoduh 9+'/ 0rghoduhd xqxl uhfxqrvf wru gh vhfyhq glqdplf 0rruh 3hqwux h[hpsolilfduh yrp frqvlghudxq uhfxqrvf wru gh vhfyhq

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

Page 5: labVHDL10 E new - cs.ucv.ro · ,6' prghoduh 9+'/ 0rghoduhd xqxl uhfxqrvf wru gh vhfyhq glqdplf 0rruh 3hqwux h[hpsolilfduh yrp frqvlghudxq uhfxqrvf wru gh vhfyhq

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.

Page 6: labVHDL10 E new - cs.ucv.ro · ,6' prghoduh 9+'/ 0rghoduhd xqxl uhfxqrvf wru gh vhfyhq glqdplf 0rruh 3hqwux h[hpsolilfduh yrp frqvlghudxq uhfxqrvf wru gh vhfyhq

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.

Page 7: labVHDL10 E new - cs.ucv.ro · ,6' prghoduh 9+'/ 0rghoduhd xqxl uhfxqrvf wru gh vhfyhq glqdplf 0rruh 3hqwux h[hpsolilfduh yrp frqvlghudxq uhfxqrvf wru gh vhfyhq

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.

Page 8: labVHDL10 E new - cs.ucv.ro · ,6' prghoduh 9+'/ 0rghoduhd xqxl uhfxqrvf wru gh vhfyhq glqdplf 0rruh 3hqwux h[hpsolilfduh yrp frqvlghudxq uhfxqrvf wru gh vhfyhq

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.

Page 9: labVHDL10 E new - cs.ucv.ro · ,6' prghoduh 9+'/ 0rghoduhd xqxl uhfxqrvf wru gh vhfyhq glqdplf 0rruh 3hqwux h[hpsolilfduh yrp frqvlghudxq uhfxqrvf wru gh vhfyhq

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

Page 10: labVHDL10 E new - cs.ucv.ro · ,6' prghoduh 9+'/ 0rghoduhd xqxl uhfxqrvf wru gh vhfyhq glqdplf 0rruh 3hqwux h[hpsolilfduh yrp frqvlghudxq uhfxqrvf wru gh vhfyhq

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

Page 11: labVHDL10 E new - cs.ucv.ro · ,6' prghoduh 9+'/ 0rghoduhd xqxl uhfxqrvf wru gh vhfyhq glqdplf 0rruh 3hqwux h[hpsolilfduh yrp frqvlghudxq uhfxqrvf wru gh vhfyhq

ISD modelare VHDL

Fig. 10.20

Fig. 10.21

Page 12: labVHDL10 E new - cs.ucv.ro · ,6' prghoduh 9+'/ 0rghoduhd xqxl uhfxqrvf wru gh vhfyhq glqdplf 0rruh 3hqwux h[hpsolilfduh yrp frqvlghudxq uhfxqrvf wru gh vhfyhq

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

Page 13: labVHDL10 E new - cs.ucv.ro · ,6' prghoduh 9+'/ 0rghoduhd xqxl uhfxqrvf wru gh vhfyhq glqdplf 0rruh 3hqwux h[hpsolilfduh yrp frqvlghudxq uhfxqrvf wru gh vhfyhq

ISD modelare VHDL

Fig. 10.23

Fig. 10.24