Sunteți pe pagina 1din 8

PREZENTAREA MEDIULUI DE PROIECTARE/

PROGRAMARE ISE 8.1 DE LA XILINX





1. Scopul lucrrii
Prezentarea pachetului de programe ISE 8.1 de la firma Xilinx, mediu destinat
implementrii structurilor digitale prin programarea circuitelor integrate programabile
fabricate de firma Xilinx, cel mai mare productor 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 simulrii proiectelor realizate n mediul ISE.

3. Consideraii teoretice
Firma Xilinx ofer pachetul de programe ISE (Integrated Software
Environment), ajuns n prezent la versiunea 10. Dei pachetul conine i un simulator
care permite vizualizarea formelor de und n diferite noduri ale circuitului sintetizat, de
obicei el este nsoit 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 descrca de pe site-ul firmei Xilinx programul ISE Webpack, pe
care l poate utiliza pentru programarea circuitelor Xilinx. Este un program care are
cteva limitri 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
descrcat de pe acelai site. Dup nregistrarea on-line, se primete prin e-mail codul
solicitat pentru instalarea programului.
Pentru a ilustra etapele proiectrii n mediul ISE, vom considera un exemplu de
automat finit simplu, care are diagrama strilor reprezentat n figura 3.1. Codul surs
VHDL pe care l vom folosi n acest exemplu se gsete n anex. Dup lansarea n
execuie a programului Project Navigator, selectm din meniul File opiunea
New Project. Apare fereastra de dialog din figura 3.2 n care completm numele
proiectului (de exemplu, automat) i directorul n care plasm proiectul. Dup ce
selectm i HDL din lista Top-Level Source Type, apsm butonul Next i
trecem la urmtoarea fereastr de dialog.
Fereastra Device Properties, reprezentat n figura 3.3, stabilete
circuitul integrat folosit n proiect i programele folosite pentru sintez i simulare.
Observm c am ales din toat lista de circuite disponibile (All) cel mai mic FPGA din
familia Spartan3, circuitul XC3S50 (1728 celule logice, 50000 pori logice
echivalente), n capsula PQ208. Alegem programul XST(VHDL/Verilog) pentru
.
1
S
0
y = 0
S
3
y = 1
S
1
y = 0
S
2
y = 0
reset
x
y
Automat
finit
clock
reset
0
0 0
0
1
1
1
1

Fig.3.1 Exemplu de automat finit

sinteza circuitului, iar pentru simulare alegem Modelsim-XE VHDL. Dup eventuala
selecie a celorlalte opiuni, trecem cu ajutorul butonului Next la fereastra urmtoare.
n fereastra Create New Source apsm 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, selectm VHDL Module i
introducem numele fiierului, automat.vhd (extensia este implicit). Verificm locaia
fiierului, activm opiunea Add to project i apsm Next.
Urmtoarea fereastr deschis este Define Module, prin care se introduc
semnalele de intrare/ieire. Putem s nu completm nimic i apsm butonul Next.
Apare fereastra Summary, care centralizeaz datele introduse pn acum. Dac totul este
aa cum ne dorim, apsm butonul Finish, dup care se deschide din nou o fereastr
Create New Source. Cum nu mai avem alte fiiere surs, apsm Next, iar n
fereastra Add Existing Sources apsm din nou Next.



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.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 pn acum. Dup apsarea 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 fiierul automat.vhd, se poate
face sinteza circuitului, folosind fie dublu-click pe Synthesize-XST din fereastra
Processes, fie selectnd Process din meniul principal i Run. Dac dorim s
modificm opiunile implicite n procesul de sintez, atunci putem selecta Properties
din Process i s operm modificrile 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 operaiei de sintez rezult un
raport care poate fi vizualizat cu View Synthesis Report i din care aflm 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 funcii de tip LUT cu 4 intrri din cele 1536
existente, 4 pini de intrare/ieire din cei 124 pini pe care i are circuitul i un singur
semnal de ceas din cele 8 disponibile. Se folosesc 25 de pori logice echivalente,
frecvena 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 implementrii fizice a proiectului n interiorul circuitului integrat:
Translate, Map i Place & Route. Fiecare proces genereaz cte 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/ieire la capsula circuitului integrat, estimarea
consumului etc. Se pot face unele corecii manuale sau se pot impune anumite restricii
(vezi figura 3.6).


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

4

Fig. 3.7 Fereastra de dialog Select Source Type

Pentru a testa funcionarea circuitului, selectm 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 fiierului de test n cmpul respectiv. Se
selecteaz opiunea Add to Project i se apas butonul Next.
Se deschide o nou fereastr, numit Associate Source, din care selectm
sursa asociat, iar dup apsarea lui Next apare fereastra Summary. Apsarea butonului
Finish deschide fereastra Initialize Timing, reprezentat n figura 3.8.


Fig. 3.8 Fereastra de dialog Initialize Timing

5


Fig. 3.9 Rezultatul simulrii funcionrii circuitului folosind opiunea
Generate Expected Simulation Results

Observm c n aceast fereastr se pot alege parametrii semnalului de ceas.
Dac lsm valorile implicite i apsm butonul Finish va aprea o fereastr care
conine semnalele de intrare/ieire ale automatului nostru, dar numai forma de und a
semnalului de ceas este reprezentat. Selectnd opiunea Test Bench din meniul
principal i apoi Set End of Test Bench putem alege durata simulrii. Am
ales 5000 ns i apoi am editat semnalele de intrare cu ajutorul mouse-ului, aa cum se
vede n figura 3.9. Un dublu-click pe prima opiune de la ModelSim Simulator
ne ofer rezultatul reprezentat n figura 3.9. Dac analizm forma de und a ieirii
constatm c circuitul funcioneaz aa cum ne-am dorit.


Fig. 3.10 Rezultatul simulrii funcionrii circuitului folosind opiunea
Simulate Behavioral Model
6

Fig. 3.11 Fereastra de dialog Welcome to iMPACT

Fiierul text care conine raportul procesului de sintez stabilete c avem de-a
face cu un automat care are 4 stri, 8 tranziii, o intrare i o ieire. Strile interne nu
apar n formele de und vizualizate, dar programul folosete un algoritm de optimizare
pentru codificarea strilor. Vedem c pentru x = 1 logic, ieirea y devine 1 timp de o
perioad de ceas, la fiecare 4 perioade de ceas, conform diagramei strilor din figura
4.8. Pentru x = 0 se pstreaz starea curent, cu ieirea y = 0, iar pentru reset = 1,
automatul i pstreaz starea S0, genernd 0 logic la ieire.
Un dublu-click pe a doua opiune de la ModelSim Simulator ne ofer
fereastra Wave din mediul ModelSim, reprezentat n figura 5.12. Observm
aceleai rezultate i numeroase posibiliti de vizualizare/msurare a formelor de
und. Procesul ModelSim Simulator apare n fereastra Process dup selecia
lui Behavioral Simulation din fereastra Sources.
Urmtorul proces presupune generarea fiierului 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 selecia recomandat n figur i se apas butonul Finish. Programul verific
existena cablului de legtur dintre calculator i placa care conine 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 schieaz sinteza
circuitului folosind dou bistabile de tip D i pori logice. Se vizualizeaz i codul
VHDL al circuitului, chiar dac nc nu se neleg toate instruciunile respective.

4.2. Se lanseaz n execuie 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 strilor 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 =>
y <= '1';
IF x = '0' THEN
stare_viitoare <= S3;
ELSE
stare_viitoare <= S0;
END IF;
END CASE;
END PROCESS;
END fsm;

8

S-ar putea să vă placă și