Բովանդակություն:

Կատարեք ցանկացած սենսոր FPGA- ից. 4 քայլ
Կատարեք ցանկացած սենսոր FPGA- ից. 4 քայլ

Video: Կատարեք ցանկացած սենսոր FPGA- ից. 4 քայլ

Video: Կատարեք ցանկացած սենսոր FPGA- ից. 4 քայլ
Video: Бацвох базмоц Sofa cum bed Բացվող բազմոց Հեռ. 094225504 2024, Հուլիսի
Anonim
Image
Image
FPGA- ն
FPGA- ն

Արտադրողներից շատերը կյանքում գոնե մեկ անգամ փորձել են ջերմաչափ սարքել, գուցե այն, ինչ նրանք ունեն տանը, այնքան էլ խելացի չէ, կամ գուցե նրանք կարծում են, որ կարող են կառուցել հաջորդ NEST- ը: Այնուամենայնիվ, ինչ-որ պահի նրանք ունեին միկրոկոնտրոլեր `իրենց գերժամանակակից ծրագրակազմով, որը միացված էր ջերմաստիճանի տվիչին (և գուցե այլ սենսորների` ճնշում, լույս): Մինչ այժմ ամեն ինչ կատարյալ էր, ծրագրակազմն աշխատում է, և սենսորը զգում է: Եկեք փորձարկենք այն:

Հմմմ … գուցե նա պետք է տաքացնի սենսորը `օգտագործելով վարսահարդարիչով և սառեցնի սառույցի միջոցով, այն որոշ ժամանակ աշխատում է: Բայց դա պրոֆեսիոնալ չի թվում, սենսորը շատ արագ փոխում է արժեքները, եթե այն տաքացնում ես, այն չի տաքանում մի քանի աստիճանից ավելի: Նախագիծը կիսանդրի է: Բայց ալգորիթմը նոր է, հաշվի է առնում բազմաթիվ գործոններ, ինչ ամոթ է, որ նա խրվեց այս հիմարաբար աննշան բանի վրա:

Իմ լուծումը սա է. Ստիպել FPGA- ին հանդես գալ որպես սենսոր `համակարգչից հոսող արժեքներով (կամ պահված հիշողության մեջ, կամ ստեղծվել է ժամանակավոր FPGA- ի ներսում): Այսպիսով, ձեր թանկարժեք MCU- ի համար FPGA- ն սենսորի տեսք ունի, բայց ոչ որևէ սենսորի `որն է ձեզ դուր գալիս: Գուցե դուք որոշեք, որ ձեզ ավելի շատ բանաձև կամ արձագանքման ավելի արագ ժամանակ է պետք, քան սպասվում էր, դուք պետք է փոխեք սենսորը: Պատվիրեք առցանց, այն կժամանի մի քանի օրից, մի քանի ամսից, ով գիտի: Ամրացրեք ձեր PCB- ն կամ պատվիրեք մոդուլ նոր սենսորով: Կամ… մի քանի կտտոց և FPGA- ն կազմաձևված է որպես ձեր բոլորովին նոր սենսոր, և այն կարող է ընդօրինակել ճշգրիտ ներքին կազմաձևը:

Սա գրելու պահին FPGA- ն կարող է հանդես գալ որպես LM75 ՝ BRAM- ում (FPGA- ում) պահվող ջերմաստիճանի տվյալներով:

Քայլ 1: MCU

Իմ ընտրած MCU- ն LPC4337 է LPCXpresso- ի վրա: Դրա գագաթին ես ունեմ վահան (LPC General Purpose Shield) ՝ դիսփլեյով և իրական LM75 սենսորով: LPC4337- ը ARM Cortex M4 է, որն աշխատում է 200 ՄՀց հաճախականությամբ և ավելի փոքր Cortex M0 (այստեղ չի օգտագործվում): Իրական սենսորը միացված է I2C1 ծայրամասային սարքին, իսկ մեր վիրտուալը ՝ I2C0- ին: Աղբյուրը հասանելի է իմ GitHub- ում:

Ինչպե՞ս կառուցել այն: Ներբեռնեք LPCXpresso IDE- ն LPCOpen գրադարանի հետ միասին: Ներմուծեք այդ գրադարանը IDE- ում և բացեք նախագիծը GitHub- ից: Ամեն ինչ պետք է կազմաձևվի, և ներքևի ձախ անկյունում կարող եք սեղմել «Վրիպազերծում»:

Ամբողջ նախագիծը հիմնված է NXP- ի օրինակներից մեկի վրա (ինչպես ցույց տալու համար, որ իմ նախագիծը նմանակում է իրական սենսորին և MCU- ի կողմից հատուկ ծածկագրի կարիք չունի): Հիմնական ֆայլում (որը կոչվում է iox_sensor.cpp) գտնվում է այս ծածկագիրը.

#սահմանեք Սենսորներ_Ո_ՇԻԵԼԴ

#if սահմանված (SENSORS_ON_SHIELD) #սահմանել SHIELD_I2C I2C1 #elif սահմանված (SENSORS_ON_FPGA) #սահմանել SHIELD_I2C I2C0 #endif

SENSOR_ON_SHIELD- ը և SENSOR_OR_FPGA- ն փոխելով ՝ օգտվողը կարող է կոմպիլացման ժամանակ անցնել, թե որ սենսորին խոսի ՝ իրականը կամ վիրտուալը, քանի որ դրանք տարբեր I2C կապում են:

Քայլ 2: FPGA

Իմ ընտրած FPGA խորհուրդը Digilent- ի կողմից պատրաստված Artix 7 -ն է, որն ունի Xilinx Arty 7. Երկու PMod միակցիչներն օգտագործվում են ՝ մեկը վրիպազերծման և մեկը իրական բեռնվածության համար, միացում MCU- ի տախտակին:

Կրկին, FPGA- ի աղբյուրի կոդը հասանելի է իմ GitHub- ում (fpgaSide թղթապանակ):

Ինչպե՞ս կառուցել այն: Ներբեռնեք, գնեք կամ բացեք Xilinx Vivado IDE ծրագիրը: Ներմուծեք նախագծի ֆայլերը GitHub- ից: Ֆայլերից մեկը (content.coe) ջերմաստիճանի տվյալներն են հում ձևաչափով, որոնք կհեռարձակվեն կեղծ սենսորին: Կա նաև նույն անունով Excel ֆայլ, որն օգնում է մարդկային ընթեռնելի ջերմաստիճանի տվյալները վերածել չմշակված LM75 տվյալների: Ես պլանավորում եմ փոխել այն ավտոմատացված գործընթացի ՝ Java ծրագրով գրված ծրագրակազմով, բայց մինչ այդ այս լուծումն աշխատում է: Սինթեզը և իրականացումը պետք է որոշ ժամանակ տևեն, հաշվի առեք դա:

Քայլ 3: Ինչպե՞ս է այն աշխատում:

Ինչպես է դա աշխատում?
Ինչպես է դա աշխատում?
Ինչպես է դա աշխատում?
Ինչպես է դա աշխատում?

Ինչպես ասացի, MCU- ի համար FPGA- ն սենսորի տեսք ունի, ավելի ճիշտ ՝ I2C սենսոր: I2C ծայրամասային սարքի ելքը միացված է FPGA- ի մուտքին: FPGA- ի ներսում կա 3 հիմնական բաղադրիչ.- I2C վերահսկիչ- I2C սարք- տվյալներ Այն պահպանում է I2C արձանագրության ներքին պետական մեքենան (ի դեպ, ահա դրա փաստաթղթերը): Ի՞նչ է ուղարկում այս բաղադրիչը I2C սարքին: Ներկա պահին ստացված բայտը, այդ բայտի դիրքը ընթացիկ հաղորդակցության մեջ և արդյոք MCU- ն գրում է կամ կարդում է FPGA- ից: I2C սարքը ստանում է ուղարկված բայթերը և թարմացնում սենսորի մոդելավորված ներքին կառուցվածքը: Այն կարող է պարզապես թարմացնել գրանցման ցուցիչը կամ տվյալների աղբյուրից պահանջել նոր տվյալներ: Տվյալների բաղադրիչը փոխանցում է տվյալների նոր միավորներ: Ներկայումս դա ընդամենը ROM հիշողություն է, որի հասցեն ավելացվում է (մոտավորապես) երկու վայրկյանում:

Ո՞րն է իմ վերջնական նպատակը: Այն ցուցադրվում է երկրորդ նկարում: Այսինքն ՝ թույլ տվեք ավելի շատ I2C սարքեր (տվիչներ և այլ) միաժամանակ մոդելավորվել FPGA- ի ներսում: Տվյալները սենսորի հետևի մասում, որոնք պետք է պահվեն FPGA- ում և համակարգչից հոսվեն USB- ի կամ Ethernet- ի միջոցով: Աջակցեք ավելի առաջադեմ սենսորների և այլ I2C սարքերի (հիշողություն, LED վարորդներ և այլն):

Քայլ 4: Ամեն ինչ միասին դնել

Այդ ամենը միասին դնելը
Այդ ամենը միասին դնելը
Այդ ամենը միասին դնելը
Այդ ամենը միասին դնելը

Հիմա ժամանակն է ամեն ինչ իրար միացնել: Տեսականորեն դա պարզ է. Mcu տախտակն ունի PMod միակցիչ (I2C0 և SSP0 (կարող է աշխատել ինչպես SPI)): Artix տախտակն ունի 4 PMod միակցիչ, որոնք կարող են օգտագործվել ինչպես ցանկանաք: Ես ընտրում եմ D միակցիչը ՝ MCU- ի հետ խոսելու համար, և B միակցիչը ՝ իմ տրամաբանական անալիզատորին միանալու համար:

Գուշացում

Դուք չեք կարող երկու տախտակները միացնել հենց այնպես: Ինչո՞ւ: PMod- ը ստեղծվել է Master/Host տախտակի (որն ուժ է տալիս) կապը Slave/Sensor տախտակին (որը ստանում է էներգիա): Բայց այս նախագծում երկու տախտակն էլ էներգիա են տալիս, և եթե մի տախտակից 3.3 Վ ելքը միացնում եք մյուս տախտակի 3.3 Վ ելքին, կարող են վատ բաներ լինել: Բայց նրանք կարող են ոչ, և դուք կարող եք պարզապես փոխել FPGA- ի էներգիայի ռելսերի պարամետրերը (դրանք շատ մանրակրկիտ նախագծված են): Այսպիսով, մի՛ դիմեք այս ռիսկի և միացրեք միակցիչը ձախով (և նաև շրջեք FPGA տախտակը), ինչպես երևում է վերը նկարներում: Ահա PMod- ի ճշգրտումը, դուք կարող եք ուսումնասիրել այն: Այն, ինչ ես արեցի կարճ բառերով, երկու տախտակների VCC- ները միացնելն է:

Խորհուրդ ենք տալիս: