Diferență între revizuiri ale paginii „Introducere în sinteza pe FPGA. Xilinx ISE”

De la WikiLabs
Jump to navigationJump to search
Linia 21: Linia 21:
  
 
# Sinteza - este etapa în care codul Verilog este interpretat de programul de sinteză care generează din el un circuit (ansamblul de porți și registre) ce poartă denumirea de '''netlist'''; această etapă este independentă de modelul de FPGA cu care se lucrează;
 
# Sinteza - este etapa în care codul Verilog este interpretat de programul de sinteză care generează din el un circuit (ansamblul de porți și registre) ce poartă denumirea de '''netlist'''; această etapă este independentă de modelul de FPGA cu care se lucrează;
# Implementare - etapa în care se translateaza circuitul la nivel de poartă în circuitul la nivel de elemente disponibile pe cipul FPGA utilizat; în mod evident, acestă etapă depinde de modelul de FPGA utilizat;
+
# Implementare - etapa în care se translateaza circuitul la nivel de poartă (netlist) în circuitul la nivel de elemente disponibile pe cipul FPGA utilizat; în mod evident, acestă etapă depinde de modelul de FPGA utilizat;
 
# Generare a fișierului de programare - din circuitul de la punctul anterior, se generează un fișier cu extensia '''.bit''' care conține biții de configurare pentru blocurile logice, blocurile de I/O și blocurile de interconectare corespunzătoare circuitului dorit;
 
# Generare a fișierului de programare - din circuitul de la punctul anterior, se generează un fișier cu extensia '''.bit''' care conține biții de configurare pentru blocurile logice, blocurile de I/O și blocurile de interconectare corespunzătoare circuitului dorit;
 
# Programarea dispozitivului - etapa în care, printr-o interfață JTAG se încarcă fișierul '''.bit''' în memoria SRAM a FPGA-ului, configurând astfel dispozitivul.
 
# Programarea dispozitivului - etapa în care, printr-o interfață JTAG se încarcă fișierul '''.bit''' în memoria SRAM a FPGA-ului, configurând astfel dispozitivul.

Versiunea de la data 26 februarie 2012 10:57

FPGA (Field Programmable Gate Array)

Schema simplificată a unui FPGA

Circuitul FPGA (Field Programmable Gate Array) este un circuit generic ce poate fi programat pentru a implementa orice funcție definită de utilizator. Un FPGA este constituit dintr-o matrice de blocuri programabile, o rețea de interconectare care leagă aceste blocuri între ele, circuite de I/O și o memorie SRAM care configurează aceste structuri. Figura alăturată prezinta o schema simplificata de FPGA.

Structura unui bloc generator de funcții logice

Blocurile programabile pot fi generatoare de funcții logice, memorii RAM, sau circuite de înmulțire. În figură este prezentată structura unui bloc generator de funcții logice. Acesta este format dintr-un LUT (Look-Up Table) și un registru pentru a sincroniza ieșirea acestuia, dacă se dorește acest lucru. Un LUT poate implementa orice funcție logică de 4 variabile cu ajutorul unui selector. Fiecare combinație de valori ale variabilelor de intrare selectează rezultatul corespunzător, calculat în prealabil de programul de sinteză și stocat în memoria de configurație la programarea FPGA-ului. Ieșirea generatorului de funcții logice poate fi legată fie la registru, fie direct la ieșirea LUT-ului.

Nodurile de interconectare

Fiecare bloc programabil este legat la rețeaua de interconectare. Aceasta este formată din segmente de fire și comutatoare programabile. Fiecare comutator poate lega două sau mai multe segmente între ele, asa cum se poate observa în figură. Starea comutatoarelor (on/off) este deasemenea determinată în prealabil în etapa de Place and Route, și stocată în memoria de configurație.

Etapele de sinteză

Când se dorește programarea unui FPGA cu un circuit nou, acesta urmează o serie de proceduri care îl transformă din cod de descriere hardware (Verilog, VHDL, etc.) într-un șir de biți cu care se configurează cipul. Aceste etape sunt:

  1. Sinteza - este etapa în care codul Verilog este interpretat de programul de sinteză care generează din el un circuit (ansamblul de porți și registre) ce poartă denumirea de netlist; această etapă este independentă de modelul de FPGA cu care se lucrează;
  2. Implementare - etapa în care se translateaza circuitul la nivel de poartă (netlist) în circuitul la nivel de elemente disponibile pe cipul FPGA utilizat; în mod evident, acestă etapă depinde de modelul de FPGA utilizat;
  3. Generare a fișierului de programare - din circuitul de la punctul anterior, se generează un fișier cu extensia .bit care conține biții de configurare pentru blocurile logice, blocurile de I/O și blocurile de interconectare corespunzătoare circuitului dorit;
  4. Programarea dispozitivului - etapa în care, printr-o interfață JTAG se încarcă fișierul .bit în memoria SRAM a FPGA-ului, configurând astfel dispozitivul.

Xilinx ISE

Programul utilizat in laborator pentru sinteza circuitelor este ISE Design Suite, de la Xilinx. Aveți la dispoziție tutorial-ul de sinteză pentru sumatorul pe 4 biți pe pagina Tutorial Xilinx ISE.

Plăci FPGA disponibile

În laboratorul de CID puteți lucra cu una din următoarele plăci de dezvoltare:

Pentru toate plăcile disponibile, codul modelului ca și codul pachetului sunt scrise direct pe cip.