Ce este FPGA?
FPGA sau Field Programable Gate Array sunt circuite integrate care au proprietati unice fata de alte circuite integrate sau microcontrolere. Aceste proprietati ne vor ajuta cand lucram cu semnale digitale de frecvente foarte mari, sau cand creem (multiplicam) un produs in cantitati mici, iar folosirea unui ASIC este mult prea scumpa.
Ce prezinta articolul?
In exemplele din acest articol vom folosi TinyFPGA BX, o placa de dezvoltare ieftina si simpla de folosit, in comparatie cu alte placi FPGA.
Aceasta placa are urmatoarele specificatii tehnice:
- Chip FPGA ICE40LP8K;
- Interfata de programare USB;
- 7680 de celule logice;
- 6000 Kbit de memorie flash;
- 128 Kbit de memorie ram;
- 31 + 10 pini IO (dedicati + impartiti);
Care sunt avantajele unei placi de dezvoltare FPGA fata de un microcontroller?
Unul dintre avantajele unei placi de dezvoltare FPGA este faptul ca pentru programarea acesteia se foloseste un limbajul numit HDL (Hardware Descriptor Language), acest limbaj descriind, de fapt, cum sa fie configurate celulele logice din interiorul integratului, acest lucru oferindu-ne posibilitatea sa realizam mai multe operatii in acelasi timp, in timp ce un microcontroller poate sa realizeze cate una pe rand.
Deoarece limbajul de programare HDL (impartit in VHDL si VerilogHTL) este putin mai dificil de folosit pentru incepatori, pentru inceput va recomandam sa instalati toate programele necesare actualizand si bootloader-ul placii de dezvoltare cu ajutorul urmatorului articol -> https://tinyfpga.com/bx/guide.html
Dupa ce ati urmarit si realizat cu success pasii din link-ul anterior, va recomandam sa instalati software-ul gratuit Icestudio pentru a putea dezvolta software mai usor pentru placa de dezvoltare TinyFPGA BX.
Daca ati urmat pasii de mai sus corect, cand deschideti aplicatia „Icestudio” ar trebui sa fiti intampinati de spatiu de lucru prezentat mai jos, unde veti configura hardware-ul placii de dezvoltare.
In coltul din dreapta sus avem 4 meniuri : „Basic”, „Bit”, „Logic” si „Setup”. Din aceste meniuri vom configura hardware-ul placii de dezvoltare.
- Meniul „Basic” are 2 „blocuri” functionale importante ce le vom folosi pentru a configura pinii IO si anume Input si Output. Selectand una dintre aceste variante, modificam modul de operare al pinului dorit.
- Meniul „Bit” contine 2 blocuri numite 0 si 1. Aceste blocuri ne vor ajuta la crearea / logicii proiectului (ex: folosirea portilor logice AND(si), OR(sau)).
- Meniul „Logic” ofera 3 submeniuri : „Combinational”, „Gate” si „Sequential”. Din aceste submeniuri putem selecta portile logice ce dorim sa le utilizam in circuitul nostru.
- Meniul „Setup” ne ofera posibilitatea sa punem un „pull-up” sau un „tri-state” pe orice pin IO al placii de dezvoltare.
Alte avantaje ale Icestudio?
Un alt avantaj al software-ului „Icestudio” este faptul ca daca dam dublu-click pe orice bloc, putem vedea codul folosit de acesta; Acest lucru fiind de mare ajutor pentru cei ce vor sa invete limbajul HDL.
Pentru cei care doresc sa invete sa foloseasca „Icestudio”, acest software dispune de o selectie de exemple pe care o puteti gasi in File -> Examples.
De retinut este faptul ca placa de dezvoltare TinyFPGA BX foloseste o tensiune logica de 3.3V. Daca veti oferi unui pin IO o tensiune logica de 5V (de exemplu de la un microcontroller Arduino), riscati sa deteriorati placa de dezvoltare.
In concluzie, placile de dezvolatre FPGA sunt in multe privinte superioare fata de clasicele microcontrolere, dar pe langa viteza ridicata de procesare a semnalelor, acestea au un si un cost mai ridicat.
Bibliografie:
Ar merge FPGA sau CPLD (Complex Programmable Logic Device).
Foarte interesant. Dar am cateva intrebari: 1. (pentru mine) cat costa? 2. Cati membri ai grupului sunt in stare sa faca un „clipici” (microcontroler-rezistenta-led + SOFT) cu 3 piese.
1. Cam 40 de dolari originalul – https://store.tinyfpga.com/products/tinyfpga-bx 2. Nu e microcontroller. Si ai fi surprins cat de usor e de folosit. Recomand folosirea lui pentru emularea de interfete sau pentru procesare de date paralela – imagini, sunet digital, orice calcul matricial, codari si decodari etc. Cu un FPGA similar cu acesta am reusit sa iau date de la 2 camere VGA (stereo) si sa calculez viteza „pixelilor” din imagine (de fapt din un patrat de 128×128 din centrul imaginii, in timp real la 60 de cadre pe secunda… asta fiind lucrare de disertatie (masterat) acum approx. 10 ani.
Se pot programa LUT-urile din el ca porti logice si astfel poti implementa orice microcontroler cu ce arhitectura vrei pe el.
Stiu ce e. 99% din placile care imi trec prin mana au pe ele FPGA. Am incercat acum 12 ani sa intru in tainele unui SPARTAN 3 si am renuntat repede. Acum lucrez zilnic cu ALTERA Cyclone V.
Sunt foarte curios de ce ai renuntat la Spartan. Eu am 3 placi ale mele cu Spartan 3..
In 2008 a fost debutul meu in productie. Inainte ma ocupam mai mult de IT, dar datorita noilor prieteni am revenit la pasiunea din tinerete pentru electronica. Am imbinat pasiunea pasiunea pentru electronica cu cea pentru IT si am inceput studiul microcontrolerelor PIC. In 2009 au intrat in productie primele placi cu SPARTAN 3 si ma incantat faptul ca pot fi plantate cu letconul.
Noi la facultate foloseam ModelSIM pentru programare in VHDL. Nu e foarte greu daca ai cunostinte de baza despre porti logice, electronica si ceva programare.