Мазмұны:

Кез келген сенсорды FPGA -дан жасаңыз: 4 қадам
Кез келген сенсорды FPGA -дан жасаңыз: 4 қадам

Бейне: Кез келген сенсорды FPGA -дан жасаңыз: 4 қадам

Бейне: Кез келген сенсорды FPGA -дан жасаңыз: 4 қадам
Бейне: ҚАЛАЙ КЕЗ КЕЛГЕН ТОВАРДЫ САТУҒА БОЛАДЫ? | САТУ ӨНЕРІ СЫРЛАРЫ 2024, Шілде
Anonim
Image
Image
FPGA
FPGA

Көптеген өндірушілер өмірінде кем дегенде бір рет термометр құруға тырысты, мүмкін олардың үйдегі қондырғысы ақылды емес шығар, немесе олар келесі Ұяны салуға болады деп ойлайтын шығар. Соған қарамастан, оларда бір кездері температура сенсорына (және, мүмкін, басқа сенсорларға: қысым, жарық) қосылатын заманауи бағдарламалық жасақтамасы бар микроконтроллер болды. Осы уақытқа дейін бәрі жақсы, бағдарламалық қамтамасыз ету жұмыс істейді және сенсор сенсорлық. Сынап көрейік!

Хммм … мүмкін ол сенсорды фенмен қыздырып, мұзды қолданып суытады, ол біраз уақыт жұмыс істейді. Бірақ бұл кәсіби емес сияқты, сенсор сенсорды тез қыздырса, ол бірнеше градустан жоғары қызмайды. Жоба - бюст! Бірақ алгоритм жаңа, көптеген факторларды ескереді, оның бұл ақымақ нәрсеге жабысып қалғаны ұят.

Менің шешімім мынада: 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 спецификациясы, сіз оны зерттейсіз, мен қысқаша айтқанда, екі тақтаның ЭКК қосылмауы.

Ұсынылған: