Агуулгын хүснэгт:
Видео: Аливаа мэдрэгчийг FPGA -аас хий: 4 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:02
Ихэнх үйлдвэрлэгчид амьдралдаа дор хаяж нэг удаа термометр бүтээхийг оролдож байсан, эсвэл гэртээ байгаа төхөөрөмж нь тийм ч ухаалаг биш байж магадгүй, эсвэл тэд дараагийн үүрээ барьж чадна гэж бодож магадгүй юм. Гэсэн хэдий ч хэзээ нэгэн цагт тэд хамгийн сүүлийн үеийн програм хангамж бүхий температур хянагчтай холбогдсон микроконтроллертой байсан (магадгүй бусад мэдрэгч: даралт, гэрэл). Өнөөдрийг хүртэл бүх зүйл төгс, програм хангамж ажиллаж байгаа бөгөөд мэдрэгч нь мэдэрч байна. Үүнийг туршиж үзье!
Хмммм … магадгүй тэр үс хатаагч ашиглан мэдрэгчийг халааж, мөс ашиглан хөргөнө, энэ нь хэсэг хугацаанд ажиллах болно. Гэхдээ энэ нь мэргэжлийн биш юм шиг санагддаг, хэрэв та үүнийг халаах юм бол мэдрэгч нь утгыг хэт хурдан өөрчилдөг, хоёр градусаас илүү халдаггүй. Төсөл бол уналт юм! Гэхдээ энэ алгоритм нь олон хүчин зүйлийг харгалзан үзсэн бөгөөд энэ тэнэг зүйлд гацсан нь үнэхээр ичмээр юм.
Миний шийдэл бол: FPGA-ийг компьютерээс дамжуулдаг (эсвэл санах ойд хадгалсан эсвэл FPGA дотор тусгайлан үүсгэсэн) утгыг мэдрэгчийн үүрэг гүйцэтгэдэг болгох. Тиймээс таны үнэ цэнэтэй MCU -ийн хувьд FPGA нь мэдрэгч шиг харагддаг, гэхдээ ямар ч мэдрэгч таалагдахгүй. Магадгүй танд хүлээлтээс илүү нарийвчлал эсвэл илүү хурдан хариу өгөх хугацаа хэрэгтэй гэж шийдсэн бол мэдрэгчээ солих хэрэгтэй. Онлайнаар захиалаарай, хэдхэн хоногийн дараа, хэдэн сарын дараа ирнэ, хэн мэдэх билээ. ПХБ -д хариу өгөх эсвэл шинэ мэдрэгч бүхий модуль захиалах. Эсвэл … хэдхэн товшилтоор FPGA -ийг таны цоо шинэ мэдрэгч болгон тохируулсан бөгөөд энэ нь яг дотоод тохиргоог дуурайж чадна.
Үүнийг бичиж байх үед FPGA нь BRAM (FPGA дээр) хадгалагдсан температурын өгөгдөлтэй LM75 байдлаар ажиллах боломжтой.
Алхам 1: MCU
Миний сонгосон MCU бол LPCXpresso дээрх LPC4337 юм. Дээр нь би дэлгэцтэй, жинхэнэ LM75 мэдрэгч бүхий бамбай (LPC General Purpose Shield) байна. LPC4337 бол 200MHz дээр ажилладаг ARM Cortex M4 ба түүнээс бага хэмжээтэй Cortex M0 (энд ашиглагддаггүй) юм. Жинхэнэ мэдрэгч нь I2C1 захын төхөөрөмжид холбогдсон бөгөөд бидний виртуал төхөөрөмж нь I2C0 -тэй холбогдох болно. Эх сурвалжийг миний GitHub дээрээс авах боломжтой.
Үүнийг яаж бүтээх вэ? LPCXpresso IDE -ийг LPCOpen номын сангийн хамт татаж авах. Энэ номын санг IDE руу оруулж, GitHub -аас төслийг нээнэ үү. Бүх зүйлийг тохируулах ёстой бөгөөд та зүүн доод буланд байгаа "Debug" дээр дарж болно.
Төслийг бүхэлд нь NXP -ийн нэг жишээ дээр үндэслэсэн болно (миний төсөл жинхэнэ мэдрэгчийг дуурайж, MCU -ийн талд тусгай код хэрэггүй гэдгийг харуулах болно). Үндсэн файлд (iox_sensor.cpp гэж нэрлэдэг) энэ код байна:
#SENSORS_ON_SHIELD -ийг тодорхойлох
#тодорхойлсон бол (SENSORS_ON_SHIELD) #SHIELD_I2C I2C1 -ийг тодорхойлох #elif тодорхойлсон (SENSORS_ON_FPGA) #SHIELD_I2C I2C0 -ийг тодорхойлох
SENSOR_ON_SHIELD болон SENSOR_OR_FPGA -г өөрчилснөөр хэрэглэгч өөр өөр I2C тээглүүр дээр байгаа тул хөрвүүлэх үедээ жинхэнэ эсвэл виртуал мэдрэгч рүүгээ ярих боломжтой болно.
Алхам 2: FPGA
Миний сонгох FPGA самбар бол Xilinx Arty 7 -тэй Digilent -ийн хийсэн Artix 7 юм. PMod -ийн хоёр холболтыг нэг нь дибаг хийх, нөгөө нь бодит ачааллын хувьд MCU хавтантай холбоход ашигладаг.
Дахин хэлэхэд FPGA -ийн эх кодыг миний GitHub (fpgaSide фолдер) дээрээс авах боломжтой.
Үүнийг яаж бүтээх вэ? Xilinx Vivado IDE татаж авах, худалдаж авах эсвэл нээнэ үү. Төслийн файлуудыг GitHub -аас импортлох. Файлуудын нэг (content.coe) нь температурын өгөгдлийг түүхий форматаар хуурамч мэдрэгч рүү дамжуулах болно. Хүний унших боломжтой температурын өгөгдлийг LM75 түүхий мэдээлэл болгон хөрвүүлэхэд тусалдаг ижил нэртэй Excel файл бас байдаг. Би үүнийг Java дээр бичигдсэн програм хангамж бүхий автомат процесс болгон өөрчлөх төлөвлөгөөтэй байгаа боловч тэр хүртэл энэ шийдэл ажиллах болно. Синтез ба хэрэгжүүлэлт нь хэсэг хугацаа шаардагдах тул үүнийг анхаарч үзээрэй.
Алхам 3: Энэ нь хэрхэн ажилладаг вэ?
Миний хэлснээр MCU -ийн хувьд FPGA нь яг л I2C мэдрэгч шиг харагдаж байна. I2C захын төхөөрөмжийн гаралт нь FPGA -ийн оролттой холбогдсон байна. FPGA-ийн дотор 3 үндсэн бүрэлдэхүүн хэсгүүд байдаг:- I2C Controller- I2C Device- Data I2C Controller нь IPG-ийн өгөгдлийг FPGA-ийн тээглүүрээс хүлээн авч FPGA-ийн бусад хэсэгт илгээж, урвуу дарааллаар хийдэг. Энэ нь I2C протоколын дотоод төлөв байдлын машиныг хадгалдаг (энэ талаар баримт бичиг энд байна). Энэ бүрэлдэхүүн хэсэг нь I2C төхөөрөмжид юу илгээдэг вэ? Одоогийн хүлээн авсан байт, тухайн байтын одоогийн харилцаа дахь байр суурь, MCU нь FPGA -д бичиж байгаа эсвэл уншиж байгаа эсэх. I2C төхөөрөмж нь илгээсэн байтыг хүлээн авч, мэдрэгчийн загварчилсан дотоод бүтцийг шинэчилдэг. Энэ нь бүртгэлийн заагчийг шинэчлэх эсвэл мэдээллийн эх сурвалжаас шинэ өгөгдөл хүсэх болно. Data бүрэлдэхүүн хэсэг нь шинэ өгөгдлийн цэгүүдийг дамжуулдаг. Одоогийн байдлаар энэ нь зөвхөн ROM санах ой бөгөөд хаяг нь секундэд хоёр удаа (ойролцоогоор) нэмэгддэг.
Миний эцсийн зорилго юу вэ? Үүнийг хоёр дахь зурагт үзүүлэв. Энэ нь: илүү олон I2C төхөөрөмжүүдийг (мэдрэгч болон бусад) FPGA дотор нэгэн зэрэг дуурайх боломжтой болгох. Мэдрэгчийн арын хэсэгт байгаа өгөгдлийг FPGA -д кэш хийж, USB эсвэл Ethernet ашиглан компьютерээс дамжуулах болно. Илүү дэвшилтэт мэдрэгч болон бусад I2C төхөөрөмжийг (санах ой, LED драйвер гэх мэт) дэмжих.
Алхам 4: Бүгдийг нэгтгэх
Одоо бүх зүйлийг хооронд нь холбох цаг болжээ. Онолын хувьд энэ нь маш энгийн: mcu самбар нь PMod холбогчтой (I2C0 & SSP0 (SPI шиг ажиллах боломжтой)). Artix самбар нь 4 PMod холбогчтой бөгөөд үүнийг хүссэнээрээ ашиглаж болно. Би MCU -тай ярихын тулд D холбогчийг, Логик анализатор руугаа холбогдохын тулд B холбогчийг сонгоно.
Анхааруулга
Та хоёр самбарыг ингэж холбож чадахгүй. Яагаад? PMod нь Мастер/Хостын самбар (хүч өгдөг) -ийг Боол/Мэдрэгчийн самбар (хүчийг хүлээн авдаг) холболтыг хөнгөвчлөх зорилгоор бүтээгдсэн болно. Гэхдээ энэ төсөлд хоёулаа хоёулаа хүч өгдөг бөгөөд хэрэв та нэг самбараас 3.3V гаралтыг нөгөө самбарын 3.3V гаралттай холбовол муу зүйл тохиолдож магадгүй юм. Гэхдээ тэд FPGA -ийн цахилгаан шугамын параметрүүдийг өөрчилж чадахгүй байж магадгүй (та маш нарийн боловсруулсан болно). Дээрх зураг дээр үзүүлсэн шиг ийм эрсдэлд орж болохгүй бөгөөд холбогчийг нэг зүүгээр зүүн тийш (мөн FPGA самбарыг эргүүлээрэй) бүү хөдөлгө. Энд PMod -ийн тодорхойлолт байна, та үүнийг сайн судалж үзээрэй, миний товчоор хэлэхэд миний хийсэн зүйл бол хоёр самбарын VCC -ийг холбохгүй байх явдал юм.
Зөвлөмж болгож буй:
Өөрийн хөрсний чийгшил мэдрэгчийг Arduino ашиглан хий !!!: 10 алхам
Өөрийн хөрсний чийгшил мэдрэгчийг Arduino ашиглан хий !!!: ТУХАЙ !!! Энэхүү зааварчилгаанд бид хөрсний чийг мэдрэгч FC-28-ийг Arduino-той холбох болно. Энэхүү мэдрэгч нь хөрсний доторх усны эзэлхүүнийг хэмжиж, чийгийн түвшинг гарц болгон өгдөг. Мэдрэгч нь анало хоёулаа тоноглогдсон
Аливаа Android утсан дээр олон цонхыг хэрхэн идэвхжүүлэх вэ: 6 алхам
Ямар ч Андройд утсан дээр олон цонхыг хэрхэн идэвхжүүлэх вэ: Олон цонхны горим нь Android 6.0 Marshmallow дээрх нууц эсвэл бета горим юм.Энэ функц нь бүх гар утсанд байдаггүй, гэхдээ Android 6.0 Marshmallow дээр олон цонхны горимыг идэвхжүүлэх техник байдаг. Шаардлага: 1. Утас үндэстэй байх ёстой. Андройд хувилбар
AT Commands програм хангамж бүхий аливаа ESP8266 самбар/модулийг програмчлах: 5 алхам
AT Commands програм хангамж бүхий аливаа ESP8266 самбар/модулийг програмчлах: ESP8266 модуль, самбар бүрийг олон янзаар програмчилж болно: Arduino, python, Lua, AT командууд, магадгүй бусад олон … Тэдний эхний гурав нь дангаараа ажиллахад тохиромжтой, AT програм хангамж. нь ESP8266 -ийг модуль болгон ашиглах эсвэл TTL RS232 c ашиглан хурдан турших зориулалттай
Аливаа хулганы товчлуурыг багасгах: 3 алхам
Аливаа хулганы товчлуурыг багасгах: заавар. Аливаа хулганы товшилтын дууг багасгах. Асуудал нь тэнд байгаа олон хулгана товчлуураа дарах бүрт өндөр, ядаргаатай чимээ гаргадагт оршино. Энэ асуудлыг шийдэхийн тулд би танд туслахыг хичээх болно
BC547 транзистор ашиглан энгийн мэдрэгчийг хий: 4 алхам
BC547 транзистор ашиглан энгийн мэдрэгч хийх: Сайн байна уу найз минь, өнөөдөр би транзистор BC547 ашиглан энгийн мэдрэгч хийх гэж байна. Энэ хэлхээ нь маш хялбар бөгөөд маш сонирхолтой хэлхээ юм