Jump to content
Sign in to follow this  
dan_e

Programarea FPGA-urilor sau CPLD-urilor - de la A la Z

Recommended Posts

Ma uitam zilele trecute pe net sa caut ceva informatii despre programarea FPGA-urilor sau a CPLD-urilor si ce nu am inteles eu bine, cand folosim asemenea chip-uri. Adica, nu pot spre exemplu sa fac cu ARM tot ce trebuie ? De ce sa am nevoie de FPGA-uri sau CPLD-uri, sau difera doar metoda de programare si cand alegem una, si cand alegem alta ? Pretul unui ARM e mai mic ca un FPGA sau CPLD ? :scratchchin:

Share this post


Link to post
Share on other sites

ARM e un microprocesor (microcontoller mai precis) care executa instructiuni (software)

FPGA-urile si CPLD urile sunt circuite logice facute din porti logice si registrii (memorie) pe care le poti programa si conecta cum vrei. (ca si cand ai avea o punga de circuite logice NAND. AND OR NOR XOR si flip-flops sau registrii si o gramada de sarme pe care le poti conecta)

FPGA-urile mai moderne contin mai mult decat porti logice si registrii au blocuri dedicate pentru o gramada de functii standard (contollere de memorie externa, PCIexpress, Blocuri aritmetice pentru DSP, memorie SRAM etc.)

Sunt o gramada de aplicatii unde microprocesorele nu fac fata iar realizarea unui circuit dedicat (ASIC - aplication specific integrated circuit) e prea scumpa - aici vin FPGA-urile. Exemple de aplicatii, prelucrare de imagine (video DSP) - prelucrare de semnale DSP (radio receptoare digitale)

Interfete de retea pentru fibra optica, sateliti (unde trebuie sa reconfigurezi hardware-ul cand saltelitul e sus) - FPGA-ul se pote rexonfigura de un numar infinit de ori (configuratia cortilor si a legaturilor dintre ele) - deci poti sa schimbi hardware-ul la orice ora, motiv pentru care se numesc Field Programable Gate Arrays - Adica arie de porti logice programabila "pe teren" (in the Field)

Din pacate e un domeniu greu de invatat complet diferit de electronica uzuala si din pacate nu se poate preda in scoli (intr-un semestru)  totusi daca devii bun in domeniul asta esti aranjat pe viata. (crede-ma fac asta de 28 de ani si am lucrat 7 ani la cei care au inventat FPGA-urile)

RR

 

Edited by roadrunner

Share this post


Link to post
Share on other sites

Deci portile logice din CPLD-uri sau FPGA-uri, sunt ca portile logice dintr-un automat programabil (daca vrem sa-l programam in FB)? Adica le configurez sa fac ceea ce doresti. Aici adaugam daca avem nevoie de blocurile dedicate (ex. de memorie externa) si gata programul! Partea asta am inteles-o!

Acum 8 minute, roadrunner a spus:

Interfete de retea pentru fibra optica, sateliti (unde trebuie sa reconfigurezi hardware-ul cand saltelitul e sus) - FPGA-ul se pote rexonfigura de un numar infinit de ori (configuratia cortilor si a legaturilor dintre ele) - deci poti sa schimbi hardware-ul la orice ora, motiv pentru care se numesc Field Programable Gate Arrays - Adica arie de porti logice programabila "pe teren" (in the Field)

Sa inteleg ca portile logice din FPGA-uri, conexiunile intre ele, pot fi declarate in soft si in functie de anumite intrari (ex. starea unor senzori), sa activeze anumite legaturi intre portile logice ? Am inteles bine ?

Ce platforma hardware pentru un hobist ca mine recomanzi, pe FPGA-uri si CPLD-uri ?

Share this post


Link to post
Share on other sites

Da din punct de vedere dfuntional e la fel - numai ca AP emuleaza functia respectiva in software.

Legaturile dintre porti sunt fixe (sunt ca niste cutiute cu jumperi pe care-i programezi) - sunt segmente de diferite lungimi care se pot interconecta ca sa poti ajunge de oriunde aproape oriunde. Cand programezi nu trebuie ca utilizator sa te gandesti la interconexiuni ci numai la functia logica.

ca sa programezi folosesti unul din limbajele de descriere hardware (HDL - Hardware Description Language) cele doua limbaje sunt VHDL si Verilog.  si nu au nic o legatura cu limbajele de programare (Verilog are sintaxa apropiata de C )

In realitate nu sunt poti logice (ca ar fi prea multe combinatii) ci sunt LUT - look-up tables care sunt imprementate in memorie. De exemplu un LUT4 poate imprementa orice functie logica de patru intarari si 1 iesire (sau 3 sau 2 intrari). Imagineazat-ti look-up table-ul ca tabela de adevar a unei functii logice de patru intrari, adica un tabel cu 16 locatii de 1 bit, care contine rezultate dorite de functia care o doresti.(evident nu trebuie sa faci asta manual tool-urile fac asta automat)

exchivalentul compilatorului in lime FPGA este sintetizor-ul. (adica un software care trasforma ce ai scris in VHDL sau Verilog in porti logice)

FPGA e mult peste hobby - trebuie sa ai o baza solida in Hardware (cand m-am apucat eu de fpga faceam computere cu porti logice de ani buni - fara baza aia va fi foarte greu) dar nu imposibil. Tool-urile sunt free sunt doua companii mari care se ocupa de FPGA, Xilinx si Altera (Altera e acum Intel)

 

RR

PS - Cand proiectezi circuite digitale (nu FPGA) nu mergi la nivel de tranzistor ai blocuri in biblioteca de componente logice (LUT3, LUT4, FF - flip-flop etc.) - cam la fel si la FPGA. diferenta ca la ASIC daca ai o greaseala de logica e de aruncat tot circuitul (la FPGA poti sa corectezi de un numar infinit de ori)

 

Edited by roadrunner
  • Thanks 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

We use cookies and related technologies to improve your experience on this website to give you personalized content and ads, and to analyze the traffic and audience of your website. Before continuing to browse www.tehnium-azi.ro, please agree to: Terms of Use.