Satura rādītājs:
Video: Izveidojiet jebkuru sensoru no FPGA: 4 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:54
Lielākā daļa ražotāju vismaz reizi mūžā mēģināja uzbūvēt termometru, varbūt mājās esošais nav pietiekami gudrs, vai varbūt domā, ka var uzbūvēt nākamo NEST. Neskatoties uz to, kādā brīdī viņiem bija mikrokontrolleris ar vismodernāko programmatūru, kas savienota ar temperatūras sensoru (un varbūt citiem sensoriem: spiedienu, gaismu). Līdz šim viss ir ideāli, programmatūra darbojas un sensors uztver. Pārbaudīsim!
Hmmmm … varbūt viņam vajadzētu sildīt sensoru, izmantojot matu žāvētāju, un atdzesēt, izmantojot ledu, tas kādu laiku darbojas. Bet tas nešķiet profesionāli, sensors pārāk ātri maina vērtības, ja to uzkarsē, tas nesasilst vairāk par pāris grādiem. Projekts ir krūšturis! Bet algoritms ir jauns, ņem vērā daudzus faktorus, kāds kauns, ka viņš iestrēga pie šīs stulbi mazās lietas.
Mans risinājums ir šāds: liek FPGA darboties kā sensoram ar vērtībām, kas tiek straumētas no datora (vai saglabātas atmiņā vai izveidotas ad hoc FPGA iekšpusē). Tātad jūsu dārgajam MCU FPGA izskatās kā sensors, bet ne jebkurš sensors: kurš sensors jums patīk. Varbūt jūs nolemjat, ka jums ir nepieciešama lielāka izšķirtspēja vai ātrāks reakcijas laiks, nekā paredzēts, jums ir jāmaina sensors. Pasūtiet to tiešsaistē, tas ieradīsies pēc pāris dienām, pāris mēnešiem, kas zina. Ievadiet savu PCB vai pasūtiet moduli ar jauno sensoru. Vai… pāris klikšķu, un FPGA ir konfigurēts kā jūsu jaunais sensors, un tas var atdarināt precīzu iekšējo konfigurāciju.
Rakstīšanas brīdī FPGA varētu darboties kā LM75 ar temperatūras datiem, kas saglabāti BRAM (FPGA).
1. darbība: MCU
Mans izvēlētais MCU ir LPC4337 uz LPCXpresso. Papildus tam man ir vairogs (LPC General Purpose Shield) ar displeju un īstu LM75 sensoru. LPC4337 ir ARM Cortex M4, kas darbojas ar 200 MHz, un mazāks Cortex M0 (šeit netiek izmantots). Īstais sensors ir savienots ar I2C1 perifēriju, un mūsu virtuālais tiks savienots ar I2C0. Avots ir pieejams manā GitHub.
Kā to veidot? Lejupielādējiet LPCXpresso IDE kopā ar LPCOpen bibliotēku. Importējiet šo bibliotēku IDE un arī atveriet projektu no GitHub. Viss ir jākonfigurē, un kreisajā apakšējā stūrī varat noklikšķināt uz "Atkļūdot".
Visa projekta pamatā ir viens no NXP piemēriem (lai parādītu, ka mans projekts simulē īstu sensoru un tam nav nepieciešams īpašs kods MCU pusē). Galvenajā failā (ko sauc par iox_sensor.cpp) atrodas šis kods:
#define SENSORS_ON_SHIELD
#if definēts (SENSORS_ON_SHIELD) #define SHIELD_I2C I2C1 #elif define (SENSORS_ON_FPGA) #define SHIELD_I2C I2C0 #endif
Mainot SENSOR_ON_SHIELD un SENSOR_OR_FPGA, lietotājs kompilēšanas laikā var pārslēgties uz kuru sensoru runāt, īsto vai virtuālo, jo tie atrodas dažādās I2C tapās.
2. darbība: FPGA
Mana izvēlētā FPGA plāksne ir Artix 7, ko izgatavojis Digilent un kam ir Xilinx Arty 7. Tiek izmantoti divi no PMod savienotājiem, viens atkļūdošanai un otrs reālai slodzei, savienojums ar MCU plati.
Atkal FPGA avota kods ir pieejams manā GitHub (mapē fpgaSide).
Kā to veidot? Lejupielādējiet, iegādājieties vai atveriet Xilinx Vivado IDE. Importējiet projekta failus no GitHub. Viens no failiem (content.coe) ir temperatūras dati neapstrādātā formātā, kas tiks straumēti uz viltus sensoru. Ir arī Excel fails ar tādu pašu nosaukumu, kas palīdz pārvērst cilvēka lasāmus temperatūras datus par neapstrādātiem LM75 datiem. Es plānoju to mainīt uz automatizētu procesu ar Java programmatūru, taču līdz šim šis risinājums darbojas. Sintēzei un ieviešanai vajadzētu ņemt kādu laiku, ņemiet to vērā.
3. darbība. Kā tas darbojas?
Kā jau teicu, MCU FPGA izskatās kā sensors, precīzāk I2C sensors. I2C perifērijas izeja ir pievienota FPGA ieejai. FPGA iekšpusē ir 3 galvenās sastāvdaļas:- I2C kontrolieris- I2C ierīces dati- I2C kontrolieris saņem I2C datus no FPGA tapām un nosūta tos uz pārējo FPGA un dara to pašu apgrieztā secībā. Tajā tiek uzturēta I2C protokola iekšējā stāvokļa mašīna (starp citu, šeit ir tā dokumentācija). Ko šis komponents sūta uz I2C ierīci? Pašlaik saņemtais baits, šī baita atrašanās vieta pašreizējā komunikācijā un tas, vai MCU raksta FPGA vai lasa no tā. I2C ierīce saņem nosūtītos baitus un atjaunina sensora simulēto iekšējo struktūru. Tas var vienkārši atjaunināt reģistra rādītāju vai pieprasīt jaunus datus no datu avota. Datu komponents straumē jaunus datu punktus. Pašlaik tā ir tikai ROM atmiņa, kuras adrese tiek palielināta (aptuveni) divas reizes sekundē.
Kāds ir mans gala mērķis? Tas ir parādīts otrajā attēlā. Tas ir: dod iespēju vairāk I2C ierīču (sensoru un citu) vienlaikus simulēt FPGA. Dati sensora aizmugurē tiks saglabāti kešatmiņā FPGA un straumēti no datora, izmantojot USB vai Ethernet. Atbalstiet uzlabotus sensorus un citas I2C ierīces (atmiņu, LED draiverus utt.).
4. solis: salieciet to visu kopā
Tagad ir pienācis laiks savienot visu kopā. Teorētiski tas ir vienkārši: mcu platij ir PMod savienotājs (I2C0 & SSP0 (var darboties kā SPI)). Artix plāksnei ir 4 PMod savienotāji, kurus var izmantot, kā vēlaties. Es izvēlos savienotāju D, lai sarunātos ar MCU, un savienotāju B, lai izveidotu savienojumu ar savu loģikas analizatoru.
Brīdinājums
Jūs nevarat savienot abus dēļus kopā tāpat. Kāpēc? PMod tika veidots, lai atvieglotu galvenā/saimniekdatora (kas dod jaudu) savienojumu ar vergu/sensoru plati (kas saņem jaudu). Bet šajā projektā abas plates dod jaudu, un, ja jūs savienojat 3.3V izeju no vienas plates ar citas plāksnes 3.3V izeju, var notikt sliktas lietas. Bet tie var nebūt, un jūs varat vienkārši mainīt FPGA barošanas sliežu parametrus (tie ir ļoti rūpīgi izstrādāti). Tāpēc neuzņemieties šo risku un pārvietojiet savienotāju vienu tapu pa kreisi (un arī pagrieziet FPGA plati), kā redzams iepriekš redzamajos attēlos. Šeit ir PMod specifikācija, jūs to izpētīsit, ko es izdarīju īsos vārdos, lai nesaistītu abu dēļu VCC.
Ieteicams:
Izveidojiet savu augsnes mitruma sensoru ar Arduino !!!: 10 soļi
Izveidojiet savu augsnes mitruma sensoru ar Arduino !!!: PAR !!! Šajā pamācībā mēs sasaistīsim augsnes mitruma sensoru FC-28 ar Arduino. Šis sensors mēra ūdens tilpuma saturu augsnē un dod mums mitruma līmeni. Sensors ir aprīkots ar abiem analogiem
Izveidojiet tuvuma sensoru ar Magicbit [Magicblocks]: 6 soļi
Izveidojiet tuvuma sensoru ar Magicbit [Magicblocks]: šī apmācība iemācīs jums izmantot tuvuma sensoru ar Magicbit, izmantojot Magicblocks. Šajā projektā, kura pamatā ir ESP32, mēs izmantojam magicbit. Tāpēc šajā projektā var izmantot jebkuru ESP32 izstrādes plati
Pārvērtiet (gandrīz par) jebkuru multivides failu par (gandrīz par) jebkuru citu multivides failu bez maksas !: 4 soļi
Pārvērtiet (gandrīz par) jebkuru multivides failu par (gandrīz par) jebkuru citu multivides failu bez maksas!: Mans pirmais pamācāms, uzmundrinām! Jebkurā gadījumā es Google tīklā meklēju bezmaksas programmu, kas pārvērstu manus Youtube.flv failus tādā formātā ir universālāka, piemēram, wmv vai.mov. Es meklēju neskaitāmus forumus un vietnes un pēc tam atradu programmu ar nosaukumu
Lēti izmantojiet jebkuru 5.1 skaļruņu sistēmu ar jebkuru MP3 atskaņotāju vai datoru!: 4 soļi
Izmantojiet jebkuru 5.1 skaļruņu sistēmu ar jebkuru MP3 atskaņotāju vai datoru, lēti!: (Šī ir mana pirmā pamācība, un angļu valoda nav mana dzimtā valoda) Toreiz es lēti nopirku Creative Inspire 5100 skaļruņu komplektu. Es to izmantoju ar savu darbvirsmu, kurai bija 5.1 skaņas karte (PCI). Tad es to izmantoju kopā ar savu klēpjdatoru, kuram bija
Izveidojiet ļoti mazu robotu: izveidojiet pasaulē mazāko riteņu robotu ar satvērēju: 9 soļi (ar attēliem)
Izveidojiet ļoti mazu robotu: izveidojiet pasaulē mazāko riteņu robotu ar satvērēju: izveidojiet 1/20 kubikcentimetru robotu ar satvērēju, kas var uzņemt un pārvietot mazus priekšmetus. To kontrolē Picaxe mikrokontrolleris. Šobrīd es uzskatu, ka tas varētu būt pasaulē mazākais riteņu robots ar satvērēju. Tas, bez šaubām, būs