Pitanje:
Kada se FPGA mogu koristiti, a mikrokontroleri / DSP-ovi ne?
Jolle
2014-01-22 19:41:32 UTC
view on stackexchange narkive permalink

Moram birati između tečaja naprednih mikrokontrolera i tečaja naprednih FPGA-a.

Imao sam uvodne tečajeve iz oba predmeta, a ono što me sada muči je to što sam već prilično dobar u razvoju firmvera za mikrokontrolere i ne vidim koje proizvode / projekte mogu napraviti s FPGA-om i ne može s mikrokontrolerom / DSP-om.

Možete li smisliti neke programe / proizvode / projekte u kojima mikrokontroler ili DSP ne bi bili dovoljni i zašto?

Fotoaparati? Kamere velike brzine? Brza obrada slike?

Glavni su razlozi uglavnom 1. 100% determinističke reakcije, 2. ogroman potencijal za paralelizam. Međutim, mnogi dizajni uključuju _sort-core_ CPU u FPGA, jer je puno lakše programirati ludu logiku za procesor nego za hardver.
Razlika između mogućeg pojedinog uređaja nije baš jasna. Svaka od njih ima prednosti, a s obje strane postoje rješenja za probleme. Pohađao sam uvodne tečajeve za svaki, pretpostavljam da to razumijete, pa se moram pitati što točno tražite.
Tražim programe u kojima mikrokontroler u većini slučajeva ne bi bio dovoljan ili bi FPGA bio očiti izbor.
Koju ste na uvodnom tečaju lakše razumjeli? Zatim odaberite napredni na drugom, jer ćete (možda) sami moći proučavati onaj lakši.
http://stackoverflow.com/questions/7458850/what-are-some-practical-applications-of-an-fpga
Deset odgovori:
#1
+21
pjc50
2014-01-22 22:43:32 UTC
view on stackexchange narkive permalink

Pogledajte također FPGA-ovi vs mikrokontroleri

Dobar je primjer brza obrada slike ili video zapisa. Ili obrađuje 'slike' koje nisu izravne optičke slike, poput radara ili laserskih sustava.

Ključna stvar koju treba uzeti u obzir su protok i latencija zahtjevi. Mikrokontroler može servisirati prekid (vrlo grubo) jednom u mikrosekundi. Može odjednom servisirati samo jedan prekid. Ako ga trebate obraditi na razrađen način, to ograničava koliko ih možete servisirati u određenom vremenu.

Pomoću FPGA-e možete općenito odgovoriti na ulazni događaj odmah (dobro, na sljedećem ciklusu takta). Paralelno možete imati puno procesorskih jedinica. Ako znate da vaš filtar traje 20 ciklusa, to je potpuno neovisno o bilo čemu drugom što se događa.

Jako paralelno integer računanje najbolje radi na FPGA-ima, pogotovo ako postoje složene ovisnosti podataka. Međutim, nemaju puno ugrađene memorije; možete dodati malo DRAM-a sa strane, ali po cijenu kašnjenja.

Možda će vam trebati i jedan za periferne uređaje ili da govorite nekom brzom digitalnom sabirnicom. Ne možete ugrabiti HDMI u mikrokontroler ili iz njega. Ne možete sagraditi PCI karticu oko jedne.

#2
+15
Dave Tweed
2014-01-22 21:01:26 UTC
view on stackexchange narkive permalink

Pa, obrađujem HD video u stvarnom vremenu u FPGA-ima. Nešto od onoga što radim moglo bi se obaviti na GPU čipu, ali ne i na mikrokontroleru ili DSP-u. FPGA je fleksibilniji.

Mnogi sustavi kombiniraju FPGA-e i MCU-ove / DSP-ove kako bi dobili najbolje od oba svijeta. Jedan projekt na kojem bih uskoro mogao raditi uključuje prepoznavanje objekata u video streamu. Preliminarne korake (uklanjanje šuma, normalizacija, otkrivanje ruba itd.) Najbolje je provesti u FPGA-i, ali logiku više razine koja odlučuje koje su značajke niske razine dijelovi objekata koji se prepoznaju najbolje je izvršiti na procesoru unutar ili izvan FPGA-e).

U konačnici, željet ćete biti upoznati u oba područja, pa je zapravo samo pitanje koje prvo učiniti.

#3
+14
Adam Davis
2014-01-22 23:47:18 UTC
view on stackexchange narkive permalink

Ukratko, FPGA su dobri tamo gdje trebate izvršiti malo obrade na puno podataka, a CPU su dobri tamo gdje trebate izvršiti puno obrade na malo podataka.

HDMI video stream je puno podataka. To može učiniti CPU, GPU ili ASIC u općenitom slučaju videozapisa, ali ako trebate malo poraditi na tome (na primjer, dodajte sloj), možete odabrati FPGA.

Audio stream nema puno podataka, ali ako na njemu trebate izvršiti prepoznavanje govora, radije ćete imati CPU nego FPGA.

Iako možete raditi radio definiran softverom u CPU-u se s FPGA-om možete nositi s mnogo većim dijelom spektra lakše nego s CPU-om.

Iako biste mogli napraviti kontroler tipkovnice od FPGA-e, mikrokontroler će biti jeftiniji, troše manje energije i jednostavniji za razvoj naprednog softvera tipkovnice (makronaredbe, funkcije igara, remapiranje) za FPGA.

Naravno, u bilo kojem možete učiniti bilo što, uz kompromise, ali ako ako su vješti u oba slučaja, moći ćete kompetentnije izvagati kompromise i izbjeći veću cijenu dijelova ili vremena izrade koje bi vam pri odabiru pogrešnog rješenja za zadati problem.

#4
+12
Olin Lathrop
2014-01-22 20:50:46 UTC
view on stackexchange narkive permalink

Općenito, mikrokontroler koristite kada može obaviti posao. Mikrokontroler izvodi logiku izvršavanjem sekvencijalnih uputa.

FPGA izvodi logiku jer su njegova hardverska vrata logično ožičena za to. To znači da može puno brže i istodobno s nizom takvih stvari. Općenito je složenije i teže stvoriti i ispraviti iste logike u FPGA-i kao u mikro, pa FPGA koristite kada su potrebne dodatne brzine i mala latencija.

#5
+8
embedded.kyle
2014-01-24 03:30:19 UTC
view on stackexchange narkive permalink

Jedna aplikacija koju još nisam vidio spomenuta je mikroelektronsko inženjerstvo ili sami dizajn MCU / CPU / GPU / ASIC čipova. Ti se čipovi često prototipiziraju njihovim dizajniranjem u HDL-u, a zatim se implementiraju u FPGA. To ih čini lakšim, jeftinijim i bržim za testiranje i modificiranje prije nego što konačno upotrijebe HDL za stvaranje rasporeda potrebnog za proizvodnju stvarnog silicija u procesoru ili ASIC-u.

Komentator je to spomenuo u obliku soft-core čipovi (iako su imali pogrešku u kucanju i nazivali su ih čipovima s razvrstavanjem). Možete uzeti ARM / 8051 / itd. soft-core i bilo koja soft-core periferna oprema koja vam treba i u osnovi dizajnirajte vlastiti prilagođeni mikrokontroler implementiran u FPGA. Zatim, pod pretpostavkom da imate resurse, ovo biste mogli dodati u vlastiti mikrokontroler.

Ako je ova vrsta aplikacije nešto što vas zanima, pogledajte OpenCores da biste vidjeli što je moguće.

#6
+6
LeoR
2014-01-23 19:48:55 UTC
view on stackexchange narkive permalink

Izrađujemo radarske instrumente (uglavnom sintetički otvor) koji u velikoj mjeri koriste FPGA. Mislim da mikrokontroler ne bi mogao lako ispuniti uske vremenske zahtjeve. Vjerujem da mnogi LIDAR instrumenti također koriste FPGA-e.

Uglavnom, sve gdje su vremenski zahtjevi u nanosekundama trebaju FPGA-e ili ASIC-ove.

#7
+5
Void Star
2014-01-23 05:03:30 UTC
view on stackexchange narkive permalink

Mikrokontroler može obrađivati ​​podatke samo sekvencijalno, jednu po jednu uputu, pa ako imate vrlo skupu operaciju, možda želite izračunavanje učiniti nekako paralelnim. Obrada audio / video zapisa dobar je primjer za to. Kako bi udovoljili toj potrebi, razvijeni su procesori digitalnih signala koji mogu paralelno obavljati određene zadatke, ali nisu dovoljno generalizirani da bi primijenili bilo koji proizvoljan algoritam, pa će ovi procesori raditi za mnoge zadatke, ali ne i za sve zadatke. FPGA je generalizirani dio hardvera. Budući da u osnovi možete definirati dizajn vlastitog dijela hardvera, a zatim ga preuzeti na FPGA, on može implementirati bilo koji zamislivi algoritam s obzirom na to da za to ima dovoljno resursa.

Konkretan primjer : Ken Perlin predlaže hardversku implementaciju svog algoritma simplex šuma. To se može učiniti relativno brzo s tradicionalnim CPU-om ili mikrokontrolerom, ali se može učiniti vrlo brzo pomoću prilagođenog hardvera. Budući da sumnjam da bi DSP za ovo radio, najlakše bi bilo FPGA. Teži način, naravno, bio bi da se za vas izradi stvarni, fizički čip, koji je nevjerojatno skup. http://www.csee.umbc.edu/~olano/s2002c36/ch02.pdf

#8
+5
stanri
2016-02-08 00:20:32 UTC
view on stackexchange narkive permalink

Jedan odgovor koji nije ovdje je Prikupljanje podataka. Ako želite upotrijebiti ADC za uzorkovanje signala (na primjer, RF signal) na 200 MHz i obraditi ga, mikrokontroler jednostavno neće moći obraditi podatke dovoljno brzo. Tipična DAQ FPGA ploča primat će, filtrirati, izvesti DDC i proslijediti RF podatke CPU-u s puno nižom frekvencijom. FPGA također mogu izvoditi FFT i operacije kanaliziranja na RF spektru.

Druga aplikacija je usmjeravanje paketa, na primjer uređaj koji upravlja jednim (ili više) XAUI ethernet sučelja koji rade sa brzinom od 10Gb / s. Ovi FPGA filtriraju i planiraju redove paketa za različita odredišta. Mikrokontroler / uobičajeni CPU ne bi mogao upravljati širinom pojasa ovih sučelja.

#9
+4
supercat
2014-01-23 03:21:40 UTC
view on stackexchange narkive permalink

Temeljni razlog zbog kojeg mikroprocesori i mikrokontroleri mogu toliko puno učiniti s relativno malom količinom sklopova je taj što ako mikro samo treba izvršiti neki složeni izračun 1.000 puta u sekundi i to traje 20 mikrosekundi (tako će mikro raditi izračun 2% vremena), većina hardvera koji bi se koristio za taj izračun može se koristiti u druge svrhe u preostalih 98% vremena. Mikrokontroleri tako mogu koristiti skromnu količinu hardvera za izvođenje vrlo velikog broja različitih funkcija, sve dok funkcije istovremeno nisu potrebne.

Količina sklopova u FPGA-i često će biti usporediva s onom u mikrokontroler (FPGA se razlikuju u veličini za nekoliko redova veličine, kao i mikrokontroleri, ali rasponi se preklapaju). Međutim, za razliku od mikrokontrolera, čiji će elementi kruga biti povezani na takav način da olakšaju njihovu upotrebu za mnoge nes istodobne zadatke, FPGA će biti dizajniran da dijelove svog sklopa posveti raznim zadacima "puno radno vrijeme". Ako bi netko želio da mikrokontroler broji broj impulsa koji se javljaju na svakom od 100 ulaza, bilo bi ograničeno na brojanje impulsa koji su bili dovoljno spori da bi ih kontroler mogao obrađivati ​​sekvencijalno, pojedinačno - ako bi svi ulazi mogli pulsirati neovisno, čak i brzi regulator imao bi problema s brojanjem više od nekoliko tisuća impulsa u sekundi po ulazu. Suprotno tome, ako netko koristi FPGA za obradu posla, mogao bi posvetiti brojač sklopova svakom ulazu i bez problema brojati svaki impuls sa svakog ulaza, čak i ako je svaki ulaz neovisno pulsirao desetke milijuna puta u sekundi.

#10
+1
Lee Timothy
2014-12-09 12:36:57 UTC
view on stackexchange narkive permalink

FPGA implementira hardverske logičke sklopove ili funkcionalni blok, u teoriji može implementirati sve što želite. A ti se blokovi istodobno izvode, malo vjerojatno da konvencionalni MCU pokreće programiranje redak po redak. Stoga su performanse FPGA mnogo bolje od MCU-a, ali zahtijeva poznavanje HDL ili VHDL jezika koji se razlikuje od programskog jezika u smislu sintakse, stila i koncepta.


Kao što sam rekao, može implementirati bilo čega, stoga nije iznenađujuće što možete implementirati MCU s funkcionalnim blokom kako biste olakšali svoj razvoj s visokim performansama. Xilinx vam nudi funkcionalni blok za ugrađeni MCU, nazvan Microblaze. Stoga možete izvršiti i ugrađeni sistemski program u FPGA.


Na primjer, želite implementirati programabilni zvučni ekvilajzer, a najteži računski dio poput FFT-a može se implementirati funkcionalnim blokom umjesto pokrenut izračun softvera. Ali neke jednostavne zadatke poput LCD-a, I / O sučelja može obaviti MCU. A FPGA omogućuje istodobno ugrađivanje MCU ugrađenih sistemskih i hardverskih funkcionalnih blokova.



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