Kazalo:
Video: Naredite kateri koli senzor iz FPGA: 4 koraki
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:04
Večina izdelovalcev je vsaj enkrat v življenju poskušala zgraditi termometer, morda tisti, ki ga imajo doma, ni dovolj pameten ali pa se jim zdi, da lahko zgradijo naslednji NEST. Kljub temu so v nekem trenutku imeli mikrokrmilnik s svojo najsodobnejšo programsko opremo, priključeno na temperaturni senzor (in morda druge senzorje: tlak, svetlobo). Do sedaj je bilo vse v redu, programska oprema deluje in senzor zaznava. Preizkusimo!
Hmmmm … morda bi moral senzor ogreti s sušilcem za lase in ga ohladiti z ledom, nekaj časa deluje. Vendar se ne zdi profesionalno, senzor prehitro spreminja vrednosti, če ga segrejete, se ne segreje več kot nekaj stopinj. Projekt je propad! Toda algoritem je nov, upošteva veliko dejavnikov, škoda, da se mu je zataknilo pri tej neumno manjši stvari.
Moja rešitev je naslednja: naj FPGA deluje kot senzor z vrednostmi, ki se pretakajo iz osebnega računalnika (ali shranjene v pomnilniku, ali ustvarijo ad-hoc znotraj FPGA). Tako je za vaš dragoceni MCU FPGA videti kot senzor, ne pa kakršen koli senzor: katerikoli senzor vam je všeč. Morda se odločite, da potrebujete več ločljivosti ali hitrejši odzivni čas, kot je bilo pričakovano, morate zamenjati senzor. Naročite ga na spletu, prišel bo čez par dni, v nekaj mesecih, kdo ve. Ponovno potisnite tiskano vezje ali naročite modul z novim senzorjem. Ali… nekaj klikov in FPGA je konfiguriran kot vaš popolnoma nov senzor in lahko posnema natančno notranjo konfiguracijo.
V tem času bi lahko FPGA deloval kot LM75 s temperaturnimi podatki, shranjenimi v BRAM (na FPGA).
1. korak: MCU
Moj izbran MCU je LPC4337 na LPCXpressu. Na vrhu imam ščit (LPC splošni ščit) z zaslonom in pravim senzorjem LM75. LPC4337 je ARM Cortex M4, ki deluje na 200 MHz, in manjši Cortex M0 (tukaj se ne uporablja). Pravi senzor je priključen na periferno enoto I2C1, naš virtualni pa na I2C0. Vir je na voljo na mojem GitHubu.
Kako ga zgraditi? Prenesite LPCXpresso IDE skupaj s knjižnico LPCOpen. Uvozite to knjižnico v IDE in odprite projekt tudi iz GitHub -a. Vse je treba konfigurirati in v spodnjem levem kotu kliknite »Odpravi napake«.
Celoten projekt temelji na enem od primerov NXP (ki dokazuje, da moj projekt simulira pravi senzor in ne potrebuje posebne kode na strani MCU). V glavni datoteki (imenovani iox_sensor.cpp) je ta koda:
#define SENSORS_ON_SHIELD
#ef definirano (SENSORS_ON_SHIELD) #define SHIELD_I2C I2C1 #elif defined (SENSORS_ON_FPGA) #define SHIELD_I2C I2C0 #endif
S spreminjanjem SENSOR_ON_SHIELD in SENSOR_OR_FPGA lahko uporabnik v času prevajanja preklopi na kateri senzor, pravi ali navidezni, saj so na različnih I2C zatičih.
2. korak: FPGA
Moja izbrana plošča FPGA je Artix 7, ki ga je izdelal Digilent in ima Xilinx Arty 7. Uporabljata se dva priključka PMod, eden za odpravljanje napak in eden za dejansko obremenitev, povezava s ploščo MCU.
Ponovno je izvorna koda za FPGA na voljo na mojem GitHubu (mapa fpgaSide).
Kako ga zgraditi? Prenesite, kupite ali odprite Xilinx Vivado IDE. Uvozite projektne datoteke iz GitHub -a. Ena od datotek (content.coe) so podatki o temperaturi v surovi obliki, ki se bodo pretakali na ponarejen senzor. Obstaja tudi Excelova datoteka z istim imenom, ki pomaga pri pretvorbi človeško berljivih temperaturnih podatkov v surove podatke LM75. Nameravam to spremeniti v avtomatiziran postopek z delom programske opreme, napisane v Javi, vendar do takrat ta rešitev deluje. Sinteza in implementacija bi morala trajati nekaj časa, upoštevajte to.
3. korak: Kako deluje?
Kot sem rekel, je za MCU FPGA videti kot senzor, natančneje kot I2C senzor. Izhod periferne enote I2C je priključen na vhod FPGA. Znotraj FPGA so tri glavne komponente:- krmilnik I2C- podatki naprave I2C- krmilnik I2C sprejema podatke I2C iz zatičev FPGA in jih pošlje preostalemu delu FPGA in isto naredi v obratnem vrstnem redu. Vzdržuje notranji državni stroj za protokol I2C (mimogrede, tukaj je dokumentacija zanj). Kaj ta komponenta pošilja v napravo I2C? Trenutno prejeti bajt, položaj tega bajta v trenutni komunikaciji in ali MCU piše ali bere iz FPGA. Naprava I2C sprejme poslane bajte in posodobi simulirano notranjo strukturo senzorja. Lahko samo posodobi kazalec registra ali zahteva nove podatke od vira podatkov. Komponenta Data pretaka nove podatkovne točke. Trenutno je to le pomnilnik ROM, katerega naslov se poveča (približno) dvakrat na sekundo.
Kaj je moj končni cilj? To je prikazano na drugi sliki. To pomeni: omogočite, da se znotraj FPGA hkrati simulira več naprav I2C (senzorjev in drugih). Podatki na zaledju senzorja se predpomnijo v FPGA in pretakajo iz računalnika prek USB -ja ali etherneta. Podpirajte naprednejše senzorje in druge naprave I2C (pomnilnik, gonilniki LED itd.).
4. korak: Združite vse skupaj
Zdaj je čas, da vse skupaj povežemo. Teoretično je preprosto: plošča mcu ima priključek PMod (I2C0 in SSP0 (lahko deluje kot SPI)). Plošča Artix ima 4 PMod priključke, ki jih lahko uporabljate, kot želite. Izberem priključek D za pogovor z MCU in priključek B za povezavo z mojim logičnim analizatorjem.
Opozorilo
Ne morete kar tako povezati dveh plošč skupaj. Zakaj? PMod je bil zgrajen za olajšanje povezave glavne/gostiteljske plošče (ki daje moč) s podrejeno/senzorsko ploščo (ki prejema napajanje). Toda v tem projektu obe plošči dajeta moč in če priključite 3.3V izhod z ene plošče na 3.3V izhod druge plošče, se lahko zgodijo slabe stvari. Morda pa ne, morda pa samo spremenite parametre vodil FPGA (zelo skrbno so zasnovani). Zato ne tvegajte in premaknite priključek za en zatič v levo (in obrnite tudi ploščo FPGA), kot je prikazano na zgornjih slikah. Tukaj je specifikacija PMod, ki ste jo preučili, kar sem naredil s kratkimi besedami, je, da ne povežem VCC -jev obeh plošč.
Priporočena:
Dodajte ali odstranite zaščito pred pisanjem na kateri koli vrsti diska .: 3 koraki
Dodajanje ali odstranjevanje zaščite pred pisanjem na kateri koli vrsti diska. Želite dodati ali odstraniti zaščito pred pisanjem na svojem disku? Sledite tem navodilom in to vam bo uspelo
Dodajte ključavnico IOT v kateri koli predal!: 4 koraki
Dodajte ključavnico IOT v kateri koli predal!: Pozdravljeni! Čez nekaj časa sem se odločil, da bom svoj zadnji projekt delil z vami. Ta je bila le ideja, ki sem jo dobil po nakupu poceni elektromagnetne ključavnice na spletu, in izkazal se je za odličen projekt. Torej, v bistvu je bila osnovna ideja narediti
Dirt Poceni ATtiny-85 Tv-B-Gone (izklopi kateri koli televizor!), Plus Arduino As Isp: 4 koraki
Dirt Cheap ATtiny-85 Tv-B-Gone (izklopi kateri koli televizor!), Plus Arduino As Isp: Vpišite se v moj tečaj "Elektronika na kratko" tukaj: https://www.udemy.com/electronics-in-a -nutshell/? couponCode = TINKERSPARK Oglejte si tudi moj kanal na YouTubu za več projektov in vadnic o elektroniki: https://www.youtube.com/channel/UCelOO
Varnostna kamera iz kartonske škatle (pretočno predvaja na kateri koli platformi!): 4 koraki
Varnostna kamera iz kartonske škatle (pretaka na katero koli platformo!): Hej fantje, v tem navodilu vam bom pokazal, kako lahko z Raspberry Pi 3b+naredite svojo preprosto, a neverjetno varnostno kamero. To je zelo preprost projekt in če ste začetnik z Raspberry Pi, se boste naučili nekaj osnov. Th
Pretvorite kateri koli zvočnik v zvočnik Bluetooth: 4 koraki
Pretvorite kateri koli zvočnik v zvočnik Bluetooth: Pred nekaj leti je bilo običajno, da imajo prenosni zvočniki 3,5 -milimetrski priključek in da jih napajajo baterije AA. Po današnjih standardih je nekoliko zastarela, še posebej baterija, saj ima danes vsak pripomoček baterijo za ponovno polnjenje. Avdio vtičnica je st