সুচিপত্র:

একটি FPGA থেকে যেকোনো সেন্সর তৈরি করুন: 4 টি ধাপ
একটি FPGA থেকে যেকোনো সেন্সর তৈরি করুন: 4 টি ধাপ

ভিডিও: একটি FPGA থেকে যেকোনো সেন্সর তৈরি করুন: 4 টি ধাপ

ভিডিও: একটি FPGA থেকে যেকোনো সেন্সর তৈরি করুন: 4 টি ধাপ
ভিডিও: গরুটা সাথে কি হয়েছে #shorts #wildlifebd 2024, জুলাই
Anonim
Image
Image
এফপিজিএ
এফপিজিএ

বেশিরভাগ নির্মাতারা তাদের জীবনে অন্তত একবার একটি থার্মোমিটার তৈরির চেষ্টা করেছিলেন, হয়তো তাদের বাড়িতে যা আছে তা যথেষ্ট স্মার্ট নয়, অথবা হয়তো তারা মনে করে যে তারা পরবর্তী NEST তৈরি করতে পারে। তবুও, কিছু সময়ে তাদের একটি অত্যাধুনিক সফ্টওয়্যার সহ একটি মাইক্রোকন্ট্রোলার ছিল একটি তাপমাত্রা সেন্সর (এবং সম্ভবত অন্যান্য সেন্সর: চাপ, আলো)। এখন পর্যন্ত সবকিছু নিখুঁত, সফটওয়্যার চলছে এবং সেন্সর সেন্সিং করছে। এটা পরীক্ষা করা যাক!

হুমমম … হয়তো তার হেয়ার ড্রায়ার ব্যবহার করে সেন্সর গরম করা উচিত এবং বরফ ব্যবহার করে ঠান্ডা করা উচিত, এটি কিছু সময়ের জন্য কাজ করে। কিন্তু এটি পেশাদার মনে হয় না, সেন্সর খুব দ্রুত মান পরিবর্তন করে যদি আপনি এটি গরম করেন, এটি কয়েক ডিগ্রির বেশি গরম করে না। প্রকল্প একটি আবক্ষ! কিন্তু অ্যালগরিদমটি নতুন, অনেকগুলি বিষয় বিবেচনায় নিয়েছে, এই নির্বোধ ছোটখাটো বিষয়ে সে আটকে আছে কি লজ্জাজনক।

আমার সমাধান এই হল: একটি FPGA একটি পিসি থেকে প্রবাহিত মান সহ একটি সেন্সর হিসাবে কাজ করুন (অথবা মেমরিতে সংরক্ষিত, অথবা FPGA এর ভিতরে অ্যাড-হক তৈরি)। সুতরাং আপনার মূল্যবান এমসিইউর জন্য এফপিজিএ একটি সেন্সরের মতো দেখায়, তবে কোনও সেন্সর নয়: যে সেন্সরটি আপনি পছন্দ করেন। হয়তো আপনি সিদ্ধান্ত নিয়েছেন যে আপনার প্রত্যাশার চেয়ে বেশি রেজোলিউশন বা দ্রুত প্রতিক্রিয়া সময় প্রয়োজন, আপনাকে সেন্সর পরিবর্তন করতে হবে। এটি অনলাইনে অর্ডার করুন, এটি কয়েক দিনের মধ্যে, কয়েক মাসের মধ্যে পৌঁছে যাবে, কে জানে। আপনার পিসিবি রেসপিন করুন অথবা নতুন সেন্সর দিয়ে একটি মডিউল অর্ডার করুন। অথবা… কয়েকটি ক্লিক এবং এফপিজিএ আপনার নতুন সেন্সর হিসেবে কনফিগার করা হয়েছে এবং এটি সঠিক অভ্যন্তরীণ কনফিগারেশন অনুকরণ করতে পারে।

এই লেখার মুহুর্তে, FPGA BRM (FPGA- এ) সংরক্ষিত তাপমাত্রার তথ্য সহ LM75 হিসাবে কাজ করতে পারে।

ধাপ 1: MCU

আমার পছন্দের MCU হল একটি LPCXpresso তে LPC4337। তার উপরে আমার একটি ডিসপ্লে এবং একটি বাস্তব LM75 সেন্সর সহ একটি ieldাল (LPC সাধারণ উদ্দেশ্য শিল্ড) আছে। LPC4337 হল একটি ARM Cortex M4 যা 200MHz এ চলছে এবং একটি ছোট Cortex M0 (এখানে ব্যবহার করা হয়নি)। আসল সেন্সরটি I2C1 পেরিফেরালের সাথে সংযুক্ত এবং আমাদের ভার্চুয়ালটি I2C0 এর সাথে সংযুক্ত হবে। উৎসটি আমার গিটহাব এ পাওয়া যায়।

কিভাবে এটি নির্মাণ করবেন? LPCOpen লাইব্রেরির সাথে LPCXpresso IDE ডাউনলোড করুন। সেই লাইব্রেরিটি আইডিইতে আমদানি করুন এবং গিটহাব থেকে প্রকল্পটি খুলুন। সবকিছু কনফিগার করা উচিত এবং আপনি নীচের বাম কোণে "ডিবাগ" এ ক্লিক করতে পারেন।

পুরো প্রকল্পটি NXP- এর উদাহরণগুলির একটির উপর ভিত্তি করে তৈরি করা হয়েছে (যেমন দেখানো যে আমার প্রকল্পটি একটি বাস্তব সেন্সরকে অনুকরণ করে এবং MCU সাইডে বিশেষ কোডের প্রয়োজন নেই)। প্রধান ফাইলে (iox_sensor.cpp নামে) এই কোডটি রয়েছে:

#SENSORS_ON_SHIELD নির্ধারণ করুন

#if সংজ্ঞায়িত (SENSORS_ON_SHIELD) #ডিফল্ট SHIELD_I2C I2C1 #elif সংজ্ঞায়িত (SENSORS_ON_FPGA)

SENSOR_ON_SHIELD এবং SENSOR_OR_FPGA পরিবর্তন করে ব্যবহারকারী কম্পাইল করার সময় কোন সেন্সরে কথা বলতে হবে, আসল বা ভার্চুয়াল এক, যেমন তারা বিভিন্ন I2C পিনে থাকে।

ধাপ 2: এফপিজিএ

আমার পছন্দের FPGA বোর্ড হল একটি আর্টিক্স 7 যা ডিজিলেন্ট দ্বারা তৈরি করা হয়েছে, যার একটি Xilinx Arty আছে। PMod সংযোগকারীগুলির মধ্যে দুটি ব্যবহার করা হয়, একটি ডিবাগ করার জন্য এবং একটি বাস্তব পেলোডের জন্য, MCU বোর্ডের সাথে সংযোগ।

আবার, FPGA এর সোর্স কোড আমার GitHub (fpgaSide ফোল্ডারে) পাওয়া যায়।

কিভাবে এটি নির্মাণ করবেন? Xilinx Vivado IDE ডাউনলোড, কিনুন বা খুলুন। গিটহাব থেকে প্রকল্প ফাইলগুলি আমদানি করুন। ফাইলগুলির একটি একই নামের একটি এক্সেল ফাইলও রয়েছে যা মানুষের পঠনযোগ্য তাপমাত্রা ডেটাকে কাঁচা LM75 ডেটাতে রূপান্তর করতে সহায়তা করে। আমি জাভাতে লিখিত সফটওয়্যারের একটি টুকরো দিয়ে এটিকে একটি স্বয়ংক্রিয় প্রক্রিয়াতে পরিবর্তন করার পরিকল্পনা করছি কিন্তু ততক্ষণ পর্যন্ত এই সমাধানটি কাজ করে। সংশ্লেষণ এবং বাস্তবায়ন কিছু সময় নিতে হবে, এটি বিবেচনা করুন।

ধাপ 3: এটি কিভাবে কাজ করে?

এটা কিভাবে কাজ করে?
এটা কিভাবে কাজ করে?
এটা কিভাবে কাজ করে?
এটা কিভাবে কাজ করে?

যেমনটি আমি বলেছি, এমসিইউর জন্য, এফপিজিএ একটি সেন্সরের মতো দেখতে, আরও ঠিক একটি আই 2 সি সেন্সর। I2C পেরিফেরালের আউটপুট FPGA এর ইনপুটের সাথে সংযুক্ত। FPGA এর ভিতরে 3 টি প্রধান উপাদান রয়েছে:- I2C কন্ট্রোলার- I2C ডিভাইস- ডেটা I2C কন্ট্রোলার FPGA এর পিন থেকে I2C ডেটা গ্রহণ করে এবং FPGA এর বাকি অংশে পাঠায় এবং বিপরীত ক্রমে একই কাজ করে। এটি I2C প্রোটোকলের জন্য একটি অভ্যন্তরীণ রাষ্ট্রীয় মেশিন বজায় রাখে (যাইহোক, এখানে এর জন্য ডকুমেন্টেশন রয়েছে)। এই উপাদানটি I2C ডিভাইসে কি পাঠায়? বর্তমানে প্রাপ্ত বাইট, বর্তমান যোগাযোগে সেই বাইটের অবস্থান এবং MCU FPGA থেকে লিখছে বা পড়ছে কিনা। I2C ডিভাইস পাঠানো বাইট গ্রহণ করে এবং সেন্সরের সিমুলেটেড অভ্যন্তরীণ কাঠামো আপডেট করে। এটি কেবল রেজিস্টার পয়েন্টার আপডেট করতে পারে বা ডেটা সোর্স থেকে নতুন ডেটার অনুরোধ করতে পারে। ডেটা কম্পোনেন্ট নতুন ডাটা পয়েন্ট স্ট্রিম করে। বর্তমানে এটি কেবল একটি রম মেমরি যার ঠিকানা প্রতি সেকেন্ডে দুইবার (প্রায়) বৃদ্ধি পায়।

আমার শেষ লক্ষ্য কি? এটি দ্বিতীয় ছবিতে দেখানো হয়েছে। এটি হল: আরও I2C ডিভাইস (সেন্সর এবং অন্যান্য) একই সময়ে FPGA এর অভ্যন্তরে সিমুলেটেবল হওয়া সম্ভব করে তুলুন। সেন্সরের ব্যাকএন্ডে ডেটা এফপিজিএতে ক্যাশে করা হবে এবং পিসি থেকে ইউএসবি বা ইথারনেটের মাধ্যমে স্ট্রিম করা হবে। আরো উন্নত সেন্সর এবং অন্যান্য I2C ডিভাইস (মেমরি, LED ড্রাইভার ইত্যাদি) সমর্থন করুন।

ধাপ 4: সব একসাথে রাখা

সবগুলোকে একত্রে রাখ
সবগুলোকে একত্রে রাখ
সবগুলোকে একত্রে রাখ
সবগুলোকে একত্রে রাখ

এখন সময় হল সবকিছু একসাথে সংযুক্ত করার। তাত্ত্বিকভাবে, এটি সহজ: এমসিইউ বোর্ডের একটি PMod সংযোগকারী রয়েছে (I2C0 এবং SSP0 (SPI এর মতো কাজ করতে পারে))। আর্টিক্স বোর্ডে 4 টি PMod সংযোগকারী রয়েছে যা আপনি চাইলে ব্যবহার করতে পারেন। আমি আমার যুক্তি বিশ্লেষকের সাথে সংযোগ করার জন্য MCU এবং সংযোগকারী B- এর সাথে কথা বলার জন্য সংযোগকারী D নির্বাচন করি।

সতর্কবাণী

আপনি একইভাবে দুটি বোর্ডকে একসাথে সংযুক্ত করতে পারবেন না। কেন? PMod একটি স্লেভ/সেন্সর বোর্ডের (যে ক্ষমতা গ্রহণ করে) একটি মাস্টার/হোস্ট বোর্ডের (যে ক্ষমতা দেয়) সংযোগ সহজ করার জন্য নির্মিত হয়েছিল। কিন্তু এই প্রকল্পে উভয় বোর্ডই ক্ষমতা দেয় এবং যদি আপনি একটি বোর্ড থেকে 3.3V আউটপুটকে অন্য বোর্ডের 3.3V আউটপুটে সংযুক্ত করেন তবে খারাপ কিছু ঘটতে পারে। কিন্তু তারা নাও হতে পারে এবং আপনি কেবল FPGA এর পাওয়ার রেলের পরামিতিগুলি পরিবর্তন করতে পারেন (এগুলি খুব সাবধানে ডিজাইন করা হয়েছে)। সুতরাং এই ঝুঁকিটি নেবেন না এবং উপরের ছবিগুলিতে দেখা যায় যে সংযোগকারীকে একটি পিন বাম দিকে সরান (এবং FPGA বোর্ডটি উল্টান)। এখানে PMod স্পেসিফিকেশন, আপনি এটি অধ্যয়ন করেন, আমি সংক্ষেপে যা করেছি তা হল দুটি বোর্ডের VCC কে সংযুক্ত না করা।

প্রস্তাবিত: