Primul pas

Ca să putem învăţa FPGA design tre’ să ştim pentru început ce este un FPGA. FPGA e un acronim. Bun acum că am stabilit asta putem trece mai departe, nu? Nu! Field Programmable Gate Array, de aici provine acronimul. O denumire sugestivă care defineşte destul de clar dispozitivul:

  • field-programmable – „programabil în teren”, adică după ce a ieşit pe porţile fabricii, de către utilizator şi nu (neapărat) de către producător;
  • gate array – o matrice de porţi logice.

Recapitulând, un FPGA este un circuit integrat digital, configurabil, de către utilizator, după ce a fost fabricat (spre deosebire de dispozivele a căror funcţie este implementată in procesul de fabricaţie).  Arhitectura este, însă, mai complexă decât sugerează numele (gate array). FPGA-ul este, în general, format din:

  • Configurable Logic Blocks (CLB) ce conţin, printre altele, un Look Up Table (LUT) cu patru sau mai multe intrări, cu ajutorul căruia se pot implementa funcţii logice (AND, OR, NOT, etc.)  Ex: pentru un LUT cu ieşirea y şi patru intrări a,b,c,d poate fi reprezentată funcţia y= ((a&b) | c) & !d;
  • I/O pads folosiţi pentru a interacţiona cu „lumea din exterior” adica pentru a aduce sau a scoate semnale din FPGA. Pot fi configuraţi pe diferite standarde I/O ex: LVPECL, HSTL/SSTL,LVCMOS/TTL;
  • canale de rutare, sunt practic conexiunile dintre elemente. Sunt şi ele configurabile în aşa fel încât să realizeze legăturile necesare între CLB si I/O pads pentru ca FPGA-ul să realizeze funcţia dorită.

Această arhitectură elementară este suplimentată în FPGA-urile din ziua de azi de diverse elemente predefinite: MAC (în general în FPGA-urile pentru aplicaţii DSP), embedded RAM, DCM (digital clock managers), gigabit transceivers (pentru interfeţele seriale de mare viteză din zilele noastre, ex PCIe).

În explicaţiile de mai sus am folosit o serie de termeni care pot fi necunoscuţi pentru unii. Explicarea lor, pe lângă că ar face să apară alţi termeni ce trebuie explicaţi, este dincolo de scopul acestui blog. Detalii despre fiecare termen pot fi găsite pe pagina în engleză a wikipedia. În orice caz, concluzia este că arhitectura unui FPGA este mai complexă decât o serie de porti logice legate între ele şi conţine unele elemente predefinite care ajută la diverse funcţii dar care în acelaşi timp „ocupă spaţiu” neputând fi folosite în alt scop decât cel predefinit.

Bun, acum că am stabilit că FPGA-urile sunt configurabile/programabile trebuie să întelegem şi cum anume se face această programare a lor. FPGA-urile sunt în general „construite” din celule SRAM şi sunt volatile. Există tipuri de FPGA care mai au pe lângă celule SRAM şi un număr de celule Flash care le asigură o oarecare non-volatilitate. Volatile, carevasăzică trebuie reconfigurate la fiecare power-up. Se întâmplă des ca un FPGA să aibă alături un modul de memorie Flash în care să fie stocată configuraţia şi din care la fiecare power-up aceasta să fie încărcată.
Există, în general, trei modalităţi de abordare a unui proiect FPGA:

  • scrierea de cod în HDL (hardware description language);
  • realizarea unei scheme (similară cu cea a unui PCB);
  • folosirea celor două metode de mai sus împreună.

Indiferent de metoda aleasă există o serie de paşi ce trebuie parcurşi pentru a ajunge să programăm FPGA-ul. Despre asta în postul viitor.

5 gânduri despre „Primul pas

  1. Pingback: Blogul meu in 2010, conform wordpress.com | FPGA în limba română

  2. sal!!!as fii interesat daca ai putea sa continui posturile!!!sunt student in an 4 la ac iasi si as vrea sa incerc si eu proiectul tau pentru licenta!!!
    mentionez ca mi-am ales o tema cu fpga, dar as avea nevoie de ceva ajutor daca se poate!!!placa pe care lucrez este un xilint spartan 3-e

  3. salut. momentan sunt cam ocupat da’ promit sa revin cu posturi. Cat priveste proiectul tau, te ajut cu placere, vorbim pe messenger.
    Ceea ce am scris eu pana acum aici are totusi o particularitate: foloseste altium designer pentru design entry si Nanoboard-ul de la altium ca placa de testare. Pentru a putea pune in aplicare ai nevoie de Altium designer, Nanoboardul nu cred ca e necesar, se poate lucra si cu placa ta.

Lasă un răspuns

Completează mai jos detaliile despre tine sau dă clic pe un icon pentru autentificare:

Logo WordPress.com

Comentezi folosind contul tău WordPress.com. Dezautentificare / Schimbă )

Poză Twitter

Comentezi folosind contul tău Twitter. Dezautentificare / Schimbă )

Fotografie Facebook

Comentezi folosind contul tău Facebook. Dezautentificare / Schimbă )

Fotografie Google+

Comentezi folosind contul tău Google+. Dezautentificare / Schimbă )

Conectare la %s