Lucrarea 1 Familiarizare cu programarea FPGAatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2-...

22
Ioana Dogaru – Sisteme Reconfigurabile de Calcul Lucrarea 1 Familiarizare cu programarea FPGA Scopul lucrării este acela de a parcurge paşii de la definirea unui proiect până la înscrierea fişierului de configurare în circuitul FPGA şi testarea funcţionalităţii acestuia folosind resursele hardware şi software existente, şi anume placa de dezvoltare Digilent Basys2 şi Xilinx ISE WebPack. Desfăsurarea lucrării prin etapele sale va conţine următoarele puncte: Cum se porneşte un proiect FPGA Cum se leagă un design de un anumit tip de circuit FPGA Cum se descrie un circuit logic folosind VHDL şi/sau schematic Cum se detectează erorile sintactice Cum se sintetizează un netlist de la o descriere de circuit. Cum se potriveşte netlist-ul într-un FPGA. Cum se generează un bitstream Cum se descarcă un bitstream într-un FPGA Cum se testează FPGA-ul programat. Pentru început se pune problema realizării unei logice simple care sa fie încărcată într-un FPGA. Cum am arătat mai sus, dispunem deja de un circuit FPGA, o placă de dezvoltare-testare şi un sistem de programe pe care ne putem baza ca să putem rezolva problema concretă. După definirea clară a problemei se realizează un nou proiect în Xilinx ISE Project Navigator care este mediul software de dezvoltare. Mediul de programare dispune de 4 ferestre pentru afişarea surselor proiectului, o fereastră de editare, una de alegere a proceselor ce se doresc a fi executate şi in final o fereastră pentru afişarea mesajelor (evidentiate in figura urmatoare). Programarea FPGA presupune finalizarea următoarelor etape care vor fi parcurse în exemplul ce va urma: 1. Descrierea circuitului logic folosind un limbaj de descriere hardware hardware description language (HDL) cum ar fi VHDL sau Verilog. De asemenea se poate introduce şi în schematic sau se pot combina metodele. 2. Se transformă HDL sau schema în netlist (lista de legături) prin folosirea unui program care sintetizează logica (logic synthesizer). Netlist-ul este o descriere a porţilor logice din design şi modul de interconectare. 3. Se folosesc uneltele de implementare (implementation tools) pentru a realiza maparea porţilor logice şi interconexiunile din FPGA. FPGA-ul este constituit din blocuri logice configurabile CLB (configurable logic blocks), care pot fi descompuse în tabele de cautare LUT-uri (look-up tables) care realizează operaţiile logice. CLB şi LUT sunt conectate folosind diferite resurse de rutare. Unealta software de mapare colectează netlistul porţilor într-un grup care se potriveşte unui LUT şi apoi se foloseşte modulul de plasare şi rutare (place & route tool) care atribuie grupul unui CLB specific prin închiderea/deschiderea switch-urilor în matricea de rutare pentru a le conecta împreună.

Transcript of Lucrarea 1 Familiarizare cu programarea FPGAatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2-...

Page 1: Lucrarea 1 Familiarizare cu programarea FPGAatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2- Lucrarea 1.pdf · Familiarizare cu programarea FPGA Scopul lucrării este acela de

Ioana Dogaru – Sisteme Reconfigurabile de Calcul

Lucrarea 1 Familiarizare cu programarea FPGA

Scopul lucrării este acela de a parcurge paşii de la definirea unui proiect până la înscrierea fişierului de configurare în circuitul FPGA şi testarea funcţionalităţii acestuia folosind resursele hardware şi software existente, şi anume placa de dezvoltare Digilent Basys2 şi Xilinx ISE WebPack.

Desfăsurarea lucrării prin etapele sale va conţine următoarele puncte: • Cum se porneşte un proiect FPGA • Cum se leagă un design de un anumit tip de circuit FPGA • Cum se descrie un circuit logic folosind VHDL şi/sau schematic • Cum se detectează erorile sintactice • Cum se sintetizează un netlist de la o descriere de circuit. • Cum se potriveşte netlist-ul într-un FPGA. • Cum se generează un bitstream • Cum se descarcă un bitstream într-un FPGA • Cum se testează FPGA-ul programat.

Pentru început se pune problema realizării unei logice simple care sa fie încărcată într-un FPGA.

Cum am arătat mai sus, dispunem deja de un circuit FPGA, o placă de dezvoltare-testare şi un sistem de programe pe care ne putem baza ca să putem rezolva problema concretă. După definirea clară a problemei se realizează un nou proiect în Xilinx ISE Project Navigator care este mediul software de dezvoltare. Mediul de programare dispune de 4 ferestre pentru afişarea surselor proiectului, o fereastră de editare, una de alegere a proceselor ce se doresc a fi executate şi in final o fereastră pentru afişarea mesajelor (evidentiate in figura urmatoare).

Programarea FPGA presupune finalizarea următoarelor etape care vor fi parcurse în exemplul ce va urma: 1. Descrierea circuitului logic folosind un limbaj de descriere hardware hardware description language (HDL) cum ar fi VHDL sau Verilog. De asemenea se poate introduce şi în schematic sau se pot combina metodele. 2. Se transformă HDL sau schema în netlist (lista de legături) prin folosirea unui program care sintetizează logica (logic synthesizer). Netlist-ul este o descriere a porţilor logice din design şi modul de interconectare. 3. Se folosesc uneltele de implementare (implementation tools) pentru a realiza maparea porţilor logice şi interconexiunile din FPGA. FPGA-ul este constituit din blocuri logice configurabile CLB (configurable logic blocks), care pot fi descompuse în tabele de cautare LUT-uri (look-up tables) care realizează operaţiile logice. CLB şi LUT sunt conectate folosind diferite resurse de rutare. Unealta software de mapare colectează netlistul porţilor într-un grup care se potriveşte unui LUT şi apoi se foloseşte modulul de plasare şi rutare (place & route tool) care atribuie grupul unui CLB specific prin închiderea/deschiderea switch-urilor în matricea de rutare pentru a le conecta împreună.

Page 2: Lucrarea 1 Familiarizare cu programarea FPGAatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2- Lucrarea 1.pdf · Familiarizare cu programarea FPGA Scopul lucrării este acela de

Ioana Dogaru – Sisteme Reconfigurabile de Calcul

4. Dupa ce faza de implementare este completă, un alt program extrage starea switch-urilor din matricea de rutare şi genereaza şirul de biţi (bitstream) unde “1” si “0” corespund stării de deschis sau respectiv de închis a comutatoarelor. 5. Bitstream-ul este înscris în circuitul FPGA. XILINX ISE oferă editor HDL şi schematic, sintetizor logic, generator de bitstream. Programul Adept de la Digilent oferă posibilitatea de descarcare a bitstream-ului si configurarea FPGA-ul de pe placa de dezvoltare.

Principalele 4 ferestre in mediul de programare Xilinx ISE “Project Navigator”

Page 3: Lucrarea 1 Familiarizare cu programarea FPGAatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2- Lucrarea 1.pdf · Familiarizare cu programarea FPGA Scopul lucrării este acela de

Ioana Dogaru – Sisteme Reconfigurabile de Calcul

Primul design folosind placa de dezvoltare Digilent Basys2 Placa de dezvoltare Basys2 are un circuit FPGA din familia Xilinx Spartan, si anume Spartan3E –XC3S100E. Circuitul se gaseste intr-o capsula de tip CP132. (o capsula cu 132 de pini)

Diagrama blocurilor plăcii de dezvoltare Basys2 Placa din figura alăturată este programată prin portul USB2. În plus, proiectarea ei s-a realizat astfel încât să functioneze cu programul gratuit ISE WebPack CAD de la firma Xilinx, cu ajutorul căruia se pot defini circuitele prin utilizarea modului grafic (schematic) sau a limbajului de descriere hardware HDL.

Page 4: Lucrarea 1 Familiarizare cu programarea FPGAatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2- Lucrarea 1.pdf · Familiarizare cu programarea FPGA Scopul lucrării este acela de

Ioana Dogaru – Sisteme Reconfigurabile de Calcul

Placa de dezvoltare Basys2

Placa Basys2 este alimentată prin intermediul unui cablu USB, fiind în acelasi timp prevăzută si cu un conector pentru baterie în scopul utilizării surselor externe Circuitul XC3S100E din familia Spartan 3E, are ca resurse tipice:

� 2 DCM-uri, � 100k porti, � un număr de 2160 de celule echivalente logice, � 4 multiplicatoare dedicate, � folosirea unei arhitecturi ierarhice a memoriei Select RAM, � resurse logice multiple si flexibile. � In ceea ce priveste stocarea informatiilor, acest circuit are o memorie RAM

distribuită de 15Kb si 72Kb blocuri RAM .

Circuitul XC3S100E are 22 de rânduri si 16 coloane de blocuri logice configurabile si o singură coloană de memorie RAM.

Page 5: Lucrarea 1 Familiarizare cu programarea FPGAatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2- Lucrarea 1.pdf · Familiarizare cu programarea FPGA Scopul lucrării este acela de

Ioana Dogaru – Sisteme Reconfigurabile de Calcul

Problema: Să se realizeze un decodor pentru display LED cu 7 segmente folosind placa de dezvoltare Basys2– intrare de 4 biti si ieşirea de 7 pentru a afişa cifre de la 0-F in hexadecimal.

Schema pentru decodorul de LED

1. Definirea unui proiect nou

Pentru a defini un design se lanseaza Xilinx ISE Project Navigator şi se crează un proiect nou : File -> New Project. Proiectul va avea o locatie (Numele locatiei proiectului nu trebuie sa contina spatii intre cuvinte), un nume, precum si un mod de a defini si implementa modulul de top ( in acest caz alegem varianta folosirii unui limbaj de descriere hardware (HDL – Hardware Description Language). In cele ce urmeaza, vom folosi limbajul VHDL.

Page 6: Lucrarea 1 Familiarizare cu programarea FPGAatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2- Lucrarea 1.pdf · Familiarizare cu programarea FPGA Scopul lucrării este acela de

Ioana Dogaru – Sisteme Reconfigurabile de Calcul

Se trece la pasul al doilea si se va alege tipul de circuit care se va face conform

figurii de mai jos (familia, circuitul, capsula, gradul de viteza) pentru care se va realiza implementarea.

Page 7: Lucrarea 1 Familiarizare cu programarea FPGAatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2- Lucrarea 1.pdf · Familiarizare cu programarea FPGA Scopul lucrării este acela de

Ioana Dogaru – Sisteme Reconfigurabile de Calcul

In cazul in care se parcurg pasii wizard-ului care genereaza un nou proiect, se

vor putea adauga surse existente, se pot crea noi surse care vor fi adaugate proiectului sau se finalizeaza generarea proiectului, fara a adauga surse din acest pas. La finalul generarii proiectului, se va afisa un raport cu tipul de proiect generat, circuitul ales etc.

La finalizare, se observa ca se va obtine o

fereastra in care se regasesc numele circuitului xc3s100e, -5 parametrul dat de speed grade, precum si tipul de capsula CP132 - 132 fiind numarul de pini.

Pentru fiecare sursa selectata se va afisa in

fereastra Processes tipul de actiune care este posibila pentru fiecare tip de sursa in parte si se va executa.

Se va mai observa ca se va alege optiunea

Sources for: Synthesis / Implementation. – ceea ce va indica ca sursele create sunt pentru procesul de sinteza / implementare si nu pentru simularea comportamentala sau post-rutare.

Page 8: Lucrarea 1 Familiarizare cu programarea FPGAatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2- Lucrarea 1.pdf · Familiarizare cu programarea FPGA Scopul lucrării este acela de

Ioana Dogaru – Sisteme Reconfigurabile de Calcul

Pentru a adauga surse proiectului, procedam dupa cum urmeaza: Cu click dreapta pe numele circuitului se deschide o lista din care vom selecta

optiunea New Source...

Noua sursa care se va crea, va fi in acest caz de tip VHDL Module. Modulul este denumit leddcd (fiind implementat intr-un fisier numit leddcd.vhd) si se poate observa

Page 9: Lucrarea 1 Familiarizare cu programarea FPGAatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2- Lucrarea 1.pdf · Familiarizare cu programarea FPGA Scopul lucrării este acela de

Ioana Dogaru – Sisteme Reconfigurabile de Calcul

ca este adaugat proiectului in locatia aleasa (in cazul prezentat aceasta fiind E:\Decodor\Decodor).

Dupa completarea campurilor pentru semnalele de intrare, respectiv de iesire

pentru modulul leddcd, se va obtine urmatoarea fereastra:

Page 10: Lucrarea 1 Familiarizare cu programarea FPGAatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2- Lucrarea 1.pdf · Familiarizare cu programarea FPGA Scopul lucrării este acela de

Ioana Dogaru – Sisteme Reconfigurabile de Calcul

� d – reprezinta un semnal de intrare de 4 biti (3-0) � s – reprezinta semnalul de iesire de 7 biti (6-0).

In final, se va obtine un raport referitor la sursa adaugata, tipul acesteia, definitia

porturilor de intrare, iesire etc.

Page 11: Lucrarea 1 Familiarizare cu programarea FPGAatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2- Lucrarea 1.pdf · Familiarizare cu programarea FPGA Scopul lucrării este acela de

Ioana Dogaru – Sisteme Reconfigurabile de Calcul

La finalizarea pasului de adaugare a unui nou modul VHDL, se pot observa ferestrele obtinute:

� se adauga la sursele proiectului un fisier leddcd.vhd; � daca este selectat acest fisier, se observa procesele disponibile care se pot

aplica acestui tip de surse (Sinteza, Implementare si Generare Fisier); � se genereaza in fereastra de editare un schelet de cod VHDL pentru modulul

care se implementeaza, urmând a fi completată partea care descrie efectiv circuitul dorit, în cazul nostru decodorul LED.

In implementare se va tine cont de faptul ca „1” reprezinta un nivel logc care inseamna stins pentru segmentele LED_ului, iar „0” reprezinta un segment de LED aprins. (De exemplu, iesirea s va avea valoarea 1000000 pentru cazul cand intrarea d va fi 0. Se va tine cont in numeratoarea segmentelor LED-ului de urmatoarea conventie:

Programul va arăta după cum urmează: library IEEE; use IEEE.STD_LOGIC_1164.ALL;

Page 12: Lucrarea 1 Familiarizare cu programarea FPGAatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2- Lucrarea 1.pdf · Familiarizare cu programarea FPGA Scopul lucrării este acela de

Ioana Dogaru – Sisteme Reconfigurabile de Calcul

use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; ---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code. --library UNISIM; --use UNISIM.VComponents.all; entity leddcd is Port ( d : in STD_LOGIC_VECTOR (3 downto 0); s : out STD_LOGIC_VECTOR (6 downto 0)); end leddcd; architecture Behavioral of leddcd is begin s <="1000000" when d="0000" else--0 "1111001" when d="0001" else --1 "0100100" when d="0010" else --2 "0110000" when d="0011" else --3 "0011001" when d="0100" else --4 "0010010" when d="0101" else --5 "0000010" when d="0110" else --6 "1111000" when d="0111" else --7 "0000000" when d="1000" else --8 "0010000" when d="1001" else --9 "0001000" when d="1010" else --A "0000011" when d="1011" else --b "1000110" when d="1100" else --C "0100001" when d="1101" else --d "0000110" when d="1110" else --E "0001110"; --F end Behavioral; Se salveaza codul sursa leddcd.vhd.

Page 13: Lucrarea 1 Familiarizare cu programarea FPGAatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2- Lucrarea 1.pdf · Familiarizare cu programarea FPGA Scopul lucrării este acela de

Ioana Dogaru – Sisteme Reconfigurabile de Calcul

►Verificarea sursei VHDL. Din panoul sursă se selectează din cadrul proiectului fişierul cu extensia .vhd iar din panoul proceselor se alege Check Syntax (un subproces al procesului Synthesize-XST) şi se face dublu click. În urma executiei procesului, eventualele erori de sintaxa din codul sursă sunt semnalate. După corectare se reia procesul de verificare.

În acest moment design-ul are o sursa în VHDL care descrie circuitul decodorului şi care trebuie convertită în circuit logic. Se selectează în panoul proceselor Synthesize-XST şi se face dublu click. Sintetizorul va citi sursa în VHDL şi va converti codul într-un “netlist” de porţi. Se poate face dublu click pe View Synthesis Report pentru a vedea diferite opţiuni ale sintetizorului, statistici ale timpilor etc. De asemenea, dacă se face dublu click pe View RTL Schematic se poate vedea schema care corespunde codului sursă în VHDL.

Page 14: Lucrarea 1 Familiarizare cu programarea FPGAatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2- Lucrarea 1.pdf · Familiarizare cu programarea FPGA Scopul lucrării este acela de

Ioana Dogaru – Sisteme Reconfigurabile de Calcul

►Implementare circuitului logic în FPGA După sintetizarea circuitului, se trece la translatarea, maparea, plasarea şi rutarea acestuia în resursele FPGA-ului. Pentru aceasta se face dublu click pe Implement Design process. Dacă se expandează procesul Implement Design se observă subprocesele efectuate. Procesul de translatare Translate converteşte netlist-ul într-un format specific Xilinx şi ţine cont de toate constrângerile aplicate. Procesul de mapare Map descompune netlist-ul şi îl rearanjează astfel incât să se potrivească cu elementele circuitelor FPGA. Plasarea şi rutarea Place & Route mapează elementele în locaţiile specifice şi seteaza switch-urile pentru a ruta semnalele logice între ele. ►Verificarea implementarii În acest moment, design-ul este asociat resurselor în FPGA, dar dorim să ştim cât anume ocupă, care sunt pinii de intrare/ieşire, etc. Aceste informaţii se afişează facând dublu click pe Place & Route Report şi Pad Report din panoul proceselor. De notat că până acum am făcut atribuirea pinilor în mod automat, fără să ţinem cont de constrângerile impuse prin conectarea la circuite externe FPGA . Se observa modul de alocare si gradul de ocupare a resurselor circuitului Spartan 3E.

►Atribuirea pinilor folosind constrângeri. Pinii FPGA se preiau din documentul care conţine harta pinilor plăcii de dezvoltare Digilent Basys2. Pentru a realiza acest pas de atribuire a pinilor se foloseşte procesul de constrângere constraints. Se crează un fisier al constrângerilor – se face click dreapta pe obiectul vhdl din panoul surselor şi se selecteaza New Source… din meniul pop-up.

Page 15: Lucrarea 1 Familiarizare cu programarea FPGAatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2- Lucrarea 1.pdf · Familiarizare cu programarea FPGA Scopul lucrării este acela de

Ioana Dogaru – Sisteme Reconfigurabile de Calcul

Aceasta noua sursa va fi de tipul Implementation Constraints File.

Se executa procesul User Constraints – Assign Package Pins Se deschide fereastra utilitarului Xilinx PACE. Se face click pe I/O Pins din Design Browser. În Design Object List – I/O Pins se deschide o lista cu ieşirile şi intrările curente ale decodorului. În acest moment se pot modifica atribuirile pinilor corespunzător schemei dorite. Se salvează modificările şi se reimplementează design-ul (Se poate executa direct procesul Generate Programming File care va trece prin sinteza, implementare si generare fisier de configurare). În Pad Report se verifică pinii.

Page 16: Lucrarea 1 Familiarizare cu programarea FPGAatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2- Lucrarea 1.pdf · Familiarizare cu programarea FPGA Scopul lucrării este acela de

Ioana Dogaru – Sisteme Reconfigurabile de Calcul

Pini pentru intrare circuit decodor Pini pentru iesire circuit decodor D0 - P11 S0 – L14 D1 – L3 S1 – H12 D2 – K3 S2 – N14 D3 – B4 S3 – N11 S4 – P12 S5 – L13 S6 – M12 D0, D1, D2 si respectiv D3 se considera a fi primele 4 comutatoare – SW0, Sw1, SW2, SW3 codificate astfel pe placa de dezvoltare Basys2. ►Vizualizarea circuitului După ce s-a încheiat procesul de implementare, se poate vizualiza modul în care circuitul logic şi I/O–urile sunt atribuite CLB-urilor şi pinilor FPGA. Pentru acesta se face dublu click pe procesul View/Edit Placed Design (FloorPlanner).

Page 17: Lucrarea 1 Familiarizare cu programarea FPGAatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2- Lucrarea 1.pdf · Familiarizare cu programarea FPGA Scopul lucrării este acela de

Ioana Dogaru – Sisteme Reconfigurabile de Calcul

CLB-urile folosite de circuit sunt marcate cu verde. Se poate mări zona de interes pentru a putea fi mai bine vizualizată.

Se pot afişa sau nu conexiunile dintre pinii I/O pins şi CLB în modul urmator: Edit Preferences şi bifare check box în tab-ul Ratsnest.

Prin click pe un CLB se vor observa conexiunile dintre intrări şi ieşiri.

Page 18: Lucrarea 1 Familiarizare cu programarea FPGAatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2- Lucrarea 1.pdf · Familiarizare cu programarea FPGA Scopul lucrării este acela de

Ioana Dogaru – Sisteme Reconfigurabile de Calcul

În mod similar, se poate face click pe pinul de intrare pentru a vedea care CLB este dependent de acea intrare.

Acum se pot vizualiza toate LUT, RAM, buffere, etc. care sunt disponibile în FPGA. ►Generare “Bitstream” – fişierul de configurare Se obţine cu ajutorul procesului Generate Programming File. Fişierul creat are extensia *.bit si este cel care se înscrie în FPGA. Acesta se poate face prin portul USB daca se foloseşte un program special numit Adept.

Page 19: Lucrarea 1 Familiarizare cu programarea FPGAatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2- Lucrarea 1.pdf · Familiarizare cu programarea FPGA Scopul lucrării este acela de

Ioana Dogaru – Sisteme Reconfigurabile de Calcul

Se selecteaza fisierul care se doreste a fi inscris in FPGA si se executa optiunea Program. Testare implementare: Se verifica combinatiile de intare folosind SW-0, SW-1. SW-2, SW-3 si se va tine cont de particularitatea placii de dezvoltare care are anozii celor 4 LED-uri conectate impreuna, deci se va afisa simultan pe toate cele 4 LED-uri aceeasi combinatie. Se testeaza toate combinatiile de la 0..F. Exercitii:

1) Sa se modifice comanda de intrare d0-d3 astfel incat sa se foloseasca SW-4,SW-5, SW-6, SW-7. Modificand starea acestor comutatoare se vor afisa diferite valori pentru cele 4 LED-uri.

Se va modifica fisierul de constrangeri corespunzator si se va reface fisierul de configurare. Acesta se va inscrie in FPGA folosind programul Adept.

2) Sa se modifice fisierul cod sursa leddcd.vhd astfel incat litera C sa se afiseze c.

Page 20: Lucrarea 1 Familiarizare cu programarea FPGAatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2- Lucrarea 1.pdf · Familiarizare cu programarea FPGA Scopul lucrării este acela de

Ioana Dogaru – Sisteme Reconfigurabile de Calcul

3) Sa se adauge la modulul leddcd.vhd ca si intrare semnalul corespunzator punctului digital – dp care va fi considerat aprins. � Se va modifica codul leddcd.vhd prin adaugarea portului de intrare dp: out

std_logic; � Se va completa arhitectura modulului prin stabilirea semnalului dp la nivel

logic 0. dp <= '0'; � Se va tine cont de pinul dp care este pinul FPGA N13 si se va reface fisierul

de constrangeri. � Se reface implementarea si fisierul de configurare. � Se configureaza si se testeaza implementarea

2) Implementarea unui multiplexor (MUX 4:1) in VHDL 4:1 MUX expresia booleana ============================= Y = D0 (not S1) (not S0) + D1 (not S1) S0 + D2 S1 (not S0) + D3 S1 S0 4:1 MUX ==========================================

4:1 MUX Tabela de adevar ====================== S1 S0 Y --------- 0 0 D0 0 1 D1 1 0 D2 1 1 D3 ---------

Page 21: Lucrarea 1 Familiarizare cu programarea FPGAatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2- Lucrarea 1.pdf · Familiarizare cu programarea FPGA Scopul lucrării este acela de

Ioana Dogaru – Sisteme Reconfigurabile de Calcul

In general, un multiplexor cu n intrari de selectie va avea m = 2^n intrari de date. Alte exemple de MUX –uri folosite in aplicatii : pentru 8:1 (3 intrari de selectie) si 16:1 (4 intrari de selectie). Implementarea in VHDL. library IEEE; use IEEE.std_logic_1164.all; entity mux41v1 is Port ( d0 : in STD_LOGIC; d1 : in STD_LOGIC; d2 : in STD_LOGIC; d3 : in STD_LOGIC; s : in std_logic_vector(1 downto 0); y : out STD_LOGIC); end mux41v1; architecture Behavioral of mux41v1 is begin with s select y <= d0 when "00", d1 when "01", d2 when "10", d3 when others; end Behavioral;

Sa se realizeze o aplicatie functionala care sa fie demonstrata utilizand placa de dezvoltare Basys2. (utilizand elementele disponibile de pe aceasta placa). Concluzii:

Etapele prezentate mai sus au avut ca scop familiarizarea cu mediul de

dezvoltare ISE WebPack de la Xilinx, cu placa de dezvoltare de la Digilent Basys2, pentru finalizarea unui proiect care sa folosească circuite de tip FPGA. Acelaşi proiect se poate implementa pentru diferite alte tipuri de circuite si alte placi de dezvoltare. Puteţi parcurge etapele de la definire circuit in VHDL până la configurare şi testare. Se poate folosi fişierul în VHDL deja definit şi copia într-un nou proiect. Se va urmari realizarea fişierului de constrângeri conform specificaţiilor plăcii de dezvoltare şi se vor parcurge paşii descrişi mai sus până la testarea circuitului.

Page 22: Lucrarea 1 Familiarizare cu programarea FPGAatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/Basys2- Lucrarea 1.pdf · Familiarizare cu programarea FPGA Scopul lucrării este acela de

�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������