Obsah:
Video: Vytvořte jakýkoli senzor z FPGA: 4 kroky
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:21
Většina tvůrců se pokusila alespoň jednou v životě postavit teploměr, možná ten, který mají doma, není dost chytrý, nebo si možná myslí, že si mohou postavit další HNĚDĚ. Přesto v určitém okamžiku měli mikrokontrolér se svým nejmodernějším softwarem připojený k teplotnímu senzoru (a možná i dalším senzorům: tlak, světlo). Až dosud bylo vše perfektní, software běží a senzor snímá. Pojďme to vyzkoušet!
Hmmmm … možná by měl zahřát senzor pomocí vysoušeče vlasů a ochladit ho ledem, funguje to nějakou dobu. Ale nezdá se to profesionální, senzor mění hodnoty příliš rychle, pokud jej zahřejete, nezahřeje se o více než pár stupňů. Projekt je krach! Algoritmus je ale nový, bere v úvahu mnoho faktorů, škoda, že se zasekl u této hloupě malé věci.
Moje řešení je toto: nechat FPGA fungovat jako senzor s hodnotami streamovanými z PC (nebo uloženými v paměti nebo vytvořenými ad-hoc uvnitř FPGA). Takže pro váš drahocenný MCU vypadá FPGA jako senzor, ale ne jakýkoli senzor: jakýkoli senzor se vám líbí. Možná se rozhodnete, že potřebujete větší rozlišení nebo rychlejší dobu odezvy, než se očekávalo, budete muset vyměnit snímač. Objednejte si to online, dorazí to za pár dní, za pár měsíců, kdo ví. Pružte desku plošných spojů nebo si objednejte modul s novým senzorem. Nebo… pár kliknutí a FPGA je nakonfigurováno jako váš zcela nový senzor a může emulovat přesnou interní konfiguraci.
V okamžiku psaní tohoto článku by FPGA mohl fungovat jako LM75 s teplotními údaji uloženými v BRAM (na FPGA).
Krok 1: MCU
Můj vybraný MCU je LPC4337 na LPCXpresso. Na vrcholu mám štít (LPC General Purpose Shield) s displejem a skutečným snímačem LM75. LPC4337 je ARM Cortex M4 běžící na 200 MHz a menší Cortex M0 (zde není použit). Skutečný senzor je připojen k periferii I2C1 a náš virtuální bude připojen k I2C0. Zdroj je k dispozici na mém GitHubu.
Jak to postavit? Stáhněte si LPCXpresso IDE společně s knihovnou LPCOpen. Importujte tuto knihovnu do IDE a také otevřete projekt z GitHub. Vše by mělo být nakonfigurováno a v levém dolním rohu můžete kliknout na „Ladit“.
Celý projekt je založen na jednom z příkladů NXP (aby ukázal, že můj projekt simuluje skutečný senzor a na straně MCU nepotřebuje speciální kód). V hlavním souboru (nazývaném iox_sensor.cpp) leží tento kód:
#define SENSORS_ON_SHIELD
#if definováno (SENSORS_ON_SHIELD) #define SHIELD_I2C I2C1 #elif definováno (SENSORS_ON_FPGA) #define SHIELD_I2C I2C0 #endif
Změnou SENSOR_ON_SHIELD a SENSOR_OR_FPGA je uživatel schopen v době kompilace přepnout na to, ke kterému senzoru má mluvit, skutečnému nebo virtuálnímu, protože jsou na různých pinech I2C.
Krok 2: FPGA
Moje vybraná deska FPGA je Artix 7 od společnosti Digilent s Xilinx Arty 7. Používají se dva konektory PMod, jeden pro ladění a jeden pro skutečné užitečné zatížení, spojení s deskou MCU.
Zdrojový kód pro FPGA je opět k dispozici na mém GitHubu (složka fpgaSide).
Jak to postavit? Stáhněte si, kupte nebo otevřete Xilinx Vivado IDE. Importujte soubory projektu z GitHub. Jedním ze souborů (content.coe) jsou teplotní data v nezpracovaném formátu, která budou streamována do falešného senzoru. K dispozici je také soubor aplikace Excel se stejným názvem, který pomáhá s převodem údajů o teplotě čitelných lidmi na nezpracovaná data LM75. Plánuji to změnit na automatizovaný proces pomocí softwaru napsaného v Javě, ale do té doby toto řešení funguje. Syntéza a implementace by měly chvíli trvat, vezměte to v úvahu.
Krok 3: Jak to funguje?
Jak jsem řekl, pro MCU vypadá FPGA jako senzor, přesněji I2C senzor. Výstup periferního zařízení I2C je připojen ke vstupu FPGA. Uvnitř FPGA jsou 3 hlavní komponenty:- I2C ovladač- I2C zařízení- Data Řadič I2C přijímá data I2C z pinů FPGA a odesílá je do zbytku FPGA a dělá totéž v opačném pořadí. Udržuje vnitřní stav stroje pro protokol I2C (mimochodem, zde je dokumentace k němu). Co tato součást odesílá do zařízení I2C? Aktuálně přijatý bajt, pozice tohoto bajtu v aktuální komunikaci a to, zda MCU zapisuje nebo čte z FPGA. Zařízení I2C přijímá odeslané bajty a aktualizuje simulovanou vnitřní strukturu senzoru. Může to jen aktualizovat ukazatel registru nebo požadovat nová data ze zdroje dat. Datová komponenta streamuje nové datové body. V současné době je to jen paměť ROM, jejíž adresa se zvyšuje (přibližně) dvakrát za sekundu.
Jaký je můj konečný cíl? Je to ukázáno na druhém obrázku. To znamená: umožnit simulaci více zařízení I2C (senzorů a dalších) současně v FPGA. Data na zadní straně senzoru se ukládají do mezipaměti v FPGA a streamují se z počítače přes USB nebo ethernet. Podpora pokročilejších senzorů a dalších zařízení I2C (paměť, ovladače LED atd.).
Krok 4: Dát to všechno dohromady
Nyní je čas vše propojit. Teoreticky je to jednoduché: deska mcu má konektor PMod (I2C0 a SSP0 (může fungovat jako SPI)). Deska Artix má 4 konektory PMod, které lze použít, jak chcete. Volím konektor D pro komunikaci s MCU a konektor B pro připojení k mému logickému analyzátoru.
Varování
Obě desky nemůžete spojit dohromady jen tak. Proč? PMod byl postaven tak, aby usnadnil připojení desky Master/Host (která dodává energii) k desce Slave/Sensor (která přijímá energii). V tomto projektu však obě desky dodávají energii a pokud připojíte výstup 3,3 V z jedné desky k výstupu 3,3 V na druhé desce, mohou se stát špatné věci. Ale nemusí a můžete jen změnit parametry napájecích kolejnic FPGA (jsou velmi pečlivě navrženy). Neriskujte a přesuňte konektor o jeden kolík doleva (a také překlopte desku FPGA), jak je vidět na výše uvedených obrázcích. Zde je specifikace PMod, můžete si ji prostudovat, co jsem udělal v krátkých slovech, je nepropojit VCC obou desek.
Doporučuje:
Přidat nebo odebrat ochranu proti zápisu na jakýkoli typ disků .: 3 kroky
Přidat nebo odebrat ochranu proti zápisu na jakýkoli typ disků: Chcete přidat nebo odebrat ochranu proti zápisu na vlastním disku? Postupujte podle této příručky a zvládnete to
Chudý objektiv nebo sluneční clona (hodí se pro jakýkoli DSLR / Semi-DSLR): 4 kroky
Chudý kryt objektivu nebo sluneční clona (hodí se pro jakýkoli DSLR / Semi-DSLR): Když jsem si koupil svůj digitální zrcadlovku, z druhé ruky neměl krytku objektivu. Bylo to stále v pořádku a nikdy jsem se nedostal ke koupi krytky objektivu. Takže jsem skončil s výrobou jednoho. Vzhledem k tomu, že vezmu svůj fotoaparát na prašná místa, je pravděpodobně nejlepší mít krytku objektivu
Proměňte jakýkoli reproduktor na reproduktor Bluetooth: 4 kroky
Proměňte jakýkoli reproduktor na reproduktor Bluetooth: Před několika lety bylo běžné, že přenosné reproduktory měly 3,5 mm konektor a byly napájeny bateriemi AA. Podle dnešních standardů je to trochu zastaralá zejména baterie, protože každý gadget v dnešní době má dobíjecí baterii. Zvukový konektor je
LED Mod-pro starý Dell (jakýkoli počítač bude fungovat): 3 kroky
LED Mod-pro starý Dell (jakýkoli počítač bude fungovat): Rozhodl jsem se, že svůj starý Dell (nyní linuxový box) vyrobím jako bling (ish), takže jsem popadl nějaké LED diody, vypínač, svorkovnici a nějaký drát, molex a nějaké odpory. Potřebujete pouze jeden (hodnota závisí na 12 V nebo 5 V-měl jsem 6, protože jsem neměl c
Vytvořte USB nabíječku pro téměř jakýkoli mobilní telefon !: 4 kroky
Vyrobte si USB nabíječku pro téměř jakýkoli mobilní telefon !: Moje nabíječka shořela, a tak jsem si řekl: „Proč si nevybudovat vlastní?“