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.
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.
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;