Kysymys:
Mitä tapahtuu, kun FPGA on "ohjelmoitu"?
Randomblue
2012-04-17 16:16:04 UTC
view on stackexchange narkive permalink

Ymmärtääkseni FPGA: n ohjelmointiprosessi jakautuu kahteen osaan:

  1. Koodaa laitteistokuvaus biteiksi, jotka FPGA ymmärtää (eli kirjoittaa jonkin HDL: n ja kääntää sen)
  2. Lataa käännetty HDL FPGA: lle.

Kysymykseni kuuluu: "Mitä FPGA tekee käännetyn HDL: n kanssa?". Tällä hetkellä ajattelen FPGA: ta "muovattavana laitteistona", jossa johdot ja logiikkaportit voidaan muotoilla mihin tahansa. Yksi hienoista seikoista on, että muovattavuus on pysyvä: FPGA: t voidaan ohjelmoida uudelleen.

Kuinka FPGA tulkitsee käännettyä HDL: ää? Kuinka pysyvä muovattavuus saavutetaan?

Se ei todellakaan ole pysyvä - FPGA-bittivirta on ladattava EEPROM: sta aina, kun virtaa käytetään. CPLD-levyillä ei ole tätä ongelmaa, ja joissakin FPGA-tiedostoissa on sisäänrakennettu EEPROM, joka lataa bittivirransa jokaisen käynnistyksen yhteydessä.
Mielestäni hän tarkoittaa "muovattavuus on pysyvää", eli että ohjelma itsessään ei ole pysyvä.
Neljä vastused:
ajs410
2012-04-17 22:41:44 UTC
view on stackexchange narkive permalink

Muun kysymyksesi perusteella olet Xilinx-kaveri. Joten suosittelen lämpimästi, että hankit Xilinx-sirusi tietolomakkeen ja siirryt Toiminnallinen kuvaus -osioon. Käyttämälleni Spartan 3 -piirille se on 42 sivua hauskaa lukemista. Siinä kuvataan tarkalleen, mitkä komponentit ovat FPGA: ssa - IOB: t, CLB: t, viipaleet, LUT: t, Block RAM, kertojat, Digital Clock Manager, Clock Network, Interconnect ja joitain perustiedot kokoonpanosta. Sinun on ymmärrettävä nämä tiedot, jos haluat tietää, miltä "käännetty HDL" näyttää.

Kun olet perehtynyt FPGA: n arkkitehtuuriin, voit ymmärtää tämän prosessin. Ensinnäkin HDL-suunnittelusi ajetaan synteesimoottorin kautta, mikä muuttaa HDL: si periaatteessa RTL: ksi. Sitten Mapper käsittelee synteesin tulokset, "kartoittaa" ne käytettävissä oleviin FPGA-arkkitehtuurin osiin. Sitten reititin tekee paikan ja reitin (PAR), joka selvittää, mihin nämä kappaleet menevät ja miten ne yhdistetään. Lopuksi PAR: n tulokset muutetaan BIT-tiedostoksi. Tyypillisesti tämä BIT-tiedosto muunnetaan sitten jollakin tavalla, jotta se voidaan ladata Flash-sirulle, jotta FPGA voidaan ohjelmoida automaattisesti, kun se käynnistyy.

Tämä bittitiedosto kuvaa koko FPGA-ohjelmaa. Esimerkiksi Spartan 3: n CLB: t koostuvat viipaleista, jotka koostuvat LUT: ista, jotka ovat vain 16-osoitteisia 1-bittisiä SRAM-levyjä. Joten yksi asia, jonka BIT-tiedosto sisältää, on juuri se, mitä tietoja SRAM: n jokaiseen osoitteeseen menee. Toinen asia, jonka BIT-tiedosto sisältää, on se, kuinka kukin LUT-tulo on kytketty yhteysmatriisiin. BIT-tiedosto sisältää myös alkuarvot, jotka menevät lohkon RAM-muistiin. Siinä kuvataan, mikä on liitetty jokaisen viipaleen jokaisen kiikun set- ja reset-nastoihin. Siinä kuvataan, kuinka kantoketju on kytketty. Siinä kuvataan jokaisen IOB: n (LVTTL, LVCMOS, LVDS jne.) Logiikkarajapinta. Siinä kuvataan kaikki integroidut ylös- tai alasvetovastukset. Pohjimmiltaan kaikki.

Xilinxissä FPGA: n muisti tyhjennetään, kun määritys aloitetaan (ts. PROG_B on vahvistettu). Kun muisti on tyhjä, INIT_B nousee korkealle osoittamaan, että vaihe on valmis. BIT-tiedosto ladataan sitten joko JTAG: n tai Flash-sirun käyttöliittymän kautta. Kun ohjelma on ladattu, yleinen asetus / nollaus (GSR) sykkii ja palauttaa kaikki varvastossut alkuperäiseen tilaansa. DONE-tappi nousee sitten korkealle, mikä osoittaa konfiguroinnin olevan valmis. Täsmälleen yksi kellojakso myöhemmin globaali kolmen tilan signaali (GTS) vapautetaan, jolloin lähdöt voidaan ohjata. Täsmälleen yksi sykli myöhemmin, Global Write Enable (GWE) vapautetaan, jolloin varvastossut alkavat vaihtaa tilaa vastauksena tuloihinsa. Huomaa, että jopa tämä lopullinen määritysprosessi voidaan hieman järjestää BIT-tiedostossa asetettujen lippujen mukaan.

MUOKKAA:

Haluan myös lisätä, että syy FPGA-ohjelmaan ei ole pysyvä johtuu siitä, että logiikkarakenne koostuu haihtuvasta muistista (esim. SRAM). Joten kun FPGA menettää virran, ohjelma unohdetaan. Siksi he tarvitsevat mm. Flash-sirut haihtumattomana tallennustilana FPGA-ohjelmalle, jotta se voidaan ladata aina, kun laitteeseen kytketään virta.

stevenvh
2012-04-17 16:23:16 UTC
view on stackexchange narkive permalink

HDL: n kokoaminen johtaa bittikuvioon, joka osoittaa, mitkä FPGA: n sisäiset yhteydet tulisi aktivoida. FPGA: n ei tarvitse enää tulkita HDL: ää. Bittikuvio ohjelmoidaan sarjakuormaaja Flash / EEPROM: ksi, ja käynnistettäessä tämä kuvio siirretään FPGA: han tekemällä tarvittavat yhteydet.

Synteesi tarkoittaa kolmea ilmausta 1. Netlist-sukupolvi 2. Porttitason optimointi 3. Teknologian kartoitus.
Martin Thompson
2012-04-17 20:14:22 UTC
view on stackexchange narkive permalink

Käännöksen tulos on bittivirta (kirjaimellisesti bittivirta), joka ladataan sisään virran kytkemisen jälkeen. Tämä siirtyy joihinkin muistisoluihin (salvat) tallennetun FPGA: n läpi. Nämä solut on kytketty erilaisiin logiikkayksiköihin, multipleksereihin, hakutaulukoihin, RAM-lohkoihin, reititysmatriiseihin ja muodostavat niin sanotun "kokoonpanon". Kun bittivirta on ladattu, FPGA alkaa toimia - kokoonpanosalpojen bitit "kertovat" jokaiselle pienelle FPGA-palalle kuinka toimia.

MUOKKAA 24. huhtikuuta 2012: Mainitsemani kiikarit eivät koske hakutaulukoita tai niiden kokoonpanoa. Kuten @ ajs410 sanoi, ne ovat RAM-muistissa, joka on vielä vähemmän transistoreita. Varvastossut on tarkoitettu tietojen tallentamiseen LUT: sta, jos kyseinen tallennus on käytössä.

Kuinka suuri osa tyypillisen FPGA: n piiristä on todellista logiikkaa ja reititystä ja kuinka paljon ohjelmointituki?
Teknisesti "muistisolut" ovat varvastossuja, ei salpoja. Eli. ne ovat reunan laukaisemia.
@BrianCarlton: Käytetäänkö varvastossuja todella kaikissa ohjelman tallennussoluissa? Ymmärrykseni mukaan varvastossut tarvitsevat jotain luokkaa 12-16 MOSFET-bittiä bittiä kohti; sitä vastoin muut täysin staattiset tekniikat tietojen lukitsemiseksi edellyttävät vain 5-8.
LUT valmistetaan tyypillisesti SRAM: sta. Varvastossut on kiinnitetty SRAM: n lähtöön.
@supercat: Olen kuullut, että 90% FPGA: sta reitittää ... loput ovat logiikkaa ja kokoonpanoa - ei kuitenkaan löydä viitteitä nopeasti :(
quantum231
2015-01-07 07:25:20 UTC
view on stackexchange narkive permalink

FPGA: n vakiotermi on "kokoonpano" eikä "ohjelmointi". FPGA on yleensä SRAM-pohjainen laite. SRAM tallentaa bittejä, jotka osoittavat, mitkä yhteydet muodostuvat ja murtuvat laitteen "logiikkakudoksen" sisällä. Kun kokoonpano tapahtuu, bittien virta lähetetään FPGA: han, joka kirjoittaa tähän SRAM: iin. Kun SRAM-pohjainen FPGA kytketään pois päältä, SRAM-tiedot poistetaan käytöstä ja kun FPGA kytketään päälle, ne on määritettävä uudelleen.

Nyt tiedät tämän, ne ovat erilaisia ​​tapoja "konfiguroida" ja Tämän "bittivirran" sisältäviä FPGA-tiedostoja ja siten eri tiedostomuotoja on olemassa. Päivän lopussa näiden tiedostojen rakenne ja yksityiskohdat siitä, kuinka tarkasti FPGA on konfiguroitu, ovat valmistajan omistamia, eikä näitä tietoja koskaan jaeta. Mutta yleinen periaate pysyy samana kaikissa FPGA-ryhmissä.



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