Мазмұны:
Бейне: Кез келген сенсорды FPGA -дан жасаңыз: 4 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:24
Көптеген өндірушілер өмірінде кем дегенде бір рет термометр құруға тырысты, мүмкін олардың үйдегі қондырғысы ақылды емес шығар, немесе олар келесі Ұяны салуға болады деп ойлайтын шығар. Соған қарамастан, оларда бір кездері температура сенсорына (және, мүмкін, басқа сенсорларға: қысым, жарық) қосылатын заманауи бағдарламалық жасақтамасы бар микроконтроллер болды. Осы уақытқа дейін бәрі жақсы, бағдарламалық қамтамасыз ету жұмыс істейді және сенсор сенсорлық. Сынап көрейік!
Хммм … мүмкін ол сенсорды фенмен қыздырып, мұзды қолданып суытады, ол біраз уақыт жұмыс істейді. Бірақ бұл кәсіби емес сияқты, сенсор сенсорды тез қыздырса, ол бірнеше градустан жоғары қызмайды. Жоба - бюст! Бірақ алгоритм жаңа, көптеген факторларды ескереді, оның бұл ақымақ нәрсеге жабысып қалғаны ұят.
Менің шешімім мынада: FPGA-ны ДК-ден (немесе жадта сақталған немесе FPGA ішінде арнайы құрылған) сенсор ретінде әрекет етіңіз. Сіздің қымбат MCU үшін FPGA сенсорға ұқсайды, бірақ сенсор емес: қайсысы сенсорды ұнатады. Мүмкін, сізге күтуге қарағанда көбірек рұқсат немесе тезірек жауап беру керек деп шештіңіз, сенсорды өзгерту керек. Интернет арқылы тапсырыс беріңіз, ол бірнеше күннен кейін, бірнеше айдан кейін келеді, кім біледі. ПХД -ға жауап беріңіз немесе жаңа сенсормен модульге тапсырыс беріңіз. Немесе … бірнеше рет басу және FPGA сіздің жаңа сенсорыңыз ретінде конфигурацияланған және ол дәл ішкі конфигурацияны еліктей алады.
Мұны жазу кезінде FPGA BRAM -да (FPGA -да) сақталған температура деректері бар LM75 ретінде әрекет етуі мүмкін.
1 -қадам: MCU
Менің таңдаған MCU - LPCXpresso -дағы LPC4337. Оның үстінде менде қалқаны бар (LPC General Purpose Shield) дисплейі мен нағыз LM75 сенсоры бар. LPC4337 - бұл 200 МГц жиілігінде жұмыс істейтін ARM Cortex M4 және кішірек Cortex M0 (мұнда қолданылмайды). Нағыз сенсор I2C1 перифериялық құрылғысына қосылған, ал біздің виртуалды I2C0 қосылады. Дереккөз менің GitHub -те қол жетімді.
Оны қалай салу керек? LPCXpresso IDE файлын LPCOpen кітапханасымен бірге жүктеңіз. Бұл кітапхананы IDE -ге импорттаңыз, сонымен қатар GitHub -тан жобаны ашыңыз. Барлығы конфигурацияланған болуы керек және сіз төменгі сол жақ бұрыштағы «Отладка» батырмасын басуға болады.
Бүкіл жоба NXP мысалдарының біріне негізделген (менің жобам нақты сенсорды модельдейтінін және MCU жағында арнайы кодты қажет етпейтінін көрсету үшін). Негізгі файлда (iox_sensor.cpp деп аталады) бұл код орналасқан:
#SENSORS_ON_SHIELD анықтаңыз
#анықталған болса (SENSORS_ON_SHIELD) #SHIELD_I2C I2C1 анықтаңыз #elif анықталған (SENSORS_ON_FPGA) #анықтаңыз SHIELD_I2C I2C0 #endif
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 контроллері- I2C құрылғысы- деректер I2C контроллері FPGA түйреуіштерінен I2C деректерін қабылдайды және оларды FPGA қалғанына жібереді және керісінше солай жасайды. Ол I2C протоколының ішкі күй машинасына қызмет көрсетеді (айтпақшы, мұнда құжаттама). Бұл компонент I2C құрылғысына не жібереді? Қазіргі уақытта алынған байт, ағымдағы байланыстағы байттың орны және MCU FPGA -ға жазады ма, оқиды ма. I2C құрылғысы жіберілген байттарды қабылдайды және сенсордың имитациялық ішкі құрылымын жаңартады. Ол регистр көрсеткішін жаңартуы немесе деректер көзінен жаңа деректерді сұрауы мүмкін. Деректер компоненті жаңа деректер нүктелерін ағады. Қазіргі уақытта бұл жай ROM жады, оның адресі секундына екі рет көбейеді (шамамен).
Менің түпкі мақсатым қандай? Ол екінші суретте көрсетілген. Яғни: көптеген I2C құрылғыларының (сенсорлар және басқалар) бір уақытта FPGA ішінде модельденуіне мүмкіндік беру. Сенсордың артқы жағындағы деректер FPGA -да кэштеледі және компьютерден USB немесе Ethernet арқылы жіберіледі. Жетілдірілген сенсорлар мен басқа I2C құрылғыларын қолдау (жады, жарықдиодты драйверлер және т.
4 -қадам: Барлығын біріктіру
Қазір бәрін біріктіретін уақыт. Теориялық тұрғыдан алғанда, бұл қарапайым: mcu тақтасында PMod қосқышы бар (I2C0 & SSP0 (SPI сияқты жұмыс істей алады)). Artix тақтасында қалағаныңызша қолдануға болатын 4 PMod қосқышы бар. Мен MCU -мен сөйлесу үшін D коннекторын және логикалық анализаторыма қосылу үшін В коннекторын таңдаймын.
Ескерту
Сіз екі тақтаны осылай байланыстыра алмайсыз. Неге? PMod Master/Host тақтасының (қуат беретін) құл/сенсорлық тақтаға (қуатты алатын) қосылуын жеңілдету үшін жасалған. Бірақ бұл жобада екі тақта да қуат береді, ал егер сіз 3,3В шығысын бір тақтадан басқа тақтаның 3,3В шығысына қоссаңыз, жаман жағдайлар болуы мүмкін. Бірақ олар мүмкін емес және сіз FPGA қорғаныс рельстерінің параметрлерін өзгерте аласыз (олар өте мұқият жасалған). Жоғарыда көрсетілген суреттерде көрсетілгендей, бұл тәуекелге бармаңыз және коннекторды бір түйреуішті солға жылжытыңыз (сонымен қатар FPGA тақтасын аударыңыз). Міне, PMod спецификациясы, сіз оны зерттейсіз, мен қысқаша айтқанда, екі тақтаның ЭКК қосылмауы.
Ұсынылған:
Веб-сайтпен басқарылатын шырша (кез келген адам оны басқара алады): 19 қадам (суреттермен)
Веб-сайтпен басқарылатын шырша (кез келген адам оны басқара алады): Сіз веб-сайт басқаратын шыршаның қандай болатынын білгіңіз келе ме? Міне, менің шыршамның жобасын көрсететін бейне. Тікелей эфир қазір аяқталды, бірақ мен не болып жатқанын түсіретін бейне түсірдім: Биыл желтоқсанның ортасында
Bluetooth -ға кез келген құлаққап жасаңыз - қосылған құлаққап: 4 қадам
Құлаққапты Bluetooth -ға қосыңыз - қосылған құлаққаптар: Жақында ұялы телефонның аудио ұясы жұмысын тоқтатты, сондықтан мен музыка тыңдай алмадым немесе YouTube -те көре алмадым, бұл мен сияқты жасөспірім үшін өте маңызды. Бұл жоба жұмыс істеу үшін қызықты жоба емес, қажеттіліктен туындады. Ол ЕМЕС
Кез келген ұялы телефонға USB телефон зарядтағышын жасаңыз!: 4 қадам
Кез келген ұялы телефонға USB телефон зарядтағышын жасаңыз!: Менің зарядтағышым жанып кетті, сондықтан мен: «Неге өз телефоныңды салмасқа?» - деп ойладым
Кез келген медиа файлды (тек шамамен) кез келген басқа медиа файлға тегін айналдырыңыз!: 4 қадам
Кез келген медиа файлды кез келген басқа мультимедиалық файлға (тек шамамен) айналдырыңыз!: Менің бірінші нұсқаулығым! Қалай болғанда да, мен Google -де Youtube.flv файлдарын форматқа түрлендіретін ақысыз бағдарламаны іздедім. wwv немесе.mov сияқты әмбебап Мен сансыз форумдар мен веб -сайттарды іздедім, содан кейін деп аталатын бағдарламаны таптым
Кез келген MP3 ойнатқышы немесе компьютері бар кез келген 5.1 динамиктер жүйесін пайдаланыңыз, арзан!: 4 қадам
Кез келген MP3 ойнатқышы немесе компьютері бар кез келген 5.1 динамиктер жүйесін қолданыңыз, арзан! Мен оны 5.1 дыбыстық картасы (PCI) бар жұмыс үстелімде қолдандым. Содан кейін оны ноутбукпен бірге қолдандым