Sunteți pe pagina 1din 8

PREZENTAREA MEDIULUI DE PROIECTARE/ PROGRAMARE ISE 8.1 DE LA XILINX

1. Scopul lucrării

Prezentarea pachetului de programe ISE 8.1 de la firma Xilinx, mediu destinat implementării structurilor digitale prin programarea circuitelor integrate programabile fabricate de firma Xilinx, cel mai mare producător mondial de circuite PLD (cam 60% din piaţă).

2. Aparate necesare

- calculator compatibil Pentium, minim 500MHz, minim 256MB RAM

- mediul de programare ISE (Integrated Software Environment)-versiunea

8.1i, furnizat de firma Xilinx, instalat pe o platformă Windows XP (SP2).

Programul poate fi instalat şi pe sistemele de operare Linux sau Solaris.

- mediul de simulare ModelSim – versiunea 6.0, furnizat de firma Mentor Graphics, destinat simulării proiectelor realizate în mediul ISE.

3. Consideraţii teoretice

Firma Xilinx oferă pachetul de programe ISE (Integrated Software Environment), ajuns în prezent la versiunea 10. Deşi pachetul conţine şi un simulator care permite vizualizarea formelor de undă în diferite noduri ale circuitului sintetizat, de obicei el este însoţit de ModelSim, un alt simulator puternic realizat de firma Mentor Graphics pentru mediul ISE. Vom prezenta în cele ce urmează versiunea 8.1 a mediului de proiectare ISE. Orice utilizator poate descărca de pe site-ul firmei Xilinx programul ISE Webpack, pe care îl poate utiliza pentru programarea circuitelor Xilinx. Este un program care are câteva limitări faţă de versiunea comercială a mediului ISE, dar care poate fi folosit pentru proiecte de complexitate mică şi medie. Programul ModelSim poate fi şi el descărcat de pe acelaşi site. După înregistrarea on-line, se primeşte prin e-mail codul solicitat pentru instalarea programului. Pentru a ilustra etapele proiectării în mediul ISE, vom considera un exemplu de automat finit simplu, care are diagrama stărilor reprezentată în figura 3.1. Codul sursă VHDL pe care îl vom folosi în acest exemplu se găseşte în anexă. După lansarea în execuţie a programului Project Navigator, selectăm din meniul File opţiunea New Project. Apare fereastra de dialog din figura 3.2 în care completăm numele proiectului (de exemplu, automat) şi directorul în care plasăm proiectul. După ce selectăm şi HDL din lista Top-Level Source Type, apăsăm butonul Next şi trecem la următoarea fereastră de dialog. Fereastra Device Properties, reprezentată în figura 3.3, stabileşte circuitul integrat folosit în proiect şi programele folosite pentru sinteză şi simulare. Observăm că am ales din toată lista de circuite disponibile (All) cel mai mic FPGA din familia Spartan3, circuitul XC3S50 (1728 celule logice, 50000 porţi logice

echivalente), în capsula PQ208. Alegem programul XST(VHDL/Verilog) pentru

.

1

x

clock reset Automat finit
clock
reset
Automat
finit

y

reset

0 0 S 0 1 S 1 y = 0 y = 0 1 1
0
0
S 0
1
S 1
y
= 0
y
= 0
1
1
1
S 3
S 2
y
= 1
y
= 0
0
0

Fig.3.1 Exemplu de automat finit

sinteza circuitului, iar pentru simulare alegem Modelsim-XE VHDL. După eventuala selecţie a celorlalte opţiuni, trecem cu ajutorul butonului Next la fereastra următoare. În fereastra Create New Source apăsăm butonul New Source şi se deschide fereastra Select Source Type, fereastră reprezentată în figura 3.4. Pentru că sursa noastră este descrisă printr-un cod VHDL, selectăm VHDL Module şi introducem numele fişierului, automat.vhd (extensia este implicită). Verificăm locaţia fişierului, activăm opţiunea Add to project şi apăsăm Next. Următoarea fereastră deschisă este Define Module, prin care se introduc semnalele de intrare/ieşire. Putem să nu completăm nimic şi apăsăm butonul Next. Apare fereastra Summary, care centralizează datele introduse până acum. Dacă totul este aşa cum ne dorim, apăsăm butonul Finish, după care se deschide din nou o fereastră Create New Source. Cum nu mai avem alte fişiere sursă, apăsăm Next, iar în fereastra Add Existing Sources apăsăm din nou Next.

Add Existing Sources ap ă s ă m din nou Next . Fig. 3.2 Mediul ISE

Fig. 3.2 Mediul ISE şi fereastra de dialog Create New Project

2

Fig. 3.3 Fereastra de dialog Device Properties Fig. 3.4 Fereastra de dialog Select Source Type

Fig. 3.3 Fereastra de dialog Device Properties

Fig. 3.3 Fereastra de dialog Device Properties Fig. 3.4 Fereastra de dialog Select Source Type Fig.

Fig. 3.4 Fereastra de dialog Select Source Type

Properties Fig. 3.4 Fereastra de dialog Select Source Type Fig. 3.5 Ferestrele proiectului automat , inclusiv

Fig. 3.5 Ferestrele proiectului automat, inclusiv editorul de text

3

În ultima fereastră care apare, intitulată Project Summary, se centralizează datele datele proiectului care au fost introduse până acum. După apăsarea butonului Finish, se deschide mediul ISE, reprezentat în figura 3.5, una dintre ferestre fiind editorul de text pentru codul VHDL. După scrierea codului VHDL şi salvarea lui în fişierul automat.vhd, se poate face sinteza circuitului, folosind fie dublu-click pe Synthesize-XST din fereastra Processes, fie selectând Process din meniul principal şi Run. Dacă dorim să modificăm opţiunile implicite în procesul de sinteză, atunci putem selecta Properties din Process şi să operăm modificările dorite (de exemplu, să se optimizeze aria ocupată din circuitul integrat în loc de viteză, care era parametrul implicit, sau efortul de optimizare să fie mare în loc de normal etc.). În urma operaţiei de sinteză rezultă un raport care poate fi vizualizat cu View Synthesis Report şi din care aflăm că s-au folosit 2 felii din cele 768 pe care le are circuitul integrat, 2 bistabile din cele 1536 disponibile, un generator universal de funcţii de tip LUT cu 4 intrări din cele 1536 existente, 4 pini de intrare/ieşire din cei 124 pini pe care îi are circuitul şi un singur semnal de ceas din cele 8 disponibile. Se folosesc 25 de porţi logice echivalente, frecvenţa maximă poate atinge 369 MHz, timpul maxim de propagare fiind de 2,707 ns. Un dublu-click pe Implement Design din fereastra Processes realizează cele 3 procese necesare implementării fizice a proiectului în interiorul circuitului integrat:

Translate, Map şi Place & Route. Fiecare proces generează câte un raport care specifică din nou resursele utilizate, amplasarea lor în interiorul circuitul integrat, timpul necesar pentru plasarea automată şi realizarea interconexiunilor dintre blocurile logice folosite (3 secunde pentru exemplul nostru), memoria folosită în acest scop (la noi 144 MB), alocarea pinilor de intrare/ieşire la capsula circuitului integrat, estimarea consumului etc. Se pot face unele corecţii manuale sau se pot impune anumite restricţii (vezi figura 3.6).

sau se pot impune anumite restric ţ ii (vezi figura 3.6). Fig. 3.6 Raportul proiectului, dup

Fig. 3.6 Raportul proiectului, după etapele de sinteză şi implementare

4

Fig. 3.7 Fereastra de dialog Select Source Type Pentru a testa func ţ ionarea circuitului,

Fig. 3.7 Fereastra de dialog Select Source Type

Pentru a testa funcţionarea circuitului, selectăm din meniul principal Project şi apoi New Source. Se deschide fereastra de dialog din figura 3.7. Se selectează Test Bench Waveform şi se tastează numele fişierului de test în câmpul respectiv. Se selectează opţiunea Add to Project şi se apasă butonul Next. Se deschide o nouă fereastră, numită Associate Source, din care selectăm sursa asociată, iar după apăsarea lui Next apare fereastra Summary. Apăsarea butonului Finish deschide fereastra Initialize Timing, reprezentată în figura 3.8.

deschide fereastra Initialize Timing , reprezentat ă în figura 3.8. Fig. 3.8 Fereastra de dialog Initialize

Fig. 3.8 Fereastra de dialog Initialize Timing

5

Fig. 3.9 Rezultatul simul ă rii func ţ ion ă rii circuitului folosind op ţ

Fig. 3.9 Rezultatul simulării funcţionării circuitului folosind opţiunea Generate Expected Simulation Results

Observăm că în această fereastră se pot alege parametrii semnalului de ceas. Dacă lăsăm valorile implicite şi apăsăm butonul Finish va apărea o fereastră care conţine semnalele de intrare/ieşire ale automatului nostru, dar numai forma de undă a semnalului de ceas este reprezentată. Selectând opţiunea Test Bench din meniul principal şi apoi Set End of Test Bench putem alege durata simulării. Am ales 5000 ns şi apoi am editat semnalele de intrare cu ajutorul mouse-ului, aşa cum se vede în figura 3.9. Un dublu-click pe prima opţiune de la ModelSim Simulator ne oferă rezultatul reprezentat în figura 3.9. Dacă analizăm forma de undă a ieşirii constatăm că circuitul funcţionează aşa cum ne-am dorit.

m c ă circuitul func ţ ioneaz ă a ş a cum ne-am dorit. Fig. 3.10

Fig. 3.10 Rezultatul simulării funcţionării circuitului folosind opţiunea Simulate Behavioral Model

6

Fig. 3.11 Fereastra de dialog Welcome to iMPACT Fi ş ierul text care con ţ

Fig. 3.11 Fereastra de dialog Welcome to iMPACT

Fişierul text care conţine raportul procesului de sinteză stabileşte că avem de-a face cu un automat care are 4 stări, 8 tranziţii, o intrare şi o ieşire. Stările interne nu apar în formele de undă vizualizate, dar programul foloseşte un algoritm de optimizare pentru codificarea stărilor. Vedem că pentru x = 1 logic, ieşirea y devine 1 timp de o perioadă de ceas, la fiecare 4 perioade de ceas, conform diagramei stărilor din figura 4.8. Pentru x = 0 se păstrează starea curentă, cu ieşirea y = 0, iar pentru reset = 1, automatul îşi păstrează starea S0, generând 0 logic la ieşire. Un dublu-click pe a doua opţiune de la ModelSim Simulator ne oferă fereastra Wave din mediul ModelSim, reprezentată în figura 5.12. Observăm aceleaşi rezultate şi numeroase posibilităţi de vizualizare/măsurare a formelor de undă. Procesul ModelSim Simulator apare în fereastra Process după selecţia lui Behavioral Simulation din fereastra Sources. Următorul proces presupune generarea fişierului care configurează circuitul integrat programabil. Un dublu-click pe procesul Configure Device iMPACT deschide fereastra de dialog Welcome to iMPACT, reprezentată în figura 3.11. Se face selecţia recomandată în figură şi se apasă butonul Finish. Programul verifică existenţa cablului de legătură dintre calculator şi placa care conţine circuitul integrat şi se confirmă programarea. Succesul procesului de programare a circuitului integrat este confirmat prin mesajul Program Succeeded.

4. Modul de lucru

4.1. Se studiază automatul finit reprezentat în figura 3.1 şi se schiţează sinteza

circuitului folosind două bistabile de tip D şi porţi logice. Se vizualizează şi codul

VHDL al circuitului, chiar dacă încă nu se înţeleg toate instrucţiunile respective.

4.2. Se lansează în execuţie Project Navigator, se deschide un nou proiect,

numit automat şi se parcurg toate etapele descrise la punctul 3.

7

Codul sursă VHDL al automatului finit considerat ca exemplu (diagrama stărilor este dată în figura 3.1):

LIBRARY ieee ; USE ieee.std_logic_1164.all;

---------------------------------------------------

ENTITY fsm IS PORT( clock, reset:

IN BIT;

x: IN BIT; y: OUT BIT);

END fsm;

---------------------------------------------------

ARCHITECTURE fsm OF fsm IS TYPE stare IS (S0, S1, S2, S3); SIGNAL stare_prezenta, stare_viitoare: stare; BEGIN

------------------------------------------------

PROCESS (clock, reset)

BEGIN IF (reset = '1') THEN stare_prezenta <= S0; ELSIF (clock'EVENT AND clock = '1') THEN stare_prezenta <= stare_viitoare; END IF; END PROCESS;

------------------------------------------------

PROCESS (stare_prezenta, x)

BEGIN CASE stare_prezenta IS WHEN S0 =>

y <= '0';

IF x = '0' THEN stare_viitoare <= S0;

ELSE stare_viitoare <= S1; END IF; WHEN S1 =>

y <= '0';

IF x = '0' THEN stare_viitoare <= S1;

ELSE stare_viitoare <= S2; END IF; WHEN S2 =>

y <= '0';

IF x = '0' THEN stare_viitoare <= S2;

ELSE stare_viitoare <= S3; END IF; WHEN S3 =>

END CASE; END PROCESS; END fsm;

y <= '1';

IF x = '0' THEN stare_viitoare <= S3;

ELSE stare_viitoare <= S0; END IF;

8