FPGA: tot sobre aquests xips i la seva programació

xip FPGA

Els FPGAs s'han tornat més i més populars en els últims temps. Fins i tot per a aplicacions professionals se solen utilitzar aquests xips, però també per DIY i makers que volen implementar un circuit discret dins d'un xips amb tots els avantatges que això implica. No és barat ni fàcil trobar una fabrica per enviar les teves layouts o patrons i que et fabriquin un xip a mida.

És cert que algunes foundries permeten fabricar wafers o hòsties multiprojecte per fabricar xips de particulars o universitats per fer proves amb ells. Aquest tipus de fàbriques són, com dic, difícils de trobar, solen estar a l'estranger i no resulten barates. Després d'un temps se't s'envia a l'adreça acordada unes mostres o samples dels teus xips, però ells no es fan càrrec de testar aquests o comprovar que funcionin. Tot depèn de la teva disseny ...

Una solució alternativa a això és adquirir un FPGA i programar el que vulgui que sigui el que necessitis implementar dins de l'xip ...

Què és un FPGA?

Cel programables

FPGA són les sigles de Field Programmable Gate Array. Són dispositius digitals o xips que són capaços de configurar-se per permetre implementar pràcticament qualsevol cosa. És a dir, dit amb altres paraules, és un xip en blanc on tu pots «escriure». Això vol dir que podràs implementar una CPU, una memòria, un controlador, qualsevol lògica, etc., aconseguint un funcionament molt ràpid i amb tots els avantatges de tenir-lo integrat en un xip i no amb elements electrònics.

Ross Freeman i Bernard Vonderschmitt, cofundadors de Xilinx, van ser els que van inventar el FPGA en 1984. Ho van fer com a evolució als xips CPLD d'aquella època. Els xips programables CPLD tenien unes mancances que van resoldre els nous dissenys FPGA i des de llavors han vingut evolucionant fins a la data.

El mercat de FPGAs és tan fructífer que companyies com Intel, Xilinx, Altera, Quick Logic, Lattice, etc., Han invertit molt per desenvolupar millors FPGAs i també entorns de programació integrats o IDEs per a ells. Aportant així plataformes molt bones per facilitar la tasca dels desenvolupadors o makers.

Actualment aquests fabricants no només aporten un xip programable, sinó que també inclouen nombrosos elements auxiliars per aportar més possibilitats als desenvolupadors. Per exemple, inclouen cel·les de memòria flash, cel·les de memòria SDRAM, etc.

Per a què s'utilitzen?

IDE per programar FPGA

Per tant, un FPGA pot ser similar a un ASIC però que nosaltres podem triar el que serà. Per exemple, podríem crear un codi per programar-lo i convertir-lo en una CPU, en una GPU, en un sumador, un controlador de memòria, o qualsevol altre circuit lògic implementat en un sol xip.

Les possibilitats són bastant infinites. De fet, et recomano visitar la pàgina web opencores.org, un lloc dedicat a oferir multitud de projectes de hardware libre. Trobaràs codis a VHDL, Verligo, etc., per RAM, CPU, GPU, controladors, ALUs, FPUs, descodificadors, i un llarg etc.

Com es programa?

Programador per FPGA

Per programar un FPGA ho podem fer des del nostre sistema operatiu favorit, com GNU / Linux, Windows i MacOS, encara que certament hi ha més entorns de desenvolupament per a Windows. En general, les mateixes companyies que fabriquen el FPGA ofereixen un IDE molt complet amb el qual treballar i on trobar totes les eines que necessites en una mateixa suit de programari.

També necessitaràs el xip o placa FPGA i el cable o programador necessari amb el qual podràs connectar el FPGA al teu PC per passar el codi escrit a l'FPGA i així que quedi programat. Això és una cosa similar al que fas amb la placa Arduino, gravant el programa d'Arduino IDE a la memòria programable de el microcontrolador.

Només que en el cas de l'FPGA el que tenim és una matriu o array de components elementals com cel·les de memòria, comportes AND, OR, NOT, Flip-flops, i altres elements o blocs bàsics d'electrònica digital que podem utilitzar. Amb el programa escrit el que farem és imposar la forma en què aquests blocs essencials es van a agrupar per formar el cirucito que volem, com ara una ALU.

És a dir, si programem un sumador en el nostre IDE, els blocs necessaris per implementar aquest sumador es van a enllaçar de la forma correcta dins de l'FPGA perquè el xip funcioni com un sumador. Senzill oi? En general es fan servir diversos mètodes per a aquesta programació a nivell físic, com solen ser memòries o fusibles per fer un enllaçat permanent en aquest cas.

La velocitat a la qual operen dependrà de la freqüència de rellotge a la qual treballi el FPGA que hem comprat. La, per exemple, els més bàsics solen funcionar a 50 MHz, altres ho faran a freqüències molt superiors. En el cas de l'FPGA a 50 MHz, això vol dir que operarà a un ritme de 50.000.000 vegades per segons. Si seguim amb el sumador que he posat com a exemple, es pot fer aquesta quantitat de sumes en un segon ...

Seguint amb el tema de la programació, Una vegada que sabem que es pot escriure codi com ho faríem en Arduino IDE o per desenvolupar qualsevol altre programa, i de veure com es fa a nivell de maquinari, diré que realment no es tracta d'una programació com a tal. Més aviat és una descripció de maquinari. De fet s'usen llenguatges de descripció de maquinari com és VHDL, Verilog, etc.

Amb aquest programa es descriu a nivell lògic el que fa el cirucito que volem implementar. I després es passa a l'FPGA. Encara que és veritat que algunes plataformes permeten programació en llenguatges de programació com C per poder implementar una CPU al FPGA i després generar programes per carregar en una memòria i ser processades per aquest processador.

Integració amb Arduino

FPGA Arduino

Els FPGAs solen usar-se per separat, però és cert que hi ha multitud d'eines i kits en el mercat que et facilitaran la vida per poder integrar el teu FPGA amb la plataforma Arduino. Un exemple de placa per dur FPGA als teus projectes amb Arduino és MKR Vidor 4000, tot i que hi ha altres.

MKR Vidor 4000 és una placa amb tres xips. Un d'ells és un FPGA, concretament un Intel Cyclone 10. També hi ha altres xips per a connectivitat Bluetooth LI o de baix consum i també compatibilitat WiFi. Un bon complement per a dotar al teu Arduino de funcionalitats de connectivitat i poder implementar el que necessitis al FPGA.

Amb això teniu un maquinari personalitzable, Configurat per tu mateix per al propòsit que vulguis. Això ofereix infinites possibilitats.


Sigues el primer a comentar

Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.