(মাইক্রোকন্ট্রোলার রেজিষ্টার/রেজিস্টার সম্পর্কিত নিম্নাক্তো আলোচনায় রূপক ব্যাবহারের স্বার্থে অতি সরলীকরন করা হয়েছে ফলে কিছু ক্ষেত্রে বাস্তবতার সাথে আপাত ভিন্নতা বা সঙ্ঘাত হতে পারে তবে মুল বক্তব্য অক্ষুন্ন রাখার চেষ্টা করা হয়েছে)
বিটঃ ‘ডিজিটাল’ নামটি নিয়ে আমার একটা আপত্তির কথা আগে বলি। দশ ভিত্তিক (Decile) সংখা পদ্ধতি (০ থেকে ৯) এর প্রতিটি অংককে ইংরেজিতে বলে ডিজিট ( যেমন ১ একটা ডিজিট বা ৭ একটা ডিজিট) আর দূই ভিত্তিক (Binary) সংখা পদ্ধতির এক একটি অংককে বলে বিট (যেমন ০ একটি বিট বা ১ একটি বিট)।
প্রাচিন আমলে কম্পিউটারে দশ ভিত্তিক সিস্টেমে চালানোর চেষ্টা করা হয়েছে তখন ইলেক্ট্রনিক্সের এই শাখার নাম ডিজিটাল সঠিক ছিল। কিন্তু বর্তমানে ডেসাইল সিস্টেম, বাইনারি দ্বারা প্রতিস্থাপন করা হয়েছে তাই এর নাম হওয়া উচিত ‘বিটাল সিস্টেম’ বাট নট ‘ডিজিটাল সিস্টেম’। যাই হোক, এখানে নিয়ম রক্ষার স্বার্থে ‘ডিজিটাল’ নামটাই ব্যাবহার হবে।
রেজিষ্টারঃ রেজিষ্টার হচ্ছে একটি ডাটা ধারক ব্যবস্থা যার ভিত্তিতে সিদ্ধান্ত গ্রহন, গননা, নির্দেশনা বা তথ্য লোকেশনে ব্যাবহার করা হয়। MCU বিভিন্ন রকম রেজিষ্টার ব্যাবহার হয় যেমন-ষ্ট্যাটাস রেজিষ্টার, এড্রেস রেজিষ্টার, ডাটা রেজিষ্টার, কাউন্টার রেজিষ্টার।
উদাহরনে ভালো বুঝা যাবে। ধরা যাক বিট মানে একটা এল ই ডি বাতি। এর জ্বলা অবস্থা মানে ১ আর নিভা অবস্থা মানে শুন্য ষ্ট্যাটাস রেজিষ্টারঃ টয়লেটের অবস্থা জানার জন্য ১ বিট রেজিষ্টারের ব্যাবহারঃ টয়লেটের দরজার উপর এল ই ডি লাগানো হয়ছে । ০ (বাতি নিভে আছে)ঃ টয়লেট খালি, ব্যাবহার করা যাবে। ১ (বাতি জ্বলে আছে)ঃ টয়লেটে লোক আছে, বাতি নিভা পর্যন্ত অপেক্ষা করুন। বায়ু প্রবাহের দিক জানতে ৩ বিট রেজিষ্টারের ব্যাবহারঃ আবহাওয়া অফিসের ছাদে তিনটি বিশাল এল ই ডি লাগানো হয়েছে ০০০ বাতাস পুর্বদিকে বইছে ০০১ বাতাস পশ্চিম দিকে বইছে ০১০ বাতাস উত্তরে বইছে … ১১০ বাতাস ঈষান কোনে বইছে ১১১ বাতাস নৈঋত কোনে বইছে MCU এর কোন পিন রিড আর কোন পিন রাইট মোডে আছে তা ঠিক ও তার অবস্থা নির্দেশ করে ষ্ট্যাটাস রেজিষ্টার। কাউন্ট রেজিষ্টারঃ গননা করে এবং গননার কি পর্যায়ে আছে তা নির্দেশ করেঃ ৭ বার সুরা ফাতিহা পরার পর একটি পুশ সুইচ চাপা হয় এবং রেজিষ্টারের ভ্যালু পালটায় ০০০ একবারও পরা হয় নাই ০০১ ৭ বার বা তার বেশী পড়া হয়েছে ০১০ ১৪ বার বা তার বেশী পড়া হয়েছে … MCU এর ক্ষেত্রে স্ট্যাক কাউন্ট করা হয়।
এড্রেস রেজিষ্টারঃ রেজিষ্টার এখানে একটি সূচিপত্র মাত্র। সূচিপত্রে যেমন কোন বিষয়াবলিকে ঠিক কোন পাতায় পাওয়া যাবে তার নির্দেশ করে তেমনি এড্রেস রেজিষ্টার কোন ডাটাকে কোন মেমরী লোকেশনে পাওয়া যাবে তা নির্দেশ করে। সাধারন পদ্ধতিতে রেজিষ্টারে পাতায় পাতায় তথ্য রাখা হয়। পাতা গুলিকে ১ থেকে শুরু করে ২, ৩ ইত্যাদি উর্ধক্রমে ক্রমান্বিত চিহ্ন দেয়া হয়।
নির্দিষ্ট বিষয় গুলি ভিন্ন ভিন্ন পাতায় রাখা হয়। রেজিষ্টারের শুরুতে একটি সূচিতে কোন পাতায় কি আছে তার একটি তালিকা থাকে, যাতে যে কেউ নিমিষে উদ্দিষ্ট হিসাব পাতায় যেতে পারে। ডিজিটাল সিস্টেমে অনুরূপ মেমোরী লোকেশন (পাতা) গুলিকে ক্রমান্বিত করা হয় তার একটা সূচি এড্রেস রেজিষ্টারে সংরক্ষন করা হয় (এক্ষেত্রে ব্যাতিক্রম হলো রেজিষ্টার আর মেমোরী ভিন্ন দুটি ডিভাইস)।
ধরাযাক সূচিটি আলাদা শীটে (যাকে আমরা এখন থেকে রেজিষ্টার বলব) আর বিষয়গুলি আলাদা খাতায় (মেমরী লোকেশন) রাখা বাধ্যতামূলক । আইডিয়াল লাইব্রেরীর বিক্রিত রেজিষ্টারে সর্বোচ্চ ২ ডিজিট এন্ট্রি রাখা যায় (০ থেকে ৯৯) যা এক একটি পাতাকে নির্দেশ করে। রেজিষ্টারটি ১ নং ছবির মতোঃ
পাতা নং |
হিসাব | |
ডিজিট ১ | ডিজিট ২ | |
০ | ০ | পরিবহন বিভাগ |
০ | ২ | পরিবহন বিভাগ |
… | … | |
৩ | ৮ | পরিচালনা বিভাগ |
৩ | ৯ | সেলস বিভাগ |
… | … | |
৯ | ৯ | মার্কেটিং বিভাগ |
এখন তাহলে খাতায় সর্বোচ্চ কতটি পাতা রাখা যেতে পারে? ১০০টি । অর্থাৎ ২ ডিজিটের জন্য এন্ট্রি হয় ১০০ টি ৩ ডিজিট হলে এন্ট্রি রাখা যেত ১০০০ টি (০ থেকে ৯৯৯)। মানে ২ ডিজিটের ক্ষেত্রেঃ 10^2 = 100 আর ৩ ডিজিটে 10^3=1000। এভাবে ৫ ডিজিটে 10^5= 100000। কম্পিউটার আর্কিটেকচারে অনুরূপে রেজিষ্টারের বিটের সাথে মেমরী লোকেশনের একটা সম্পর্ক আছে। যেমনঃ ২ বিটের মেমোরি লোকেশন = 2^2 = 4 টি ৪ বিটের মেমোরি লোকেশন = 2^4 = 16 টি ৮ বিটের মেমোরি লোকেশন = 2^8 = 256 টি নিচে চিত্রে PIC মাইক্রোর ম্যামোরী লোকেশন দেখানো হলোঃ
অনেক ক্ষেতে ৮ বিট দিয়ে মাত্র ২৫৬ টি লোকেশন যথেষ্ঠ না হওয়ায় ২টি ৮ বিট এড্রেস রেজিষ্টার জোড়া দিয়ে ১৬ বিট এড্রেসিং স্কিম বাস্তবায়ন করা হয়। এভাবে ৩২ বিট বা আরো বেশী বিট বাস্তবায়ন সম্ভব হলেও এই জোড়া তালি এফিসিয়েন্ট হয় না। মেমোরী লোকেশন গুলি হলো এক একটি কুঠরির মতো। প্রতিটি কুঠরিতে কিছু বিট জমা রাখা যায়। এসব বিট ডাটা বিট বা ইনষ্ট্রাকশন বিট হতে পারে। ডাটা বিটগুলি বিভিন্ন I/O Port ম্যাপিং হতে পারে (পরবর্তিতে আলোচ্য)। মেমোরী লোকেশন বলতে শুধু RAM কে বুঝায়না। RAM কে Main Memory বলা হয়। এই Main Memory এর সাথে ROM, I/O পোর্ট রেজিষ্টার, SFR (Special Function Register) ইত্যাদিকে সমন্বিত করে একটা ভার্চুয়াল মেমোরী দাড়া করা হয়। যেমন I/O পোর্টে কমিউনিকেট করতে I/O পোর্টের ম্যাপ যে মেমোরী লোকেশনে আছে তার সাথে কমিউনিকেট করলেই চলে। এভাবে বিভিন্ন বাস সিস্টেম (I2C, SPI ) বাসকেউ ভারচুয়াল মেমোরীতে ম্যাপিং করা যায়।

ডাটা রেজিষ্টারঃ ডাটা রেজিষ্টারে গানিতিক প্রক্রিয়া সম্পাদনের জন্য মেমরী লোকেশন থেকে রিড করে ডাটা ষ্টোর করা হয় এবং এক বা একাধিক গানিতিক প্রক্রিয়া সম্পাদনের পর আবার কোন মেমরী লোকেশনে লিখে দেয়া হয়। CPU সাধারনত সরাসরি মেমোরি লোকেশনে ডাটা ম্যানিপুলেশন করতে পারেনা তাই এদের প্রথমে ডাটা রেজিষ্টারে লোড করে প্রক্রিয়াজাত করে আবার ষ্টোর করা হয় (Load-Store system । ফ্রিজার থেকে কাচামাল কিচেনে এনে রান্না করে রিফ্রিজারেটরে ষ্টোর করার মতো)। কম্পিউটার আর্কিটেকচারের কিছু রেজিষ্টার কোড দ্বারা সরাসরি ম্যানিপুলেট করা যায় এমনই বিট লেভেল এক্সেস করা যায়। আবার কিছু কোড দ্বারা ইউজার লেভেলে এক্সেস নিষিদ্ধ। আবার কিছু হাই লেভেল ল্যাংগুয়েজ যেমন C দ্বারা এক্সেস না করা গেলেউ এসেম্বলি ল্যাংগুয়েজ (লো লেভেল কমান্ড) দ্বারা ম্যানিপুলেট করা যায়। MCU তে কি কি রেজিষ্টার আছেঃ সাধারনত MCU তে দুই শ্রেনির রেজিষ্টার থাকে ১। সাধারন রেজিষ্টার (General Purpose Register) এই গুলা সাধারনত I/O পিন বা পোর্ট সংক্রান্ত। যেমন কিছু AVR মাইক্রো কন্ট্রোলারে ৩২ I/O পিন আছে। এদের ৪ টি পোর্টে যেমন A, B, C, D ভাগ করা হয় প্রতিটি পোর্টের অধিনে ৮ টি I/O পিন থাকে। আবার প্রতিটি পোর্টের সাথে ৩টি রেজিষ্টার সংশিষ্ট আছে যেমনঃ
- The DDRx Register
- The PORTx Register
- The PINx Register
(এখানে x কে A, B, C, D দ্বারা প্রতিস্থাপিত করলে ঐ পোর্টের রেজিষ্টার পাওয়া যায়। যেমন DDRA) ২। বিশেষ রেজিষ্টার (Special Purpose Register) এই রেজিষ্টারগুলি মূলত MCU –এর আভ্যন্তরিন CPU সংশ্লিষ্ট। যেমন Program Counter Register । এদের সাধারনত প্রোগ্রামেটিকালি নিয়ন্ত্রন করা যায় না।
<<১ম কিস্তি এখানে ৩য় কিস্তি এখানে >>
ব্যাক বেঞ্চে বসা টা স্বার্থক হইতেছে দেখি 😉
আবার ঘুমাইয়া পইড়েননা। আফটার অফ ডিফল্ট গেটওয়েতো আপনিই !!
আরে নাহ, আমার রেকর্ডার চালু আছে ঘুমাইলেও প্রব নাই 😉
আর গেটওয়ে তে Distributed Cisco Cloud আছে so, no worry… বাকি টা আল্লাহ্’র ইচ্ছা আর সবার দোয়া 🙂
jodio bujhte jotil lagche tobe lekhata onek sundor hoyeche….. pproborti podter opekkhate roilam….. dhonnobad brother……
poroborti poster opekkhate roilam…..
Vaiya,Akhaney sudu AVR MICROCONTROLLER nia kaj dekhano hoyeche.PIC MICROCONTROLLER nia kono tutorial dekhaley valo hoi.
মাইক্রো নিয়ে লেখা এমনিতেই দূরূহ কাজ। আবার একই সাথে দুই ফ্যামিলির মাইক্রো নিয়ে লেখা আরো দুরূহ কাজ। তাই প্রথমে AVR নিয়ে লিখছি। এর পরে PIC নিয়ে লিখব। AVR মাইক্রো প্রোগ্রামিং এ Arduino IDE ও প্রোগ্রামিং উপ-ভাষা, লাইব্রেরী ইত্যাদি ব্যাবহার করা যায় বলে অনেকের কাছে এটি সহজ মনে হয় (যেমন আমার কাচ্ছে)। সহজ দিয়ে শুরু করলে কঠিন বুঝা সহজ হয়। তাই একটু ধৈর্য ধরলে অবশ্যই PIC নিয়ে লেখা হবে।