কমিউনিকেশনে DSP — মডুলেশনের ভিত্তি
এই পাঠে যা শিখবেন
- কেন কমিউনিকেশন সিস্টেমে একটি সিগন্যালকে একটি উচ্চতর ক্যারিয়ার ফ্রিকোয়েন্সিতে "মডুলেট" করা হয়
- অ্যামপ্লিচুড মডুলেশন (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 গণনা করা হচ্ছে।
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$ মিলে যাচ্ছে।
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 সরাসরি মডুলেশন/ডিমডুলেশনের কেন্দ্রীয় অংশ) — এই সবকিছুই এই পাঠের "স্পেকট্রামে ক্যারিয়ার ও সাইডব্যান্ড শনাক্ত করা" ধারণার সরাসরি সম্প্রসারণ, শুধু অনেক বড় স্কেলে ও বাস্তব নয়েজ/চ্যানেল-বিকৃতির উপস্থিতিতে।
অনুশীলন
-
চিন্তা করুন: যদি মেসেজ ফ্রিকোয়েন্সি $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$।
-
পরীক্ষা করুন: উপরের কোড সেলে
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, এবং আরও অনেক কোর্স — সব এক জায়গায়।