|
|
(Nu s-au afișat 8 versiuni intermediare efectuate de alți 2 utilizatori) |
Linia 1: |
Linia 1: |
− | == Crearea unui proiect ==
| + | Alegeți din cele două variante disponibile: |
− | | + | * [[Tutorial Xilinx ISE (14.7)]] |
− | Pentru a porni programul Xilinx ISE în laborator, apăsați tasta F12, în consola care apare tastați comanda '''ise&''', și mai apăsați o data F12. Odată pornită aplicația, aceasta va arăta într-un mod similar cu cel de mai jos:
| |
− | | |
− | [[Fișier:ise1.png|600px|Fereastra inițială a programului Xilinx ISE]]
| |
− | | |
− | Vom continua acest tutorial cu sinteza circuitului de adunare a cărui simulare a fost prezentată în lucrarea de laborator precedentă. Ca şi în cazul programului Modelsim, prima operație este de a creea un proiect nou. După ce dați click pe '''File''' -> '''New Project''' vi se va deschide următoarea fereastră:
| |
− | | |
− | [[Fișier:ise2.png|600px|Fereastra proiect nou în Xilinx ISE]]
| |
− | | |
− | Modifcați întâi locația proiectului să fie '''/home/student/Xilinx''' și apoi dați un nume proiectului, în cazul nostru '''Adder'''. Mai departe vi se va afișa următoarea fereastră:
| |
− | | |
− | [[Fișier:ise3.png|600px|Fereastra pentru configurarea dispozitivului Xilinx ISE]]
| |
− | | |
− | În funcție de placa cu care lucrați, selectați întâi familia de FPGA-uri (Spartan2, Spartan3 sau Spartan3E), apoi alegeți dispozitivul și pachetul conform codurilor pe care le vedeți pe cip. Restul opțiunilor le puteți ignora deocamdată. Butonul '''Next''' va afișa următoarea fereastră:
| |
− | | |
− | [[Fișier:ise4.png|600px|Fereastra pentru crearea de fișiere în Xilinx ISE]]
| |
− | | |
− | Vom adăuga fișierele manual după crearea proiectului, așa că puteți da click pe Next și aici ca și în fereastra următoare ('''Add Existing Sources'''). Ultima fereastă va conține cuprinsul setărilor folosite, unde veți da click pe butonul '''Finish''':
| |
− | | |
− | [[Fișier:ise5.png|600px|Fereastra detalii proiect în Xilinx ISE]] | |
− | | |
− | == Adăugarea de fișiere noi la proiect ==
| |
− | | |
− | Din meniul '''Project''' selectați opțiunea '''New Source...''' și va apărea următoarea fereastră:
| |
− | | |
− | [[Fișier:ise6.png|600px|Fereastră de adăugare fișier nou]]
| |
− | | |
− | Selectați tipul fișierului ca modul Verilog și dați-i un nume (în cazul de față, Adder). În continuare va apărea fereastra de configurare a modulului:
| |
− | | |
− | [[Fișier:ise7.png|600px|Fereastră configurare a modulului]]
| |
− | | |
− | Aici puteți completa detaliile cerute, conform figurii, pentru a genera în mod automat interfața modulului, sau puteți selecta '''Next''' și scrie interfața manual, ca și în Modelsim. Ultima fereastră vă face un sumar al opțiunilor alese:
| |
− | | |
− | [[Fișier:ise8.png|600px|Sumarul configurației modulului]]
| |
− | | |
− | După apăsarea butonului '''Finish''', o sa apară următoarea fereastră, unde se observă că a apărut noul fișier în lista proiectului (vezi cerc verde) și acesta s-a și deschis pentru a putea fi editat. Adăugați blocul '''assign''' care implementează funcționalitatea modulului, conform lucrării de laborator 1.
| |
− | | |
− | [[Fișier:ise9.png|600px|Fișierul Adder.v adăugat în proiect și deschis pentru editare]]
| |
− | | |
− | Dacă fișierul Verilog există deja, puteți alege din meniul '''Project''' opțiunea '''Add Copy of Source...''' care va copia fișierul deja existent în folder-ul proiectului.
| |
− | | |
− | === Adăugarea fișierului de constrângeri ===
| |
− | | |
− | Odată ce există în proiect cel puțin un fișier HDL, se poate adăuga în continuare fișierul de constrângeri, care va fi subordonat fișierului Verilog principal. Adăugarea lui se face tot prin opțiunea '''New Source...''' din meniul '''Project''':
| |
− | | |
− | [[Fișier:ise10.png|600px|Adăugarea fișierului de constrângeri]]
| |
− | | |
− | După selectarea tipului de fișier (Implementation Constraints File) și numirea acestuia dați click pe '''Next''', apoi pe '''Finish'''. În continuare va apărea fișierul de constrângeri sub fișierul Verilog în lista de proiect (vezi cerc verde). După ce îl selectați, în lista de procese va apărea o nouă opțiune '''User Constraints''' -> '''Edit Contraints (Text)''' (vezi cerc albastru). Dând dublu-click pe această opțiune, se va deschide o fereastră de editare pentru fișierul de constrângeri. Faceți toate legăturle de care este nevoie. În cazul de față, vom lega intrarea '''in0''' la switch-urile '''SW0 - SW3''', intrarea '''in1''' la switch-urile '''SW4 - SW7''' și ieșirea '''out''' la ledurile '''LD0 - LD4''':
| |
− | | |
− | <syntaxhighlight lang="Verilog">
| |
− | net "out[0]" loc = "p46";
| |
− | net "out[1]" loc = "p45";
| |
− | net "out[2]" loc = "p44";
| |
− | net "out[3]" loc = "p43";
| |
− | net "out[4]" loc = "p42";
| |
− | | |
− | net "in0[0]" loc = "p89";
| |
− | net "in0[1]" loc = "p88";
| |
− | net "in0[2]" loc = "p87";
| |
− | net "in0[3]" loc = "p86";
| |
− | | |
− | net "in1[0]" loc = "p84";
| |
− | net "in1[1]" loc = "p83";
| |
− | net "in1[2]" loc = "p82";
| |
− | net "in1[3]" loc = "p81";
| |
− | </syntaxhighlight>
| |
− | | |
− | Atenție: Ca și în cazul codului Verilog, dacă portul are un singur bit, atunci va lipsi și paranteza dreaptă cu indexul acestuia, deci:
| |
− | | |
− | <syntaxhighlight lang="Verilog">
| |
− | net "port_de_un_bit" loc = "p46";
| |
− | </syntaxhighlight>
| |
− | | |
− | [[Fișier:ise11.png|600px|Editarea fișierului de contrângeri]]
| |
− | | |
− | == Sinteza și programarea plăcii FPGA ==
| |
− | | |
− | Pentru a începe etapele procesului de programare a plăcii, veți selecta din nou fișierul Verilog în lista de proiect (vezi cerc verde) și selectați din lista de procese opțiunea '''Generate Programming File'''. Dacă nu există nici o greșeală, în dreptul fiecărei etape va apărea un cerc verde. Dacă aveți erori, în tabul numit '''Errors''' (vezi cerc roșu) puteți afla mai multe detalii ca să vă ajute în procesul de depanare:
| |
− | | |
− | [[Fișier:ise12.png|600px|Pornirea procesului de sinteză și programare a plăcii]]
| |
− | | |
− | Dacă nu există erori, în continuare puteți da click pe opțiunea '''Configure Target Device''' din lista de procese.
| |
− | | |
− | | |
− | | |
− | <font size="20" color="red">Atenție: asigurați-vă în acest moment că placa este alimentată!</font>
| |
− | | |
− | | |
− | | |
− | Vi se va deschide o fereastră care vă va anunța că nu există definit un proiect iMPACT, iar după ce dați ok, va porni aplicația iMPACT, care este folosită pentru configurarea plăcii și va apărea următoarea fereastră:
| |
− | | |
− | [[Fișier:ise13.png|600px|Pornirea procesului de sinteză și programare a plăcii]]
| |
− | | |
− | În continuare, dați click pe '''Finish'''. Va apărea o fereastră cu două cipuri verzi, fiecare cu un cod de dispozitiv, conform ferestrei de mai jos. Primul are codul FPGA-ului (cel selectat la crearea proiectului și care este scris pe FPGA), iar al doilea are un alt cod. Primul pătrat reprezintă FPGA-ul, iar al doilea o memorie flash pe care nu o vom utiliza și căreia nu-i vom asocia nici un fișier de programare:
| |
− | | |
− | [[Fișier:ise14.png|600px|Fereastra cu dispozitivele din scan-chain]]
| |
− | | |
− | Vi se va cere să selectați un fișier de configurare pentru fiecare din cele două cipuri. Pentru FPGA selectați fișierul '''.bit''' obținut la pasul anterior, care poartă numele proiectului (în cazul de față '''adder.bit''') și pentru memoria flash selectați opțiunea '''Bypass''', sau '''Cancel'''. Vi se va deschide o fereastră ca cea de mai jos, utilizată pentru modificarea opțiunilor de configurare. Puteți da click pe Finish fără a modifica nimic. Pentru a configura efectiv placa, dați click dreapta pe pătratul reprezentând FPGA-ul și selectați opțiunea '''Program'''.
| |
− | | |
− | [[Fișier:ise15.png|600px|Opțiuni de configurare]]
| |