Sisällysluettelo:

Tee mikä tahansa anturi FPGA: sta: 4 vaihetta
Tee mikä tahansa anturi FPGA: sta: 4 vaihetta

Video: Tee mikä tahansa anturi FPGA: sta: 4 vaihetta

Video: Tee mikä tahansa anturi FPGA: sta: 4 vaihetta
Video: Представлен TPM 2.0: расширение возможностей ИТ-специалистов с помощью аналитических данных о модулях доверенной платформы 2024, Marraskuu
Anonim
Image
Image
FPGA
FPGA

Useimmat valmistajat yrittivät ainakin kerran elämässään rakentaa lämpömittarin, ehkä se, joka heillä on kotona, ei ole tarpeeksi älykäs, tai ehkä he ajattelevat, että he voivat rakentaa seuraavan PESTEEN. Kuitenkin jossain vaiheessa heillä oli mikrokontrolleri, jossa heidän uusin ohjelmistonsa oli kytketty lämpötila-anturiin (ja ehkä muutkin anturit: paine, valo). Tähän asti kaikki on täydellistä, ohjelmisto on käynnissä ja anturi tunnistaa. Testataan!

Hmmmm … ehkä hänen pitäisi lämmittää anturi hiustenkuivaajalla ja jäähdyttää se jäällä, se toimii jonkin aikaa. Mutta se ei vaikuta ammattimaiselta, anturi muuttaa arvoja liian nopeasti, jos lämmität sen, se ei kuumene enempää kuin pari astetta. Projekti on rintakuva! Mutta algoritmi on uusi, ottaa huomioon monet tekijät, sääli, että hän jumittui tähän typerästi pieneen asiaan.

Ratkaisuni on seuraava: saa FPGA toimimaan anturina, jonka arvot lähetetään tietokoneelta (tai tallennetaan muistiin tai luodaan ad-hoc-tilassa FPGA: n sisällä). Joten arvokkaalle MCU: lle FPGA näyttää anturilta, mutta ei miltä tahansa anturilta: minkä tahansa anturin haluat. Ehkä päätät, että tarvitset enemmän resoluutiota tai nopeampaa vasteaikaa kuin odotettiin, sinun on vaihdettava anturi. Tilaa se verkossa, se saapuu parin päivän, parin kuukauden kuluessa, kuka tietää. Vastaa piirilevyyn tai tilaa moduuli, jossa on uusi anturi. Tai… pari napsautusta ja FPGA on määritetty upouudeksi anturiksi ja se voi jäljitellä tarkkaa sisäistä kokoonpanoa.

Tätä kirjoitettaessa FPGA voisi toimia LM75: nä, ja lämpötilatiedot on tallennettu BRAM: iin (FPGA: ssa).

Vaihe 1: MCU

Minun valinta MCU on LPC4337 LPCXpresso. Sen päällä minulla on suoja (LPC General Purpose Shield), jossa on näyttö ja todellinen LM75 -anturi. LPC4337 on ARM Cortex M4, joka toimii 200 MHz: llä ja pienempi Cortex M0 (ei käytetä täällä). Todellinen anturi on liitetty I2C1 -oheislaitteeseen ja virtuaalinen anturimme I2C0: een. Lähde löytyy GitHubistani.

Kuinka rakentaa se? Lataa LPCXpresso IDE yhdessä LPCOpen -kirjaston kanssa. Tuo kyseinen kirjasto IDE: hen ja avaa myös projekti GitHubista. Kaikki on konfiguroitava ja voit napsauttaa "Debug" vasemmassa alakulmassa.

Koko projekti perustuu johonkin NXP: n esimerkistä (osoittaakseni, että projektini simuloi todellista anturia eikä tarvitse erityistä koodia MCU -puolella). Päätiedostossa (nimeltään iox_sensor.cpp) on tämä koodi:

#define SENSORS_ON_SHIELD

#if määritelty (SENSORS_ON_SHIELD) #define SHIELD_I2C I2C1 #elif define (SENSORS_ON_FPGA) #define SHIELD_I2C I2C0 #endif

Muuttamalla SENSOR_ON_SHIELD ja SENSOR_OR_FPGA käyttäjä voi kääntämisen aikana vaihtaa, mihin anturiin puhua, oikeaan tai virtuaaliseen, koska ne ovat eri I2C -nastoissa.

Vaihe 2: FPGA

Valitsemani FPGA -kortti on Digilentin valmistama Artix 7, jossa on Xilinx Arty 7. Kaksi PMod -liitintä on käytössä, yksi virheenkorjaukseen ja toinen todelliseen hyötykuormaan, yhteys MCU -korttiin.

Jälleen FPGA: n lähdekoodi on saatavilla GitHubissa (fpgaSide -kansio).

Kuinka rakentaa se? Lataa, osta tai avaa Xilinx Vivado IDE. Tuo projektitiedostot GitHubista. Yksi tiedostoista (content.coe) on raakamuodossa olevat lämpötilatiedot, jotka lähetetään väärennetylle anturille. Siellä on myös samanniminen Excel -tiedosto, joka auttaa muuttamaan ihmisen luettavat lämpötilatiedot raakatiedoiksi LM75. Aion muuttaa tämän automaattiseksi prosessiksi, jossa on Java -ohjelmisto, mutta siihen asti tämä ratkaisu toimii. Synteesin ja toteuttamisen tulisi kestää jonkin aikaa, ota tämä huomioon.

Vaihe 3: Miten se toimii?

Kuinka se toimii?
Kuinka se toimii?
Kuinka se toimii?
Kuinka se toimii?

Kuten sanoin, MCU: n osalta FPGA näyttää anturilta, tarkemmin I2C -anturilta. I2C -oheislaitteen lähtö on kytketty FPGA: n tuloon. FPGA: n sisällä on 3 pääkomponenttia:- I2C-ohjain- I2C-laitteen tiedot- I2C-ohjain vastaanottaa I2C-tiedot FPGA: n nastoista ja lähettää ne muulle FPGA: lle ja tekee saman päinvastaisessa järjestyksessä. Se ylläpitää sisäistä tilakonetta I2C -protokollaa varten (muuten, tässä on sen dokumentaatio). Mitä tämä komponentti lähettää I2C -laitteelle? Tällä hetkellä vastaanotettu tavu, sen tavu nykyisessä tiedonsiirrossa ja onko MCU kirjoittamassa FPGA: lle vai lukeeko se sieltä. I2C -laite vastaanottaa lähetetyt tavut ja päivittää anturin simuloidun sisäisen rakenteen. Se voi vain päivittää rekisteriosoittimen tai pyytää uutta tietoa tietolähteestä. Tietokomponentti suoratoistaa uusia datapisteitä. Tällä hetkellä se on vain ROM -muisti, jonka osoitetta lisätään (noin) kaksi kertaa sekunnissa.

Mikä on lopputavoitteeni? Se näkyy toisessa kuvassa. Eli mahdollistaa useampien I2C -laitteiden (antureiden ja muiden) simuloinnin samanaikaisesti FPGA: n sisällä. Anturin taustalla olevat tiedot tallennetaan välimuistiin FPGA: ssa ja suoratoistetaan tietokoneelta USB: n tai Ethernetin kautta. Tukea kehittyneempiä antureita ja muita I2C -laitteita (muisti, LED -ohjaimet jne.)

Vaihe 4: Yhdistä kaikki

Kokonaisuuden yhdistäminen
Kokonaisuuden yhdistäminen
Kokonaisuuden yhdistäminen
Kokonaisuuden yhdistäminen

Nyt on aika yhdistää kaikki yhteen. Teoriassa se on yksinkertaista: MCU -kortissa on PMod -liitin (I2C0 & SSP0 (voi toimia kuten SPI)). Artix -kortissa on 4 PMod -liitintä, joita voidaan käyttää haluamallasi tavalla. Valitsen liittimen D puhuakseni MCU: lle ja liitännän B yhteyden muodostamiseksi Logic Analyzer -laitteeseeni.

Varoitus

Et voi yhdistää kahta levyä yhteen näin. Miksi? PMod rakennettiin helpottamaan pää-/isäntäkortin (joka antaa virtaa) liittämistä orja-/anturikorttiin (joka vastaanottaa virtaa). Mutta tässä projektissa molemmat levyt antavat virtaa ja jos liität 3.3V -lähdön yhdestä kortista toisen levyn 3.3V -lähtöön, voi tapahtua huonoja asioita. Mutta ne eivät ehkä ole, ja saatat vain muuttaa FPGA: n virtakiskojen parametreja (ne on suunniteltu erittäin huolellisesti). Joten älä ota tätä riskiä ja siirrä liitin yksi nasta vasemmalle (ja käännä myös FPGA -levy), kuten yllä olevissa kuvissa näkyy. Tässä on PMod -spesifikaatio, te tutkitte sitä, mitä tein lyhyillä sanoilla, että en yhdistä kahden levyn VCC: itä.

Suositeltava: