Sadržaj:
Video: Napravite bilo koji senzor od FPGA: 4 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:35
Većina proizvođača pokušala je barem jednom u životu izgraditi termometar, možda onaj koji imaju kod kuće nije dovoljno pametan ili možda misle da mogu izgraditi sljedeći NEST. Ipak, u jednom trenutku imali su mikrokontroler sa svojim najsuvremenijim softverom spojenim na temperaturni senzor (a možda i drugi senzori: tlak, svjetlo). Do sada je sve savršeno, softver je pokrenut i senzor senzorira. Hajde da ga testiramo!
Hmmmm … možda bi trebao zagrijati senzor sušilom za kosu i ohladiti ga pomoću leda, radi neko vrijeme. Ali ne djeluje profesionalno, senzor prebrzo mijenja vrijednosti ako ga zagrijete, ne zagrijava se više od nekoliko stupnjeva. Projekt je propast! No, algoritam je nov, uzima u obzir mnogo čimbenika, šteta što je zapeo zbog ove glupo sporedne stvari.
Moje rješenje je sljedeće: učinite da FPGA djeluje kao senzor s vrijednostima koje struje s računala (ili pohranjene u memoriji ili stvorene ad-hoc unutar FPGA-e). Dakle, za vaš dragocjeni MCU FPGA izgleda kao senzor, ali ne i bilo koji senzor: koji god senzor želite. Možda odlučite da trebate veću razlučivost ili brže vrijeme odziva od očekivanog, morate promijeniti senzor. Naručite ga putem interneta, stići će za par dana, za par mjeseci, tko zna. Ponovno okrenite PCB ili naručite modul s novim senzorom. Ili … nekoliko klikova i FPGA je konfigurirana kao vaš potpuno novi senzor i može oponašati točnu unutarnju konfiguraciju.
U trenutku pisanja ovoga, FPGA bi mogao djelovati kao LM75 s podacima o temperaturi pohranjenim u BRAM -u (na FPGA -i).
Korak 1: MCU
Moj MCU po izboru je LPC4337 na LPCXpressu. Na vrhu imam štit (LPC štit opće namjene) s zaslonom i pravim LM75 senzorom. LPC4337 je ARM Cortex M4 koji radi na 200MHz i manji Cortex M0 (ovdje se ne koristi). Pravi senzor spojen je na periferiju I2C1, a naš virtualni senzor bit će spojen na I2C0. Izvor je dostupan na mom GitHubu.
Kako ga izgraditi? Preuzmite LPCXpresso IDE zajedno s knjižnicom LPCOpen. Uvezite tu knjižnicu u IDE i otvorite projekt s GitHub -a. Sve bi trebalo biti konfigurirano i možete kliknuti na "Otklanjanje pogrešaka" u donjem lijevom kutu.
Cijeli projekt temelji se na jednom od primjera NXP -a (kako bi pokazao da moj projekt simulira pravi senzor i da mu nije potreban poseban kod sa MCU -a). U glavnoj datoteci (koja se naziva iox_sensor.cpp) nalazi se ovaj kod:
#definirajte SENSORS_ON_SHIELD
#if definirano (SENSORS_ON_SHIELD) #define SHIELD_I2C I2C1 #elif defined (SENSORS_ON_FPGA) #define SHIELD_I2C I2C0 #endif
Promjenom SENSOR_ON_SHIELD i SENSOR_OR_FPGA korisnik može u vrijeme kompajliranja prebaciti na koji senzor za razgovor, pravi ili virtualni, jer se nalaze na različitim I2C pinovima.
Korak 2: FPGA
Moja FPGA ploča po izboru je Artix 7 proizvođača Digilent sa Xilinx Arty 7. Koriste se dva PMod konektora, jedan za otklanjanje pogrešaka, a drugi za stvarnu nosivost, vezu s MCU pločom.
Ponovno, izvorni kod za FPGA dostupan je na mom GitHubu (mapa fpgaSide).
Kako ga izgraditi? Preuzmite, kupite ili otvorite Xilinx Vivado IDE. Uvezite datoteke projekta s GitHub -a. Jedna od datoteka (content.coe) su podaci o temperaturi u neobrađenom formatu koji će se streamati na lažni senzor. Postoji i Excel datoteka s istim imenom koja pomaže pri pretvaranju podataka o temperaturi čitljivih za ljude u sirove podatke LM75. Planiram ovo promijeniti u automatizirani proces s nekim softverom napisanim na Javi, ali do tada ovo rješenje funkcionira. Sinteza i implementacija trebaju potrajati, uzmite to u obzir.
Korak 3: Kako to funkcionira?
Kao što sam rekao, za MCU, FPGA izgleda kao senzor, točnije I2C senzor. Izlaz periferije I2C spojen je na ulaz FPGA. Unutar FPGA-e postoje 3 glavne komponente:- I2C kontroler- I2C uređaj- podaciI2C Kontroler prima I2C podatke s pinova FPGA-e i šalje ih ostatku FPGA-e i čini isto obrnutim redoslijedom. Održava unutarnji stroj stanja za I2C protokol (usput, evo dokumentacije za to). Što ova komponenta šalje na I2C uređaj? Trenutno primljeni bajt, položaj tog bajta u trenutnoj komunikaciji i piše li MCU na FPGA ili čita s njega. I2C uređaj prima poslane bajtove i ažurira simuliranu unutarnju strukturu senzora. Može samo ažurirati pokazivač registra ili zatražiti nove podatke od izvora podataka. Komponenta Data struji nove podatkovne točke. Trenutno je to samo ROM memorija čija se adresa povećava (približno) dva puta u sekundi.
Koji je moj krajnji cilj? To je prikazano na drugoj slici. Odnosno: omogućiti više simulacija I2C uređaja (senzora i drugih) u isto vrijeme unutar FPGA -e. Podaci na pozadini senzora će se predmemorirati u FPGA i prenositi s računala putem USB -a ili Etherneta. Podržavajte naprednije senzore i druge I2C uređaje (memorija, LED upravljački programi itd.).
Korak 4: Sve spojite
Sada je vrijeme da sve povežete u isto vrijeme. Teoretski je jednostavno: mcu ploča ima PMod priključak (I2C0 i SSP0 (može raditi kao SPI)). Artix ploča ima 4 PMod konektora koji se mogu koristiti kako god želite. Odabirem konektor D za razgovor s MCU -om i konektor B za spajanje na svoj Logic Analyzer.
Upozorenje
Ne možete spojiti dvije ploče samo tako. Zašto? PMod je napravljen za olakšavanje povezivanja glavne/host ploče (koja daje snagu) na slave/senzorsku ploču (koja prima napajanje). No u ovom projektu obje ploče daju snagu i ako spojite 3.3V izlaz s jedne ploče na 3.3V izlaz druge ploče, mogle bi se dogoditi loše stvari. Ali oni možda neće, a vi samo promijenite parametre tračnica za napajanje FPGA -e (vrlo su pažljivo projektirane). Zato nemojte riskirati i pomaknite konektor jednim pinom ulijevo (i okrenite FPGA ploču) kao što se vidi na gornjim slikama. Ovdje je specifikacija PModa, proučite je, ono što sam učinio u kratkim riječima je da ne povežem VCC -ove dviju ploča.
Preporučeni:
Klonirajte bilo koji daljinski upravljač s Arduino Nano: 5 koraka
Klonirajte bilo koji daljinski upravljač s Arduino Nano: Klonirajte bilo koji daljinski upravljač s Arduino Nano
Proširenje za bilo koji DJ softver koji želite!: 6 koraka
Proširenje za bilo koji DJ softver koji želite !: Ne mogu svi samo uskočiti u DJ -in prvi dan i od njih se očekuje da prvi dan budu spremni za sve miksete i gramofone i podloge za vruće signale, ali budimo stvarni ovdje: miješanje na prijenosnom računalu je sranje. To je ono čemu ovo služi, kako biste riješili sve svoje financijske probleme
Kako napraviti vlastiti USB auto punjač za bilo koji IPod ili druge uređaje koji se pune putem USB -a: 10 koraka (sa slikama)
Kako napraviti vlastiti USB auto punjač za bilo koji IPod ili druge uređaje koji se pune putem USB -a: Izradite USB auto punjač za bilo koji iPod ili drugi uređaj koji se puni putem USB -a spajanjem automobilskog adaptera koji izlazi 5v i USB ženski utikač. Najvažniji dio ovog projekta je provjeriti je li izlaz vašeg odabranog adaptera za automobil oklada
Pretvorite (samo otprilike) bilo koju medijsku datoteku u (samo otprilike) bilo koju drugu medijsku datoteku besplatno!: 4 koraka
Pretvorite (samo otprilike) bilo koju medijsku datoteku u (otprilike) bilo koju drugu medijsku datoteku besplatno !: Moje prve upute, svaka čast! U svakom slučaju, bio sam na Googleu u potrazi za besplatnim programom koji bi moje datoteke Youtube.flv pretvorio u format koji univerzalniji je, poput.wmv ili.mov. Pretražio sam bezbroj foruma i web stranica, a zatim pronašao program pod nazivom
Za jeftino! Koristite bilo koji 5.1 sustav zvučnika s BILO KOJIM MP3 playerom ili računalom: 4 koraka
Jeftino koristite bilo koji 5.1 sustav zvučnika s BILO KOJIM MP3 playerom ili računalom!: (Ovo je moj prvi instruktor, a engleski nije moj materinji jezik) Nekada sam jeftino kupio Creative Inspire 5100 set zvučnika. Koristio sam ga sa radnom površinom koja je imala 5.1 zvučnu karticu (PCI). Zatim sam ga upotrijebio sa svojim laptopom koji je imao