পাঠ ০১ · ৫৭-এর মধ্যে · মডিউল ১

মাইক্রোপ্রসেসর, মাইক্রোকন্ট্রোলার ও এমবেডেড সিস্টেম কী

What is a microprocessor, microcontroller & embedded system
৮ মিনিট পড়া মধ্যম · Intermediate Python সিমুলেশনসহ সম্পূর্ণ বাংলায়

এই পাঠে যা শিখবেন

  • মাইক্রোপ্রসেসর, মাইক্রোকন্ট্রোলার ও এমবেডেড সিস্টেমের সুনির্দিষ্ট সংজ্ঞা
  • এই তিনটি ধারণা কীভাবে একে অপরের সাথে সম্পর্কিত, এবং IoT কোথায় ফিট করে
  • এই কোর্স ঠিক কী কভার করে ও Computer Architecture কোর্স থেকে কীভাবে আলাদা
  • একটি সত্যিকারের, চলমান সিমুলেশন — একই কাজের জন্য মাইক্রোকন্ট্রোলার-ভিত্তিক বনাম মাইক্রোপ্রসেসর-ভিত্তিক ডিজাইনে কতগুলো আলাদা ফিজিক্যাল চিপ লাগে

১ · তিনটি সংজ্ঞা

মাইক্রোপ্রসেসরMicroprocessorএকটি চিপে বসানো শুধু একটি প্রসেসিং কোর (CPU) — কাজ করতে এর সাথে আলাদা RAM, ROM/Flash ও I/O চিপ যুক্ত করতে হয়। হলো একটি চিপে বসানো শুধু প্রসেসিং কোর — নিজে থেকে কিছু "মনে" রাখতে পারে না, প্রতিটি প্রোগ্রাম চালানোর জন্য বাইরে থেকে RAM ও ROM/Flash যুক্ত করতে হয়। আপনার ল্যাপটপ বা ডেস্কটপের CPU (Intel/AMD/Apple Silicon) এর উদাহরণ — এরা শক্তিশালী, কিন্তু একা অচল।

মাইক্রোকন্ট্রোলারMicrocontrollerএকটি চিপে CPU + RAM + Flash + I/O পেরিফেরাল সবকিছু ইন্টিগ্রেটেড — একাই কাজ শুরু করতে পারে। হলো CPU + RAM + Flash/ROM + GPIO/টাইমার/ADC-এর মতো পেরিফেরাল — সবকিছু একটি চিপে ইন্টিগ্রেটেড। পাওয়ার দিলেই এটি একাই চলতে শুরু করে — বাইরের কোনো মেমরি চিপের দরকার নেই। Arduino বোর্ডের ATmega328, বা ESP32/STM32-এর মতো চিপ এর উদাহরণ — M4-তে এই ফ্যামিলিগুলোর একটি সংক্ষিপ্ত ওভারভিউ আসবে।

এমবেডেড সিস্টেমEmbedded Systemএকটি বড় ডিভাইসের ভেতরে বসানো একটি কম্পিউটার সিস্টেম যা একটি নির্দিষ্ট, ডেডিকেটেড কাজ করে — সাধারণ-উদ্দেশ্যের কম্পিউটার নয়। হলো একটি বড় যন্ত্রের (ওয়াশিং মেশিন, গাড়ি, স্মার্ট বাল্ব) ভেতরে বসানো একটি কম্পিউটার সিস্টেম যা একটি নির্দিষ্ট কাজ করে — সাধারণ-উদ্দেশ্যের কম্পিউটারের মতো ব্রাউজার-অফিস-গেম সবকিছু চালানোর দরকার নেই। বেশিরভাগ এমবেডেড সিস্টেম একটি মাইক্রোকন্ট্রোলার ঘিরে তৈরি হয় (সহজ, কম পাওয়ার, সস্তা), তবে কিছু বেশি জটিল কাজে (যেমন Raspberry Pi-ভিত্তিক সিস্টেম) একটি মাইক্রোপ্রসেসর + বাহ্যিক মেমরি (একসাথে একটি SoC-এর অংশ হিসেবে) ব্যবহৃত হয়।

মাইক্রোকন্ট্রোলার (CPU+RAM+Flash, ১ চিপ) + ফার্মওয়্যার + সেন্সর/অ্যাকচুয়েটর এমবেডেড সিস্টেম (নির্দিষ্ট কাজ করে) + নেটওয়ার্ক = IoT ডিভাইস
বেশিরভাগ এমবেডেড সিস্টেমের কেন্দ্রে একটি মাইক্রোকন্ট্রোলার — নেটওয়ার্ক কানেক্টিভিটি যোগ হলে সেটিই IoT ডিভাইস হয়ে ওঠে (M10-M12-এ বিস্তারিত)।

২ · কেন দুটো ভিন্ন ডিজাইন পদ্ধতি

Computer Architecture কোর্সের সাথে সম্পর্ক

Computer Architecture & Digital Logic কোর্সে CPU কীভাবে ভেতর থেকে কাজ করে — ISA, ডেটাপাথ, পাইপলাইনিং, ক্যাশ, মেমরি হায়ারার্কি — তা গভীরভাবে শেখানো হয়েছে। এই কোর্স সেই ভিত্তি ধরে নিয়ে সরাসরি মাইক্রোকন্ট্রোলার-স্পেসিফিক জগতে যায় — চিপের ভেতরের পেরিফেরাল রেজিস্টার, এমবেডেড C, রিয়েল-টাইম কনস্ট্রেইন্ট, এবং শেষে IoT — এমন বিষয় যা সাধারণ CPU আর্কিটেকচার কোর্স কভার করে না।

৩ · একটি সত্যিকারের সিমুলেশন — একই কাজ, দুই ডিজাইন

ধরা যাক কাজটি হলো একটি সাধারণ "LED ব্লিংক" ডিভাইস তৈরি করা। নিচে দুটো ডিজাইন সিমুলেট করা হয়েছে — একটি মাইক্রোকন্ট্রোলার-ভিত্তিক (সব একটি চিপে), আরেকটি মাইক্রোপ্রসেসর-ভিত্তিক (আলাদা আলাদা চিপ, বাসের মাধ্যমে যুক্ত) — এবং প্রতিটি ডিজাইনে সত্যিই কতগুলো আলাদা ফিজিক্যাল কম্পোনেন্ট লাগে তা গণনা করে দেখা হচ্ছে।

Python
class MicrocontrollerSystem:
    # একটি চিপে CPU + Flash + SRAM + GPIO -- সব ইন্টিগ্রেটেড
    def __init__(self):
        self.flash = {}
        self.sram = {}
        self.gpio_state = {}
        self.components = ["মাইক্রোকন্ট্রোলার IC (CPU+Flash+SRAM+GPIO একসাথে)"]

    def load_program(self, name, code):
        self.flash[name] = code

    def blink_led(self, pin, times):
        log = []
        for _ in range(times):
            self.gpio_state[pin] = 1
            log.append(f"pin{pin}=HIGH")
            self.gpio_state[pin] = 0
            log.append(f"pin{pin}=LOW")
        return log


class MicroprocessorSystem:
    # CPU একা -- Flash, RAM, GPIO সবই আলাদা বাহ্যিক চিপ, বাসের মাধ্যমে যুক্ত
    def __init__(self):
        self.components = [
            "CPU IC (শুধু প্রসেসিং কোর)",
            "বাহ্যিক Flash/ROM চিপ (প্রোগ্রাম মেমরির জন্য)",
            "বাহ্যিক RAM চিপ (ডেটা মেমরির জন্য)",
            "বাহ্যিক GPIO এক্সপ্যান্ডার চিপ (I/O পিনের জন্য)",
            "মেমরি-বাস কন্ট্রোলার / গ্লু লজিক",
        ]


mcu = MicrocontrollerSystem()
mcu.load_program("blink", "while True: toggle(pin13)")
blink_log = mcu.blink_led(13, 3)

print("মাইক্রোকন্ট্রোলার-ভিত্তিক 'LED ব্লিংক' ডিজাইনে প্রয়োজনীয় কম্পোনেন্ট:")
for c in mcu.components:
    print(" -", c)
print(f"মোট আলাদা চিপ/কম্পোনেন্ট: {len(mcu.components)}")
print(f"GPIO টগল লগ: {blink_log}")

mpu = MicroprocessorSystem()
print("\nমাইক্রোপ্রসেসর-ভিত্তিক একই 'LED ব্লিংক' ডিজাইনে প্রয়োজনীয় কম্পোনেন্ট:")
for c in mpu.components:
    print(" -", c)
print(f"মোট আলাদা চিপ/কম্পোনেন্ট: {len(mpu.components)}")

print(f"\nমাইক্রোকন্ট্রোলার ডিজাইন মাইক্রোপ্রসেসর ডিজাইনের তুলনায় "
      f"{len(mpu.components) - len(mcu.components)}টি কম আলাদা চিপ ব্যবহার করে।")

    
লক্ষ্য করুন — দুটো ডিজাইনই একই কাজ (LED ব্লিংক করা) করতে সক্ষম, কিন্তু মাইক্রোকন্ট্রোলার ডিজাইনে লাগে মাত্র ১টি চিপ, আর মাইক্রোপ্রসেসর ডিজাইনে লাগে ৫টি আলাদা কম্পোনেন্ট। এটাই কেন বেশিরভাগ ছোট এমবেডেড ডিভাইসে (স্মার্ট বাল্ব, সেন্সর নোড, ফিটনেস ব্যান্ড) মাইক্রোকন্ট্রোলার ব্যবহৃত হয় — কম দাম, কম বোর্ড স্পেস, কম পাওয়ার। মাইক্রোপ্রসেসর তখনই দরকার হয় যখন কাজটি অনেক জটিল (যেমন একটি ফুল অপারেটিং সিস্টেম চালানো) — M2-এ এই স্থাপত্যগত পার্থক্য আরও গভীরে যাবে।
মূল কথা · Key takeaway

মাইক্রোপ্রসেসর = শুধু CPU, মাইক্রোকন্ট্রোলার = CPU+মেমরি+I/O এক চিপে, এমবেডেড সিস্টেম = একটি নির্দিষ্ট কাজে নিবেদিত কম্পিউটার সিস্টেম (সাধারণত মাইক্রোকন্ট্রোলার-ভিত্তিক), এবং IoT ডিভাইস = নেটওয়ার্ক-সংযুক্ত এমবেডেড সিস্টেম। এই কোর্স ধাপে ধাপে — চিপের ভেতরের পেরিফেরাল থেকে শুরু করে ওয়্যারলেস প্রোটোকল ও ক্লাউড ইন্টিগ্রেশন পর্যন্ত — এই পুরো স্ট্যাক শেখাবে।

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।

প্র ০১ একটি স্মার্টফোন কি মাইক্রোকন্ট্রোলার ভিত্তিক নাকি মাইক্রোপ্রসেসর ভিত্তিক বলে আপনার মনে হয়, এবং কেন?

স্মার্টফোনের মূল CPU (SoC-এর অংশ) একটি মাইক্রোপ্রসেসর-শ্রেণির কোর (যেমন ARM Cortex-A) — কারণ এটি একটি পূর্ণাঙ্গ অপারেটিং সিস্টেম (Android/iOS) চালায়, ব্রাউজার-গেম-ক্যামেরা সবকিছুর মতো বহুমুখী কাজ করে, এবং তার সাথে আলাদা বড় RAM ও স্টোরেজ চিপ যুক্ত থাকে — মাইক্রোকন্ট্রোলারের মতো "ছোট, নির্দিষ্ট কাজ, সব একচিপে" মডেল নয়। তবে স্মার্টফোনের ভেতরেই ছোট ছোট মাইক্রোকন্ট্রোলারও থাকে (যেমন ব্যাটারি ম্যানেজমেন্ট চিপ) — একটি আধুনিক ডিভাইসে দুটোই একসাথে থাকতে পারে।

প্র ০২ "সব এমবেডেড সিস্টেমই IoT ডিভাইস" — এই বাক্যটি কি সঠিক?

না, ভুল। একটি এমবেডেড সিস্টেম IoT ডিভাইস হওয়ার জন্য অবশ্যই নেটওয়ার্ক কানেক্টিভিটি থাকতে হবে (উপরের ডায়াগ্রামের ড্যাশড বক্স)। একটি সাধারণ ক্যালকুলেটর, একটি মাইক্রোওয়েভ ওভেনের কন্ট্রোল বোর্ড, বা একটি গাড়ির ইঞ্জিন কন্ট্রোল ইউনিট (নেটওয়ার্ক ছাড়া) — এরা সবাই এমবেডেড সিস্টেম, কিন্তু IoT ডিভাইস নয়। IoT হলো এমবেডেড সিস্টেমের একটি উপসেট, সমার্থক শব্দ নয়।

প্র ০৩ উপরের কোড সেলে MicroprocessorSystem-এর কম্পোনেন্ট লিস্টে "মেমরি-বাস কন্ট্রোলার / গ্লু লজিক" কেন আলাদা করে যোগ করা হয়েছে?

কারণ শুধু CPU, RAM ও ROM-এর আলাদা চিপ থাকলেই চলে না — এদের একে অপরের সাথে সঠিক টাইমিং ও ঠিকানায় সংযুক্ত করার জন্য অতিরিক্ত সাপোর্টিং সার্কিট্রি (যাকে সাধারণত "গ্লু লজিক" বলা হয়) লাগে। এই বাস্তবতাটিই দেখায় কেন মাইক্রোপ্রসেসর-ভিত্তিক ডিজাইন শুধু চিপ সংখ্যায় নয়, বোর্ড ডিজাইনের জটিলতাতেও এগিয়ে — মাইক্রোকন্ট্রোলার এই পুরো সমস্যাটাই এড়িয়ে যায় কারণ সবকিছু একটি সিলিকনেই ইন্টারকানেক্টেড।

অনুশীলন

  1. চিন্তা করুন: উপরের কোড সেলে mcu.blink_led(13, 5) কল করলে blink_log-এ কতগুলো এন্ট্রি থাকবে বলে আপনার ধারণা?

    প্রতিবার লুপে দুটো এন্ট্রি যোগ হয় (একটি HIGH, একটি LOW), আর লুপ times=5 বার চলে — তাই মোট $5 \times 2 = 10$টি এন্ট্রি থাকবে।

  2. পরীক্ষা করুন: উপরের কোড সেলে MicroprocessorSystem-এর components লিস্টে একটি নতুন লাইন যোগ করুন — "পাওয়ার রেগুলেটর IC (একাধিক ভোল্টেজ রেইলের জন্য)" — এবং Run চেপে দেখুন মোট কম্পোনেন্ট সংখ্যা ও পার্থক্যের সংখ্যা কীভাবে বদলায়।

    নতুন লাইন যোগ করলে mpu.components-এর দৈর্ঘ্য ৫ থেকে ৬ হবে, তাই আউটপুটে "মোট আলাদা চিপ/কম্পোনেন্ট: ৬" দেখাবে, এবং শেষ লাইনের পার্থক্য "৪টি কম" থেকে "৫টি কম" হয়ে যাবে — বাস্তবেও একটি সত্যিকারের মাইক্রোপ্রসেসর বোর্ডে প্রায়ই একাধিক পাওয়ার রেইলের জন্য আলাদা রেগুলেটর সত্যিই লাগে, যা মাইক্রোকন্ট্রোলার বোর্ডে সাধারণত অনেক সরল থাকে।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

  • কোর্সের সম্পূর্ণ সিলেবাস দেখুন ৫৭টি পাঠ মাইক্রোপ্রসেসর আর্কিটেকচার, এমবেডেড C, GPIO, টাইমার/PWM/ADC, সিরিয়াল প্রোটোকল, RTOS, সেন্সর/অ্যাকচুয়েটর, IoT আর্কিটেকচার, ওয়্যারলেস প্রোটোকল, MQTT/CoAP ও IoT সিকিউরিটি — বাকি পাঠগুলো শীঘ্রই যুক্ত হবে।
  • Computer Architecture & Digital Logic কোর্স সহোদর কোর্স CPU/ISA/পাইপলাইনিং/ক্যাশের ভিত্তি সেই কোর্সেই তৈরি হয়েছে — এই কোর্স মাইক্রোকন্ট্রোলার-স্পেসিফিক জগতে গভীরে যায়।
  • সব Courses দেখুন ABCL TECH C, C++, Python, Java, JavaScript, DSA, DBMS, Discrete Mathematics, System Design, Cybersecurity, Cloud Computing & DevOps, Computer Networks, Operating Systems, Computer Architecture, Design and Analysis of Algorithms ও আরও অনেক কোর্স — সব এক জায়গায়।
কোর্সে ফিরে যান
Microprocessors, Embedded Systems & IoT — সব পাঠ