Kysymys:
Mikä on FPGA?
zklapow
2009-12-16 07:11:45 UTC
view on stackexchange narkive permalink

Olen nähnyt paljon ihmisten puhuneen FPGA: sta aiemmin ja tiedän, että se tarkoittaa kentällä ohjelmoitavaa porttiryhmää, mutta miten se toimii ja mikä on FPGA: n käytön tarkoitus?

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

Ne ovat elektronisia komponentteja, jotka lisäävät logiikkaa piireihisi (joten ne ovat samanlaisia ​​kuin mikro-ohjaimet). Mutta suunnittelun lähestymistapa on silloin täysin erilainen kuin uC: ssä (mikro-ohjain). UC: ssä et voi muuttaa sisäistä uC-rakennetta; voit käyttää siinä vain "klassisia" ohjelmia. FPGA-ohjelmointi on enemmän kuin uuden laitteiston luominen. Voit luoda uusia yhteyksiä loogisten porttien välille ja luoda uuden erikoistuneen prosessorin. Ja voit tehdä kaiken kotona, työpöydälläsi ja tietokoneellasi.

Kuulostaa hyvältä? Kyllä, mutta on joitain haittoja. Esimerkiksi hinta (mutta mielestäni sitä on vaikea verrata), suurempi virrankulutus ja pienemmät kellotaajuudet (mutta voit suunnitella sovelluksesi älykkäästi ja tehdä enemmän toimintoja yhdessä kellojaksossa).

Hyödyllisiä linkkejä:

Esimerkkikäyttö: http://nsa.unaligned.org/

Huomaan, että monet FPGA: t ovat riittävän suuria sisältääkseen useita CPU-ytimiä, jolloin FPGA on koko tietokone itselleen.
Huomautus: mielestäni matalat kellotaajuudet voivat olla harhaanjohtavia. verrattuna tietokoneeseen, kyllä. Pic16: een verrattuna ne voivat olla nopeampia, mutta se riippuu kustannuksista. Suurin osa halvemmista, joita minulla on ollut kädessäni 40 MHz: n taajuudella, mutta jälleen tuote-tuotevariaatio.
#2
+24
SiliconFarmer
2009-12-19 02:10:37 UTC
view on stackexchange narkive permalink

FPGA on kirjaimellisesti joukko loogisia portteja, jotka voidaan ohjelmoida kentälle. Varvastossut, multiplekserit, 4-bittiset hakupöydät jne., Jotka voidaan liittää millä tahansa haluamallasi tavalla, käyttämällä C-tyyppistä kieltä (Verilog).

Myös uC, kuten AVR, on valmistettu samankaltaisista logiikkaporteista, mutta ne määritetään laitteen valmistuksen yhteydessä. Toki, siinä on RAM ja Flash, joten voit kirjoittaa ohjelmiston tulojen lukemiseen ja lähtöjen ohjaamiseen, mutta et voi muuttaa porttien todellisia järjestelyjä. Portit järjestetään aina ALU: ksi, muistiohjaimeksi, sarjaportiksi jne.

UC: n etuna on, että voit ohjelmoida sen kentälle (työpöydällesi) helposti käyttää, tuttua, korkean tason kieltä, kuten C. Ongelmana on, että ohjelmisto on "hidas". Jos haluat, että tulo ohjaa lähtöä, yksinkertaisimmassa tapauksessa voit kirjoittaa:

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

Siitä tulisi tusina kokoonpano-ohjetta, joten silmukka tarvitsisi noin mikrosekunnin ohjaamaan yhtä lähtöä yhdestä tulosta. Ja se vie koko uC-sirun tekemään niin nopeasti. Toki, voit tehdä paljon enemmän, mutta sitten kykysi hallita tuotosta hidastuu, kun uC on kiireinen tekemällä muita asioita.

FPGA: ssa voisin määrittää portit siten, että niissä olisi tulo-ohjaus lähtö yhdellä kellolla. Joten lähtö seuraisi tuloa ehkä 25 nanosekunnin viiveellä. Se on 40 kertaa nopeampi, samalla kellojaksolla. Ja loput FPGA: n portista ovat käytettävissä monien muiden asioiden tekemiseen, mikä ei vaikuta tämän pienen toiminnon nopeuteen.

FPGA: n koodi olisi yksinkertainen kääntö:

aina @ (posedge-kello) ledPin < = buttonPin;

Tämä vie vain yhden FPGA-solun, noin 40 porttia, FPGA: n kymmenistä tuhansista.

Voin ohjelmoida FPGA: n uudelleen tekemään jotain muuta, esimerkiksi ohjata lediä neljän tulon yhdistelmän perusteella, edelleen yhdellä kellolla, käyttäen silti yhtä FPGA-solua. Tai ohjaa lediä sarjavirran perusteella sisääntulosta muutamissa FPGA-soluissa, jotka olisivat 100 porttia. Joten voisin ohjata LEDiä sarjatietojen perusteella, sanomalla "ON" tai "OFF", sarjavirralla erittäin suurella nopeudella (helposti 20 MHz), ja silti vain pieni osa FPGA: n kapasiteetista.

FPGA: n etuna on siis selvästi nopeus. Se voi tehdä mitä tahansa, mitä uC voi tehdä, ja se voi tehdä sen paljon nopeammin, kaikki tehdään rinnakkain. Monimutkaisia ​​asioita, joihin uC vie millisekunteja, FPGA voisi tehdä mikrosekunnissa tai vähemmän. Niin kauan kuin FPGA: ssa on jäljellä portteja, voin lisätä siihen enemmän toimintoja vaikuttamatta FPGA: n aikaisempien toimintojen nopeuteen tai toimintaan. Muuten, FPGA pystyy suorittamaan helposti 20 MHz: n kellotaajuuden.

Kustannukset eivät ole erottelijoita. Voin ostaa FPGA: n, joka pystyy toteuttamaan melkein minkä tahansa Arduino-suunnittelun, jonka olen koskaan nähnyt, noin 5 dollaria, suunnilleen sama kuin Arduino AVR-siru. FPGA: lle on myös ilmaisia ​​työkaluketjuja (IDE, kääntäjä, virheenkorjaus).

Virta ei ole erottelija. Koska voin käyttää FPGA: ta paljon pienemmällä kellotaajuudella saadaksesi saman toiminnon kuin uC, ja käyttää pientä osaa sen portista (käyttämättömät portit käyttävät vain vuototehoa), FPGA voi voittaa melkein minkä tahansa uC-pohjaisen tehon suunnittelu.

FPGA: n suurin haittapuoli on, että ei-triviaalin FPGA-suunnittelun määrittely, kirjoittaminen ja virheenkorjaus on paljon monimutkaisempaa ja aikaa vievää kuin uC-ohjelma. Tyypillinen uC-projekti, jonka voit tehdä illalla, voi kestää päiviä FPGA: lla.

Muita, mahdollisesti korjattavia ongelmia ovat, että useimmat ihmiset ovat koulutettuja ohjelmoinnin ohjelmoinnissa, mutta harvat ymmärtävät laitteisto-ohjelmointia. Voit oppia Verilogia melko helposti. Mutta sinun on myös ajateltava laitteistosuunnittelua ohjelmistosuunnittelun sijaan. Suunnittelumallit ovat paljon erilaisia.

Toinen asia on, että FPGA: t eivät tule pieniin 8 - 20-napaisiin DIP-paketteihin. Niillä on taipumus tulla 100-napaisiin tai suurempiin pintakiinnityspaketteihin, joten levyjen rakentaminen on vaikeampi.

Ja viimeinen ongelma on, että paljon mielenkiintoisia projekteja voidaan toteuttaa hienosti niissä helppokäyttöisissä uC: t, joten miksi vaivautua FPGA: n kanssa?

"Voin ostaa FPGA: n, joka pystyy toteuttamaan melkein minkä tahansa Arduino-suunnittelun, jonka olen koskaan nähnyt, noin 5 dollaria" Anteeksi, mutta hvæt? Missä?
#3
+9
ppvi
2009-12-16 14:19:26 UTC
view on stackexchange narkive permalink

Jos olet perehtynyt logiikan perusportteihin, sinun on tiedettävä, että ne ovat käytännössä välittömiä. Operaatio A ja B TAI C muuttuu välittömästi, kun A, B tai C muuttuvat.

FPGA on (tavallaan) matriisi ohjelmoitavista logiikkaporteista. Voit määrittää tulot ja lähdöt (tulojen yhdistelmänä).

UC: ssä A + B / C * sqrt (D) vaatisi useita kellojaksoja ja muistia. FPGA: ssa tulos on melkein välitön.

Ne sopivat erinomaisesti videoihin, DSP: hen ja salaukseen ...

Se on tärkein etu. Nykyaikaiset FPGA: t sopivat nyt muistiin, ja on olemassa uC / FPGA-hybridit.

Tunnen monia harjoittavia EE: itä, joilla on monen vuoden kokemus, joka usein vain FPGA: n kautta suunnitteluun uC: n sijaan, jossa käytit uC: tä. Mielestäni ne ovat erinomaisia ​​käyttöliittymän käsittelyssä.
Kyllä, mielestäni tämä on hieno esimerkki: http://www.armadeus.com/english/index.html. Erityisen mielenkiintoinen on minulle servo-ohjauksen esimerkki: http://marwww.in2p3.fr/~duval/wiki_html_dump/articles/m/o/t/MotionSystem_05a0.html
Huomaa myös, että "C - VHDL" - tai "C - Verilog" - muuntimia on yhä enemmän. Ne eivät ole vielä tehokkaimpia asioita, mutta voit muuntaa jo kirjoitetun koodin laitteistoksi, jota voidaan käyttää nopeuden parantamiseen. Melko siisti, jos kysyt minulta (ja jos sinulla on taikina sitä).
#4
+5
endolith
2009-12-18 00:26:06 UTC
view on stackexchange narkive permalink

Niitä käytetään salausavainten murtamiseen paljon nopeammin kuin yleiskäyttöinen tietokone voisi. : D

Haha, nautin hyvin toimivasta kuvauksestasi. Ne ovat aivan hämmästyttäviä rinnakkaiskäsittelyssä.
Koodin murto-projekti: http://www.copacobana.org/
#5
+2
Brian Carlton
2010-02-23 03:03:15 UTC
view on stackexchange narkive permalink

Säästää rahaa ja riskiä verrattuna ASIC: iin. Ellet sinä

  1. välitä syvästi voimasta tai
  2. rakennat joukkoa niistä (esimerkiksi> 10k yksikköä)

kiinteät ( NRE) ASICin tekemisen kustannukset tekevät siitä kohtuuttoman kalliin.

Koska voit muuttaa FPGA: ta helposti, voit simuloida suunnittelua vähemmän ja päästä laboratorioon nopeammin. Voit myös tehdä osittaisen suunnittelun ja rakentaa sen, kuten ohjelmistoissa.



Tämä Q & A käännettiin automaattisesti englanniksi.Alkuperäinen sisältö on saatavilla stackexchange-palvelussa, jota kiitämme cc by-sa 2.0-lisenssistä, jolla sitä jaetaan.
Loading...