LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control,...
Transcript of LABORATOR 1 PROIECTAREA CIRCUITELOR …cpop/Calculatoare_Numerice_CN I/CN I_Labs... · de control,...
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.
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ă.
Î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.
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.
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)
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
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
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
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
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
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
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:
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.
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;
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.
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.
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.
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:
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.
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
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.
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.
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ă.
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.
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.
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:
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.
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
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.
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.