Mundarija:

Har qanday sensorni FPGA -dan tayyorlang: 4 qadam
Har qanday sensorni FPGA -dan tayyorlang: 4 qadam

Video: Har qanday sensorni FPGA -dan tayyorlang: 4 qadam

Video: Har qanday sensorni FPGA -dan tayyorlang: 4 qadam
Video: Yangi TEXNOLOGIYA - SENSOR PANELLAR / HAR QANDAY MONITORNI SENSORLIK QILISH IMKONIYATI 2024, Iyul
Anonim
Image
Image
FPGA
FPGA

Ko'pgina ishlab chiqaruvchilar hayotlarida hech bo'lmaganda bir marta termometr qurishga harakat qilishgan, balki uylarida ham aqlli emas, yoki ular keyingi uyani qura olamiz deb o'ylashlari mumkin. Shunga qaramay, bir vaqtlar ular harorat sensori (va, ehtimol, boshqa sensorlar: bosim, yorug'lik) bilan bog'langan zamonaviy dasturiy ta'minoti bo'lgan mikrokontroldorga ega edi. Hozircha hamma narsa mukammal, dasturiy ta'minot ishlaydi va sensor sezadi. Keling, sinab ko'ramiz!

Hmmmm … balki u sensorni sochlarini fen bilan isitishi va muz yordamida sovutishi kerak, u bir muddat ishlaydi. Ammo bu professional ko'rinmaydi, agar siz uni qizdirsangiz, sensor juda tez o'zgaradi, u bir necha darajadan yuqori qizib ketmaydi. Loyiha - byust! Ammo algoritm yangi, ko'plab omillarni hisobga oladi, bu ahmoqona mayda -chuyda narsalarga yopishib qolgani sharmandalik.

Mening yechimim bu: FPGA-ni kompyuterdan uzatiladigan (yoki xotirada saqlangan yoki FPGA ichida vaqtincha yaratilgan) sensorlar vazifasini bajaring. Shunday qilib, sizning qimmatbaho MCU uchun FPGA sensorga o'xshaydi, lekin hech qanday sensor emas: qaysi sensor sizga yoqadi. Balki siz kutilganidan ko'ra ko'proq aniqlik yoki tezroq javob berish vaqti kerak deb qaror qilsangiz, sensorni o'zgartirishingiz kerak bo'ladi. Internet orqali buyurtma bering, u bir necha kundan keyin, bir necha oydan keyin keladi, kim biladi. PCB -ga javob bering yoki yangi sensor bilan modulga buyurtma bering. Yoki … bir necha marta bosish va FPGA sizning yangi sensoringiz sifatida tuzilgan va u aniq ichki konfiguratsiyani taqlid qilishi mumkin.

Buni yozish paytida, FPGA BRAMda (FPGAda) saqlangan harorat ma'lumotlari bilan LM75 vazifasini bajarishi mumkin.

1 -qadam: MCU

Men tanlagan MCU - LPCXpresso -dagi LPC4337. Uning tepasida displey va haqiqiy LM75 sensori bo'lgan qalqon (LPC General Purpose Shield) bor. LPC4337 - bu 200MGts chastotada ishlaydigan ARM Cortex M4 va undan kichikroq Cortex M0 (bu erda ishlatilmaydi). Haqiqiy sensor I2C1 periferik qurilmasiga ulangan va bizning virtual qurilmamiz I2C0 ga ulangan. Manba mening GitHub -da mavjud.

Uni qanday qurish kerak? LPCXpresso IDE -ni LPCOpen kutubxonasi bilan birga yuklab oling. Ushbu kutubxonani IDE -ga import qiling va GitHub -dan loyihani oching. Hammasi sozlangan bo'lishi kerak va siz chap pastki burchakdagi "Debug" tugmasini bosishingiz mumkin.

Butun loyiha NXP misollaridan biriga asoslangan (mening loyiham haqiqiy sensorni simulyatsiya qilishini va MCU tomonida maxsus kod kerak emasligini ko'rsatish uchun). Asosiy faylda (iox_sensor.cpp deb nomlanadi) ushbu kod joylashgan:

#SENSORLAR_ON_SHIELD ni aniqlang

#if aniqlangan bo'lsa (SENSORS_ON_SHIELD) #SHIELD_I2C I2C1 ni aniqlang #elif belgilangan (SENSORS_ON_FPGA) #ta'rif SHIELD_I2C I2C0 #endif

SENSOR_ON_SHIELD va SENSOR_OR_FPGA -ni o'zgartirib, foydalanuvchi kompilyatsiya vaqtida har xil I2C pinlarida bo'lgani kabi, haqiqiy yoki virtual sensor bilan gaplashishi mumkin.

2 -qadam: FPGA

Men tanlagan FPGA taxtasi - bu Xilinx Arty 7 ga ega Digilent tomonidan ishlab chiqarilgan Artix 7. Ikkita PMod ulagichi ishlatiladi, ulardan biri disk raskadrovka uchun, ikkinchisi haqiqiy yuklanish uchun, MCU kartasi bilan aloqa.

Shunga qaramay, FPGA uchun manba kodi mening GitHub (fpgaSide papkasi) da mavjud.

Uni qanday qurish kerak? Xilinx Vivado IDE -ni yuklab oling, sotib oling yoki oching. GitHub -dan loyiha fayllarini import qiling. Fayllardan biri (content.coe) - bu soxta sensorga uzatiladigan xom shakldagi harorat ma'lumoti. Xuddi shu nomdagi Excel fayli ham mavjud bo'lib, u inson o'qiy oladigan harorat ma'lumotlarini xom LM75 ma'lumotlariga aylantirishga yordam beradi. Men buni Java -da yozilgan dasturiy ta'minot bilan avtomatlashtirilgan jarayonga o'zgartirishni rejalashtirmoqdaman, lekin shu vaqtgacha bu yechim ishlaydi. Sintez va amalga oshirish biroz vaqt olishi kerak, buni hisobga oling.

3 -qadam: Bu qanday ishlaydi?

Bu qanday ishlaydi?
Bu qanday ishlaydi?
Bu qanday ishlaydi?
Bu qanday ishlaydi?

Aytganimdek, MCU uchun FPGA sensorga o'xshaydi, aniqrog'i I2C sensori. I2C tashqi qurilmasining chiqishi FPGA kirishiga ulangan. FPGA ichida 3 ta asosiy komponent mavjud:- I2C boshqaruvchisi- I2C qurilmasi- ma'lumotlar U I2C protokoli uchun ichki holat mashinasiga ega (aytmoqchi, buning uchun hujjatlar). Bu komponent I2C qurilmasiga nima beradi? Hozirda qabul qilingan bayt, joriy baytdagi joylashuvi va MCU FPGAga yozayotgani yoki o'qiyotgani. I2C qurilmasi yuborilgan baytlarni oladi va sensorning simulyatsiya qilingan ichki tuzilishini yangilaydi. Bu faqat registr ko'rsatkichini yangilashi yoki ma'lumotlar manbasidan yangi ma'lumotlarni so'rashi mumkin. Ma'lumotlar komponentasi yangi ma'lumotlar nuqtalarini uzatadi. Hozirgi vaqtda bu faqat ROM xotirasi bo'lib, uning manzili sekundiga ikki marta (taxminan) ko'paytiriladi.

Mening oxirgi maqsadim nima? Bu ikkinchi rasmda ko'rsatilgan. Ya'ni: ko'proq I2C qurilmalari (sensorlar va boshqalar) bir vaqtning o'zida FPGA ichida simulyatsiya qilinishiga imkon bering. Sensorning orqa qismidagi ma'lumotlar FPGA -da saqlanadi va kompyuterdan USB yoki Ethernet orqali uzatiladi. Kengaytirilgan sensorlar va boshqa I2C qurilmalarini qo'llab -quvvatlash (xotira, LED drayverlari va boshqalar).

4 -qadam: Hammasini bir joyga to'plash

Hammasini bir joyga to'plash
Hammasini bir joyga to'plash
Hammasini bir joyga to'plash
Hammasini bir joyga to'plash

Hamma narsani bir -biriga ulash vaqti keldi. Nazariy jihatdan, bu juda oddiy: mcu taxtasida PMod ulagichi bor (I2C0 va SSP0 (SPI kabi ishlashi mumkin)). Artix taxtasida siz xohlagan tarzda ishlatilishi mumkin bo'lgan 4 ta PMod ulagichi mavjud. Men MCU bilan gaplashish uchun D ulagichini va mantiq analizatorimga ulanish uchun B ulagichini tanlayman.

Ogohlantirish

Siz ikkita taxtani bir -biriga bog'lay olmaysiz. Nima uchun? PMod Master/Host platasini (kuch beradigan) qul/Sensor platasiga (quvvat oluvchi) ulanishini osonlashtirish uchun yaratilgan. Ammo bu loyihada ikkala taxta ham quvvat beradi va agar siz 3.3V kuchlanishni bitta kartadan boshqa kartaning 3.3V kuchlanishiga ulasangiz, yomon narsalar bo'lishi mumkin. Lekin ular bo'lmasligi mumkin va siz shunchaki FPGA quvvat relslarining parametrlarini o'zgartirishingiz mumkin (ular juda puxta ishlab chiqilgan). Shunday qilib, tavakkal qilmang va ulagichni yuqoridagi rasmlarda ko'rinib turganidek, bitta pinni chapga siljiting (shuningdek, FPGA kartasini aylantiring). Mana, PMod spetsifikatsiyasi, siz uni o'rganasiz, men qisqacha aytganda, ikkita taxtaning VCC -larini ulamaslik.

Tavsiya: