Sunteți pe pagina 1din 26

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

LABORATOR nr. 8
Circuite logice secveniale - FSM Proiectarea unui microprocesor.

Scopul laboratorului
n cadrul acestei lucrri se prezint modul n care se realizeaz analiza i sinteza circuitelor logice secveniale i implementarea acestora utiliznd limbajul VHDL.

2. Consideraii teoretice
2.1 Circuite secveniale
n laboratorul anterior am aruncat o privire asupra proiectrii i implementrii unui bistabil elementul de memorare cel mai important utilizat n circuitele cu microprocesor. Am vzut c un singur bistabil este capabil s memoreze doar un singur bit de informaie sau un singur bit de istoric. Circuitul trebuie s conin mai multe bistabile pentru ca un circuit secvenial s-i poat aminti mai multe intrri i o istorie mai lung. Aceast colecie de bistabile (D) care sunt utilizate pentru a memora istoria complet a intrrilor anterioare este denumit ca fiind o memorie de stare (stare memorat). ntreg coninutul memoriei de stare de la un moment de timp dat formeaz o codificare binar care reprezint istoria complet a intrrilor pn la acel moment de timp. Ne referim la aceasta codificare binar memorat n memoria de stare ca fiind o instan a strii unui sistem din acel moment. Semnalele de ieire ale circuitului secvenial sunt generate de ctre circuitul logic de ieire. Reamintim c ieirile circuitelor secveniale sunt dependente de intrrile anterioare i curente. Deoarece toate intrrile sunt reamintite ca stri din memoria de stare, putem spune c ieirile sunt dependente de coninutul memoriei de stare. De aceea, logica de ieire este pur i simplu un circuit combinaional care este dependent de coninutul strii memorate i poate sau nu poate fi dependent de intrrile curente. Semnalele de ieire care genereaz logica de ieire constituie aciunile i operaiile care sunt executate de ctre circuitul secvenial. Prin urmare, un circuit secvenial poate executa diferite operaii n stri diferite prin simpla generare de semnale diferite de ieire. Dac dorim ca un circuit secvenial s execute, s spunem, patru operaii diferite, atunci vom avea nevoie de patru stri cte o stare pentru fiecare operaie. Bineneles dac pot fi executate cteva operaii n paralel, atunci le putem transfera la o singur stare. Dar deocamdat, pentru a pstra lucrurile mai simple, vom atribui pur i simplu o operaie unei stri. Mai departe, este posibil s existe o operaie care vom dori s se repete de, s spunem, o sut de ori. n loc s transferm aceeai operaie ctre o sut de stri diferite, vom folosi doar o singur stare i cteva forme de bucle capabile s repete aceast stare de o sut de ori. De aceea, un circuit secvenial funcioneaz prin trecerea de la o stare la alta, genernd diferite semnale de ieire. Partea din interiorul unui circuit secvenial care este responsabil pentru a determina care este starea urmtoare care trebuie s funcioneze este numit circuit logic al strii urmtoare. Bazndu-ne pe starea curent n care se 1

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR afl sistemul (de ex., intrrile anterioare) i pe intrrile curente, logica pentru urmtoarea stare va determina care ar trebui s fie starea urmtoare. Aceast declaraie, de fapt, este echivalent cu a zice c ieirile sunt dependente de intrrile trecute i curente, n timp ce starea este folosit pentru a aminti intrrile trecute i, de asemenea, determin ce ieiri s fie generate. Totui, urmtoarea stare logic este doar un circuit combinaional care are ca intrri coninuturile unor bistabile care genereaz starea memorat i intrrile curente. Ieirile circuitului pentru urmtoarea stare logic sunt utilizate pentru a schimba coninuturile bistabilelor care memoreaz starea. Circuitul schimb starea atunci cnd se schimb coninutul memoriei de stare iar acesta se realizeaz la un front activ al fiecrui ciclu de ceas deoarece valorile sunt scrise ntr-un bistabil la un front activ al ceasului. Viteza cu care circuitul secvenial trece prin stri este determinat de ctre viteza semnalului de ceas. Bistabilele de memorare a strii sunt ntotdeauna activate, astfel c la fiecare front activ al ceasului este stocat o nou valoare n bistabile. Factorul de limitare pentru viteza ceasului este timpul necesar pentru a realiza toate operaiile care sunt asignate unei anumite stri. Toate operaiile asignate unei stri trebuie s se termine ntr-un singur perioad de ceas astfel nct rezultatele s poat fi scrise n regitri la urmtorul front activ al ceasului. Un circuit secvenial este de asemenea cunoscut ca i o main cu stri finite (FSM) deoarece numrul de stri ale memoriei este finit i prin urmare, numrul total de stri diferite posibile este de asemenea finit. Un circuit secvenial este ca i o main care opereaz trecnd pas cu pas printr-o secven a strilor. Dei exist doar un numr finit de stri diferite, FSM poate, totui, s mearg la oricare dintre aceste stri ori de cte ori este necesar. Ca urmare, secvena strilor pe care le poate parcurge un FSM poate fi infinit. Unitatea de control dintr-un microprocesor este o main cu stri finite, de aceea, ca s fim capabil s construim un microprocesor, vom avea nevoie s nelegem construcia i execuia FSM-urilor. n acest laborator, vom vedeam mai nti cum s descriem ct mai precis operaia unei maini cu stri finite utiliznd diagramele de stare. Pe urm, vom studia analiza i sinteza mainilor cu stri finite.

2.1.1 Modele de maini cu stri finite (FSM)


Aa cum am mai menionat, circuitul logic de ieire este dependent de starea curent i poate sau nu fi dependent de intrrile curente. Faptul c logica de ieire poate sau nu poate fi dependent de intrrile curente d natere la dou modele diferite de FSM. Figura 2.1. (a) prezint o schem general pentru un FSM Moore unde ieirile sunt dependente doar de starea curent, de ex., coninutul memoriei de stare. Figura 2.1. (b) prezint o schem general pentru un FSM Mealy unde ieirile acestuia sunt dependente de starea curent a mainii i de asemenea de intrrile curente. Singura diferen dintre aceste dou figuri este aceea c pentru un FSM Moore, circuitul logic de ieire are doar starea curent ca intrare, pe cnd, pentru un FSM Mealy, circuitul logic de ieire are ca intrri att starea curent ct i semnalele de intrare. Pentru ambele modele intrrile circuitului logic pentru urmtoarea stare sunt intrrile primare ale automatului i starea curent a mainii. Circuitul logic al strii urmtoare genereaz valori pentru a schimba coninuturile memoriei de stare (strii). Din moment ce memoria de stare este alctuit din unul sau mai multe bistabile de tip D iar coninutul bistabilului de tip D se schimb la orice valoare ia intrarea D la urmtorul front activ al ceasului, pentru a schimba o stare, circuitul logic a strii urmtoare trebuie s genereze valori 2

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR pentru toate intrrile D pentru toate bistabilele. Aceste valori ale intrrilor bistabilelor D sunt denumite valorile de excitaie, deoarece aceste excit sau determin bistabilele de tip D s-i schimbe starea.

Figura 2.1. Modele de maini cu stri finite: (a) FSM Moore; (b) FSM Mealy Figura 2.2. (a) i (b) prezint exemple de automate cu stri finite (FSM) de tip Moore i respectiv Mealy. Cele dou circuite sunt identice cu excepia ieirilor. Pentru automatul Moore, circuitul de ieire este o poart AND cu 2 intrri care i ia valorile de intrare de la ieirile a dou bistabile de tip D. S ne amintim c starea unui FSM este reprezentat de ctre valoarea de ieire a memorie de stare, adic a lui Q (sau Q). Prin urmare, acest circuit este dependent doar de starea curent a mainii. Pentru FSM Mealy, circuitul de ieire este o poart AND cu 3 intrri. Pe lng cele dou intrri de la bistabile, a treia intrare de la aceast poart AND este conectat la intrarea principal C. Cu aceast conexiune, acest circuit de ieire este dependent att de starea curent ct i de intrare, rezultnd astfel un automat (FSM) de tip Mealy. Pentru ambele circuite, memoria de stare este alctuit din dou bistabile de tip D. Avnd dou bistabile, pot fi reprezentate patru combinaii de valori diferite. De aceea, aceast main cu stri finite poate fi n oricare din cele patru stri diferite. Starea n care acest FSM va trece mai departe depinde de valoarea intrrilor D a bistabilelor. Fiecare bistabil din memoria de stare necesit un circuit combinaional pentru a genera urmtoarea valoare a strii pentru intrare (-ri). Din moment ce avem dou bistabile de tip D, fiecare are cte o intrare (D), prin urmare, circuitul logic a strii urmtoare este alctuit din dou circuite combinaionale; unul pentru intrarea D0 i unul pentru D1. Intrrile pentru aceste dou circuite combinaionale sunt Q-urile, care reprezint starea curent a bistabilelor, i intrarea principal C. De notat c nu este necesar ca intrarea C s fie o intrare pentru toate circuitele combinaionale. n circuitul simplu, doar circuitul combinaional de dedesubt este dependent de intrarea C.

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

Figura 2.2. Exemple de maini cu stri finite: (a) Moore; (b) Mealy.

2.1.2 Diagramele de stare


Diagramele de stare sunt utilizate pentru a descrie precis operarea mainilor cu stri finite. O diagram de stare este un grafic orientat cu noduri i arce direct conectate la noduri. Exist cte un nod pentru fiecare stare a FSM-ului iar aceste noduri sunt denumite cu numele strii sau cu codarea acestora. Pentru fiecare tranziie de stare a FSM-ului exist un arc direct conectat la dou noduri. Arcurile pot avea sau nu nume pe ele. Figura 2.3. (a) prezint o diagram de stare simpl avnd patru stri, un semnal de intrare C i un semnal de ieire Y. Cele patru stri sunt etichetate cu patru valori binare codificate 00, 01, 10 i 11. Se va folosi ntotdeauna o stare 0 ca start sau stare de reset dac nu se pornete altfel. Exist trei tranziii necondiionale, de la starea 00 la 01, de la 10 la 00 i de la 11 la 00. Exist doar o singur tranziie condiional de la starea 01 la 10 sau 11. Pentru aceast tranziie condiional de la starea 01, dac condiia (C=0) este true este realizat tranziia de la 01 la 10. Altfel, dac condiia (C=0) este false, ceea ce nseamn c (C=0) este true sau (C=1) este true, atunci este realizat tranziia de la 01 la 11. 4

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

Figura 2.3. Exemple de diagrame: (a) un FSM Moore cu patru stri, un semnal de intrare C i un semnal de ieire Y; (b) un FSM Mealy cu patru stri, un semnal de intrare C i un semnal de ieire Y; (c) un FSM cu cinci stri i dou semnale de intrare A i B. Semnalul de ieire Y din figura 2.3. (a) este etichetat n interiorul fiecrui nod ceea ce denot c fiecare ieire este dependent doar de starea curent. De exemplu, atunci cnd FSM este n starea 01, ieirea Y este setat pe 1, pe cnd, n starea 11, Y este setat pe 0. Prin urmare, aceast diagram a strii este pentru un FSM Moore. Automatul din figura 2.3. (b) este de tip Moore deoarece ieirile sunt reprezentate pe arce, deci depind att de starea curent ct i de intrare. Figura 2.3. (c) prezint o diagram de stare cu cinci stri, dou semnale de intrare i fr semnale de ieire. n practic, toate FSM-urile trebuie s aib semnale de ieire, altfel, nu vor realiza nimic. Cele cinci stri din aceast diagram au primit numele logice s0, s1, s2, s3 i s4. Cele dou semnale de intrare sunt A i B. Din nou vom folosi starea s 0, ca fiind starea de pornire. Din starea s0, exist doar un singur arc necondiional care merge spre s1. Acest arc nedenumit este echivalent ca i cum am avea eticheta AB=xx, ceea ce nseamn c acest arc preia orice combinaie a celor dou semnale de intrare. Din starea s1, exist patru arce de plecare cu patru combinaii diferite ale celor dou semnale de intrare. Starea s2 are doar dou arce de plecare. Totui, cele dou etichete de pe ele acoper cele patru condiii de intrare posibile din moment ce B nu conteaz n ambele cazuri. Starea s3 are doar trei arce de plecare dar din nou, etichetele de pe ea acoper toate condiiile celor patru intrri posibile.

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR Dup cum putem vedea, o diagram de stare este similar cu o organigram a unui program pentru calculator unde nodurile sunt pentru instruciuni sau operaii asupra datelor, iar arcurile sunt pentru controlul secvenei programului. Din cauza acestei similariti, ar trebui s fim capabili s convertim orice program la o diagram de stare. n exemplul 1 se prezint modul cum poate fi convertit un simplu pseudo-code n C la o diagram de stare. Exemplul 1: S se derive diagrama de stare pornind de la urmtorul pseudo-cod: x=5 while (x 0){ output x x=x1 } Pseudo-codul are trei instruciuni de operare a datei i o condiie de test. Fiecare instruciune de operare a datei este transferat ctre un nod (stare), aa cum s-a prezentat n figura 2.4. (a). Pe urm, vom transfera arcele directe ctre diagram bazndu-ne pe secvena execuiei. Pornind de la starea s0 unde este executat instruciunea x = 5, programul va testa condiia (x 0). Dac condiia este true, atunci ieirea instruciunii este executat, altfel, bucla (i programul) este terminat. Pe de alt parte, dac condiia este false, bucla trebuie terminat. Din moment ce nu exist nici o instruciune dup bucl, prin urmare, trebuie s aducem o extra stare fr operare s3 la diagrama de stare pentru ca aceasta s funcioneze. Arcul de la s0 la s3 este etichetat (x 0) , ceea ce nseamn c arcul este preluat atunci cnd condiia (x 0) este false. Dup ce se execut instruciunea de ieire este executat instruciunea de decrementare. Aceast secven este reflectat n arcul necondiional care pornete de la starea s1 ctre s2. Dup execuia instruciunii de decrementare din s2, este din nou testat condiia (x 0) din bucla while. Dac condiia este true, va fi preluat de arcul cu eticheta (x 0) ctre starea s3. Din starea s3, nu se mai iese dect la iniializarea buclei. Starea bucleaz pe ea nsi i nu produce nimic i nu duce nicieri.

Figura 2.4. Diagrama de stare pentru Exemplul 1: (a) operarea datei asignat nodurilor; (b) diagrama de stare complet cu arcuri tranzitorii.

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

2.1.3 Analiza circuitelor secveniale


Se folosete foarte des circuitul secvenial i prin urmare trebuie s-i cunoatem i operaiile. Analiza circuitelor secveniale este procesul n care se d un circuit secvenial (aa cum este dat i n figura 2.2.) i dorim s obinem o descriere precis a operrii circuitului prin derivarea diagramei de stare. Paii pentru analiza circuitelor secveniale sunt urmtorii: 1. Se determin ecuaiile de excitaie de la circuitul logic a strii urmtoare. 2. Se determin ecuaiile strii urmtoare prin mprirea ecuaiilor de excitaie n ecuaii caracteristice bistabilelor. 3. Se determin tabelul strii urmtoare din ecuaiile strii urmtoare. 4. Se determin ecuaiile de ieire de la circuitul logic de ieire. 5. Se determin tabela de ieire de la ecuaiile de ieire. 6. Se realizeaz diagrama de stare din tabela cu stare urmtoare i tabela de ieire. a. Ecuaia de excitaie Ecuaiile de excitaie sunt ecuaiile pentru circuitul logic a strii urmtoare din FSM. Cu alte cuvinte, sunt doar ecuaii de intrare pentru bistabilele de memorare a strii din FSM. Din moment ce logica strii urmtoare este un circuit combinaional, de aceea, determinarea ecuaiilor de excitaie este doar o analiz a circuitului combinaional. Circuitul logic a strii urmtoare care este derivat din aceste ecuaii excit bistabilele provocndu-le schimbarea de stare, de aici numele de ecuaii de excitare. Aceste ecuaii furnizeaz semnale intrrilor bistabilelor i sunt exprimate ca o funcie a strii curente i intrrile pentru FSM. Starea curent este determinat de ctre coninutul curent al bistabilului, care este semnalul de ieire a bistabilului Q (i Q). Exist cte o ecuaie pentru fiecare intrare a bistabilului. n continuare sunt date dou exemple de ecuaii de excitaie pentru cele dou bistabile utilizate n circuitul din figura 2.2. (a). Ecuaia (1) este din circuitul logic a strii urmtoare pentru intrarea D1 a bistabilului 1, iar ecuaia (2) este din circuitul cu urmtoarea stare pentru intrarea D0 a bistabilului 0. D1 = Q1Q0 D0 = Q1Q0 + CQ1 (1) (2)

b. Ecuaia strii urmtoare Ecuaiile stri urmtoare specific care este starea urmtoare a bistabilului i va fi dependent de dou lucruri: 1) de intrrile bistabilelor i 2) comportamentul funcional al bistabilelor. Intrrile bistabilelor sunt furnizate de ctre ecuaiile discutate anterior. Comportamentul funcional al bistabilului este descris, cum s-a artat n laboratorul precedent, prin ecuaia sa caracteristic. Ecuaia caracteristic ne spune ce va fi Qnext, adic starea urmtoare, n funcie de starea curent i intrrile curente. De aceea, pentru a deduce ecuaiile strii urmtoare, vom substitui ecuaiile de excitaie n ecuaiile caracteristice ale bistabilelor. De exemplu, ecuaia caracteristic pentru bistabilul de tip D este: Qnext = D De aceea, nlocuind ecuaiile de excitaie (1) i (2) de mai sus n ecuaia caracteristic pentru bistabilul de tip D ne va da urmtoarele dou ecuaii a strii urmtoare: Q1next = D1 = Q1Q0 (3) Q0next = D0 = Q1Q0 + CQ1 (4) 7

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR c. Tabela strii urmtoare Tabela strii urmtoare este o simpl tabel de adevr provenit din ecuaiile strii urmtoare. Pentru fiecare combinaie a valorilor strii curente (Q) i a valorilor intrrilor, se prezint care ar trebui s fie valorile strii urmtoare (Qnext). Figura 2.5. prezint tabela strii urmtoare obinut din cele dou ecuaii a strii urmtoare (3) i (4). Avnd dou bistabile, Q1Q0, vom avea 4 codificri, 00, 01, 10 i 11 pentru starea curent. Exist un singur semnal de intrare C, cu dou valori posibile, 0 i 1. De exemplu, pentru a obine valoarea Q1next pentru intrarea prima intrare din tabel coloana din stnga, bitul din stnga, vom nlocui n ecuaia (3) valorile strii curente cu Q1 = 0 i Q0 = 0 iar valoarea de intrare cu C = 0 i ecuaia care ne va da: Q1next = Q1Q0 = 0 * 0 =1*0 =0 nlocuind aceleai valori n ecuaia (4) va rezulta valoarea Q0next pentru aceeai intrare Q0next = Q1Q0 + CQ1 = 0 * 0 + 0 * 0 =1+0 =1 Starea urmtoare Q1next Q0next C=0 C=1 01 01 10 11 00 00 00 00

Starea curent Q1Q0 00 01 10 11

Figura 2.5. Un tabel cu starea urmtoare cu patru stri i un semnal de intrare C d. Ecuaia de ieire Ecuaiile de ieire sunt ecuaiile derivate din circuitul logic combinaional de ieire de la FSM. Depinznd de tipurile FSM-ului (Moore sau Mealy), ecuaiile de ieire pot fi dependente numai de starea curent sau att de starea curent ct i de intrri. Pentru circuitul Moore din figura 2.2. (a) ecuaia de ieire este: Y = Q1Q0 (5) Pentru circuitul Mealy din figura 2.2. (b), ecuaia de ieire este: Y = CQ1Q0 (6) e. Tabela de ieire Ca i la tabela strii urmtoare, tabela de ieire este o tabel de adevr care este rezultat din ecuaiile de ieire. Tabela de ieire pentru FSM-urile Moore i Mealy sunt complet diferite. Figura 2.6. (a) i (b) prezint tabelele de ieire pentru FSM-urile Moore i Mealy care sunt rezultate din ecuaiile de ieire (5) i respectiv (6). Pentru FSM-ul Moore, semnalul de ieire Y este dependent doar de valoarea strii curente Q1Q0 i, pentru FSM-ul Mealy, semnalul de ieire Y este dependent att de starea curent ct i de intrarea C. 8

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR Starea curent Q1Q0 00 01 10 11 (a) Starea curent Q1Q0 00 01 10 11 Ieirea Y 0 1 0 0 Ieirea Y C=0 0 0 0 0 C=1 0 1 0 0

(b) Figura 2.6. Tabela de ieire: (a) pentru FSM Moore; (b) pentru FSM Mealy. f. Diagrama de stare Ultimul pas n analiz este s figurm diagrama de stare. Diagrama de stare este obinut direct din tabela strii urmtoare i tabela de ieire i au fost prezentate n figura 2.3. (a) i (b). g. Exemplul 2: S se realizeze analiza unui FSM Moore prezentat n figura 2.7.

Figura 2.7: Un exemplu de main cu stri finite de tip Moore

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

h. Exemplul 3: S se realizeze analiza unui FSM Mealy prezentat n figura 2.8.

Figura 2.8. Un exemplu de main cu stri finite de tip Mealy

2.1.4 Sinteza circuitelor secveniale


Sinteza circuitelor secveniale este exact reversul analizei circuitelor secveniale. n sintez, ncepem cu ceea ce este o descrierea funcional ambigu a circuitului pe care l dorim. Din descrierea aceasta, avem nevoie s generm o diagram de stare care s descrie precis funcionarea circuitului. Diagrama de stare ne permite s construim starea urmtoare i tabelele de ieire. De la aceste dou tabele, vom obine starea urmtoare i ecuaiile de ieire i n final circuitul FSM complet. n timpul procesului de sintez, exist multe posibiliti de optimizare a circuitului n funcie de mrimea circuitului, viteza i puterea consumat pe care le poate realiza. n aceast seciune, ne vom concentra doar pe sinteza funcionrii corecte a circuitului secvenial. Paii pentru sinteza circuitelor secveniale sunt dup cum urmeaz: 1. Realizarea unei diagrame de stare pornind de la descrierea funcional a circuitului. 2. Se determin tabela strii urmtoare din diagrama de stare. 3. Se face transformarea tabelei strii urmtoare n tabel de implementare. 4. Se determin ecuaiile de excitaie pentru fiecare intrare a bistabilului din tabela de implementare. 5. Se determin tabela de ieire din diagrama de stare. 6. Se determin ecuaiile de ieire din tabela de ieire. 7. Se deseneaz diagrama circuitului FSM bazndu-ne pe ecuaiile de excitaie i ecuaiile de ieire. a. Diagrama de stare Primul pas n procesul de sintez a circuitului secvenial este s-i determinm diagrama de stare. Construcia unui circuit este de obicei descris utiliznd un limbaj natural ambiguu. Nu doar limbajul creeaz adesea ambiguiti, dar n multe cazuri i descrierea circuitului este de asemenea incomplet. Aceast descriere incomplet apare 10

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR atunci cnd nu sunt specificate toate situaiile posibile ale unui eveniment sau comportament. Pentru a transforma o descriere ntr-o diagram de stare, proiectantul trebuie s aib un bagaj de cunotine complet despre funcionarea comportamental a circuitului. n completare, proiectanii ar putea avea nevoie de puin ingeniozitate i creativitate pentru a defini aspectele lips. Acesta este primul pas n procesul de proiectare unde nu exist rspunsuri pentru toate situaiile. n acest pas, ne bazm pe cunotinele i experiena unui proiectant pentru a veni cu o diagram de stare inteligibil i corect. n loc s folosim un limbaj natural pentru a descrie circuitul, poate fi folosit o metod mult mai precis. Una dintre aceste metode de a descrie un circuit mult mai precis include i utilizarea unui limbaj de descriere hardware precum VHDL, o tabel de stare a aciunilor sau o schem ASM (algorithmic state machine). Utilizarea schemei ASM i a tabelelor de stare a aciunilor strii sunt descrise ntr-un laborator viitor. n aceast seciune, vom construi un circuit FSM care se bazeaz pe o secven de cod n C aa cum este prezentat n figura 2.9. A nu se ncerca s se interpreteze execuia logic a codului deoarece nu realizeaz nimic. n acest capitol, atenia este ca s nvm cum poate fi transformat orice pseudo-cod din C, aa cum este, ntr-un circuit FSM care s-l implementeze. repeat { Y = 0 -- s0 if (B = 0){ Y = 0 -- s1 else Y = 1 -- s2 } Y = 1 s3 } Figura 2.9. Pseudo-codul n C pentru sintez Pseudo-codul prezentat n figura 2.9 conine instruciuni de asignare a semnalelor dou pentru Y = 0 i dou pentru Y = 1. Vom asigna cte o stare la fiecare din cele patru instruciuni. Primul asignare Y = 0 este alocat strii s 0, al doilea Y=0 este alocat strii s1 .a.m.d, precum este prezentat n pseudo-cod. Dup prima instruciune Y=0, instruciunea if determin automat cnd s se execute a doua instruciune Y=0 sau instruciunea Y=1. De aceea, din starea s0, exist un singur arc care pleac ctre starea s1 i un singur arc pleac ctre starea s2. Etichetele de pe aceste dou arce sunt condiiile pentru instruciunea IF. Arcul care pleac ctre starea s1 are eticheta (B=0) iar arcul care pleac ctre starea s2 are eticheta (B=1). Fie din starea s1 sau din starea s2, este executat starea s3, de aceea, exist dou arce necondiionate din aceste dou stri ctre s3. n final, din cauza instruciunii repeat exist un arc necondiionat din starea s3 care se ntoarce n starea s0. Rezultatul este diagrama de stare este prezentat n figura 2.10 (a). b Tabela strii urmtoare Dac se d o diagram de stare, este uor s derivm ambele tabele, a strii urmtoare ct i cea de ieire. Din moment ce tabelele de ieire i cea a strii

11

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR urmtoare, precum i diagrama de stare afieaz aceeai informaie dar ntr-un alt format, este necesit doar o translatare de la un format la altul. Figura 2.10 (b) arat tabela strii urmtoare pentru diagrama de stare prezentat n (a). Rndul cu etichete reprezint starea curent iar coloana cu etichete conine condiiile de intrare. Intrrile n tabel sunt strile urmtoare. Din diagram din starea curent, de exemplu s0, aplicnd intrarea B pe 0, ajungem la starea urmtoare s1. Aa i n tabela strii urmtoare, intrarea pentru intersecia strii curente s0 i intrarea B=0 este s1.

(a) Starea curent Q1Q0 s0 00 s1 01 s2 10 s3 11 Starea curent Q1Q0 00 01 10 11 Starea urmtoare Q1next Q0next B=0 B=1 s1 01 s2 10 s3 11 s3 11 s3 11 s3 11 s0 00 s0 00 (b) Implementarea D1 D0 B=0 B=1 01 10 11 11 11 11 00 00 (c)

(d)

12

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR Starea curent Q1Q0 s0 00 s1 01 s2 10 s3 11 (e) Ieirea Y 0 0 1 1

(f) Figura 2.10. (a) O diagram simpl a strii; (b) tabela strii urmtoare; (c) implementarea tabelei utiliznd bistabile de tip D; (d) ecuaiile de excitaie; (e) tabela de ieire; (f) circuitul FSM. n tabela strii urmtoare, este de asemenea dat i codificarea actual pentru stri. Pentru a codifica cele patru stri, sunt necesare 2 bistabile, Q1 i Q0. n exemplu, codificarea dat celor patru stri, s0, s1, s2 i s3 sunt doar patru combinaii diferite a valorii bistabilelor, 00, 01, 10 i 11. Utilizarea schemelor de codificare diferite ne pot da rezultate diferite privind mrimea circuitului, viteza i consumul de putere. b. Tabela de implementare Tabela de implementare rezult din tabela cu starea urmtoare. Tabela cu starea urmtoare este independent de tipul de bistabil folosit, n timp ce tabela de implementare este dependent de alegerea bistabilului utilizat. Un FSM poate fi implementat folosind oricare din cele patru tipuri de bistabile sau combinaii ale acestora. Utiliznd bistabile diferite sau combinaii ale bistabilelor poate rezulta circuite de mrimi diferite dar cu aceeai funcionalitate. Trend-ul curent n proiectarea microprocesoarelor este s folosim bistabile de tip D deoarece sunt uor de utilizat. Vom dori ca s folosim doar bistabile de tip D n sinteza noastr privind circuitelor secveniale. Tabela de implementare ne arat ce intrare trebuie aplicat bistabilului pentru a implementa tabela strii urmtoare. Cu alte cuvinte, sunt prezentate intrrile necesare pentru bistabilele care vor realiza strile urmtoare care sunt date n tabela strii urmtoare. Tabela strii urmtoare rspunde ntrebrii care este starea urmtoare a

13

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR bistabilului dat de starea curent a bistabilului i de valorile de intrare. Tabela de implementare, pe de alt parte, rspunde ntrebrii ce ar trebui s fie intrrile bistabilului pentru a realiza corespondena strii urmtoare prezentat n tabela strii urmtoare. Intrrile bistabilului le-am considerat c sunt intrri sincrone. Pentru bistabilul de tip D, este chiar intrarea D. Pentru alte tipuri de bistabile, exist intrrile S i R pentru bistabilul de tip SR; intrrile J i K pentru bistabilul JK i intrarea T pentru bistabilul T. Nu vom lua n considerare intrrile asincrone precum intrrile Set i Clear, i nici semnalul de ceas (clock). De aceea, pentru a determina tabela de implementare utiliznd bistabilele de tip D, avem nevoie s determinm valoarea care trebuie s fie asignat intrrii D astfel nct aceasta va produce corespondena cu valoarea Qnext dat n tabela strii urmtoare. Totui, din moment ce ecuaia caracteristic pentru bistabilul de tip D (de ex., ecuaia care descrie operarea bistabilului de tip D) este: Qnext = D valorile pentru Qnext i D sunt aceleai. De aceea, intrrile tabelului de implementare care folosete bistabilele de tip D sunt identice cu intrrile tabelului cu starea urmtoare. Singura diferen dintre aceste dou tabele este n nelesul intrrilor. n tabela strii urmtoare prezentat n figura 2.10(b), eticheta pentru intrri este Qnext pentru starea urmtoare care trebuie atins, n timp ce n tabela de implementare, prezentat n figura 2.10 (c), eticheta pentru intrri este D, adic intrarea bistabilului de tip D. Din moment ce sunt dou bistabile, Q1 i Q0 fiecare avnd cte o intrare D, tabela de implementare are dou intrri corespunztoare D1 i D0. Bitul cel mai semnificativ este pentru bistabilul 1 iar bitul cel mai puin semnificativ este pentru bistabilul 0. De notat c dac este utilizat unul dintre celelalte tipuri de bistabile, cele dou tabele nu vor mai fi la fel. d. Ecuaia de excitaie i circuitul urmtoarei stri Reamintim c ecuaiile de excitaie sunt ecuaiile pentru intrrile sincrone ale bistabilelor. Exist cte o ecuaie de excitaie pentru fiecare intrare a fiecrui bistabil. De reamintit c nu se includ intrrile asincrone i intrarea de ceas. Ecuaiile de excitaie sunt dependente de codificarea strii curente, de ex., coninutul bistabilelor i semnalele de intrare principale a FSM-urilor. Ecuaiile de excitaie sunt acelea care provoac bistabilele din memoria de stare s se schimbe starea. Circuitul care rezult din aceste ecuaii este circuitul strii urmtoare din FSM. Circuitul strii urmtoare este un circuit combinaional, astfel c dac se proiectarea acestui circuit este la fel ca i sintetizarea oricrui circuit combinaional . Tabela de implementare rezultat din paii anteriori este doar o tabel de adevr pentru ecuaiile de excitaie. Pentru exemplul nostru, avem nevoie de dou ecuaii pentru intrrile celor dou bistabile, D1 i D0. n exemplu, extragerea bitului cel mai din stnga din fiecare intrare din tabela de implementare ne va da tabela de adevr pentru D1, i prin urmare, ecuaia de excitaie pentru D1. Similar, extragerea bitului cel mai din dreapta din fiecare intrare din tabela de implementare ne va da tabela de adevr i ecuaia de excitaie pentru D0. Tabela de adevr, diagramele K i ecuaiile de excitaie pentru D 1 i D0 sunt date n figura 2.10 (d). e. Tabela i ecuaia de ieire Tabela de ieire i ecuaiile de ieire sunt utilizate pentru a proiecta circuitul de ieire din FSM. Tabela de ieire poate fi obinut direct din diagrama de stare. n diagrama de stare din figura 2.10 (a), semnalul de ieire Y este dependent doar de stare.

14

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR n strile s0 i s1, Y este asignat cu valoarea 0. n strile s2 i s3, Y este asignat cu 1. Rezultatul tabelei de ieire este prezentat n figura 2.10 (e). Ecuaia de ieire rezultat din tabela de adevr a ieirii este simpl: Y = Q1 f. Circuitul FSM Utiliznd figura 2.10 (a) ca model, circuitul nostru FSM are nevoie de dou bistabile de tip D pentru a-i memora starea. Numrul de bistabile folosite s-a determinat atunci cnd s-au codificat strile. Tipul de bistabil care este folosit este determinat atunci cnd se scrie tabela de implementare. Circuitul strii urmtoare este realizat din ecuaiile de excitaie, iar circuitul de ieire este dat de ecuaia de ieire. Legnd aceste trei pri, memoria strii, circuitul strii urmtoare i circuitul de ieire, mpreun se realizeaz circuitul FSM final prezentat ca n figura 2.10 (f). g. Exemplu 4: S se realizeze sinteza FSM-ului Moore prezentat n figura 2.11 Pentru exemplul nostru de sintez, vom proiecta un numrtor modulo 6 utiliznd bistabile de tip D, cu o intrare C de activare a numrtorului, i un semnal de ieire Y care este activat atunci cnd numrtorul este egal cu cinci. Numrtorul este reprezentat direct prin coninuturile bistabilelor.

(a)

(b)

15

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

(c) Figura 2.11. Sinteza pentru un FSM Moore pentru exemplul 4 : (a) diagrama de stare; (b) diagramele K i ecuaiile de excitaie;(c) circuitul FSM. Primul pas este s construim o diagram de stare. Din descrierea funcionrii anterioare, avem nevoie s construim o diagram de stare care ne va arta operaiile precise ale circuitului. Un numrtor modulo 6 numr de la 0 la 5 i apoi napoi la 0. Din moment ce numrtorul este reprezentat de ctre valorile bistabilelor i avem 6 numere diferite (de a 0 la 5), vom avea nevoie de trei bistabile (Q2, Q1, Q0) care va realiza secvena 000, 001, 010, 011, 100, 101, 000, att timp ct C este activat, atunci cnd C este dezactivat, numrtoare se oprete. Cu alte cuvinte, din starea 000, care este count=0, va exista un arc care va trece n starea 001 cu eticheta C=1. Din starea 001, exist un arc care trece n starea 010 cu eticheta C=1 .a.m.d. Pentru ca numrtorul s opreasc fiecare numrare, vor exista arcuri la fiecare stare care se rentorc cu aceeai stare cu eticheta C=0. Mai departe, vom dori s activm Y n starea 101, astfel c n aceast stare, am setat Y pe 1. Pentru restul strilor, Y este setat pe 0. Deci, vom obine o diagram de stare ca n figura 2.11 (a) pentru un numrtor modulo 6. Pasul 2 trebuie s determinm tabela strii urmtoare, care este o translatare direct din diagrama de stare. Vom avea trei bistabile Q 2, Q1 i Q0 i o singur intrare principal C. Pasul 3 este s convertim tabela strii urmtoare n tabela de implementare. Pasul 4 este s derivm ecuaiile de excitaie pentru toate intrrile bistabilelor conform cu starea curent i intrarea principal. Pasul 5 i 6 sunt pentru a rezulta tabela i ecuaia de ieire. i n final, vom putea construi circuitul pentru FSM. Exemplul 5: Sinteza unui FSM Mealy n acest exemplu, vom face sinteza pentru un FSM Mealy bazat pe diagrama de stare prezentat n figura 2.12 utiliznd bistabile de tip D. Cele patru sunt deja codificate

16

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR cu valorile celor dou bistabile. Exist dou semnale de intrare condiionale (x=0) i (x=y). Exist un semnal de ieire A, care poate fi setat fie pe valoarea 0 fie pe 1.

(a)

(b)

(c) Figura 2.12. Sinteza unui FSM Mealy pentru exemplul 5 : (a) diagrama de stare; (b) ecuaia de ieire i maparea K; (c) circuitul FSM.

17

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR Determinarea strii urmtoare i tabela de implementare pentru un FSM Mealy este exact ca i cea pentru FSM Moore. Tabela de ieire este un pic diferit fa de cea Moore. n completare semnalul de ieire A dependent de starea curent Q1Q0, este de asemenea dependent de cele dou semnale de intrare (x=0) i (x=y). De aceea tabela ar trebuie s aib patru coloane pentru cele patru combinaii posibile pentru semnalele de intrare. Intrrile n tabel trebuie s fie valorile pentru A.

2.1.5 Codificrile strilor nefolosite i Codificarea strilor


ntr-o situaie real, numrul de stri utilizate ntr-o diagram de stare nu este obligatoriu o putere a lui 2. De exemplu, diagrama de stare prezentat n figura 2.12. (a) pentru numrtorul modulo 6 folosete 6 stri. Pentru a codifica cele ase stri, am avea nevoie de cel puin trei bistabile din moment ce dou bistabile pot codifica doar patru combinaii diferite. Totui, trei bistabile ne ofer opt combinaii diferite. Astfel c dou combinaii nu sunt folosite. ntrebarea care se pune este ce vom face cu aceste codificri nefolosite? n tabela strii urmtoare, ce valori a strii urmtoare vom asigna acestor stri nefolosite? Putem s le ignorm? Dac FSM-ul nu poate fi n niciuna din strile nefolosite, atunci nu conteaz ce sunt strile urmtoare. n acest caz, putem pune valorile nu conteaz pentru strile urmtoare. Rezultatul va fi c circuitul strii urmtoare poate fi mult mai mic din cauza valorilor nu conteaz. Dar ce se ntmpl dac, din ntmplare, FSM ajunge n una dintre aceste stri nefolosite? Funcionarea FSM-ului va fi impredictibil deoarece nu tim care este starea urmtoare. Dar, acest lucru nu este chiar adevrat deoarece chiar dac folosim valori nu conteaz, ele vor fi mapate n ecuaia de excitaie fixate. Ca urmare, aceste stri nefolosite vor avea strile urmtoare definite. Dar aceste stri urmtoare nu sunt dintre strile dorite. De aceea, rezultatul funcionrii FSM-ului va fi incorect dac se ajunge ntmpltor n una din strile nefolosite. O soluie ar fi s utilizm starea de iniializare sau starea de nceput ca stare urmtoare pentru aceste codificri a strii urmtoare. n acest mod, FSM va porni de la nceput chiar dac este introdus una din aceste stri nefolosite. Pn acum s-a folosit codificarea binar secvenial pentru a codifica strile astfel, starea s0 este codificat ca 00, starea s1 cu 01, starea s2 cu 10 .a.m.d. Totui, nu exist nici un motiv pentru care s nu putem folosi o codificare diferit pentru stri. De fapt, dorim s facem o codificare diferit dac va rezulta un circuit mai simplu. Exemplul 6 prezint un FSM cu o codificare a strii nefolosite i o codificare diferit a strilor. Exemplul 6 n acest exemplu, vom face sinteza unui FSM care genereaz un impuls scurt dac la intrare se aplic un semnal lung. n acest circuit FSM, lungimea unui impuls va fi de un ciclu de ceas. Diagrama de stare pentru acest circuit va fi prezentat n figura 2.13 (a). Starea s0, codificat ca 00, este starea de reset iar n aceast stare FSM-ul va atepta apsarea unei taste. Atunci cnd este apsat tasta, FSM va merge n starea s 1, codificat ca 01 n care va genera impulsul. Din aceast stare FSM trece automat (la urmtorul ciclu de ceas) n starea s2. De aceea, pulsul va dura doar un ciclu de ceas. Pentru a ntrerupe bucla i a trece la ateptarea altei apsri, FSM trebuie s atepte

18

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR eliberarea tastei n starea s2. Cnd tasta este eliberat, FSM se va ntoarce la starea s 0, pentru a atepta o alt apsare a tastei. Aceast diagram de stare folosete doi bii pentru a codifica cele trei stri, iar starea de codificare 10 nu este folosit. Diagrama de stare arat c dac FSM introduce starea 10, va merge necondiionat ctre starea de reset 00 la urmtorul ciclu de ceas. Implementarea este prezentat n figura urmtoare.

(a) Starea urmtoare Q1next Q0next Cheie apsat 0 1 00 01 11 11 00 11 00 00 (b)

Starea curent Q1Q0 00 01 11 10

D1 = Q1Q0 + Q0Keypressed (c)

D0 = Q1Keypressed + Q1Q0 + Q0Keypressed

Starea curent Ieirea Q1Q0 Oneshot 00 0 01 1 11 0 10 0 (d)

19

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

(e) Figura 2.13. FSM pentru circuitul din exemplul 6: (a) diagrama de stare; (b) tabela strii urmtoare; (c) ecuaiile de excitaie i diagrama K pentru D1 i D0; (d) tabela de ieire i ecuaia de ieire; (e) circuitul FSM.

2.1.6 Cod VHDL pentru circuitele secveniale


Scrierea codului VHDL pentru circuitele secveniale este de obicei realizat la nivel comportamental. Avantajul scrierii codului VHDL comportamental este c trebuie s sintetizm manual circuitul. Sintetizarea va produce automat lista de legturi (netlist) pentru circuit din codul comportamental. Ordinea n care scriem codul VHDL pentru un circuit secvenial, este aceea c avem nevoie s folosim informaia din diagrama de stare pentru circuit. Poriunea principal a codului conine dou procese: procesul pentru logica strii urmtoare i un proces pentru logica de ieire. Arcele (att cele condiionale ct i necondiionale) din diagrama de stare sunt folosite ca s definim procesul pentru logica strii urmtoare, care va genera circuitul logic al strii urmtoare. Informaia semnalului de ieire din diagrama de stare este folosit pentru a defini procesul pentru logica de ieire. Se va prezenta codificarea VHDL comportamental a circuitelor secveniale cu cteva exemple. Exemplul 7 n acest exemplu, vom scrie codul VHDL comportamental pentru un FSM Moore prezentat n figura 2.2.(a). Din moment ce sintetizatorul va avea automat grij de codificarea strii, strile vor avea nevoie s fie etichetate cu numele lor logice. Codul VHDL comportamental pentru acest FSM Moore bazat pe diagrama de stare i tabela de ieire este prezentat n figura 2.15.

20

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

Figura 2.14. Diagrama de stare pentru exemplul 7. n seciunea de entitate se declar semnalele de I/O primare pentru circuit. Exist intrrile globale clock i reset. Semnalul clock determin viteza cu care circuitul secvenial va tranzita de la o stare la alta. Semnalul de reset va iniializa toate bistabilele de memorare a strii pe 0. n completarea semnalelor standard generale clock i reset, seciunea entitii va declara de asemenea toate semnalele de intrare i de ieire. Pentru acest exemplu, exist un semnal de intrare C i un semnal de ieire Y; ambele sunt tipuri ale std_logic. Seciunea arhitecturii va ncepe prin utilizarea instruciunii TYPE pentru a defini cele patru stri, s0, s1, s2 i s3, folosite n diagrama de stare. Instruciunea SIGNAL declar starea semnalului pentru a stoca starea curent a FSM-ului. Exist dou procese n seciunea arhitecturii care se execut concurent: procesul pentru logica urmtoarei stri i procesul pentru logica de ieire. Aa cum se sugereaz i din nume, procesul pentru logica urmtoarei stri definete logica urmtoarei stri din unitatea de control, i procesul pentru logica de ieire definete circuitul logic de ieire din interiorul unitii de control. Instruciunea principal main din interiorul acestor dou procese este instruciunea CASE care determin care este starea curent. n procesul pentru logica urmtoarei stri, starea curent a FSM-ului este iniializat cu s0 la reset. Instruciunea CASE este executat doar la un front cresctor al ceasului datorit testului (clockEVENT AND clock = 1) din instruciunea IF. De aceea, semnalului state i este asignat o valoare nou a strii la fiecare front cresctor al ceasului. Valoarea nou este, bineneles, este dependent de starea curent i de semnalele de intrare, dac acestea exist. De exemplu, dac starea curent este s0, este selectat cazul pentru s0. Din diagrama de stare, vedem c n starea s0, starea urmtoare depinde de semnalul de intrare C. Prin urmare, n cod, este folosit o instruciune IF. Dac C este 1 atunci noua starea s1 este asignat semnalului state, altfel, s0 este asignat lui state. Pentru ultimul caz, chiar dac nu dorim s schimbm valoarea strii s0, tot vom face ca aceast asignare pentru a prevenii sintetizatorul VHDL de la utilizarea unui element de memorare pentru semnalul de stare. Aa cum s-a discutat n laboratorul anterior, VHDL sintetizeaz un semnal folosind un element de memorare dac semnalul nu are valori pentru toate cazurile posibile. Celelalte cazuri din instruciunea CASE sunt scrise similar bazndu-se pe arcurile rmase n diagrama de stare. n procesul pentru logica de ieire, toate semnalele de ieire trebuie s aib asignat o valoare pentru fiecare caz. Din nou, motivul este acela c nu dorim ca aceste semnale de ieire s provin de la elementele de memorare. n modelul FSM, circuitul de ieire este un circuit combinaional i prin urmare n-ar trebui s conin nici un element de memorare. Pentru fiecare stare din instruciunea CASE din procesul de ieire, valorile asignate fiecrui semnal de ieire sunt luate direct din tabela de ieire. Pentru acest exemplu, exist doar un singur semnal de ieire Y.

21

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR Un exemplu de trasare a simulrii acestui circuit secvenial este prezentat n figura 2.16. n trasarea simulrii, ntre timpul 100ns i 800ns atunci cnd R este inactiv i C este activ (pe 1L) starea se schimb la fiecare front cresctor al ceasului (la momentele 300ns, 500ns i 700ns). La momentul 700 ns atunci cnd starea curent este s3, vom vedea c semnalul de ieire Y este de asemenea activat (pe 1L). La timpul 800ns, C este dezactivat iar la final, FSM nu va schimba starea la urmtorul front cresctor al ceasului la timpul 900 ns.
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MooreFSM IS PORT ( clock: IN STD_LOGIC; reset: IN STD_LOGIC; C: IN STD_LOGIC; Y: OUT STD_LOGIC); END MooreFSM; ARCHITECTURE Behavioral OF MooreFSM IS TYPE state_type IS (s0, s1, s2, s3); SIGNAL state: state_type; BEGIN next_state_logic: PROCESS (clock, reset) BEGIN IF (reset = '1') THEN state <= s0; ELSIF (clock'EVENT AND clock = '1') THEN CASE state IS WHEN s0 => IF C = '1' THEN state <= s1; ELSE state <= s0; END IF; WHEN s1 => IF C = '1' THEN state <= s2; ELSE state <= s1; END IF; WHEN s2=> IF C = '1' THEN state <= s3; ELSE state <= s2; END IF; WHEN s3=> IF C = '1' THEN state <= s0; ELSE state <= s3; END IF; END CASE; END IF; END PROCESS;

22

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

---continuare program --output_logic: PROCESS (state) BEGIN CASE state IS WHEN s0 => Y <= '0'; WHEN s1 => Y <= '0'; WHEN s2 => Y <= '0'; WHEN s3 => Y <= '1'; END CASE; END PROCESS; END Behavioral;

Figura 2.15. Codul VHDL comportamental a unui FSM Moore pentru exemplu 7.

Figura 2.16. Trasarea simulrii a unui FSM Moore pentru exemplul 7. Exemplul 8 Acest exemplu arat cum este scris un FSM Mealy utiliznd codul VHDL comportamental. Vom utiliza FSM Mealy din exemplul 3. Diagrama de stare pentru FSM este prezentat n figura 2.2.(b). Acest FSM este foarte asemntor cu cel anterior cu excepia c generarea semnalului de ieire Y este de asemenea dependent de semnal de intrare C. Codul VHDL este prezentat n figura 2.17. n acest cod, am vzut c procesul pentru logica strii urmtoare este identic cu codul FSM-ului anterior. n procesul pentru logica de ieire, singura diferen este starea s3 unde instruciunea IF este utilizat pentru a determina valoarea semnalului de intrare C. Semnalul de ieire Y asigneaz o valoare n funcie de rezultatul acestui test. Simularea trasrii pentru acest FSM Mealy este prezentat n figura 2.18. De notat c singura diferen dintre aceast trasare i cea anterioar este la semnalul Y ntre momentele 800ns i 1us. n timpul acestei perioade, semnalul de intrare C este dezactivat n trasarea anterioar, aceasta nu avea nici un efect asupra lui Y, totui, pentru trasarea FSM-ului Mealy, Y este de asemenea dezactivat.

23

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MealyFSM IS PORT ( clock: IN STD_LOGIC; reset: IN STD_LOGIC; C: IN STD_LOGIC; Y: OUT STD_LOGIC); END MealyFSM; ARCHITECTURE Behavioral OF MealyFSM IS TYPE state_type IS (s0, s1, s2, s3); SIGNAL state: state_type; BEGIN next_state_logic: PROCESS (clock, reset) BEGIN IF (reset = '1') THEN state <= s0; ELSIF (clock'EVENT AND clock = '1') THEN CASE state IS WHEN s0 => IF C = '1' THEN state <= s1; ELSE state <= s0; END IF; WHEN s1 => IF C = '1' THEN state <= s2; ELSE state <= s1; END IF; WHEN s2=> IF C = '1' THEN state <= s3; ELSE state <= s2; END IF; WHEN s3=> IF C = '1' THEN state <= s0; ELSE state <= s3; END IF; END CASE; END IF; END PROCESS; output_logic: PROCESS (state) BEGIN CASE state IS WHEN s0 => Y <= '0'; WHEN s1 => Y <= '0'; WHEN s2 => Y <= '0'; WHEN s3 => IF (C = '1') THEN Y <= '1';

24

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
---continuare program --ELSE Y <= '0'; END IF ; END CASE; END PROCESS; END Behavioral;

Figura 2.17. Codul VHDL comportamental pentru un FSM Mealy pentru exemplul 8.

Figura 2.18. Trasarea simulrii pentru un FSM Mealy din exemplul 8. Exemplul 9 Acesta este un alt exemplu al FSM-ului Moore care a fost scris utiliznd codul VHDL comportamental. Acest FSM este pentru exemplul 5, iar diagrama de stare pentru acest exemplu este rezultatul rezolvrii exemplului 5. Codul comportamental pentru acest FSM este prezentat n figura 2.19, iar trasarea simulrii n figura 2.20.
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MooreFSM IS PORT ( clock: IN STD_LOGIC; reset: IN STD_LOGIC; start, neq9: IN STD_LOGIC; x,y: OUT STD_LOGIC); END MooreFSM; ARCHITECTURE Behavioral OF MooreFSM IS TYPE state_type IS (s0, s1, s2, s3); SIGNAL state: state_type; BEGIN next_state_logic: PROCESS (clock, reset) BEGIN IF (reset = '1') THEN state <= s0; ELSIF (clock'EVENT AND clock = '1') THEN CASE state IS WHEN s0 => IF start = '1' THEN state <= s1; ELSE state <= s0; END IF; WHEN s1 => state <= s2; WHEN s2 =>

25

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
---continuare program --IF neq9 = '1' THEN state <= s3; ELSE state <= s1; END IF; WHEN s3=> state <= s0; END CASE; END IF; END PROCESS; output_logic: PROCESS (state) BEGIN CASE state IS WHEN s0 => x <= '0'; y <= '1'; WHEN s1 => x <= '1'; y <= '1'; WHEN s2 => x <= '1'; y <= '1'; WHEN s3 => x <= '1'; y <= '0'; END CASE; END PROCESS; END Behavioral;

Figura 2.19. Codul VHDL comportamental pentru un FSM Moore din exemplul 9.

Figura 2.20. Trasarea simulrii pentru un FSM Moore a exemplului 9.

3. Desfurarea lucrrii
1. Se studiaz analiza circuitelor logice secveniale (FSM). Se vor rezolva exemplele 2 i 3. 2. Se va studia sinteza circuitelor logice secveniale. Se vor rezolva complet exemplele 4 i 5. 3. Se vor testa exemplele scrise n VHDL.

26