Sisällysluettelo:
Video: Tee mikä tahansa anturi FPGA: sta: 4 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
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?
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
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:
Kloonaa mikä tahansa kaukosäädin Arduino Nanolla: 5 vaihetta
Kloonaa mikä tahansa kaukosäädin Arduino Nanolla: Kloonaa mikä tahansa kaukosäädin Arduino Nano -laitteella
Herätys lähiverkossa Mikä tahansa tietokone langattoman verkon kautta: 3 vaihetta
Herätä lähiverkossa missä tahansa tietokoneessa langattoman verkon kautta: Tämä opetusohjelma ei ole enää ajan tasalla Raspbpian -kuvan muutosten vuoksi. Seuraa päivitettyä opetusohjelmaa täällä: https://www.instructables.com/id/Raspberry-Pi-As-Wake-on-LAN-ServerWOL on nykyään lähes kaikissa Ethernet-porteissa. Tämä ei ole
Ohjelmoi mikä tahansa ESP8266 -kortti/-moduuli AT -komennoilla Laiteohjelmisto: 5 vaihetta
Ohjelmoi mikä tahansa ESP8266 -kortti/-moduuli, jossa on AT -komennot Laiteohjelmisto: Jokainen ESP8266 -moduuli ja -kortti voidaan ohjelmoida monin tavoin: Arduino-, python-, Lua-, AT -komennot ja monet muut … on tarkoitettu ESP8266: n käyttämiseen moduulina tai pikatestaukseen TTL RS232 c: n kanssa
DIY -äänisovitin (mikä tahansa): 5 vaihetta
DIY -äänisovitin (mikä tahansa tyyppi): Tässä oppaassa juotan kaksi RCA -komposiittiliitintä 3,5 mm: n "aux" -liitäntään. kaapeli, mutta prosessi on sama kaikentyyppiselle audiokaapelille, jota käytät (esim. XLR, 1/4 "jne.). Huomaa: Muista lukea jokainen vaihe kokonaan läpi ennen
Muunna (melkein) mikä tahansa mediatiedosto (melkein) mihin tahansa muuhun mediatiedostoon ilmaiseksi!: 4 vaihetta
Muunna (melkein) mikä tahansa mediatiedosto (melkein) mihin tahansa muuhun mediatiedostoon ilmaiseksi!: Ensimmäinen ohjeeni, terveiset! Joka tapauksessa etsin Googlesta ilmaista ohjelmaa, joka muuntaisi Youtube.flv -tiedostoni muotoon, joka on yleisempi, kuten.wmv tai.mov. Etsin lukemattomia foorumeita ja verkkosivustoja ja löysin sitten ohjelman nimeltä