Documente Academic
Documente Profesional
Documente Cultură
http://arh.pub.ro/lab/cid1
1/12
http://arh.pub.ro/lab/cid1
Exemplu:
Ne propunem sa proiectam un circuit care sa faca adunarea a doua numere. Pentru a introduce in acest circuit cele doua numere si pentru afisarea rezultatului adunarii vom folosi placa de dezvoltare cu FPGA prezenta pe mesele de laborator. Ne alegem urmatoarele detalii de proiectare (alese intr-un mod conventabil din punct de vedere fizic, cu toate ca nu exista o regula generala): Cele doua numere care reprezinta intrarile circuitului, sunt doua varibile de tip intrare, pe cate 4 biti, atribuite celor 8 switch-uri de pe placa, SW7-SW4 pentru variabila a, respectiv SW3-SW0 pentru varibila b. Iesirea dorim s-o afisam pe 5 din cele 8 leduri disponibile pe placa (doua numele reprezentate pe cate 4 biti fiecare, insumate pot fi reprezentate pe 5 biti). Alegem ledurile LD4-LD0. La finalul exercitiului, ar trebui sa putem observa pe leduri suma celor doua numere introduse prin intermediul celor doua grupuri de cate 4 switch-uri. Mai departe vom arata drumul care trebuie parcurs de la descrierea unei probleme pana la implementarea sa fizica fara a tine cont de fazele de codare in Verilog si simulare cu Modelsim. Aceste faze au fost facute in laboratorul 1, unde a fost facuta si o mica introducere in limbajul Verilog. In continuare o sa trecem direct la faza de sintaza a circuitului. Pentru sinteza se va folosi un program numit Xilinx ISE. Pentru sinteza si implementarea fizica a circuitului se urmeaza urmatorii pasi: 1. Se creeaza un nou proiect: Primul pas este deschiderea programului Xilinx ISE care se gaseste pe desktop-ul fiecarei statii. Dupa aceasta se face click pe New->Project dand un nume proiectului ca in figura urmatoare. Dupa ce sa completat numele proiectului se da click pe Next.
2. Se seteaza parametrii FPGA-ului: In aceasta fereastra, se seteaza tipul de FPGA folosit. Se selecteaza familia: Spartan2 tipul: XC2S200, tipul capsulei este PQ208. (se va seta fiecare camp conform figurii de mai jos):
2/12
http://arh.pub.ro/lab/cid1
3/12
http://arh.pub.ro/lab/cid1
In acest moment ar trebui sa aveti deshisa o fereastra ca cea din figura de mai jos:
4/12
http://arh.pub.ro/lab/cid1
Trebuie sa apara o fereastra ca cea de mai jos. Aici se selecteaza tipul modului: Verilog Module, Se da un nume fisierului pe care intentionam sa il cream, dupa care se da click pe Next
5/12
http://arh.pub.ro/lab/cid1
Dupa aceasta va aparea o fereastra la care se da Finish apoi se va deschide o fereastra ca cea de mai jos. Acum se va trece la urmatoarea etapa: editarea codului.
6/12
http://arh.pub.ro/lab/cid1
Dupa ce s-a trecut prin toate etapele de mai sus trebuie editat codul sumatorului conform figurii de mai
Codul nostru:
7/12
http://arh.pub.ro/lab/cid1
5. Asignarea pinilor: Pentru asignarea pinilor se va face click pe Project->New Source si se va selecta Implementation Constraints File. In casuta File name se scrie numele fisierului de constrangeri. In exemplul curent acesta este sumator. Apoi in fereastra care va aparea se da Finish. Astfel vom crea fisierul de constrangeri sumator.ucf. In el vom putea scrie corespondentele pin-semnal.
8/12
http://arh.pub.ro/lab/cid1
Pentru a edita fisierul de constrangeri se da click pe +-ul din dreptul modulului sumator. Vom vedea apoi fisierul tocmai creat sumator.ucf. Cand se da click pe fisierul sumator.ucf in meniul de Processes va aparea un nou proces User Constraints -> Edit Constraints (Text) ca in figura de mai jos.
Se da dublu-click pe Edit Constraints(Text) si se va deschide fisierul sumator.ucf intr-o fereastra de editare de text. In acest moment fisierul este gol. In el trebuie sa facem asignarea propriu-zisa a pinilor. In fisierul de constrangeri pot fi date atat constrangeri legate de timing cat si constrangeri legate de asignarea pinilor. Constrangerile legate de timing sunt puse pentru a da o informatie tool-ului de sinteza legata de cat dorim noi sa fie de optimizat design-ul din punct de vedere a frecventei de lucru. Constrangerile legate de asignarea pinilor fac posibila legatura dintre lumea reala si cip-ul FPGA. Cipul FPGA este legat de periferice prin niste conexiuni fixe. De exemplu: cipul FPGA este legat la switch-ul 7 de pe placa de dezvoltare prin conexiunea fixa P81. Daca vrem sa avem o legatura cu acest SW7 trebuie doar sa asignam P81 unui semnal declarat de in modulul Verilog. In exemplul curent il asignam lui a[3]. In aceasta faza se face o asociere intre firele de care am vorbit mai sus (la faza de editare a codului Verilog) si pinii FPGA-ului. Se vor face urmatoarele asocieri: intrarii a i se vor asocia switch-urile SW7- SW4 (pinii FPGA-ului: P81 P82, P83, P84) intrarii b i se vor asocia switch-urile SW3-SW0 (pinii FPGA-ului: P86, P87, P88, P89) iesirii c i se vor asocia ledurile-urile LD4-LD0 ( pinii FPGA-ului: P42, P43, P44, P45, P46) Pentru a vedea toti pinii fpga-ului disponibili se poate consulta acest link
9/12
http://arh.pub.ro/lab/cid1
6. Sinteza propriu-zisa: Se da din nou click pe modulul sumator din meniul Sources. Din meniul Processes se va da dublu-click pe Configure Target Device dupa care se va astepta pana cand sinteza e gata. Sinteza va genera un fisier sumator.bit care reprezinta configuratia portilor logice ce va fi programata in FPGA in faza urmatoare.
10/12
http://arh.pub.ro/lab/cid1
7. Implementarea fizica:
Cand se va termina sinteza se va deschide automat o fereastra asemanatoare cu cea de mai jos:
ATENTIE: In acest moment asigurati-va ca placa este alimentata si cablul paralel este conectat.
In aceasta fereastra se selecteaza Finish, dupa care va aparea o fereastra ca cea de mai jos:
Aici se face click pe sumator.bit se se da apoi Open. Dupa care se va deschide .in mod automat o fereastra ca cea de mai jos:
11/12
http://arh.pub.ro/lab/cid1
In acesta fereastra se va selecta Bypass. Dupa aceasta faza va aparea urmatoarea figura:
Aici facem click-dreapta pe chipul din partea stinga si selectam Program si apoi in fereatra care apare selectam OK. Acum este momentul in care se face programarea fisierului sumator.bit pe placa de FPGA. Dupa ce programarea s-a terminat cu succes puteti modifica pozitiile switch-urilor si puteti obseva cum se aprind ledurile pe placa(rezultatul c de pe LD4 LD0). Numerele a, b si c vor fi reprezentare in binar pe 4 biti. Pentru cei care nu stapanesc conversia binar-zecimal pot consulta urmatorul tabel.
Atentie:
1. Un scurt indrumar de verilog il gasiti aici.
12/12