পাঠ ৫৪ · ৫৭-এর মধ্যে · মডিউল ১২
Home / Courses / Digital Signal Processing / কমিউনিকেশন

কমিউনিকেশনে DSP — মডুলেশনের ভিত্তি

DSP in communications — modulation basics
১০ মিনিট পড়া মধ্যম · Intermediate Python কোডসহ সম্পূর্ণ বাংলায়

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

  • কেন কমিউনিকেশন সিস্টেমে একটি সিগন্যালকে একটি উচ্চতর ক্যারিয়ার ফ্রিকোয়েন্সিতে "মডুলেট" করা হয়
  • অ্যামপ্লিচুড মডুলেশন (AM)-এর গাণিতিক সংজ্ঞা ও একটি সিন্থেটিক উদাহরণ তৈরি করা
  • DFT ব্যবহার করে একটি মডুলেটেড সিগন্যালের ক্যারিয়ার ও সাইডব্যান্ড সত্যিকারের গণনা দিয়ে শনাক্ত করা
  • মডুলেশন কীভাবে DSP-এর ফ্রিকোয়েন্সি-ডোমেইন টুলকিটের (DFT/FFT, ফিল্টার) সাথে সরাসরি সংযুক্ত তার একটি সাধারণ চিত্র

১ · কেন মডুলেশন দরকার

একটি মানুষের কণ্ঠস্বর বা অডিও সিগন্যালের বেশিরভাগ শক্তি তুলনামূলক নিম্ন ফ্রিকোয়েন্সিতে থাকে (কয়েকশ Hz থেকে কয়েক kHz)। কিন্তু এই নিম্ন-ফ্রিকোয়েন্সি সিগন্যাল সরাসরি বেতার তরঙ্গ হিসেবে দক্ষতার সাথে পাঠানো কঠিন — ব্যবহারিক আকারের অ্যান্টেনা তৈরি করতে এবং একই মাধ্যমে (বাতাসে) একাধিক সিগন্যালকে ওভারল্যাপ ছাড়া পাঠাতে (ফ্রিকোয়েন্সি-ডিভিশন মাল্টিপ্লেক্সিংএকাধিক সিগন্যালকে ভিন্ন ভিন্ন ক্যারিয়ার ফ্রিকোয়েন্সিতে বসিয়ে একই মাধ্যমে (যেমন বাতাসে) একসাথে পাঠানো — যেমন ভিন্ন ভিন্ন FM রেডিও স্টেশন।) দরকার হয় উচ্চতর ফ্রিকোয়েন্সি। মডুলেশন এই সমস্যার সমাধান — নিম্ন-ফ্রিকোয়েন্সি "মেসেজ" সিগন্যালকে একটি উচ্চ-ফ্রিকোয়েন্সি "ক্যারিয়ার" তরঙ্গের কোনো একটি বৈশিষ্ট্য (প্রশস্ততা, ফ্রিকোয়েন্সি, বা ফেজ) পরিবর্তন করে "বহন" করানো হয়। এটি একটি সুপ্রতিষ্ঠিত কমিউনিকেশন-ইঞ্জিনিয়ারিং টেক্সটবুক নীতি।

ক্যারিয়ার
একটি উচ্চ-ফ্রিকোয়েন্সি সাইন-তরঙ্গ, যা প্রকৃত তথ্য বহন করার "বাহন" — একা এতে কোনো তথ্য নেই।
মেসেজ (বেসব্যান্ড)
প্রকৃত তথ্য বহনকারী নিম্ন-ফ্রিকোয়েন্সি সিগন্যাল — এই পাঠে একটি সরল সাইন-তরঙ্গ দিয়ে সরলীকৃত।
সম্পূর্ণ সিন্থেটিক ডেমো
এই পাঠের ক্যারিয়ার, মেসেজ ও মডুলেটেড সিগন্যাল কোডে জেনারেট করা, কোনো বাস্তব ট্রান্সমিশন নয়।

২ · অ্যামপ্লিচুড মডুলেশন (AM)

সবচেয়ে সরল মডুলেশন স্কিম — অ্যামপ্লিচুড মডুলেশন (AM) — ক্যারিয়ারের প্রশস্ততাকে মেসেজ সিগন্যাল অনুযায়ী পরিবর্তন করে:

$$s(t) = \big(1 + m \cdot x(t)\big)\cos(2\pi f_c t)$$

যেখানে $x(t)$ মেসেজ সিগন্যাল, $f_c$ ক্যারিয়ার ফ্রিকোয়েন্সি, আর $m$ মডুলেশন ইনডেক্স (মেসেজের প্রভাব কতটা গভীর তা নিয়ন্ত্রণ করে)। নিচে $f_c = 100$ Hz, মেসেজ $f_m = 10$ Hz (একটি সরল কোসাইন তরঙ্গ দিয়ে সরলীকৃত), $m = 0.5$ — সম্পূর্ণ সিন্থেটিক, শিক্ষামূলক মান — দিয়ে সিগন্যাল তৈরি ও তার DFT গণনা করা হচ্ছে।

Python
import math, cmath

fs = 500.0
N = 100
fc = 100.0     # ক্যারিয়ার ফ্রিকোয়েন্সি (Hz)
fm = 10.0      # মেসেজ (বেসব্যান্ড) ফ্রিকোয়েন্সি (Hz)
m_idx = 0.5    # মডুলেশন ইনডেক্স

# *** সম্পূর্ণ সিন্থেটিক, শিক্ষামূলক সিগন্যাল -- কোনো বাস্তব ট্রান্সমিশন নয় ***
carrier = [math.cos(2 * math.pi * fc * n / fs) for n in range(N)]
message = [math.cos(2 * math.pi * fm * n / fs) for n in range(N)]
am_signal = [(1 + m_idx * message[n]) * carrier[n] for n in range(N)]

def dft_magnitude(x):
    n_samples = len(x)
    mags = []
    for k in range(n_samples):
        s = 0 + 0j
        for n in range(n_samples):
            s += x[n] * cmath.exp(-2j * math.pi * k * n / n_samples)
        mags.append(abs(s))
    return mags

mags = dft_magnitude(am_signal)

print("প্রথম ৬টি স্যাম্পল:", [round(v, 4) for v in am_signal[:6]])
print()
print(f"fs = {fs} Hz, N = {N} স্যাম্পল, রেজোলিউশন = {fs/N} Hz/bin")
print()
print(f"{'k':>3} | {'ফ্রিকোয়েন্সি (Hz)':>18} | {'|X[k]|':>10}")
for k in range(N // 2 + 1):
    if mags[k] > 1.0:
        print(f"{k:>3} | {k*fs/N:>18.2f} | {mags[k]:>10.3f}")

    

৩ · DFT দিয়ে সাইডব্যান্ড দেখা

ত্রিকোণমিতিক অভেদ ব্যবহার করে $s(t)$-কে খুলে লেখা যায়:

$$s(t) = \cos(2\pi f_c t) + \frac{m}{2}\cos\big(2\pi (f_c-f_m) t\big) + \frac{m}{2}\cos\big(2\pi (f_c+f_m) t\big)$$

অর্থাৎ তত্ত্বগতভাবে ঠিক তিনটি ফ্রিকোয়েন্সিতে শক্তি থাকা উচিত — ক্যারিয়ার $f_c$ (প্রশস্ততা ১), আর দুটি সাইডব্যান্ড $f_c-f_m$ ও $f_c+f_m$ (প্রতিটির প্রশস্ততা $m/2 = 0.25$)। উপরের কোড সেলের সত্যিকারের গণনা করা DFT ঠিক এটাই দেখাচ্ছে — k=18 (৯০ Hz) ও k=22 (১১০ Hz) বিনে ম্যাগনিটিউড ১২.৫০০, আর k=20 (১০০ Hz, ক্যারিয়ার) বিনে ম্যাগনিটিউড ৫০.০০০ — অনুপাত ঠিক $50 \times 0.25 = 12.5$ মিলে যাচ্ছে।

লক্ষ্য করুন সাইডব্যান্ডের ম্যাগনিটিউড-অনুপাত ($12.5/50 = 0.25$) ঠিক $m/2 = 0.5/2 = 0.25$-এর সমান — এটি কোনো কাকতালীয় মিল নয়, বরং ত্রিকোণমিতিক অভেদ থেকে সরাসরি প্রত্যাশিত ফলাফল, আর DFT সেই গাণিতিক গঠনটি সত্যিই স্পেকট্রামে "দেখতে" পারছে তা নিশ্চিত করছে। এটাই মূল কারণ কেন রিসিভার ডিজাইনাররা একটি মডুলেটেড সিগন্যালকে ফ্রিকোয়েন্সি-ডোমেইনে বিশ্লেষণ করেন — সাইডব্যান্ডের অবস্থান থেকেই মূল মেসেজ ফ্রিকোয়েন্সি পুনরুদ্ধার করা সম্ভব।
অন্যান্য মডুলেশন স্কিম · সাধারণ পরিচিতি

AM ছাড়াও ফ্রিকোয়েন্সি মডুলেশন (FM, ক্যারিয়ারের ফ্রিকোয়েন্সি বদলায়), অন-অফ কীয়িং (OOK/ASK, ডিজিটাল ১/০ অনুযায়ী ক্যারিয়ার চালু/বন্ধ), আর ডিজিটাল স্কিম যেমন QAM (প্রশস্ততা ও ফেজ উভয়ই এনকোড করে) ব্যাপকভাবে ব্যবহৃত হয় — এগুলো সাধারণ, সুপ্রতিষ্ঠিত কমিউনিকেশন-ইঞ্জিনিয়ারিং ধারণা। ডিমডুলেশন (রিসিভার প্রান্তে মূল মেসেজ পুনরুদ্ধার) প্রায়ই M11/L50-এর ম্যাচড ফিল্টারিং বা M7-M8-এর ফিল্টার ডিজাইনের কৌশল ব্যবহার করে, আর ডিজিটাল সিস্টেমে চ্যানেলের নয়েজ মোকাবেলায় M11-এর SNR ও পরিসংখ্যানগত সিগন্যাল-প্রসেসিং ধারণা কাজে লাগে। এই পাঠের সিন্থেটিক AM উদাহরণটি একটি সরলতম কেস মাত্র, বাস্তব সিস্টেমের নির্ভুল সংখ্যাসূচক আচরণ উপস্থাপন করার দাবি করে না।

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

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

প্র ০১ যদি মডুলেশন ইনডেক্স $m$ বাড়িয়ে ১.০ করা হতো (০.৫-এর বদলে), সাইডব্যান্ডের ম্যাগনিটিউড কত হতো বলে আপনার হিসেব বলে?

সাইডব্যান্ড প্রশস্ততা $m/2 = 1.0/2 = 0.5$, তাই DFT ম্যাগনিটিউড $0.5 \times 50 = 25.0$ (যেহেতু ক্যারিয়ারের নিজস্ব ম্যাগনিটিউড $N/2 = 50$)। ক্যারিয়ারের ম্যাগনিটিউড অপরিবর্তিত ৫০.০ থাকবে, কারণ সূত্রে ক্যারিয়ার-শব্দের সহগ সবসময় ১ — শুধু সাইডব্যান্ডই মডুলেশন ইনডেক্সের সাথে স্কেল করে।

প্র ০২ কোড সেলে fs = 500 Hz বেছে নেওয়া হয়েছে, আর সর্বোচ্চ ফ্রিকোয়েন্সি উপাদান ছিল $f_c+f_m = 110$ Hz। এই স্যাম্পল রেট কি নাইকুইস্ট শর্ত (M2-এ বিস্তারিত) পূরণ করে?

হ্যাঁ, স্বচ্ছন্দে — নাইকুইস্ট থিওরেম অনুযায়ী $f_s > 2 \times f_{max}$ দরকার, এখানে $2 \times 110 = 220$ Hz, আর আমাদের $f_s = 500$ Hz তার চেয়ে অনেক বেশি। এই কারণেই DFT-তে ৯০, ১০০, ১১০ Hz-এ পিক নির্ভুলভাবে দেখা গেছে — কোনো অ্যালিয়াসিং হয়নি (M1/L01, M2/L05-M06-এর ধারণা)।

প্র ০৩ এই সিন্থেটিক AM ডেমো সত্যিকারের রেডিও ট্রান্সমিশনের মতো নয় — বাস্তব কমিউনিকেশন সিস্টেমে DFT/FFT ঠিক কোথায় ব্যবহার হয়?

বাস্তব রিসিভারে DFT/FFT ব্যবহার হয় স্পেকট্রাম সেন্সিং (কোন ফ্রিকোয়েন্সি ব্যান্ড ব্যবহৃত হচ্ছে তা শনাক্ত করা), চ্যানেল ইকুয়ালাইজেশন (চ্যানেলের বিকৃতি ফ্রিকোয়েন্সি-ডোমেইনে সংশোধন করা সহজ), এবং OFDM-এর মতো আধুনিক ডিজিটাল স্কিমে (যেখানে FFT সরাসরি মডুলেশন/ডিমডুলেশনের কেন্দ্রীয় অংশ) — এই সবকিছুই এই পাঠের "স্পেকট্রামে ক্যারিয়ার ও সাইডব্যান্ড শনাক্ত করা" ধারণার সরাসরি সম্প্রসারণ, শুধু অনেক বড় স্কেলে ও বাস্তব নয়েজ/চ্যানেল-বিকৃতির উপস্থিতিতে।

অনুশীলন

  1. চিন্তা করুন: যদি মেসেজ ফ্রিকোয়েন্সি $f_m = 10$ Hz-এর বদলে $f_m = 25$ Hz করা হতো (ক্যারিয়ার ও রেজোলিউশন অপরিবর্তিত), সাইডব্যান্ড দুটো কোন বিন-এ ($k$) এবং কোন ফ্রিকোয়েন্সিতে দেখা যেত বলে মনে হয়?

    রেজোলিউশন $fs/N = 500/100 = 5$ Hz/bin। সাইডব্যান্ড ফ্রিকোয়েন্সি $f_c \pm f_m = 100 \pm 25 = 75$ ও $125$ Hz, অর্থাৎ বিন $k = 75/5 = 15$ ও $k = 125/5 = 25$।

  2. পরীক্ষা করুন: উপরের কোড সেলে fm = 10.0-কে fm = 25.0-এ বদলে Run চেপে আপনার হিসেব যাচাই করুন।

    রান করলে k=15 (৭৫ Hz) ও k=25 (১২৫ Hz) বিনে ম্যাগনিটিউড ১২.৫০০ দেখাবে (ঠিক আগের মতোই, কারণ $m$ অপরিবর্তিত), আর ক্যারিয়ার k=20 (১০০ Hz)-এ এখনও ৫০.০০০ — শুধু সাইডব্যান্ডের অবস্থান সরে গেছে, তাদের ম্যাগনিটিউড নয়, কারণ মডুলেশন ইনডেক্স অপরিবর্তিত।

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

  • কোর্সের সম্পূর্ণ সিলেবাস দেখুন ৫৭টি পাঠ স্যাম্পলিং, কনভোলিউশন, Z-ট্রান্সফর্ম, DTFT/DFT, FFT, FIR/IIR ফিল্টার ডিজাইন, মাল্টিরেট প্রসেসিং, স্পেকট্রাল এস্টিমেশন, র‍্যান্ডম সিগন্যাল প্রসেসিং, বাস্তব প্রয়োগ ও ক্যাপস্টোন।
  • Numerical Methods কোর্স সহোদর কোর্স সাধারণ সংখ্যাগত অ্যালগরিদম, রুট-ফাইন্ডিং, ইন্টিগ্রেশন ও ODE সলভিং-এর গভীর কভারেজ — এই কোর্স সেই একই "হাতে-লেখা" দর্শনের উপর সিগন্যাল-প্রসেসিং-নির্দিষ্ট দিকটি যোগ করে।
  • সব Courses দেখুন ABCL TECH C, C++, Python, Java, JavaScript, DSA, Machine Learning, Deep Learning, System Design, Cybersecurity, Cloud Computing & DevOps, এবং আরও অনেক কোর্স — সব এক জায়গায়।
আগের পাঠ
ইমেজ প্রসেসিং-এ DSP — 2D কনভোলিউশনের ভিত্তি