LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control,...

30
LABORATOR 1 PROIECTAREA CIRCUITELOR SECVENŢIALE SINCRONE 1. Prezentarea teoretică În cadrul acestei lucrări de laborator se va prezenta metodologia de proiectare a unui circuit secvențial sincron. Pentru a putea ajunge la circuitul final, sunt utilizate diagrame Karnaugh-Vength. Implementarea este realizată cu ajutorul utilitarului Schematic. Acest utilitar face parte din suita Xilinx WebPACK ISE 10.1. Calculatoarele sunt construite din circuite integrate. Aceste circuite conțin elemente de comutare ce poartă denumirea de porți. Porțile elementare sunt: ȘI, SAU, ȘI -NU, SAU-NU și NOT. Circuitele simple pot fi realizate prin combinarea directă a porților individuale.

Transcript of LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control,...

Page 1: LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control, uzual denumit ceas. În cadrul circuitelor secvențiale sincrone, elementele de

LABORATOR 1 – PROIECTAREA CIRCUITELOR SECVENŢIALE

SINCRONE

1. Prezentarea teoretică

În cadrul acestei lucrări de laborator se va prezenta metodologia de proiectare a unui circuit

secvențial sincron. Pentru a putea ajunge la circuitul final, sunt utilizate diagrame Karnaugh-Vength.

Implementarea este realizată cu ajutorul utilitarului Schematic. Acest utilitar face parte din suita Xilinx

WebPACK ISE 10.1.

Calculatoarele sunt construite din circuite integrate. Aceste circuite conțin elemente de comutare ce

poartă denumirea de porți. Porțile elementare sunt: ȘI, SAU, ȘI-NU, SAU-NU și NOT. Circuitele simple pot

fi realizate prin combinarea directă a porților individuale.

Page 2: LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control, uzual denumit ceas. În cadrul circuitelor secvențiale sincrone, elementele de

Circuitele mai complexe sunt: multiplexoare, codificatoare, circuite de deplasare și unități

aritmetico-logice.

În 1975, Ron Cline de la Signetics (companie preluată mai târziu de Philips şi în cele din

urmă de Xilinx) a avut ideea introducerii a două plane de programare. Cu ajutorul celor două

plane de programare, aşa cum se poate observa în figura 1.1, se poate realiza orice circuit descris

printr-o combinație de porți ŞI şi SAU. Aceste dispozitive s-au numit dispozitive PLA (Programmable

Logic Array).

MMI, preluată apoi de AMD, a modificat arhitectura descrisă mai sus și a rezultat PAL

(Programmable Array Logic). A urmat apoi PLD (Programmable Logic Device), dar care nu a avut

succesul comercial al arhitecturilor PLA sau PAL.

Toate circuitele prezentate mai sus fac parte din categoria SPLD (Simple PLD).

Următoarele circuite logice apărute sunt CPLD (Complex Programmable Logic Device ).

Acestea se încadrează din punct de vedere al complexității între PAL și FPGA (care vor fi prezentate

ulterior) și au preluat caracteristici de la amândouă din punct de vedere arhitectural. Blocul din care

este alcătuit un CPLD este o macro-celulă care conține o logică ce implementează expresii în forma

normală disjunctivă, precum și operații logice specializate.

Dispozitivele CPLD posedă o serie de calități, care le fac utilizabile încă şi în prezent:

oferă cea mai simplă cale de implementare a unui proiect.

costuri de dezvoltare reduse.

modificarea uşoară a circuitelor proiectate.

aria de implementare este redusă.

Page 3: LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control, uzual denumit ceas. În cadrul circuitelor secvențiale sincrone, elementele de

În 1985, Xilinx a introdus un nou concept, FPGA (Field Programmable Gate Array). Ariile de Porţi Programabile (FPGA) reprezintă structuri bidimensionale formate din blocuri logice (CL) şi din bistabile (FF). Aceste structuri sunt controlate în totalitate de către utilizator, acesta putând proiecta, programa și modifica un circuit atunci când este necesar.

Un circuit FPGA poate conține peste 10 milioane de porți.

Circuitele FPGA sunt de două tipuri:

SRAM FPGA

OTP (One Time Programable) FPGA

Diferențele între acestea sunt date de modul în care sunt realizate celulele logica și de mecanismul utilizat pentru realizarea conexiunilor din cadrul circuitelor. Circuitele OTP folosește porți logice tradiționale, iar cele SRAM folosesc LUT (Look Up Table). De asemenea trebuie menționat că piața este dominată de către SRAM FPGA.

Figura de mai jos prezintă blocul logic utilizat de familia de circuite FPGA Xilinx Seria 4000. Se

poate observa că ieşirea tabelei asociative cu 4 intrări poate fi transmisă direct la ieşire sau stocată în

prealabil într-un bistabil.

Page 4: LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control, uzual denumit ceas. În cadrul circuitelor secvențiale sincrone, elementele de

FPGA-urile au apărut ca o alternativă pentru circuitele la cerere și au dus la mărirea densității de

circuite de circa 10 ori în raport cu soluția SSI/MSI, precum și la reducerea costurile de dezvoltare

Conform legii lui Moore, densitatea FPGA-urilor, adică numărul de porți pe suprafață a crescut

între anii 1980-1990, până în punctul în care funcțiile importante de prelucrare a datelor au fost

implementate direct într-un singur circuit FPGA.

2. Circuite secvenţiale sincrone

Definiţie:

Sistemele digitale în a căror componență există elemente de memorie precum şi elemente

logice combinaționale se numesc circuite secvențiale.

Ieșirea unui circuit secvențial este o funcție de intrările externe ale acestuia și de starea sa

internă la momentul respectiv de timp. Starea este determinată de elementele de memorie și este o

funcție de stările anterioare și de intrările circuitului.

Circuitele secvențiale sunt de două tipuri: sincrone și asincrone. Comportarea unui circuit

asincron depinde de ordinea în care se modifică semnalele de intrare, aceste modificări putând apărea la

orice moment de timp. Instanțele de timp discrete într-un circuit sincron sunt determinate de un semnal

de control, uzual denumit ceas .

În cadrul circuitelor secvențiale sincrone, elementele de memorare sunt reprezentate de

bistabile. Un bistabil este un circuit electronic care memorează 1 sau 0 până la apariția frontului de

ceas. Mai jos sunt prezentate simbolurile Xilinx pentru bistabilele D, JK ȘI T, împreună cu tabelele lor

de excitație.

Page 5: LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control, uzual denumit ceas. În cadrul circuitelor secvențiale sincrone, elementele de

Pentru a proiecta un circuit secvențial asincron, se urmează o procedură clasică descrisă

prin pașii de mai jos:

1. se construiește diagrama logică a problemei în funcție de cerințele acesteia

2. se determină numărul de bistabile necesare p, pornind de la numărul de stări ale diagramei stabilite anterior l; se utilizează formula: 2p - 1 < n < 2p, unde n reprezintă numărul de stări;

3. se asignează câte o etichetă de lungime p biți pentru fiecare stare;

4. se construiește tabela stărilor de tranziție şi tabela de ieşire;

5. se determină o tabelă de intrare pentru fiecare bistabil, utilizând tabelele de excitație prezentate mai sus

6. se determină ecuațiile de intrare pentru fiecare intrare a bistabilelor ce compun circuitul secvențial sincron;

7. se desenează diagrama circuitului.

a)

b)

c)

Page 6: LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control, uzual denumit ceas. În cadrul circuitelor secvențiale sincrone, elementele de

3. Problema propusă

Pentru a putea exemplifica procedura descrisă mai sus, se consideră următorul exemplu practic. Se

dorește proiectarea unui automat pentru băuturi răcoritoare. Pentru a simplifica problem, se consideră

că se poate elibera un singur tip de băutură răcoritoare. Aceasta costă 3 RON. Automatul acceptă

bancnote de 1, 5 , respectiv 10 RON și eliberează rest dacă s-a introdus o sumă mai mare decât prețul

băuturii. Se presupune că există un mecanism pentru sortarea banilor și care emite trei semnale, câte

unul pentru fiecare tip de bancnotă. Semnalele determină tranziția automatului dintr-o stare în alta.

Diagrama logică a problemei

Page 7: LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control, uzual denumit ceas. În cadrul circuitelor secvențiale sincrone, elementele de

Determinarea numărului de bistabile

În diagrama de mai sus se observă că numărul de stări este 7. Deoarece 23 este prima putere a

lui 2 mai mare decât 7, rezultă că vor fi necesare 3 bistabile. Bistabilele utilizate în implementare sunt

bistabile de tipul D. Ele vor fi numerotate D0, D1 ,D2 , iar tabela de excitație utilizată este corespunzătoare

bistabilului de tip D.

Codificarea stărilor

Stările sunt codificate astfel:

A 000

B 001

C 010

D 011

E 100

F 101

G 110

Tabela stărilor de tranziţie și tabela de ieșire

Următorul tabel poate fi dedus din analiza diagramei logice a problemei. Tabelul conține

următoarele codificări:

– Semnalele care se activează atunci când o bancnotă de 1, 5, respectiv 10 RON este

introdusă în automat

– Semnalele care se activează atunci când o bancnotă de 1, respectiv 5 RON trebuie

returnată de către aparat.

– Semnal care se activează atunci când o sticlă de băutură trebuie eliberată de către

automat

Page 8: LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control, uzual denumit ceas. În cadrul circuitelor secvențiale sincrone, elementele de

Stare iniţială Stare Finală Condiţii Comenzi

A - 000 B 001

&

&

F 101

G 110

A 000

B - 001 C 010

E 100 &

F 101 &

B 001

C - 010 D 011 &

&

E 100

A 000

C 010

D - 011 E 100 ---

F - 101 G 110 ---

G - 110 A 000

---

Tabele K-V pentru intrările bistabilelor

În acest pas se elaborează tabelele K-V de minimizare pornind de la tabelul de mai sus şi tabelul

de excitație pentru bistabilul D. Rezultatul obținut este prezentat în cele ce urmează. Următoarea

tabelă este valabilă pentru bistabilul 3, corespunzător intrării D2.

Bistabilul D2

00 01 11 10

0 +

+ 1

1 1 1 * 0

Page 9: LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control, uzual denumit ceas. În cadrul circuitelor secvențiale sincrone, elementele de

Acum vom reaminti modul în care se minimizează o diagramă care conține și variabile externe. Acest

lucru se realizează în doi pași:

a) Se egalează cu 0 toate variabilele externe și se minimizează ca o diagramă K-V obișnuită

b) Pe rând, se face fiecare variabilă externă egală cu 1. Unitățile se iau egale cu 1 dacă ne convine.

Se minimizează și rezultatul se înmulțește cu variabila externă.

K-V obținută pentru primul pas:

00 01 11 10

0 0 0 1 0

1 1 1 * 0

După primul pas se obține:

Apoi, pentru fiecare variabilă externă, se obține:

Rezultatul obținut în urma minimizării tabelei K-V este:

Bistabilul D1

00 01 11 10

0 0 +

1 0 1 * 0

Page 10: LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control, uzual denumit ceas. În cadrul circuitelor secvențiale sincrone, elementele de

K-V obținută pentru primul pas:

00 01 11 10

0 0 0 0 0

1 0 1 * 0

După primul pas se obține:

Apoi, pentru fiecare variabilă externă, se obține:

Rezultatul obținut în urma minimizării tabelei K-V este:

Bistabilul D0

00 01 11 10

0

+

+ 0

1 1 0 * 0

Page 11: LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control, uzual denumit ceas. În cadrul circuitelor secvențiale sincrone, elementele de

K-V obținută pentru primul pas:

00 01 11 10

0

0 0 0 0

1 1 0 * 0

După primul pas se obține:

Apoi, pentru fiecare variabilă externă, se obține:

Rezultatul obținut în urma minimizării tabelei K-V este:

Tabele K-V pentru semnalele de ieșire

Pentru fiecare semnal de ieşire se determină câte o tabelă K-V cu ajutorul căreia se va

stabili forma canonică.

EB1

00 01 11 10

0

1

1 1 1 * 1

Page 12: LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control, uzual denumit ceas. În cadrul circuitelor secvențiale sincrone, elementele de

După minimizare se obține:

EB2

00 01 11 10

0

0

1 0 0 * 0

După minimizare se obține:

ESB

00 01 11 10

0

0 +

1 0 0 * 0

După minimizare se obține:

Page 13: LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control, uzual denumit ceas. În cadrul circuitelor secvențiale sincrone, elementele de

Desenarea diagramei circuitului

Pentru desenarea diagramei circuitului se foloseşte o procedură destul de laborioasă care va fi

prezentată în paragrafele următoare.

4. Implementarea unui circuit secvenţial folosind Xilinx ISE 10.1

Xilinx WebPACK ISE 10.1 reprezintă o soluție de proiectare a sistemelor numerice deosebit de complexă.

Aceasta integrează pachete software pentru proiectarea cu ajutorul circuitelor FPGA sau CPLD, utilizând, în

acest scop programe proprietare şi industriale.

Cu ajutorul pachetului software ISE 10.1 se poate proiecta, testa şi implementa o aplicație într-un timp

foarte scurt. După ce testarea practică a aplicației, ce se realizează cu ajutorul circuitelor FPGA sau CPLD,

demonstrează o funcționare corectă, se poate trece la implementarea în serie a structurii numerice

respective, sub forma unui circuit specializat (ASIC).

Cu ajutorul mediului ISE 10.1 pot fi realizate următoarele operații:

1. Crearea de cod sursă în limbajul Verilog sau VHDL;

2. Generarea automată de cod pentru circuite combinaționale, circuite secvențiale şi memorii;

3. Verificarea, din punct de vedere sintactic, a codului elaborat;

4. Simulare comportamentală şi la nivelul transferurilor între registre a proiectului sau numai a unor module ale proiectului;

5. Sinteză;

6. Plasarea şi rutarea proiectului într-un FPGA sau CPLD selectat de către proiectant;

7. Analiza timpilor de execuție şi de comutare ai circuitului proiectat;

8. Impunerea de constrângeri de tipul arie sau constrângeri de tipul timp asupra circuitului proiectat;

9. Configurarea circuitului proiectat.

Fereastra principală a aplicației se numeşte Project Navigator şi este împărțită în cinci secțiuni

principale după cum se poate observa în figura 7.

Page 14: LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control, uzual denumit ceas. În cadrul circuitelor secvențiale sincrone, elementele de

Figura 1 – Fereastra principală a aplicaţiei

Prima secțiune – Bară de meniuri este folosită pentru:

1. Creare sau deschidere de proiecte;

2. Creare sau deschidere de fişiere sursa;

3. Setarea anumitor parametri de funcționare pentru diferitele utilitare cuprinse în pachetul software ISE 10.1.

În cea de a doua secțiune principală - Fişiere sursă sunt vizibile toate fişierele sursă din cadrul proiectului. Fişierele sunt prezentate sub forma unei ierarhii pentru a se putea selecta uşor şi rapid orice fişier sursă din cadrul proiectului. Tot în acesta secțiune sunt prezentate şi relațiile dintre fişiere.

În secțiunea a treia Procese sunt prezentate toate procesele utilizate în crearea şi implementarea unui proiect. Aceste procese sunt:

o Verificarea sintaxei codului HDL;

o Sinteza şi elaborarea proiectului;

o Introducerea de constrângeri asupra proiectului;

o Verificare RTL;

Page 15: LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control, uzual denumit ceas. În cadrul circuitelor secvențiale sincrone, elementele de

o Plasarea şi rutarea modulelor proiectului;

o Analiza timpului;

o Simularea proiectului în timp şi afişarea formelor de undă;

o Planificarea proiectului în circuitul FPGA/CPLD şi definirea de contrângeri de tip arie;

o Configurarea dispozitivului.

Fiecare proces are o listă de parametri care pot fi modificați în funcție de cerințele proiectului, înainte de

a rula procesul. Pentru a putea modifica parametrii unui proces, se selectează procesul dorit şi cu ajutorul

butonului dreapta al mouse-ului se deschide fereastra care conține parametrii procesului.

Secțiunea a patra Transcript este dedicată vizualizării progreselor realizate de fiecare proces implicat

în realizarea circuitului FPGA/CPLD. Tot în această secțiune mai pot fi vizualizate mesajele de eroare

sau de atenționare generate de fiecare proces, precum şi fişierul de comandă.

Ultima secțiune, Editare/Vizualizare cod sursă VHDL/Verilog , este destinată vizualizării sau

editării de fişiere sursă utilizate în cadrul proiectului. În această secțiune vor fi deschise spre

consultare şi fişierele de tip raport, care sunt generate la terminarea fiecărui proces prezentat în

secțiunea Procese .

Procesele prezente în secțiunea Proces sunt afişate în ordinea în care ele sunt programate spre

execuție. Proiectarea unui circuit în vederea implementării, în Xilinx ISE, presupune crearea unui proiect.

Pentru a putea proiecta un circuit de dimensiuni mari, se recomandă utilizarea tehnicii top-down. în

acest fel circuitul este descompus în module.

Modulele care alcătuiesc proiectul pot fi realizate utilizând fie un limbaj de programare HDL, fie

folosind utilitarul Schematic, în cele ce urmează se vor prezenta toate procesele implicate în proiectarea,

sinteza şi implementarea unui circuit digital.

Cu ajutorul pachetului software WebPACK ISE, proiectele diverselor circuite pot fi introduse foarte

uşor şi rapid utilizând limbaje de descriere cum sunt VHDL sau Verilog sau utilizând utilitarul Schematic .

Acest utilitar foloseşte metoda tradițională de proiectare, utilizând biblioteci de porți logice şi circuite

logice programabile. Marele dezavantaj al acestei metode este faptul că proiectul rezultat este

dependent total de tehnologia şi circuitul FPGA ales la începutul proiectării. Un alt dezavantaj major îl

constituie faptul că circuitele elaborate cu acest utilitar nu mai respectă conceptul de reutilizare.

Acest concept este deosebit de important în industrie, unde un circuit odată proiectat este folosit

pentru orice platformă sau circuit FPGA/CPLD existent. Acest concept este valabil pentru circuitele

proiectate folosind limbaje de descriere hardware cum sunt VHDL sau Verilog.

Page 16: LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control, uzual denumit ceas. În cadrul circuitelor secvențiale sincrone, elementele de

Proiectarea unui circuit cu ajutorul utilitarului Schematic presupune parcurgerea următorilor paşi:

1. Stabilirea circuitului şi a familiei de circuite FPGA/CPLD utilizate în implementarea circuitului proiectat. Din meniul File se selectează opțiunea New Project . Aici se alege un nume pentru proiect, spre

exemplu laboratorl. În fereastra deschisă se selectează opținea Schematic şi se introduce un nume

pentru circuitul proiectat, spre exemplu soft-drink. Se execută Next. Apare o fereastră în care se trec

proprietățile plăcuței FPGA folosite:

Product category: All

Family: Spartan 3

Device: XC3S400

Package: FT256

Speed: -5

Simulator: ISE Simulator (VHDL/Verilog)

Preferred Language: Verilog (sau VHDL)

Apoi se execută Next la următoarele ferestre şi Finish.

2. Din meniu, se alege Project, New Source şi apare lista cu toate utilitarele oferite de Xilinx. De această dată selectăm Schematic şi dăm un nume fişierului schematic care se deschide. Dacă toate operațiile au fost realizate cu succes, atunci o pagină nouă de lucru, ca în figura 8, devine disponibilă pentru a realiza circuitul dorit, utilizând doar circuitele din bibliotecă.

În figura 8 sunt prezentate doar câteva din opțiunile disponibile. Restul opțiunilor pot fi uşor

descoperite dacă săgeata mouse-ului este mutată deasupra opțiunii dorite.

3. Proiectarea circuitului dorit utilizând doar circuite componente ale bibliotecii. Circuitul proiectat va conține trei bistabile D precum şi logica aferentă implementării ecuațiilor. Este important pentru simulare ca proiectul să conțină porturile de intrare şi de ieşire.

Înainte de a trece la pasul următor, se verifică dacă implementarea este corectă. Pentru aceasta se alege

opțiunea Check Schematic din meniul Tools.

Page 17: LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control, uzual denumit ceas. În cadrul circuitelor secvențiale sincrone, elementele de

Figura 2 – Mediul de proiectare Schematic

4. Înaintea implementării în FPGA, proiectul trebuie simulat cu ajutorul simulatorului ISE Simulator.

5.Crearea unui modul Mașină de stări (State Machine)

Cu ajutorul editorului de diagrame de stări se pot crea mașini de stări finite. Acestea cuprind stările,

intrările, ieșirile și condițiile de tranziție dintr-o stare în alta. Condițiile de tranziție și acțiunile stărilor

sunt introduse în diagramă folosind un limbaj independent de sintaxă. Editorul de diagrame de stări este

folosit apoi pentru a exporta diagrama în limbaj VHDL, Verilog sau ABEL.

Pentru a deschide o diagramă nefinalizată sau care se dorește a fi modificată se adaugă fișierul

my_diag.dia proiectului. Se selectează Project > Add Source și se selectează fișierul dorit. Pentru a

vizualiza diagrama se apasă dublu-click pe fișierul my_diag.dia din tab-ul Sources.

Page 18: LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control, uzual denumit ceas. În cadrul circuitelor secvențiale sincrone, elementele de

Figura 3 – Diagramă de stare

Această diagramă a mașinii de stări prezintă diferite caracteristici:

Ovalele reprezintă diferite stări.

Expresiile negre reprezintă condițiile de tranziție și definesc modul în care se trece dintr-o

stare în alta.

Expresiile de ieșire pentru fiecare stare se găsesc în ovalele care reprezintă stările sau sub

condițiile de tranziție, făcând parte din tranziții

Condițiile de tranziție și acțiunile stărilor sunt scrise în limbaj independent de sintaxă.

Adăugarea unei noi stări

Pentru a adăuga o nouă stare:

Page 19: LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control, uzual denumit ceas. În cadrul circuitelor secvențiale sincrone, elementele de

1. Se apasă icoana Add State din toolbar-ul vertical. Noua stare este atașată cursorului.

2. Se plasează noua stare într-un loc favorabil în cadrul diagramei.

3. Se apasă mouse pentru a definitiva locul acesteia în cadrul diagramei. Numele default al stării

este STATEi.

4. Se apasă dublu-click pe STATEi și se schimbă numele acesteia în numele dorit, de exemplu IDLE.

5. Se apasă OK.

Pentru a schimba forma unui oval care reprezintă o stare se apasă click pe unul dintre cele patru

pătrățele care înconjoară starea și se îndreaptă în direcția în care se dorește să se realizeze deformarea.

Figura 4 – Adăugarea unei noi stări

Adăugarea unei tranziț ii

O tranziție definește trecerea dintr-o stare în alta. Tranzițiile sunt reprezentate printr-o săgeată.

Pentru exemplificare se va adăuga o tranziție de la starea nou creată la o starea existentă, de exemplu

cea mai apropiată de aceasta. Deoarece tranziția este necondiționată, nu se va atașa nici o condiție

acesteia.

1. Click pe icoana Add Transition în toolbar-ul vertical.

Page 20: LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control, uzual denumit ceas. În cadrul circuitelor secvențiale sincrone, elementele de

2. Click pe starea IDLE pentru a începe tranziția.

3. Click pe starea alăturată pentru a finaliza tranziția și deci săgeata.

4. Pentru a manipula forma săgeții se apasă click și se îndreptă spre direcția dorită.

5. Se apasă click pe Select Objects pentru a ieși din modul de desenare a tranzițiilor.

Figura 5 – Adăugarea unei tranziţii necondiţionate

Adăugarea unei acț iuni unei stări

Acțiunea unei stări determină ieșirea

pentru o anumită stare. Pentru starea IDLE, rst va

lua valoarea 1 la ieșire. Se vor executa următorii

pași:

1. Dublu-click pe starea IDLE

2. Se selectează butonul Output

Wizard

Figura 6 – Editarea unei stări

Page 21: LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control, uzual denumit ceas. În cadrul circuitelor secvențiale sincrone, elementele de

3. În Logic Wizard se introduc

următoarele valori: DOUT = rst ;

CONSTANT=’1’

4. Se apasă OK și în mod similar se

introduce fiecare valoare.

5. Se apasă Ok pentru a ieși din Edit

State. Ieșirea a fost adăugată stării.

Figura 7 – adăugarea unei valori de ieșire

Figura 8 – Stare cu ieșire asignată

Figura 9 – Editare stare după ce a fost asignată o ieșire

Adăugarea un condiț ii de reset pentru mașina de stări

Caracteristica Reset a mașinii de stări specific o condiție de reset. Mașina se află inițial în acea stare și se

întoarce în această stare ori de câte ori este întâlnită condiția de reset. Se va adăuga o condiție de reset

stării IDLE.

Page 22: LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control, uzual denumit ceas. În cadrul circuitelor secvențiale sincrone, elementele de

1. Click pe icoana Add Reset în toolbox-ul vertical.

2. Se apasă click pe diagram, aproape de starea IDLE.

3. Cursorul este aignat automat tranziției. Apoi se apasă click pe starea IDLE.

4. La întrebarea ”Should this reset be asynchronous(Yes) or synchronous (No)?”, răspunsul este

”Yes”.

Figura 10 – Stare cu condiţie de reset

Crearea fișierului de ieșire HDL pentru o mașină de stări

1. Se selectează Options > Configuration.

2. În secțiunea Language se selectează Verilog sau VHDL, după cum se dorește.

3. În secțiunea Language Vendor se selectează Xilinx XST.

4. Se apasă OK.

5. Pentru a genera un fișier HDL, se selectează icoana Generate HDL din toolbox.

6. Apare o fereastră Result în care este afișat statusul compilării. Se apasă OK.

7. Fișierul HDL generat este deschis în browser. Poate fi închis după ce este analizat.

8. Se salvează schimbările alegând File > Save.

Page 23: LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control, uzual denumit ceas. În cadrul circuitelor secvențiale sincrone, elementele de

6. Simulare comportamentală

Adăugarea unui Test Bench HDL

În continuare se va prezenta modul în care se adaugă un fișier de test bench existent proiectului. Un test

bench VHDL și un test fixture Verilog sunt detaliate în acest tutorial.

Pentru a crea propriul fișier test bench în ISE, se selectează Project > New Source și se selectează fie

VHDL Test Bench, fie Verilog Text Fixture în New Source Wizard. Un fișier gol este adăugat proiectului.

Test bench-ul se definește într-un editor de text.

Simulare VHDL

După ce fișierul se află în directorul proiectului, se adaugă test bench-ul VHDL proiectului:

1. Se selectează Project > Add Source.

2. Se selectează fișierul de test bench test.vhd.

3. Se apasă Open.

4. În Choose Source Type se selectează VHDL Test Bench File.

5. Se apasă OK.

ISE recunoaște fișierul top-level design asociat fișierului de test bench și adaugă test bench-ul în

ordinea corectă.

Simulare Verilog

După ce fișierul se află în directorul proiectului, se adaugă test fixture-ul Verilog proiectului:

1. Se selectează Project > Add Source.

2. Se selectează fișierul test.v.

3. Se apasă Open.

4. În Choose Source Type se selectează Verilog Test Fixture File.

5. Se apasă OK.

ISE recunoaște fișierul top-level design asociat fișierului de test fixture și adaugă test fixture-ul în

ordinea corectă.

Page 24: LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control, uzual denumit ceas. În cadrul circuitelor secvențiale sincrone, elementele de

Simulare comportamentală folosind ModelSim

În momentul în care un test bench a fost adăugat în proiect, se poate efectua simulare

comportamentală folosind simulatorul ModelSim. ISE se integrează complet cu simulatorul ModelSim.

ISE permite ModelSim să creeze un director de lucru, să compileze fişierele sursă, să încarce design-ul şi

să execute simulare în funcție de proprietățile acesteia. Fie că se utilizează ModelSim, fie ISE Simulator,

rezultatul final trebuie să fie acelaşi.

Pentru a selecta ModelSim ca fiind simulatorul proiectului:

1. În tab-ul Sources, se apasă click-dreapta pe linia de dispozitiv aleasă.

2. Se selectează Properties.

3. În zona Simulator din fereastra Project Properties, se selectează tipul de ModelSim şi

limbajul HDL folosit.

Localizarea proceselor de simulare

Procesele de simulare în ISE permit ca simularea să fie rulată folosind ModelSim. Pentru a

localiza procesele simulatorului ModelSim:

1. În tab-ul Sources, se selectează Behavioral Simulation.

2. Se selectează fişierul de test bench.

3. În tab-ul Processes, se apasă click pe simbolul + de lângă ModelSim Simulator pentru a

expanda ierarhia de procese.

Dacă procesul simulatorului ModelSim nu apare , fie ModelSim nu a fost selectat ca simulatorul

proiectului în Project Properties, fie Project Navigator nu poate găsi modelsim.exe. Dacă ModelSim este

instalat, dar procesele nu sunt disponibile, este posibil ca prefernțele în Project Navigator să nu fie

setate correct.

Pentru a seta locația ModelSim:

1. Se selectează Edit > Preferences.

2. Click pe simbolul + de lângă ISE General pentru a expanda preferințele ISE.

3. Click pe Integrated Tools din partea stângă.

4. În partea dreaptă, sub Model Tech Simulator, se caută locația fişierului modelsim.exe.

Page 25: LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control, uzual denumit ceas. În cadrul circuitelor secvențiale sincrone, elementele de

Sunt disponibile următoarele procese ale simulării:

Simulate Behavioral Model – acest proces începe simularea

Generate a self-checking HDL test bench – acest proces permite generarea unui test

bench HDL, echivalent cu un fişier test bench waveform (TBW)

Specificarea proprietăţilor simulării

Se va realiza o simulare comportamentală pentru design după ce au fost setate anumite proprietăți pentru simulare. ISE permite setarea diferitelor proprietăți ModelSim Simulator. Pentru a vedea şi a modifica proprietățile simulatorului comportamental, se execută următorii paşi:

1. În tab-ul Sources, se selectează fişierul . 2. Se apasă click pe simbolul + din dreptul ModelSim pentru a expanda ierarhia din tab-ul

Processes. 3. Se apasă click dreapta pe Simulate Behavioral Model. 4. Se selectează Properties. 5. În fereastra Process Properties, se setează nivelul de afişare la Advanced pentru a putea vedea

toate proprietățile. 6. Se schimbă Simulation Run Time la 2000 ns.

7. Se apasă OK.

Realizarea de simulări

După ce proprietățile proceselor au fost setate, se poate rula ISE Simulator. Pentru a porni

simularea comportamentală, se apasă dublu click pe Simulate Behavioral Model. ModelSim creează

directorul de lucru, compilează fişierele sursă, încarcă design-ul şi execută simulări în perioada de timp

specificată.

Majoritate design-urilor rulează la 100 Hz şi de aceea poate dura destul timp simularea.

Page 26: LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control, uzual denumit ceas. În cadrul circuitelor secvențiale sincrone, elementele de

Adăugarea de semnale

Pentru a putea vizualiza semnalele interne în timpul simulării este necesar să fie adăugate în

fereastra Wave. ISE adaugă automat toate porturile top-level în această fereastră. Semnalele adiționale

sunt afişate în fereastra Signal în funcție de structura selectată în fereastra Structure.

Există două metode de bază pentru a adăuga semnale în fereastra Simulator Wave:

Drag and drop din fereastra Signal/Object.

Marcarea semnalelor în fereastra Signal/Object şi apoi Add > Wave > Selected Signals.

Salvarea simulării

Simulatorul ModelSim permite salvarea listei de semnale în fereastra Wave după ce au fost

adăugate noi semnale. Semnalele salvate pot fi deschise cu uşurință de fiecare dată când simularea este

pornită. Pentru a salva lista de semnale:

1. În fereastra Wave, se selectează File > Save as.

2. În fereastra Save Format, se redenumeşte numele default al fişierului.

3. Se apasă Save.

După ce se reporneşte simularea, se alege File > Load în fereastra Wave pentru a încărca fişierul.

Simulare comportamentală folosind ISE Simulator

În momentul în care un test bench a fost adăugat în proiect, se poate efectua simulare

comportamentală folosind ISE Simulator. ISE se integrează complet cu simulatorul ISE Simulator. ISE

permite ISE Simulator să creeze un director de lucru, să compileze fişierele sursă, să încarce design-ul şi

să execute simulare în funcție de proprietățile acesteia.

Pentru a selecta ISE Simulator ca fiind simulatorul proiectului:

1. În tab-ul Sources, se apasă click-dreapta pe linia de dispozitiv aleasă.

2. Se selectează Properties.

3. În fereastra Project Properties, se selectează ISE Simulator în zona Simulator.

Localizarea proceselor de simulare

Procesele de simulare în ISE permit ca simularea să fie rulată folosind ISE Simulator. Pentru a

localiza procesele ISE Simulator:

Page 27: LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control, uzual denumit ceas. În cadrul circuitelor secvențiale sincrone, elementele de

1. În tab-ul Sources, se selectează Behavioral Simulation.

2. Se selectează fişierul de test bench.

3. În tab-ul Processes, se apasă click pe simbolul + de lângă Xilinx ISE Simulator pentru a

expanda ierarhia de procese.

Sunt disponibile următoarele procese ale simulării:

Check Sytax – acest proces verifică corectitudinea sintaxei din test bench

Simulate Behavioral Model – acest proces începe simularea design-ului

Generate a self-checking HDL test bench – acest proces permite generarea unui test

bench HDL, echivalent cu un fişier test bench waveform (TBW)

Specificarea proprietăţilor simulării

Se va realiza o simulare comportamentală pentru design după ce au fost setate anumite proprietăți pentru simulare. ISE permite setarea diferitelor proprietăți ISE Simulator. Pentru a vedea şi a modifica proprietățile simulatorului comportamental, se execută următorii paşi:

1. În tab-ul Sources, se selectează fişierul . 2. Se apasă click pe simbolul + din dreptul ModelSim pentru a expanda ierarhia din tab-ul

Processes. 3. Se apasă click dreapta pe Simulate Behavioral Model. 4. Se selectează Properties. 5. În fereastra Process Properties, se setează nivelul de afişare la Advanced pentru a putea vedea

toate proprietățile. 6. Se schimbă Simulation Run Time la 2000 ns.

7. Se apasă OK.

Page 28: LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control, uzual denumit ceas. În cadrul circuitelor secvențiale sincrone, elementele de

Realizarea de simulări

După ce proprietățile proceselor au fost setate, se poate rula ISE Simulator. Pentru a porni

simularea comportamentală, se apasă dublu click pe Simulate Behavioral Model. ISE Simulator creează

directorul de lucru, compilează fişierele sursă, încarcă design-ul şi execută simulări în perioada de timp

specificată.

Majoritate design-urilor rulează la 100 Hz şi de aceea poate dura destul timp simularea.

Adăugarea de semnale

Pentru a vedea semnalele în timpul simulării, acestea trebuiesc adăugate în fereatsra

Waveform. Semnalele adiționale sunt afişate în fereastra Sim Hierarchy.

Crearea unei Test Bench Waveform folosind Waveform Editor

Această secțiune prezintă modul în care poate fi folosit Waveform Editor. Waveform Editor este

un instrument pentru crearea de test bench-uri în ISE. El poate fi folosit pentru a introduce stimului în

mod grafic sau pentru a genera un test bench VHDL. Sau un test fixture Verilog.

Crearea unei surse pentru Test Bench Waveform

În această secțune se va crea un test bench waveform numai pentru un modul. Waveform Editor

poate fi folosit pentru a genera stimuli pentru design-urile top-level de asemenea.

Pentru a crea un test bench cu ISE Simulator Waveform Editor:

1. Se selectează time_cnt în tab-ul Sources.

2. Se selectează Project > New Source.

3. În New Source Wizard, se selectează tipul Test Bench Waveform.

4. Se tipăreşte time_cnt_tb.

5. Se apasă Next de două ori.

6. Se apasă Finish.

Waveform Editor este deschis în ISE. Se deschide fereastra Initialize Timing şi se permite astfel

specificarea parametrilor de tmp folosiți în timpul simulării.

7. În fereastra InitializeTiming, se completează câmpurile după cum urmează:

Clock Time High: 10

Page 29: LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control, uzual denumit ceas. În cadrul circuitelor secvențiale sincrone, elementele de

Clock Time Low: 10

Input Setup Time: 5

Output Valid Delay: 5

8. Se selectează GSR(FPGA) în secțiunea Global Signals. 9. Se schimbă durata inițială a Test Bench-ului la 3000. 10. Se apasă Finish.

Aplicarea de stimuli

ÎnWaveform Editor, în celula albastră, se poate aplica o tranziție (high/low). Dimensiunea acestei celule

este determinată de întârzierile pentru Input şi Output.

Pentru a introduce stimuli de intrare se apasă click pe semnale în dreptul perioadei de timp când se

doreşte a face modificarea. Acestea se modifică din starea low în starea high.

Page 30: LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control, uzual denumit ceas. În cadrul circuitelor secvențiale sincrone, elementele de

Se apasă icoana Save în toolbar.Noua sursă test bench waveform este adăugată automat

proiectului.

Se selectează fişierul .tbw din tab-ul Sources.

Se apasă dublu click pe Generate Self-Checking Test Bench în tab-ul Process.

Este generat un test bench conținând datele de ieşire şi codul autoverificat. Acesta poate fi folosit

pentru a compara datele din cadrul simulărilor ulterioare.