Pitanje:
Što je FPGA?
zklapow
2009-12-16 07:11:45 UTC
view on stackexchange narkive permalink

Već sam vidio mnogo ljudi koji su razgovarali o FPGA-i i znam da je to poljski programirljivi niz vrata, ali kako to funkcionira i koja je svrha upotrebe FPGA-e?

Pet odgovori:
#1
+30
Maciek Sawicki
2009-12-16 07:37:52 UTC
view on stackexchange narkive permalink

To su elektroničke komponente koje dodaju logiku vašim krugovima (pa su slične mikrokontrolerima). Ali pristup dizajnu je tada potpuno drugačiji nego u uC (mikrokontroler). U UC-u ne možete promijeniti unutarnji dizajn UC-a; na njemu možete pokretati samo "klasične" programe. Programiranje FPGA-a više je poput stvaranja novog hardvera. Stvarate nove veze između logičkih vrata i stvarate novi, specijalizirani procesor. A sve to možete raditi u svom domu, na radnom stolu i računalu.

Zvuči cool? Da, ali postoje neki nedostaci. Na primjer, cijena (ali mislim da ju je teško usporediti), veća potrošnja energije i niže brzine takta (ali svoju aplikaciju možete dizajnirati na pametan način i obaviti više operacija u jednom ciklusu takta).

Korisni linkovi:

Primjer upotrebe: http://nsa.unaligned.org/

Primijetit ću da su mnogi FPGA-i dovoljno veliki da sadrže više jezgri CPU-a, što omogućava FPGA-i da bude cijelo računalo za sebe.
Kao napomenu, mislim da niže brzine takta mogu zavarati. u usporedbi s računalom, da. U usporedbi s pic16, oni mogu biti brži, ali to ovisi o cijeni. Većina jeftinijih koje sam imao u rukama rade na 40MHz, ali opet, varijacije od proizvoda do proizvoda.
#2
+24
SiliconFarmer
2009-12-19 02:10:37 UTC
view on stackexchange narkive permalink

FPGA je doslovno niz logičkih ulaza koji se mogu programirati na terenu. Japanke, multiplekseri, 4-bitne tablice za pretraživanje itd. Koje se mogu povezati na bilo koji način, koristeći jezik sličan C-u (Verilog).

UC, kao što je AVR, također je izrađene od sličnih logičkih vrata, ali su konfigurirane kada je napravljen uređaj. Svakako, ima RAM i Flash, tako da možete pisati softver za čitanje ulaza i upravljanje izlazima, ali ne možete promijeniti stvarni raspored vrata. Vrata će uvijek biti raspoređena u ALU, memorijski kontroler, serijski priključak itd.

Prednost uC-a je u tome što ga možete programirati na terenu (za svojim stolom), s jednostavnim za upotrebu, poznati jezik visoke razine kao što je C. Problem je što je softver "spor". Da biste imali ulaznu kontrolu izlaza, u najjednostavnijem slučaju možete napisati:

void loop () {buttonState = digitalRead (buttonPin); if (buttonState == HIGH) {
digitalWrite (ledPin, HIGH);
} else {digitalWrite (ledPin, LOW); }}

To bi se pretvorilo u desetak uputa za sastavljanje, pa bi petlji trebalo oko mikrosekunde da kontrolira taj izlaz s jednog ulaza. I potreban je cijeli uC čip da to učini tako brzo. Svakako, možete učiniti puno puno više, ali tada će se vaša sposobnost upravljanja tim izlazom usporiti kako se UC zauzima radeći druge stvari.

U FPGA-i bih mogao konfigurirati vrata da imaju ulaznu kontrolu izlaz u 1 satu. Dakle, izlaz bi slijedio ulaz s kašnjenjem od možda 25 nanosekundi. To je 40X brže, koristeći isto vrijeme sata. A ostatak ulaza u FPGA dostupan je za mnoge druge stvari, što neće utjecati na brzinu ove male funkcije.

Kôd za FPGA bio bi jednostavan flip flop:

always @ (posedge clock) ledPin < = buttonPin;

Ovo bi trebalo samo 1 FPGA ćeliju, oko 40 ulaza, od desetaka tisuća u FPGA.

Mogu reprogramirati svoj FPGA za nešto drugo, na primjer, kontrolirati led na temelju kombinacije četiri ulaza, još uvijek u jednom satu, i dalje koristeći tu 1 FPGA ćeliju. Ili kontrolirajte led na temelju serijskog toka s ulaza, u nekoliko FPGA ćelija, što bi bilo 100 vrata. Tako bih mogao upravljati LED-om na temelju serijskih podataka, recimo "UKLJUČENO" ili "ISKLJUČENO", sa serijskim prijenosom po vrlo visokoj brzini (lako 20 MHz), i dalje koristiti samo mali dio kapaciteta FPGA-e.

Dakle, prednost FPGA-e je očito brzina. Može učiniti sve što može učiniti i UC, i to puno brže, uz sve paralelno. Složene stvari na koje bi uC trebao milisekunde, FPGA bi to mogao učiniti u mikrosekundama ili manje. Sve dok u FPGA postoje zaporke, mogu mu dodati više funkcija bez utjecaja na brzinu ili rad prethodnih funkcija u FPGA-i. Usput, FPGA može vrlo lako pokretati radni takt od 20 MHz.

Cijena nije razlika. Mogu kupiti FPGA koji bi mogao implementirati gotovo bilo koji Arduino dizajn koji sam ikad vidio za otprilike 5 dolara, otprilike isto kao i Arduino AVR čip. Postoje i besplatni lanci alata (IDE, kompajler, program za ispravljanje pogrešaka) za FPGA-e.

Snaga nije diferencijator. Budući da mogu pokretati FPGA s mnogo nižim radnim taktom da bih dobio istu funkciju kao i uC i koristiti mali dio njegovih ulaza (neiskorištena vrata koriste samo propusnu snagu), FPGA može pobijediti snagu gotovo bilo kojeg uC-a dizajn.

Najveći nedostatak FPGA-e je taj što je puno složeniji i dugotrajniji za definiranje, pisanje koda i ispravljanje pogrešaka u ne-trivijalnom FPGA dizajnu od uC programa. Tipični projekt uC-a koji biste mogli izvesti navečer mogao bi potrajati danima na FPGA-i.

Drugi potencijalno otklonjivi problemi su u tome što je većina ljudi obučena za programiranje softvera, ali malo njih razumije hardversko programiranje. Verilog možete naučiti prilično jednostavno. Ali također biste trebali razmišljati u smislu dizajna hardvera umjesto dizajna softvera. Uzorci dizajna znatno se razlikuju.

Još je jedan problem što FPGA ne dolazi u malim 8 do 20-pinskim DIP paketima. Obično dolaze u paketima sa 100-pinskim ili većim površinskim nosačima, pa je izrada ploča teža.

I konačni problem je taj što se mnoštvo zanimljivih projekata može izvrsno implementirati u one jednostavne za upotrebu UC-a, pa zašto se onda mučiti s FPGA-om?

"Mogu kupiti FPGA koji bi mogao implementirati gotovo bilo koji Arduino dizajn koji sam ikad vidio za otprilike 5 dolara" Žao mi je, ali hvæt? Gdje?
#3
+9
ppvi
2009-12-16 14:19:26 UTC
view on stackexchange narkive permalink

Ako ste upoznati s osnovnim logičkim vratima, trebali biste znati da su gotovo trenutni. Operacije A i B ILI C trenutno se mijenjaju kada se promijene A, B ili C.

FPGA je (vrsta) matrice programabilnih logičkih vrata. Možete definirati ulaze i izlaze (kao kombinaciju ulaza).

U uC-u bi A + B / C * sqrt (D) trebao nekoliko ciklusa takta i malo memorije. U FPGA-i rezultat je gotovo trenutan.

Izvrsni su za video, DSP, kriptografiju ...

To je glavna prednost. Moderni FPGA-i sada odgovaraju memoriji, a postoje i uC / FPGA hibridi.

Znam mnoge EE-ove za vježbanje s dugogodišnjim iskustvom koji će često kroz FPGA ući u dizajn umjesto uC gdje ste nekad vidjeli uC. Zaista mislim da su izvrsni za rukovanje sučeljem.
Da, mislim da je ovo lijep primjer: http://www.armadeus.com/english/index.html. Posebno mi je zanimljiv primjer servo upravljanja: http://marwww.in2p3.fr/~duval/wiki_html_dump/articles/m/o/t/MotionSystem_05a0.html
Također treba napomenuti da postoji sve više pretvarača "C u VHDL" ili "C u Verilog". Još nisu najučinkovitije stvari, ali već napisani kôd možete pretvoriti u hardver koji se može koristiti za poboljšanje brzine. Prilično cool ako mene pitate (i imate li tijesta za to).
#4
+5
endolith
2009-12-18 00:26:06 UTC
view on stackexchange narkive permalink

Koriste se za razbijanje ključeva za šifriranje mnogo brže nego što bi to moglo učiniti računalo opće namjene. : D

Haha, uživao sam u vašem vrlo funkcionalnom opisu. Apsolutno su nevjerojatni u paralelnoj obradi.
Projekt razbijanja koda: http://www.copacobana.org/
#5
+2
Brian Carlton
2010-02-23 03:03:15 UTC
view on stackexchange narkive permalink

Da biste uštedjeli novac i rizik u odnosu na ASIC. Osim ako vam je

  1. duboko stalo do snage ili
  2. ne gradite ih gomilu (recimo> 10.000 jedinica)

fiksne ( NRE) troškovi izrade ASIC-a čine ga prevelikim.

Budući da FPGA možete lako promijeniti, možete manje simulirati dizajn i brže ući u laboratorij. Također možete napraviti djelomični dizajn i graditi na njemu, kao u softveru.



Ova pitanja su automatski prevedena s engleskog jezika.Izvorni sadržaj dostupan je na stackexchange-u, što zahvaljujemo na cc by-sa 2.0 licenci pod kojom se distribuira.
Loading...