Înainte de pasul trei/Un exemplu simplu

Iniţial am vrut să scriu un post despre instalarea softului necesar pentru folosirea NanoBoard-ului dar cum cred că nu este prea multă lume care are un NanoBoard am decis să las pasul ăsta pentru mai târziu. În postul anterior am lăudat NanoBoard-ul prin glume şi comparaţii cu produse Apple, am dat un link în care se găsesc date tehnice despre board, dar nu am spus totuşi nimic concret legat de funcţionalitatea sa.

Indiferent cât de pasionaţi suntem de un domeniu şi indiferent cât de mult vrem să învăţăm ceva, este foarte important ca primii paşi să fie dintre cei mai simpli, să învăţăm pornind de la o imagine mare, de ansamblu, în care să facem încet-încet zoom, observând detaliile din ce în ce mai fine. Abordările uzuale ale studiului FPGA se bazează în general pe studiul unui limbaj HDL (Verilog sau VHDL), se porneşte de la nişte exemple simple ce pot fi înţelese dar care nu au un output impresionant. Pe cât sunt de simple de realizat pe atât de simple sunt şi rezultatele, astfel încât pentru a se ajunge la un nivel suficient de avansat care să arate care sunt capacităţile FPGA-ului este necesar să se acumuleze foarte multe cunoştinte, multă lume renunţând undeva pe drum.

NanoBoard pare să îmi ofere o abordare diferită. Îmi dă mai multe biblioteci de module gata făcute, pot să mă joc cu ele, pot să le folosesc de sine stătătoare sau pot să integrez module construite de mine. Partea cea mai frumoasă este că totul se construieşte sub forma unei scheme logice, codul HDL (Verilog sau VHDL) îl scriu doar când am nevoie, fac un modul din el şi apoi îl pot conecta în schemă. Altfel spus am acces rapid la funcţii complexe ale căror detalii nu este necesar să le cunosc, dar când vreau să intru în detalii pot să o fac. Cel mai bine, un exemplu:

Pe NB3000 avem 8 LED-uri RGB (fiecare LED are de fapt 3 chipuri distincte pentru roşu, verde şi albastru), vrem să facem un proiect care să ne permită să modificăm intensitatea fiecărei culori pentru cele 8 LED-uri (a simple LED driver, as they call it in english🙂 ). Să vedem cum facem asta. Ne folosim de bibliotecile disponibile de unde alegem:

  • LED_CTRL – un modul ce controlează până la 255 LED-uri pe baza semnalelor de intrare;
  • Configurable Digital I/O – un modul care are ataşat un „Soft Device” (adică o interfaţă care emuleză un instrument real) şi care ne permite să controlăm LED-urile. Dacă e neclar o să devină clar până la finalul articolului;
  • CLK_BRD – clock-ul generat pe NB3000, are frecevenţa default de 50 MHz, o lăsăm aşa, nu ne interesează să o modificăm momentan;
  • LEDS_RGB – modul ce realizează interfaţa cu LED-urile de pe NB3000.

Configurăm fiecare modul corespunzător, facem conexiunile necesare şi schema ar trebui să arate cam aşa (un tutorial mai amplu se găseşte aici)

Programăm FPGA-ul şi deschidem intrumentul emulat care arată cam aşa:

În stânga avem intrările, în dreapta ieşirile, ambele pot fi în număr oricât de mare (noi avem 3, câte una pentru fiecare culoare). Instrumentul ne afişează valorile semnalelor de pe intrare (am ales afişaj binar) şi ne permite să modificăm valoarea semnalelor de ieşire (am ales un slider). În cazul nostru intrarea este interconectată cu ieşirea astfel încât o mişcare a slider-ului determină şi o modificare corespunzătoare a valorii afişate în partea stângă.

Cu ajutorul acestui instrument putem controla LED-urile astfel încât să obţinem diverse culori, de diverse intensităţi, după cum se observă în imaginile următoare:

După progamare în meniul proiectului, pe lângă schemă, apar şi fişierele .vhd generate ca urmare a prelucrării schemei, fişiere ce pot fi vizualizate:

În 5 minute am creat un proiect mai impresionant decât clasicul numărător din primele lecţii de FPGA, elegant, editând doar schema dar având acces şi la codul HDL.

Cam asta a fost, din următorul post urmează tutorialele propiu-zise, aici am vrut să arăt de ce sunt atât de încântat de NanoBoard. Dintre toate bibliotecile, cea de instrumente pare cea mai folositoare pentru că pe lângă modulul Configurable Digital I/O, folosit aici, mai are si alte componente. Logic Analyzer-ul spre exemplu poate fi integrat într-o schemă pentru a observa variaţia unor semnale din interiorul FPGA-ului, semnale la care altfel nu am avea acces după programarea FPGA-ului.

Un gând despre „Înainte de pasul trei/Un exemplu simplu

  1. Pingback: Pasul trei « FPGA în limba română

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