সরাসরি পর্বে যান
পর্ব ০৭ · ৬২-এর মধ্যে · মডিউল ২

Physical layer — সংকেত, encoding, bandwidth আর Nyquist-Shannon

The Physical Layer — Signals, Line Coding, Modulation, Bandwidth and the Nyquist–Shannon Limits

Taught in Bangla, this lesson covers the physical layer: analog and digital data and signals, amplitude, frequency, period, phase and wavelength, time and frequency domains with Fourier, attenuation, noise, decibels and SNR, baud versus bit rate, Nyquist and Shannon capacity with worked exam numericals, line coding (NRZ, Manchester, AMI, 4B/5B), ASK, FSK, PSK and QAM modulation, and PCM sampling and quantization.

এই পর্বে যা শিখবেন

  • Physical layer-এর দায়িত্ব, আর analog বনাম digital ডেটা ও সংকেতের চারটি সমন্বয়
  • Sine তরঙ্গের amplitude, frequency, period, phase, wavelength; Fourier-এর চোখে square wave
  • Attenuation, noise, dB আর SNR-এর অঙ্ক; baud বনাম bit rate
  • Nyquist আর Shannon সূত্রের যুক্তি আর পরীক্ষার ক্লাসিক অঙ্ক — ধাপে ধাপে
  • NRZ-L, NRZ-I, Manchester, differential Manchester, AMI, 4B/5B; ASK, FSK, PSK, QAM আর PCM

১ · Physical layer-এর কাজ — bit থেকে সংকেত

পর্ব ০৩-এ দেখেছেন, নেটওয়ার্ককে কয়েকটি স্তরে ভাগ করা হয়, আর প্রতিটি স্তর নিচের স্তরের সেবা নিয়ে ওপরের স্তরকে সেবা দেয়। সবচেয়ে নিচের স্তর — OSI মডেলের ১ নম্বর — হলো physical layer. ওপরের সব স্তর যত সুন্দর header-ই বানাক, শেষ পর্যন্ত একটি Ethernet frame বা Wi-Fi frame কিছু ০ আর ১-এর সারি মাত্র। তামার তার, কাচের fiber বা বাতাস ০ আর ১ চেনে না; চেনে শুধু ভোল্টেজ, আলো আর বেতার তরঙ্গ। Bit-কে এমন ভৌত signal-এ (সংকেতে) রূপ দেওয়া, আর অন্য প্রান্তে সংকেত থেকে আবার bit ফিরিয়ে আনা — এটাই physical layer-এর কাজ।

ধরুন রাতে নদীর এপারে আপনি, ওপারে আপনার বন্ধু — হাতে শুধু একটি টর্চ। কথা বলতে হলে আগে কয়েকটি বিষয়ে একমত হতে হবে: (১) টর্চ জ্বললে ১, নিভলে ০ — নাকি উল্টো? (২) প্রতিটি bit কতক্ষণ ধরে দেখাবেন — আধা সেকেন্ড, না এক সেকেন্ড? (৩) পাঁচ সেকেন্ড টর্চ নিভে থাকলে ওপারের বন্ধু কীভাবে গুনবেন ক’টি ০ গেল — তাঁর ঘড়ি আর আপনার ঘড়ি যদি একটু আলাদা চলে? (৪) কুয়াশা থাকলে আলো দুর্বল হয়ে যায়, আর পাশের নৌকার হারিকেনের আলো গুলিয়ে দিতে পারে। এই চারটি প্রশ্নই physical layer-এর চারটি মূল সমস্যা: encoding, bit-এর সময়, clock মেলানো (synchronization), আর দুর্বলতা ও noise.

আরও নির্দিষ্টভাবে, physical layer যে বিষয়গুলো ঠিক করে দেয়:

  • Bit-এর রূপ: কোন ভোল্টেজ, কোন আলোর তীব্রতা বা তরঙ্গের কোন অবস্থা মানে ০ আর কোনটি ১ (অংশ ৭ আর ৮)।
  • Data rate: প্রতি সেকেন্ডে কত bit — অর্থাৎ প্রতিটি bit কত সময় ধরে থাকে। ১০০ Mbps-এ প্রতিটি bit মাত্র ১০ ns.
  • Synchronization: প্রেরক আর প্রাপকের ঘড়ি একই তালে চলা, যাতে প্রাপক ঠিক মুহূর্তে সংকেত “পড়ে”।
  • মাধ্যম আর সংযোগকারী: কোন তার, কোন connector, কত দূর পর্যন্ত — এগুলো পর্ব ০৮-এর বিষয়।
  • দিক: একমুখী, পালাক্রমে দুইমুখী (half-duplex) নাকি একসাথে দুইমুখী (full-duplex).

Repeater আর hub দুর্বল সংকেত নতুন করে তৈরি করে সামনে পাঠায়; modem bit-কে ফোন লাইন বা কেবলের উপযোগী তরঙ্গে রূপ দেয়; আপনার ল্যাপটপের NIC-এর ভেতরে একটি আলাদা “PHY” চিপ এই কাজটুকুই করে। ঠিকানা দেখে পাঠানো শুরু হয় data link স্তর থেকে (পর্ব ১২)।

২ · Analog আর digital — ডেটা আর সংকেত দুটোই

“Analog” আর “digital” শব্দ দুটি দুই জায়গায় বসে — ডেটা-র ক্ষেত্রে আর সংকেত-এর ক্ষেত্রে। এই পার্থক্যটি পরিষ্কার না হলে পুরো পর্বটিই গুলিয়ে যায়।

  • Analog ডেটা ধারাবাহিক — যেকোনো মান নিতে পারে। আপনার কণ্ঠস্বরের চাপ, ঘরের তাপমাত্রা, পুরোনো ঘড়ির কাঁটা।
  • Digital ডেটা নির্দিষ্ট কিছু মানের — কম্পিউটারের ফাইল, এই লেখার প্রতিটি অক্ষর, bKash-এর লেনদেনের রেকর্ড।
  • Analog signal সময়ের সাথে মসৃণভাবে বদলায় আর একটি পরিসরের ভেতরে অসীম সংখ্যক মান নিতে পারে — যেমন sine তরঙ্গ।
  • Digital signal অল্প কয়েকটি নির্দিষ্ট স্তরের (level) মধ্যে লাফিয়ে লাফিয়ে বদলায় — যেমন +৫ V আর ০ V, বা চারটি ভিন্ন ভোল্টেজ।

ডেটা আর সংকেত স্বাধীনভাবে বাছা যায়, তাই চারটি সমন্বয় হয় — আর প্রতিটির জন্য আলাদা কৌশল:

ডেটা → সংকেতকৌশলের নামদৈনন্দিন উদাহরণএই পর্বে
Digital → digitalLine codingঅফিসের Ethernet তারে bit-এর ভোল্টেজঅংশ ৭
Digital → analogDigital modulation (ASK, FSK, PSK, QAM)Wi-Fi, ৪G/৫G, পুরোনো dial-up modemঅংশ ৮
Analog → digitalPCM (sampling + quantization)মোবাইলে কথা বলা, ভয়েস রেকর্ডঅংশ ৯
Analog → analogAnalog modulation (AM, FM)FM রেডিও, পুরোনো টিভি সম্প্রচারসংক্ষেপে

Digital সংকেতের বড় সুবিধা হলো পুনর্গঠন: পথে কিছুটা noise মিশলেও প্রাপক শুধু ঠিক করে “এটা high না low?” — তারপর একদম পরিষ্কার নতুন সংকেত বানিয়ে সামনে পাঠাতে পারে। Analog সংকেতে noise একবার মিশলে আর আলাদা করা যায় না — পুরোনো দূরপাল্লার ফোনকল এজন্যই ঘষা ঘষা শোনাত।

৩ · Periodic সংকেতের পাঁচ বৈশিষ্ট্য

যে সংকেত একটি নির্দিষ্ট সময় পরপর হুবহু নিজেকে পুনরাবৃত্তি করে, তাকে বলে periodic signal. সবচেয়ে মৌলিক periodic সংকেত হলো sine তরঙ্গ। একে পুরোপুরি বর্ণনা করতে তিনটি সংখ্যাই যথেষ্ট:

s(t) = A · sin(২π f t + φ)
  • Amplitude (A) — তরঙ্গের সর্বোচ্চ উচ্চতা; বৈদ্যুতিক সংকেতে ভোল্টে মাপা হয়। টর্চের উদাহরণে আলোর উজ্জ্বলতা।
  • Frequency (f) — প্রতি সেকেন্ডে কতবার পুনরাবৃত্তি হয়; একক hertz (Hz). বাংলাদেশের বিদ্যুৎ সরবরাহ ৫০ Hz — সেকেন্ডে ৫০ বার দিক বদলায়।
  • Period (T) — একবার পুনরাবৃত্তিতে কত সময়: T = ১/f. ৫০ Hz-এর period = ১/৫০ s = ২০ ms. উল্টো দিকে, period ১ µs হলে frequency ১ MHz.
  • Phase (φ) — সময় শূন্যে তরঙ্গটি তার চক্রের কোন জায়গায় আছে; ডিগ্রি বা radian-এ মাপা। এক-চতুর্থাংশ period সরানো মানে ৯০°, অর্ধেক মানে ১৮০° — তখন তরঙ্গটি উল্টে যায়।
  • Wavelength (λ) — এক period-এ সংকেত কত দূরত্ব এগোয়: λ = (মাধ্যমে সংকেতের গতি) / f. বাতাসে ২.৪ GHz Wi-Fi তরঙ্গের λ = ৩ × ১০৮ ÷ ২.৪ × ১০৯ = ১২.৫ cm; ৫ GHz-এর λ = ৬ cm. Antenna-র আকার wavelength-এর সাথে মিলিয়ে বানানো হয় — তাই Wi-Fi-র antenna ছোট।

Amplitude, period আর phase

Two sine waves with the same amplitude and frequency; the dashed one is shifted by 90°

A T = 1/f φ = 90° φ = 0° volt t
ছবি ৭.১ — নীল তরঙ্গ শূন্য থেকে শুরু (φ = ০°); কমলা তরঙ্গ সর্বোচ্চ বিন্দু থেকে শুরু (φ = ৯০°)। দুটির amplitude আর period একই। Phase-এর এই পার্থক্যই PSK আর QAM-এর ভিত্তি (অংশ ৮)।
PeriodFrequencyকোথায় দেখা যায়
২০ ms৫০ Hzবিদ্যুতের লাইন
১ ms১ kHz (১০৩ Hz)মানুষের কণ্ঠের একটি সুর
১০ ns১০০ MHz (১০৮ Hz)FM রেডিওর পরিসরে (৮৮–১০৮ MHz)
০.৪১৭ ns২.৪ GHz (২.৪ × ১০৯ Hz)Wi-Fi, Bluetooth, মাইক্রোওয়েভ ওভেন

৪ · Time domain, frequency domain আর Fourier

একটি সংকেতকে দুইভাবে আঁকা যায়। Time domain-এ x-অক্ষে সময়, y-অক্ষে মান — oscilloscope-এর পর্দায় যেমন দেখায়। Frequency domain-এ x-অক্ষে frequency, y-অক্ষে সেই frequency-র উপাদান কতটা শক্তিশালী — FM রেডিওর dial বা মোবাইলের equalizer অ্যাপের বার যেমন। একটি বিশুদ্ধ sine তরঙ্গ time domain-এ অনন্ত ঢেউ, কিন্তু frequency domain-এ মাত্র একটি দাগ।

উনিশ শতকের শুরুতে ফরাসি গণিতবিদ Joseph Fourier তাপ-প্রবাহ নিয়ে কাজ করতে গিয়ে একটি অসাধারণ ধারণা দেন: যেকোনো periodic সংকেতকে (যুক্তিসংগত শর্তে) বিভিন্ন frequency-র sine তরঙ্গের যোগফল হিসেবে লেখা যায়। এই যোগফলকে বলে Fourier series; মূল frequency f-এর পূর্ণ গুণিতক (২f, ৩f, …) উপাদানগুলোকে বলে harmonic. নেটওয়ার্কের জন্য সবচেয়ে গুরুত্বপূর্ণ উদাহরণ হলো square wave — কারণ ১০১০১০… bit-এর সারি তারে ঠিক square wave-ই দেখায়। +১ আর −১-এর মধ্যে লাফানো square wave-এর Fourier series:

x(t) = (৪/π) · [ sin(ωt) + sin(৩ωt)/৩ + sin(৫ωt)/৫ + … ]

শুধু বিজোড় harmonic, আর n-তম harmonic-এর amplitude ৪/(nπ) — যত ওপরে, তত ছোট। প্রতিটি harmonic কতটা শক্তি বহন করে, আর কয়েকটি যোগ করলে কতটা square wave-এর মতো দেখায়, নিচের simulator তা ছাপায়:

// A square wave (+1 / -1, frequency f) as a sum of sine waves (Fourier series):
// x(t) = (4/pi) * [ sin(wt) + sin(3wt)/3 + sin(5wt)/5 + ... ]   (odd n only)
const amp = (n) => 4 / (Math.PI * n);           // amplitude of harmonic n
console.log("harmonic  freq   amplitude  power share  cumulative");
let cum = 0;
for (let n = 1; n <= 9; n += 2) {
  const share = (amp(n) ** 2 / 2) * 100;          // a sine of amplitude A has power A^2/2
  cum += share;                                   // the square wave's total power = 1
  console.log(`   ${n}      ${n}f`.padEnd(15) + amp(n).toFixed(3).padStart(8) +
    (share.toFixed(2) + "%").padStart(12) + (cum.toFixed(2) + "%").padStart(12));
}
// Partial sums: add harmonics 1, 3, 5 ... up to N and look at a few instants.
const S = (N, x) => {                             // x = t / T (fraction of a period)
  let s = 0;
  for (let n = 1; n <= N; n += 2) s += amp(n) * Math.sin(2 * Math.PI * n * x);
  return s;
};
const xs = [0.02, 0.05, 0.125, 0.25, 0.75];
console.log("\nup to n   " + xs.map((x) => ("t=" + x + "T").padStart(9)).join("") + "   peak");
for (const N of [1, 3, 5, 9, 49]) {
  let peak = 0;
  for (let i = 1; i < 5000; i++) peak = Math.max(peak, S(N, i / 10000));
  console.log(String(N).padEnd(10) + xs.map((x) => S(N, x).toFixed(3).padStart(9)).join("") +
    peak.toFixed(3).padStart(7));
}
console.log("ideal     " + xs.map((x) => (x < 0.5 ? "1.000" : "-1.000").padStart(9)).join(""));

আউটপুট:

harmonic  freq   amplitude  power share  cumulative
   1      1f      1.273      81.06%      81.06%
   3      3f      0.424       9.01%      90.06%
   5      5f      0.255       3.24%      93.31%
   7      7f      0.182       1.65%      94.96%
   9      9f      0.141       1.00%      95.96%

up to n     t=0.02T  t=0.05T t=0.125T  t=0.25T  t=0.75T   peak
1             0.160    0.393    0.900    1.273   -1.273  1.273
3             0.316    0.737    1.200    0.849   -0.849  1.200
5             0.465    0.991    1.020    1.103   -1.103  1.188
9             0.734    1.182    0.992    1.063   -1.063  1.182
49            0.903    1.041    1.000    1.013   -1.013  1.179
ideal         1.000    1.000    1.000    1.000   -1.000

প্রথম টেবিল — শক্তি কোথায়: amplitude A-র sine তরঙ্গের গড় শক্তি A²/২, আর ±১ square wave-এর মোট শক্তি ১. তাই মূল frequency f (১ম harmonic) একাই বহন করে ৮১.০৬% শক্তি; ৩য় harmonic যোগ করলে ৯০.০৬%, ৫ম পর্যন্ত ৯৩.৩১%. বাকি অসীম সংখ্যক harmonic মিলে মাত্র কয়েক শতাংশ — কিন্তু সেই অংশটুকুই কোণাগুলো ধারালো করে।

দ্বিতীয় টেবিল — আংশিক যোগফল: শুধু ১ম harmonic নিলে t = ০.২৫T-তে মান ১.২৭৩ (আদর্শ ১.০০০) — একটি মসৃণ ঢেউ মাত্র। ৩য় যোগ হলে ০.৮৪৯, ৫ম পর্যন্ত ১.১০৩, ৪৯ পর্যন্ত ১.০১৩ — আদর্শের কাছে আসছে। তবে খেয়াল করুন শেষ কলাম peak: যত harmonic-ই যোগ করুন, কোণার কাছে চূড়া ১.১৭৯-এর নিচে নামে না। লাফের (২ একক) প্রায় ৯% এই বাড়তি উচ্চতাকে বলে Gibbs phenomenon — সীমিত সংখ্যক sine দিয়ে হঠাৎ লাফ পুরোপুরি আঁকা যায় না।

নেটওয়ার্কের শিক্ষা: চ্যানেল শুধু f থেকে ৫f পার হতে দিলেও সংকেত একটু গোলগাল হয়, কিন্তু high আর low আলাদা থাকে — প্রাপক bit চিনতে পারে।

Bandwidth (Hz) বনাম bit rate (bps) — সাবধান!

একটি composite সংকেতে যে frequency-গুলো আছে, তাদের সর্বোচ্চ আর সর্বনিম্নের পার্থক্যকে বলে সংকেতের bandwidth. একইভাবে একটি চ্যানেল (তার, বেতারের ব্যান্ড) যে পরিসরের frequency খুব বেশি না কমিয়ে পার হতে দেয়, সেটিই চ্যানেলের bandwidth — একক Hz. যেমন পুরোনো টেলিফোন লাইন মোটামুটি ৩০০ থেকে ৩,৪০০ Hz পার হতে দেয়: bandwidth ≈ ৩,১০০ Hz; অঙ্কে সাধারণত ৩,০০০ Hz ধরা হয়।

অন্যদিকে পর্ব ০৫-এ “bandwidth” বলতে বুঝিয়েছি link-এর সর্বোচ্চ data rate — একক bps. দৈনন্দিন কথায় আর ISP-র বিজ্ঞাপনে এই দ্বিতীয় অর্থই চলে। দুটি অর্থ সম্পর্কিত, কিন্তু এক নয়: একটি bit rate, অন্যটি frequency-র পরিসর। ওপরের Fourier-এর হিসাব দুটিকে জোড়ে: N bps-এ ১০১০… পাঠালে প্রতি দুই bit-এ এক period, তাই মূল frequency N/২ Hz.

  • উদাহরণ: ১ Mbps-এ ১০১০… পাঠাতে মূল frequency ৫০০ kHz. শুধু ১ম harmonic রাখলে চ্যানেলের অন্তত ৫০০ kHz bandwidth লাগে; ৩য় আর ৫ম harmonic-ও রাখতে চাইলে ২.৫ MHz পর্যন্ত (৫ × ৫০০ kHz).
  • অর্থাৎ bandwidth বেশি → দ্রুত বদলানো সংকেত পার হয় → bit rate বাড়ানো যায়। কতটা বাড়ানো যায়, তার সঠিক উত্তর দেয় অংশ ৬-এর Nyquist আর Shannon.

প্রচলিত ভুল: “৩,০০০ Hz bandwidth মানে ৩,০০০ bps” — না! একই ৩,০০০ Hz লাইনে চার স্তরের সংকেতে noise ছাড়া ১২,০০০ bps পাঠানো সম্ভব, আবার খুব noise থাকলে প্রায় শূন্য। পরীক্ষায় প্রশ্নে “bandwidth” দেখলে প্রথমে দেখুন একক Hz না bps — সেটিই বলে দেবে কোন অর্থে।

৫ · সংকেত দুর্বল হয় — attenuation, distortion, noise আর dB

তারে বা বাতাসে চলতে চলতে সংকেতের তিন রকম ক্ষতি হয়। তিনটি আলাদা করে চেনা জরুরি, কারণ প্রতিটির প্রতিকার আলাদা।

(ক) Attenuation আর decibel

Attenuation মানে শক্তি হারানো — তারের রোধে কিছু শক্তি তাপ হয়ে যায়, বেতার তরঙ্গ চারদিকে ছড়িয়ে পাতলা হয়। প্রতিকার: পথে amplifier বা repeater বসানো। শক্তি কতটা কমল বা বাড়ল, তা মাপা হয় decibel (dB) এককে:

dB = ১০ log১০(P২ / P১)

এখানে P১ শুরুর শক্তি, P২ শেষের। ঋণাত্মক dB মানে ক্ষতি, ধনাত্মক মানে লাভ। লগারিদমে ধারাবাহিক অংশের গুণফল যোগফল হয়ে যায় — হিসাব সহজ।

  • উদাহরণ ১: ১০ mW সংকেত তার পেরিয়ে ৫ mW হলো। ১০ log১০(৫/১০) = ১০ × (−০.৩০১) = −৩.০১ dB. অর্থাৎ “−৩ dB” মানে প্রায় অর্ধেক শক্তি — মুখস্থ রাখার মতো সংখ্যা।
  • উদাহরণ ২: একটি amplifier ১ mW-কে ১০০ mW করে: ১০ log১০(১০০) = +২০ dB.
  • উদাহরণ ৩ (ধারাবাহিক অংশ): সংকেত তিনটি অংশ পার হয় — তার (−৩ dB), amplifier (+৭ dB), আবার তার (−৩ dB). মোট = −৩ + ৭ − ৩ = +১ dB. শুরুতে ২ mW থাকলে শেষে ২ × ১০০.১ ≈ ২.৫২ mW. গুণ-ভাগের বদলে শুধু যোগ — এটাই dB-এর জাদু।
  • উদাহরণ ৪: ভালো single-mode fiber-এ ১,৫৫০ nm আলোর ক্ষতি সাধারণত প্রায় ০.২ dB/km. ১০০ km-এ −২০ dB, অর্থাৎ শক্তি ১০−২ = ১%-এ নামে — তাই দূরপাল্লার fiber-এ নির্দিষ্ট দূরত্ব পরপর optical amplifier বসে।

অনেক সময় শক্তিকে ১ mW-এর তুলনায় dB-তে বলা হয় — এর নাম dBm: PdBm = ১০ log১০(P / ১ mW). ১০০ mW = ২০ dBm. আপনার ফোনের Wi-Fi সেটিংসে যে “−৭০ dBm” দেখেন, তা ১০−৭ mW = ০.১ nW — router-এর পাঠানো শক্তির কোটি ভাগের এক ভাগেরও কম! তবু ফোন সেটি পড়তে পারে। (ভোল্টেজের অনুপাতের জন্য সূত্রে ২০ log১০ বসে, কারণ শক্তি ভোল্টেজের বর্গের সমানুপাতিক।)

(খ) Distortion

Distortion মানে সংকেতের আকার বিকৃত হওয়া। অংশ ৪-এ দেখেছেন, একটি square wave অনেক frequency-র যোগফল। মাধ্যমে প্রতিটি frequency যদি সামান্য আলাদা গতিতে চলে বা আলাদা পরিমাণে দুর্বল হয়, ওপারে পৌঁছে সেগুলোর phase আর অনুপাত বদলে যায় — যোগফল আর আগের আকারে থাকে না, একটি bit পাশের bit-এর ঘাড়ে গিয়ে পড়ে। প্রতিকার: প্রাপকের দিকে “equalizer”.

(গ) Noise আর SNR

Noise হলো সংকেতের সাথে মিশে যাওয়া অনাকাঙ্ক্ষিত শক্তি। প্রধান ধরন: thermal noise (ইলেকট্রনের এলোমেলো নড়াচড়া — কখনো পুরো দূর করা যায় না), induced noise (মোটর, বিদ্যুতের লাইন), crosstalk (পাশের তারের সংকেত) আর impulse noise (বজ্রপাতের মতো হঠাৎ ধাক্কা)।

গুলিস্তানের মোড়ে দাঁড়িয়ে রাস্তার ওপারে বন্ধুকে ডাকছেন। আপনার গলার জোর হলো signal, বাস-রিকশার হর্ন হলো noise. বন্ধু শুনবেন কি না, তা আপনার গলার জোরের ওপর একা নির্ভর করে না — নির্ভর করে অনুপাতের ওপর। মধ্যরাতে ফিসফিস করেও শোনা যায়; দুপুরে চিৎকারও হারিয়ে যায়।

এই অনুপাতের নামই SNR (signal-to-noise ratio):

SNR = Psignal / Pnoise   ·   SNRdB = ১০ log১০ SNR

উদাহরণ: সংকেতের শক্তি ১০ mW, noise ১ µW. SNR = ১০−২ ÷ ১০−৬ = ১০,০০০; SNRdB = ১০ × ৪ = ৪০ dB. উল্টো দিকে, SNRdB = ৩৬ হলে SNR = ১০৩.৬ ≈ ৩,৯৮১. কয়েকটি জোড়া মনে রাখলে ক্যালকুলেটর ছাড়াই আন্দাজ করতে পারবেন:

dB৩১০২০৩০৩৫৪০
শক্তির অনুপাত≈ ২১০১০০১,০০০≈ ৩,১৬২১০,০০০
মূল ধারণা

প্রতি ১০ dB-এ অনুপাত ১০ গুণ, প্রতি ৩ dB-এ প্রায় দ্বিগুণ। আর সূত্রে (যেমন Shannon-এ) SNR বসাতে হয় অনুপাত হিসেবে, dB হিসেবে নয় — পরীক্ষায় সবচেয়ে বেশি নম্বর কাটা যায় এই এক ভুলে।

৬ · Baud, bit rate আর চ্যানেলের সর্বোচ্চ গতি — Nyquist আর Shannon

Symbol, baud আর bit rate

প্রেরক তারে যে ক্ষুদ্রতম একক পাঠায় — একটি নির্দিষ্ট ভোল্টেজ কিছুক্ষণ, বা নির্দিষ্ট amplitude-phase-এর একটি তরঙ্গাংশ — তাকে বলে symbol বা signal element. প্রতি সেকেন্ডে কতগুলো symbol যায়, তা baud rate (একক baud). সংকেত যদি L-টি আলাদা স্তর নিতে পারে, প্রতিটি symbol বহন করে log২L bit:

bit rate N = baud S × log২L

উদাহরণ: একটি সংকেত প্রতি symbol-এ ৪ bit বহন করে (L = ১৬), আর প্রতি সেকেন্ডে ১,০০০ symbol পাঠায়। bit rate = ১,০০০ × ৪ = ৪,০০০ bps, কিন্তু baud মাত্র ১,০০০. দুই স্তরের সংকেতে (L = ২) baud আর bit rate সমান। চ্যানেলের bandwidth আসলে ঠিক করে baud-এর সীমা; bit rate বাড়ানো যায় প্রতি symbol-এ বেশি bit ভরে।

Nyquist — noise ছাড়া চ্যানেলের সীমা

১৯২৮ সালে বেল ল্যাবসের Harry Nyquist দেখান, B Hz bandwidth-এর একটি চ্যানেল দিয়ে প্রতি সেকেন্ডে সর্বোচ্চ ২B-টি স্বাধীন symbol পাঠানো যায়। যুক্তির মূল কথা: সবচেয়ে দ্রুত বদলানো symbol-সারি হলো high-low-high-low…; প্রতি দুই symbol-এ এক period, তাই এর মূল frequency S/২. চ্যানেল B-এর বেশি frequency পার হতে না দিলে এই মূল frequency-কেই অন্তত পার হতে হবে: S/২ ≤ B, অর্থাৎ S ≤ ২B. (অংশ ৪-এ দেখেছেন, শুধু মূল frequency পৌঁছালেও high আর low আলাদা চেনা যায়।) প্রতিটি symbol-এ log২L bit বসালে:

Nyquist bit rate = ২ × B × log২L
  • ৩,০০০ Hz লাইন, দুই স্তর (L = ২): ২ × ৩,০০০ × ১ = ৬,০০০ bps. চার স্তর (L = ৪): ২ × ৩,০০০ × ২ = ১২,০০০ bps.
  • উল্টো প্রশ্ন (ক্লাসিক অঙ্ক): ২০ kHz bandwidth-এর noise-হীন চ্যানেলে ২৬৫ kbps পাঠাতে কত স্তর লাগবে? ২৬৫,০০০ = ২ × ২০,০০০ × log২L → log২L = ৬.৬২৫ → L = ২৬.৬২৫ ≈ ৯৮.৭. স্তরের সংখ্যা ২-এর ঘাত হলে সুবিধা, তাই হয় ১২৮ স্তর নিয়ে ২৮০ kbps, নয়তো ৬৪ স্তর নিয়ে ২৪০ kbps-এ সন্তুষ্ট থাকতে হবে।

তাহলে L বাড়াতে থাকলেই তো অসীম গতি! সমস্যা হলো noise: স্তর যত বেশি, পাশাপাশি দুই স্তরের পার্থক্য তত সূক্ষ্ম, আর সামান্য noise-এই একটি স্তর অন্যটি বলে ভুল হয়। Nyquist-এর সূত্র noise নিয়ে কিছু বলে না — সেই প্রশ্নের উত্তর দেন Shannon.

Shannon — noise-সহ চ্যানেলের চূড়ান্ত সীমা

১৯৪৮ সালে Claude Shannon “A Mathematical Theory of Communication” প্রবন্ধে প্রমাণ করেন, noise-যুক্ত চ্যানেলের একটি সর্বোচ্চ ক্ষমতা আছে, যাকে বলে Shannon capacity:

C = B × log২(১ + SNR)  bps

যুক্তির স্বজ্ঞা (প্রমাণ নয়, কিন্তু খাতায় লেখার মতো): noise-এর গড় শক্তি N আর সংকেতের S হলে প্রাপকের কাছে মোট শক্তি S + N. Amplitude শক্তির বর্গমূলের সমানুপাতিক, তাই প্রাপক মোট amplitude-এর পরিসরকে noise-এর amplitude-এর আকারের প্রায় √((S + N)/N) = √(১ + SNR)-টি আলাদা খোপে ভাগ করতে পারে — এর বেশি স্তর হলে noise এক খোপ থেকে আরেক খোপে ঠেলে দেবে। এই M = √(১ + SNR) স্তর Nyquist-এর সূত্রে বসালে:

২B × log২√(১ + SNR) = ২B × ½ log২(১ + SNR) = B log২(১ + SNR)

Shannon-এর আসল প্রমাণ আরও গভীর: তিনি দেখান, C-এর নিচে যেকোনো হারে পাঠানো সম্ভব এমনভাবে যাতে ভুলের সম্ভাবনা যত খুশি কমানো যায় (উপযুক্ত error-correcting code দিয়ে), আর C-এর ওপরে কোনো কৌশলেই তা সম্ভব নয়। সূত্রটি কোনো নির্দিষ্ট modulation বা code-এর কথা বলে না — এটি প্রকৃতির দেওয়া সীমা।

  • SNR = ০ (শুধু noise): C = B log২১ = ০ — যত bandwidth-ই থাকুক, কিছুই পাঠানো যায় না।
  • টেলিফোন লাইন (ক্লাসিক): B = ৩,০০০ Hz, SNR = ৩,১৬২ (≈ ৩৫ dB). C = ৩,০০০ × log২৩,১৬৩ = ৩,০০০ × ১১.৬২৭ ≈ ৩৪,৮৮১ bps ≈ ৩৪.৯ kbps. Dial-up modem-এর গতি কেন ৩৩.৬ kbps-এর আশেপাশে আটকে ছিল, এটাই তার ব্যাখ্যা (ভাবনার প্রশ্ন ১)।
  • দুই সূত্র একসাথে (নকশার পদ্ধতি): B = ১ MHz, SNR = ৬৩. Shannon: C = ১০৬ × log২৬৪ = ৬ Mbps — ঊর্ধ্বসীমা। নিরাপদ ব্যবধান রেখে ৪ Mbps বেছে নিলে Nyquist দিয়ে স্তর: ৪ × ১০৬ = ২ × ১০৬ × log২L → log২L = ২ → L = ৪. Shannon বলে “কত পর্যন্ত”, Nyquist বলে “কীভাবে”।

SNR প্রায়ই dB-তে দেওয়া থাকে। নিচের stepper-এ একটি dB-প্রশ্ন শুরু থেকে শেষ পর্যন্ত সমাধান করা হলো — B = ২ MHz, SNRdB = ৩৬ dB:

B = 2 MHz, SNR_dB = 36 dB
SNR (অনুপাত)
1 + SNR
log2(1 + SNR)
C = B × log2(1+SNR)
16 Mbps-এ স্তর L
  1. প্রশ্ন সাজানো। চ্যানেলের bandwidth B = ২ MHz = ২ × ১০৬ Hz, SNR = ৩৬ dB. প্রথম কাজ: dB-কে অনুপাতে বদলানো — Shannon-এর সূত্রে ৩৬ বসালে উত্তর পুরো ভুল হবে।
  2. dB থেকে অনুপাত। SNRdB = ১০ log১০SNR, তাই SNR = ১০SNRdB/১০ = ১০৩.৬ ≈ ৩,৯৮১.০৭. আন্দাজে মিলিয়ে দেখুন: ৩০ dB = ১,০০০, ৪০ dB = ১০,০০০ — ৩৬ dB এর মাঝামাঝি, ঠিক আছে।
  3. ১ যোগ। ১ + SNR = ৩,৯৮২.০৭. SNR বড় হলে এই ১ প্রায় কিছুই বদলায় না; কিন্তু SNR ছোট হলে (যেমন ১ বা ৩) এটি বাদ দিলে বড় ভুল হয়।
  4. log২ বের করা। ক্যালকুলেটরে সাধারণত log২ থাকে না, তাই log২x = log১০x ÷ log১০২ = ৩.৬০০১ ÷ ০.৩০১০৩ ≈ ১১.৯৫৯. অর্থাৎ প্রতি Hz-এ সর্বোচ্চ প্রায় ১২ bit/s.
  5. Capacity. C = ২ × ১০৬ × ১১.৯৫৯ ≈ ২৩.৯২ Mbps. এর বেশি গতি এই চ্যানেলে কোনো modulation বা code দিয়েই নির্ভরযোগ্যভাবে সম্ভব নয়।
  6. শর্টকাট দিয়ে যাচাই। SNR ≫ ১ হলে log২(১ + SNR) ≈ SNRdB ÷ ৩.০১, কারণ ১০ log১০২ ≈ ৩.০১. তাই C ≈ B × SNRdB/৩ = ২ MHz × ১২ = ২৪ Mbps — প্রায় হুবহু মিলেছে। পরীক্ষার হলে উত্তর যাচাইয়ের দারুণ উপায়।
  7. নকশা: Nyquist দিয়ে স্তর। বাস্তবে capacity-র পুরোটা নেওয়া হয় না; ধরুন লক্ষ্য ১৬ Mbps. ২ × B × log২L = ১৬ × ১০৬ → log২L = ৪ → L = ১৬ স্তর. যাচাই: ২ × ২ × ১০৬ × ৪ = ১৬ Mbps, যা ২৩.৯২ Mbps-এর নিচে — সম্ভব।

নিচের calculator একসাথে কয়েকটি চ্যানেলের Nyquist rate, Shannon capacity আর একটি লক্ষ্য-গতির জন্য প্রয়োজনীয় স্তর (L = ২R/২B) হিসাব করে:

// Nyquist (noiseless channel): R = 2 * B * log2(L)   [L signal levels]
// Shannon (noisy channel):     C = B * log2(1 + SNR) [SNR as a power ratio]
const kb = (bps) => (bps / 1e3).toFixed(2).padStart(10) + " kbps";
const cases = [
  // name,               B (Hz), SNR ratio,         L,  target bps
  ["Phone line",           3000, 3162,              2,  28800],
  ["Phone, 16 levels",     3000, 3162,              16, 33600],
  ["Noiseless 20 kHz",    20000, Infinity,          2,  265000],
  ["1 MHz, SNR 63",        1e6,  63,                4,  4e6],
  ["2 MHz, 36 dB",         2e6,  Math.pow(10, 3.6), 16, 16e6],
  ["Dead line, SNR 0",     3000, 0,                 2,  1000],
];
console.log("case".padEnd(20) + "B(Hz)".padStart(7) + "SNR dB".padStart(10) + "L".padStart(6) +
  "Nyquist".padStart(15) + "Shannon C".padStart(15) + "target".padStart(15) + "L needed".padStart(10));
for (const [name, B, snr, L, target] of cases) {
  const nyq = 2 * B * Math.log2(L);
  const C = B * Math.log2(1 + snr);
  const db = snr === Infinity ? "  inf" : snr === 0 ? " -inf" : (10 * Math.log10(snr)).toFixed(1).padStart(5);
  const need = Math.pow(2, target / (2 * B));        // L = 2^(R / 2B)
  const ok = target <= C ? "" : "  (above C!)";
  console.log(name.padEnd(20) + String(B).padStart(7) + db.padStart(10) +
    String(L).padStart(6) + kb(nyq) + (isFinite(C) ? kb(C) : "       no limit") +
    kb(target) + need.toFixed(1).padStart(10) + ok);
}

আউটপুট:

case                  B(Hz)    SNR dB     L        Nyquist      Shannon C         target  L needed
Phone line             3000      35.0     2      6.00 kbps     34.88 kbps     28.80 kbps      27.9
Phone, 16 levels       3000      35.0    16     24.00 kbps     34.88 kbps     33.60 kbps      48.5
Noiseless 20 kHz      20000       inf     2     40.00 kbps       no limit    265.00 kbps      98.7
1 MHz, SNR 63       1000000      18.0     4   4000.00 kbps   6000.00 kbps   4000.00 kbps       4.0
2 MHz, 36 dB        2000000      36.0    16  16000.00 kbps  23918.61 kbps  16000.00 kbps      16.0
Dead line, SNR 0       3000      -inf     2      6.00 kbps      0.00 kbps      1.00 kbps       1.1  (above C!)

সারি ধরে পড়ুন: টেলিফোন লাইনে দুই স্তরে Nyquist মাত্র ৬ kbps, কিন্তু Shannon-এর সীমা 34.88 kbps — অনেক জায়গা বাকি। ২৮.৮ kbps-এর জন্য লাগে প্রায় ২৮ স্তর, ৩৩.৬ kbps-এর জন্য প্রায় ৪৯ স্তর — দুটিই Shannon-সীমার নিচে, কিন্তু খুবই কাছে; এজন্যই dial-up modem ৩৩.৬ kbps-এ থেমেছিল। বাকি সারিগুলো ওপরের অঙ্কগুলোকেই নিশ্চিত করে: noise-হীন ২০ kHz-এ ৯৮.৭ স্তর, “1 MHz, SNR 63”-তে ঠিক ৬,০০০ kbps আর ৪ স্তর, stepper-এর ২৩,৯১৮.৬১ kbps আর ১৬ স্তর।

শেষ সারিটি একটি সতর্কবার্তা: SNR = ০ হলে C = ০, আর মাত্র ১ kbps-এর লক্ষ্যও (above C!) — Nyquist-এর হিসাবে ১.১ স্তরেই হয়ে যাওয়ার কথা, কিন্তু noise-এর সামনে Nyquist অর্থহীন। নিয়ম: Nyquist-এর উত্তর কখনো Shannon-এর C ছাড়াতে পারে না; ছাড়ালে সেই নকশা বাস্তবে ভুলে ভরে যাবে।

৭ · Line coding — তারে bit কেমন দেখাবে

Digital ডেটাকে digital সংকেতে রূপ দেওয়ার নিয়মকে বলে line coding. “১ = high, ০ = low” — এর চেয়ে সহজ কী হতে পারে? কিন্তু এই সরল নিয়মের তিনটি গভীর সমস্যা আছে, আর প্রতিটি line code এগুলোর কোনো না কোনোটি সমাধান করে:

  1. Synchronization (clock মেলানো): প্রাপক প্রতিটি bit-এর মাঝখানে সংকেত পড়ে। একটানা ১,০০০টি ০ এলে সংকেত পুরো সময় low — প্রাপক কি ঠিক ১,০০০ গুনবে, নাকি ঘড়ি সামান্য দ্রুত চলায় ১,০০১? সংকেতে নিয়মিত পরিবর্তন (transition) থাকলে প্রাপক প্রতিটি পরিবর্তনে নিজের ঘড়ি ঠিক করে নিতে পারে — একে বলে bit synchronization বা clock recovery. রোল কলে শিক্ষক প্রতিটি নাম ডাকলে গোনা সহজ; দশ মিনিট চুপ থাকলে কে কতবার উপস্থিত বলেছে গোনা অসম্ভব।
  2. DC component: সংকেতের গড় মান শূন্য না হলে (যেমন অনেকক্ষণ শুধু high) একটি স্থির ভোল্টেজ উপাদান তৈরি হয়। অনেক লাইন transformer বা capacitor দিয়ে যুক্ত থাকে, যা স্থির (০ Hz) উপাদান পার হতে দেয় না — সংকেত বিকৃত হয়। প্রাপক সাধারণত সাম্প্রতিক গড় দেখে high/low-এর সীমারেখা ঠিক করে; একটানা একই মান এলে সেই গড় সরে যায় — একে বলে baseline wandering.
  3. Bandwidth: বেশি transition মানে দ্রুত বদলানো সংকেত, অর্থাৎ বেশি bandwidth লাগে (অংশ ৪)। Clock-এর সুবিধা আর bandwidth-এর খরচ — এই দুইয়ের দাম-দরই line coding-এর গল্প।

প্রধান line code-গুলো

  • NRZ-L (Non-Return-to-Zero Level): ভোল্টেজের স্তরই bit — এখানে ১ = high, ০ = low ধরছি (কিছু পাঠ্যবই উল্টো রীতি ধরে, অঙ্কে রীতিটি লিখে দেবেন)। লম্বা ০ বা লম্বা ১-এর সারিতে কোনো transition নেই — দুই দিকেই synchronization-এর সমস্যা।
  • NRZ-I (NRZ Inverted): পরিবর্তনই bit — ১ এলে bit-এর শুরুতে স্তর উল্টায়, ০ এলে আগের স্তরেই থাকে। লম্বা ১-এর সারিতে প্রতি bit-এ transition, তাই সমস্যা অর্ধেক কমে; কিন্তু লম্বা ০-এর সারি এখনো সমতল।
  • Manchester: প্রতিটি bit-এর মাঝখানে একটি বাধ্যতামূলক transition — তার দিকই bit. এই পর্বে IEEE 802.3 (Ethernet)-এর রীতি: ০ = high থেকে low, ১ = low থেকে high. ১৯৪৯ সালে G. E. Thomas-এর প্রকাশিত মূল রীতি ঠিক উল্টো (০ = low থেকে high). দুটিই বইয়ে পাবেন — উত্তরে রীতিটি লিখে দিন।
  • Differential Manchester: মাঝখানে সবসময় transition (শুধু clock-এর জন্য); bit বোঝায় শুরুর জায়গা — ০ হলে bit-এর শুরুতে বাড়তি একটি transition, ১ হলে নেই। তারের দুই প্রান্ত উল্টে লাগালেও কাজ করে, কারণ দিক নয়, transition আছে কি না সেটাই তথ্য। IEEE 802.5 Token Ring এটি ব্যবহার করত।
  • AMI (Alternate Mark Inversion, bipolar): তিনটি স্তর — ০ = শূন্য ভোল্ট, ১ = পালাক্রমে +V আর −V. গড় শূন্য, তাই DC component নেই; তবে লম্বা ০-এর সারিতে clock হারায়। T1 লাইনে এর সাথে B8ZS (আটটি ০-কে একটি বিশেষ নকশায় বদলানো) আর E1-এ HDB3 ব্যবহার হয়।
  • 4B/5B: প্রতি ৪ bit ডেটাকে একটি টেবিল থেকে বাছা ৫ bit-এর code-এ বদলায়, যাতে পরপর তিনটির বেশি ০ কখনো না আসে; তারপর NRZ-I (100BASE-FX, FDDI) বা MLT-3 (100BASE-TX)-এর মতো code-এ পাঠায়। দাম ২৫% বাড়তি bit: ১০০ Mbps ডেটার জন্য তারে ১২৫ M symbol প্রতি সেকেন্ড। ১০০ Mbps Ethernet (100BASE-TX, 100BASE-FX) আর FDDI-তে ব্যবহৃত।

Bit-সারি 01001101-কে Manchester-এ বদলানো ধাপে ধাপে দেখুন। শুরুর আগে লাইন low ধরে নেওয়া হয়েছে; প্রতিটি bit দুই অর্ধেকে ভাগ, প্রতি অর্ধেক তিন অক্ষর চওড়া, আর উল্লম্ব দাগ মানে transition.

নিয়ম: 0 = high→low, 1 = low→high (মাঝখানে)
bit নম্বর · মান
প্রথম অর্ধেক → দ্বিতীয়
bit-এর শুরুতে transition?
মোট transition
  1. প্রস্তুতি। পাঠাতে হবে ৮টি bit: ০ ১ ০ ০ ১ ১ ০ ১. Manchester-এ প্রতিটি bit-এর মাঝখানে একটি transition থাকবেই; IEEE 802.3 রীতিতে ০ মানে high থেকে নামা, ১ মানে low থেকে ওঠা। লাইন এখন low.
  2. Bit ১ = ০ → high থেকে low. ০-এর প্রথম অর্ধেক high হতে হবে, কিন্তু লাইন low ছিল — তাই bit-এর শুরুতেই একবার উঠতে হলো, তারপর মাঝখানে নামা। মোট transition ২.
  3. Bit ২ = ১ → low থেকে high. আগের bit low-তে শেষ হয়েছে, আর ১ শুরু হয় low থেকেই — সীমানায় কোনো transition লাগল না। শুধু মাঝখানে ওঠা। মোট ৩.
  4. Bit ৩ = ০ → high থেকে low. আগের bit high-এ শেষ, ০ শুরু হয় high-এ — আবার সীমানায় কিছু নেই, মাঝখানে নামা। খেয়াল করুন: ০ আর ১ পালাক্রমে এলে সীমানায় transition লাগে না। মোট ৪.
  5. Bit ৪ = ০ → আবার ০. আগের ০ low-তে শেষ, কিন্তু নতুন ০-কে high থেকে শুরু করতে হবে — তাই সীমানায় একটি বাড়তি ওঠা, তারপর মাঝখানে নামা। একই bit পাশাপাশি এলে প্রতি bit-এ দুটি transition. মোট ৬.
  6. Bit ৫ = ১ → low থেকে high. সীমানা ফাঁকা (০-এর পরে ১); মাঝখানে ওঠা। মোট ৭.
  7. Bit ৬ = ১ → আবার ১. আগের ১ high-এ শেষ, নতুন ১-কে low থেকে শুরু করতে হবে — সীমানায় নামা, মাঝখানে ওঠা। মোট ৯.
  8. Bit ৭ = ০ → high থেকে low. সীমানা ফাঁকা (১-এর পরে ০); মাঝখানে নামা। মোট ১০.
  9. Bit ৮ = ১ → low থেকে high. সীমানা ফাঁকা; মাঝখানে ওঠা। মোট ১১.
  10. সারাংশ। ১১টি transition: ৮টি মাঝখানে (প্রতি bit-এ একটি — প্রাপকের ঘড়ি মেলানোর নিশ্চয়তা), ২টি সীমানায় (০০ আর ১১ জোড়ায়), ১টি শুরুতে। High আর low ঠিক অর্ধেক-অর্ধেক — DC component নেই। দাম: সবচেয়ে খারাপ ক্ষেত্রে প্রতি bit-এ দুটি transition, তাই NRZ-এর প্রায় দ্বিগুণ bandwidth.

এবার একই bit-সারি চারটি code-এ পাশাপাশি আঁকা যাক — নিচের প্রোগ্রাম প্রতিটি নিয়ম ঠিক ওপরের সংজ্ঞা অনুযায়ী প্রয়োগ করে, ASCII-তে তরঙ্গ আঁকে, আর গুনে দেখায় কতগুলো transition (edges) আর কত শতাংশ সময় high:

// Line coding: the same bits under four schemes, drawn as ASCII waveforms.
// Rules: NRZ-L 1 = high, 0 = low.  NRZ-I: 1 = flip at bit start, 0 = no flip.
// Manchester (IEEE 802.3): 0 = high->low, 1 = low->high (flip in mid-bit).
// Differential Manchester: always flip mid-bit; 0 = extra flip at bit start.
const bits = "01001101";
function halves(scheme) {            // two half-bit levels per bit (1 = high)
  let lvl = 0;                       // the line is low before the first bit
  const out = [];
  for (const b of bits) {
    if (scheme === "NRZ-L") out.push(+b, +b);
    if (scheme === "NRZ-I") { if (b === "1") lvl ^= 1; out.push(lvl, lvl); }
    if (scheme === "Manchester") out.push(b === "1" ? 0 : 1, b === "1" ? 1 : 0);
    if (scheme === "Diff-Manch") { if (b === "0") lvl ^= 1; out.push(lvl, lvl ^ 1); lvl ^= 1; }
  }
  return out;
}
function draw(name) {
  const h = halves(name);
  let top = "", bot = "", prev = 0, edges = 0;
  h.forEach((v) => {
    const edge = v !== prev;         // the level changes here -> vertical edge
    if (edge) edges++;
    top += edge ? " " : (v ? "_" : " ");
    bot += edge ? "|" : (v ? " " : "_");
    top += v ? "__" : "  ";
    bot += v ? "  " : "__";
    prev = v;
  });
  const high = h.filter((v) => v).length * 100 / h.length;
  console.log(name.padEnd(11) + top);
  console.log("".padEnd(11) + bot + `  edges=${edges} high=${high}%`);
}
console.log("bits".padEnd(11) + [...bits].map((b) => `  ${b}   `).join(""));
for (const s of ["NRZ-L", "NRZ-I", "Manchester", "Diff-Manch"]) draw(s);

আউটপুট:

bits         0     1     0     0     1     1     0     1   
NRZ-L             _____             ___________       _____
           ______|     |___________|           |_____|       edges=5 high=50%
NRZ-I             _________________       ___________      
           ______|                 |_____|           |_____  edges=4 high=62.5%
Manchester  __       _____    __       __    _____       __
           |  |_____|     |__|  |_____|  |__|     |_____|    edges=11 high=50%
Diff-Manch  __       __    __    _____       __    _____   
           |  |_____|  |__|  |__|     |_____|  |__|     |__  edges=12 high=50%

NRZ-L শুধু ৫টি transition — ০ ০ জোড়া আর ১ ১ জোড়ায় সংকেত সমতল। NRZ-I-এ ৪টি: প্রতিটি ১-এ উল্টানো, ০-তে কিছু নেই; ঘটনাক্রমে এই সারিতে high ৬২.৫% — গড় শূন্যের দিকে নেই, অর্থাৎ DC component. Manchester ১১টি transition (stepper-এর সাথে হুবহু মেলে), আর differential Manchester ১২টি: শুরুর ০-তে একটি, তিনটি ০ (৩য়, ৪র্থ, ৭ম bit)-এর শুরুতে তিনটি, আর আটটি মাঝখানের। দুটি Manchester-ধাঁচের code-এ high ঠিক ৫০% — bit-সারি যাই হোক, প্রতি bit-এ অর্ধেক high, অর্ধেক low.

bits বদলে "00000000" দিয়ে চালান — NRZ-L আর NRZ-I পুরো সমতল হয়ে যাবে (edges=0), কিন্তু Manchester-ধাঁচের দুটিতে ১৬টি করে transition (অনুশীলন ৩)।

Codeস্তরClock-এর সাহায্যDCBandwidthকোথায়
NRZ-L২দুর্বল (লম্বা ০ বা ১)আছেকমকম্পিউটারের ভেতরের বাস, সরল সিরিয়াল লাইন
NRZ-I২লম্বা ০-তে দুর্বলআছেকম4B/5B-এর সাথে (FDDI, 100BASE-FX), USB-তে এর একটি রূপ
Manchester২চমৎকার (প্রতি bit-এ)নেইপ্রায় দ্বিগুণ10 Mbps Ethernet (10BASE-T)
Differential Manchester২চমৎকারনেইপ্রায় দ্বিগুণToken Ring (IEEE 802.5)
AMI৩লম্বা ০-তে দুর্বলনেইকমT1/E1 লাইন (scrambling-সহ)
4B/5B + NRZ-I২ভালো (≤ ৩টি ০)কিছুটা১.২৫ গুণ100BASE-FX, FDDI (100BASE-TX-এ NRZ-I-এর জায়গায় MLT-3)

৮ · Digital থেকে analog — ASK, FSK, PSK আর QAM

বেতার চ্যানেল আর টেলিফোন লাইন হলো bandpass চ্যানেল: শুধু একটি নির্দিষ্ট frequency-পরিসর পার হতে দেয় (যেমন Wi-Fi-র একটি চ্যানেল ২.৪ GHz-এর কাছে ২০ MHz চওড়া)। Line coding-এর square wave-এর শক্তি ০ Hz-এর কাছে, তাই এখানে সরাসরি চলে না। সমাধান: একটি উঁচু frequency-র sine তরঙ্গ — carrier — নেওয়া, আর bit অনুযায়ী তার amplitude, frequency বা phase বদলানো। একে বলে modulation; ওপারে উল্টো কাজটি demodulation — দুটি মিলে modem-এর নাম।

  • ASK (Amplitude Shift Keying): bit অনুযায়ী amplitude বদলায়। সবচেয়ে সরল রূপ on-off keying — carrier আছে মানে ১, নেই মানে ০; অনেক fiber link-এ laser জ্বলা-নেভা ঠিক এভাবেই কাজ করে। Noise সরাসরি amplitude-এ লাগে, তাই একা ব্যবহারে দুর্বল।
  • FSK (Frequency Shift Keying): ০ আর ১-এর জন্য দুটি আলাদা frequency. Noise-এ তুলনামূলক শক্ত, কিন্তু বেশি bandwidth খায়। প্রথম দিকের ৩০০ bps modem (Bell 103) FSK ব্যবহার করত; Bluetooth আজও FSK-এর একটি রূপ (GFSK) ব্যবহার করে।
  • PSK (Phase Shift Keying): amplitude আর frequency স্থির, phase বদলায়। BPSK-তে ০° আর ১৮০° — প্রতি symbol-এ ১ bit. QPSK-তে চারটি phase (৪৫°, ১৩৫°, ২২৫°, ৩১৫°) — প্রতি symbol-এ ২ bit, একই bandwidth-এ দ্বিগুণ গতি।
  • QAM (Quadrature Amplitude Modulation): amplitude আর phase দুটোই একসাথে বদলায়। দুটি carrier নেওয়া হয় — cos আর sin, পরস্পর ৯০° সরানো (একে বলে “quadrature”); একটির amplitude-কে বলে I, অন্যটির Q. প্রতিটি symbol হলো (I, Q) সমতলের একটি বিন্দু।

সব সম্ভাব্য বিন্দুর ছবিকে বলে constellation diagram. M-টি বিন্দু থাকলে প্রতি symbol-এ log২M bit:

Modulationবিন্দু Mbit/symbolকোথায় দেখা যায়
BPSK২১দুর্বল সংকেতে Wi-Fi-র সবচেয়ে ধীর গতি, উপগ্রহ
QPSK৪২৪G/৫G-র দুর্বল সংকেত, উপগ্রহ টিভি
১৬-QAM১৬৪৪G, Wi-Fi-র মাঝারি গতি
৬৪-QAM৬৪৬৪G LTE, Wi-Fi 4 (802.11n)
২৫৬-QAM২৫৬৮Wi-Fi 5 (802.11ac), পরের LTE রিলিজ, ৫G
১০২৪-QAM / ৪০৯৬-QAM১০২৪ / ৪০৯৬১০ / ১২Wi-Fi 6 / Wi-Fi 7 — খুব কাছে, খুব পরিষ্কার সংকেতে

একটি ১৬-QAM symbol কীভাবে ৪টি bit বহন করে, ধাপে ধাপে দেখুন। এখানে I আর Q প্রত্যেকে চারটি মান নেয়: −৩, −১, +১, +৩; প্রথম দুই bit ঠিক করে I, শেষ দুই bit Q — Gray code অনুযায়ী (০০ → −৩, ০১ → −১, ১১ → +১, ১০ → +৩)।

Symbol: 1011
I-এর bit → I
Q-এর bit → Q
Amplitude √(I²+Q²)
Phase atan2(Q, I)
প্রাপকের সিদ্ধান্ত
  1. ৪টি bit এলো: ১০১১. ১৬-QAM-এ ১৬টি বিন্দু, প্রতিটি বিন্দু একটি ৪-bit সংখ্যার প্রতিনিধি। প্রতি সেকেন্ডে ১০ লক্ষ symbol (১ Mbaud) পাঠালে bit rate = ১ Mbaud × ৪ = ৪ Mbps.
  2. প্রথম দুই bit “১০” → I. Gray code টেবিলে ১০ মানে +৩ — অর্থাৎ cos carrier-এর amplitude +৩. Constellation-এ ডানদিকের শেষ কলাম (I=+3) বেছে নেওয়া হলো।
  3. শেষ দুই bit “১১” → Q. টেবিলে ১১ মানে +১ — sin carrier-এর amplitude. সারি Q=+1. কলাম আর সারি মিলে বিন্দু (+৩, +১)।
  4. বিন্দু থেকে amplitude আর phase. Amplitude = √(৩² + ১²) = √১০ ≈ ৩.১৬২; phase = atan2(১, ৩) ≈ ১৮.৪৩°. পুরো ১৬-QAM-এ amplitude মাত্র ৩ রকম (√২, √১০, √১৮) আর phase ১২ রকম — দুটি মিলে ১৬টি আলাদা symbol.
  5. তারে বা বাতাসে যা যায়। s(t) = ৩ cos(২πft) − ১ sin(২πft) = ৩.১৬২ cos(২πft + ১৮.৪৩°). অর্থাৎ এক symbol-সময় ধরে একটিমাত্র sine তরঙ্গাংশ — নির্দিষ্ট amplitude আর phase-এ। পরের symbol-এ পরের ৪ bit, নতুন বিন্দু।
  6. প্রাপক — noise-এর মধ্যে সিদ্ধান্ত। Noise-এর কারণে প্রাপক মাপল (২.৬, ১.৩); সবচেয়ে কাছের বিন্দু (+৩, +১), তাই ১০১১ — ঠিক। Noise বেশি হলে ধরুন (১.৮, ১.২) মাপা হলো; কাছের বিন্দু এখন (+১, +১) = ১১১১ — ভুল, কিন্তু মাত্র ১টি bit. Gray code-এর গুণ এটাই: পাশাপাশি দুই বিন্দুর মধ্যে শুধু ১টি bit আলাদা।

বিন্দু যত বেশি, প্রতি symbol-এ তত বেশি bit — কিন্তু একই শক্তিতে বিন্দুগুলো তত কাছাকাছি, আর noise-এ ভুলের ঝুঁকি তত বেশি। Shannon এখানেও বিচারক: বেশি bit/symbol-এর জন্য বেশি SNR লাগে। তাই Wi-Fi আর মোবাইল নেটওয়ার্ক adaptive modulation করে — router-এর কাছে পরিষ্কার সংকেতে ২৫৬ বা ১০২৪-QAM, দূরের ঘরে বা দেয়ালের ওপারে নেমে আসে ১৬-QAM, QPSK বা BPSK-তে। Linux-এ iw কমান্ড দিয়ে এটি নিজের চোখে দেখা যায় (Wi-Fi কার্ডযুক্ত সাধারণ Linux ল্যাপটপের উদাহরণ; সংখ্যা আপনার যন্ত্রে আলাদা হবে):

$ iw dev wlan0 link
Connected to 02:1a:2b:3c:4d:5e (on wlan0)
	SSID: Home-5G
	freq: 5180
	signal: -52 dBm
	tx bitrate: 866.7 MBit/s VHT-MCS 9 80MHz short GI VHT-NSS 2
$ ethtool eth0 | grep -E 'Speed|Duplex'
	Speed: 1000Mb/s
	Duplex: Full

এখানে signal: -52 dBm বেশ শক্তিশালী সংকেত (অংশ ৫), তাই কার্ড বেছেছে VHT-MCS 9 — 802.11ac-এর সর্বোচ্চ ধাপ, অর্থাৎ ২৫৬-QAM — ৮০ MHz চ্যানেলে দুটি আলাদা ডেটা-ধারায় (NSS 2). একই ঘর থেকে দূরে সরে গেলে signal −৭৫ dBm-এর দিকে নামবে, আর MCS নম্বরও নামবে। পুরোনো iwconfig কমান্ড (wireless-tools) এখন অপ্রচলিত; আধুনিক Linux-এ iw ব্যবহার করুন। Windows-এ মোটামুটি একই তথ্য দেয় netsh wlan show interfaces.

এক মাধ্যমে অনেক সংকেত: FM রেডিওর অনেক স্টেশন একসাথে বাতাসে চলে, কারণ প্রত্যেকের carrier frequency আলাদা — একে বলে FDM. আবার একই লাইন সময় ভাগ করে অনেকে ব্যবহার করতে পারে — TDM. এগুলো সবই multiplexing-এর রূপ, যার বিস্তারিত (fiber-এ WDM-সহ) পর্ব ০৮-এর বিষয়।

৯ · Analog থেকে digital — PCM: sampling, quantization আর encoding

মোবাইলে কথা বললে আপনার কণ্ঠস্বর (analog) কোথাও না কোথাও bit-এ রূপ নেয়। সবচেয়ে প্রচলিত পদ্ধতি PCM (Pulse Code Modulation) — তিনটি ধাপ:

  1. Sampling: নির্দিষ্ট সময় পরপর সংকেতের মান মাপা — প্রতি সেকেন্ডে fs বার।
  2. Quantization: প্রতিটি মাপা মানকে নির্দিষ্ট কয়েকটি স্তরের সবচেয়ে কাছেরটিতে বসানো। n bit ব্যবহার করলে L = ২n স্তর।
  3. Encoding: প্রতিটি স্তরের নম্বরকে n-bit binary সংখ্যায় লেখা। তারপর সেই bit-সারি line coding বা modulation দিয়ে পাঠানো হয়।

কত ঘন ঘন sample নিতে হবে? — Nyquist sampling theorem

Nyquist sampling theorem বলে: সংকেতের সর্বোচ্চ frequency fmax হলে মূল সংকেত নিখুঁতভাবে ফিরে পেতে sampling rate হতে হবে fs ≥ ২ × fmax. (এই তত্ত্ব Nyquist, Kotelnikov, Shannon প্রমুখের কাজ থেকে এসেছে; অংশ ৬-এর Nyquist bit rate-এর সাথে এর গাণিতিক আত্মীয়তা স্পষ্ট — দুটিতেই “২ × frequency”.) কম হারে sample নিলে উঁচু frequency নিচু frequency-র ছদ্মবেশে ধরা পড়ে — একে বলে aliasing. সিনেমায় দ্রুত ঘোরা গাড়ির চাকা উল্টো দিকে ঘুরছে মনে হওয়া এরই দৃশ্যমান রূপ। তাই sampling-এর আগে একটি filter দিয়ে fs/২-এর ওপরের frequency কেটে ফেলা হয়।

Quantization — একটি ছোট অঙ্ক

ধরুন সংকেতের পরিসর −১ V থেকে +১ V, আর ৩ bit ব্যবহার করছি: L = ২৩ = ৮ স্তর, প্রতি ধাপ Δ = ২ ÷ ৮ = ০.২৫ V. একটি sample-এর মান ০.৩৭ V. নিচ থেকে গুনলে খোপের নম্বর = ⌊(০.৩৭ + ১) ÷ ০.২৫⌋ = ⌊৫.৪৮⌋ = ৫ → binary 101. প্রাপক এটিকে খোপের মাঝখান −১ + ৫.৫ × ০.২৫ = ০.৩৭৫ V হিসেবে ফেরত বানায়; ভুল মাত্র ০.০০৫ V. এই অনিবার্য পার্থক্যকে বলে quantization noise. প্রতিটি বাড়তি bit স্তর দ্বিগুণ করে আর signal-to-quantization-noise ratio প্রায় ৬ dB বাড়ায়: পূর্ণ-পরিসরের sine-এর জন্য SQNR ≈ ৬.০২n + ১.৭৬ dB — ৮ bit-এ প্রায় ৪৯.৯ dB, ১৬ bit-এ প্রায় ৯৮.১ dB.

টেলিফোনের ৬৪ kbps আর CD-র ১,৪১১.২ kbps

  • টেলিফোন: কণ্ঠস্বরকে প্রায় ৩,৪০০ Hz-এর নিচে filter করা হয়; নিরাপদ ব্যবধান রেখে fmax = ৪ kHz ধরে fs = ২ × ৪,০০০ = ৮,০০০ sample/s. প্রতি sample ৮ bit → ৮,০০০ × ৮ = ৬৪,০০০ bps = ৬৪ kbps. এটিই ডিজিটাল টেলিফোন নেটওয়ার্কের একটি ভয়েস চ্যানেলের মৌলিক হার (DS0), আর ITU-T-র G.711 standard. সমান ধাপের বদলে লগারিদমিক ধাপ (উত্তর আমেরিকা ও জাপানে μ-law, অনেক অন্য দেশে A-law) ব্যবহার হয়, যাতে আস্তে কথা বললেও ভালো শোনায়।
  • অডিও CD: মানুষ মোটামুটি ২০ kHz পর্যন্ত শুনতে পায়; CD-তে fs = ৪৪.১ kHz, ১৬ bit, দুই চ্যানেল (stereo) → ৪৪,১০০ × ১৬ × ২ = ১৪,১১,২০০ bps ≈ ১.৪১ Mbps.

আরও গভীরে: বাস্তব Ethernet-এর প্রতিটি প্রজন্ম আলাদা line code বেছেছে: 10BASE-T-এ Manchester, 100BASE-TX-এ 4B/5B-এর পরে তিন-স্তরের MLT-3 (১২৫ Mbaud), 1000BASE-T-এ চার জোড়া তারে একসাথে পাঁচ-স্তরের PAM-5, আর 10 Gbps-এর অনেক রূপে 64B/66B — উদ্দেশ্য সবসময় কম bandwidth-এ বেশি bit, তবু যথেষ্ট transition. আধুনিক PHY শুধু “সংকেত বানায়” না: Wi-Fi আর ৪G/৫G ডেটাকে শত শত সরু sub-carrier-এ ভাগ করে প্রতিটিতে QAM চালায় (OFDM), আর LDPC-র মতো শক্তিশালী error-correcting code যোগ করে Shannon-সীমার কাছে পৌঁছায়। ৫G NR-এ ডেটার জন্য LDPC আর control তথ্যের জন্য polar code ব্যবহার হয়।

পরীক্ষা ও ইন্টারভিউতে এই বিষয়ে প্রায়ই যা জিজ্ঞেস করা হয়:

  • Baud rate আর bit rate-এর পার্থক্য? — Baud = প্রতি সেকেন্ডে symbol; bit rate = baud × log২L. ১৬-QAM-এ ২,৪০০ baud = ৯,৬০০ bps.
  • Nyquist আর Shannon-এর পার্থক্য? — Nyquist (২B log২L) noise-হীন চ্যানেলে স্তরের সংখ্যা থেকে গতি দেয়; Shannon (B log২(১+SNR)) noise-সহ চ্যানেলের চূড়ান্ত সীমা দেয়, স্তরের সংখ্যা নির্বিশেষে।
  • ৩,০০০ Hz লাইন, SNR ৩,১৬২ — capacity? — ৩,০০০ × log২৩,১৬৩ ≈ ৩৪.৯ kbps.
  • Manchester কেন self-clocking, দাম কী? — প্রতি bit-এর মাঝখানে transition থাকায় প্রাপক ঘড়ি মেলাতে পারে, DC-ও নেই; কিন্তু bandwidth প্রায় দ্বিগুণ লাগে।
  • টেলিফোনের PCM কেন ৬৪ kbps? — ৪ kHz-এর দ্বিগুণ = ৮,০০০ sample/s × ৮ bit.

১০ · AI-এর যুগে physical layer-এর অঙ্ক

“B = 3 kHz, SNR = 30 dB, capacity কত?” — AI মুহূর্তে উত্তর দেবে, কিন্তু তার ভুলগুলো খুব চেনা ধরনের:

AI-এর ভুলকেন ভুলকীভাবে ধরবেন
Shannon-এ SNR-এর জায়গায় সরাসরি dB বসানো (log২(১ + ৩০))সূত্রে অনুপাত লাগে; ৩০ dB = ১,০০০B × dB/৩ দিয়ে আন্দাজ মিলিয়ে দেখুন
log২-এর জায়গায় log১০ বা lnউত্তর ৩.৩২ বা ১.৪৪ গুণ ছোটপ্রতি Hz-এ কত bit/s এলো, ভেবে দেখুন
Hz আর bps গুলিয়ে ফেলা (“৩ kHz লাইন = ৩ kbps”)একটি frequency-পরিসর, অন্যটি গতিপ্রতিটি সংখ্যার একক লিখতে বলুন
Nyquist দিয়ে Shannon-সীমার বেশি গতি “সম্ভব” বলাNoise থাকলে C-ই চূড়ান্ত সীমাদুটি হিসাব পাশাপাশি করে তুলনা করুন
Manchester-এর রীতি না বলে আঁকা, বা Thomas আর IEEE মিশিয়ে ফেলাএকই bit-সারির তরঙ্গ উল্টে যায়রীতিটি স্পষ্ট লিখতে বলুন, প্রথম bit হাতে মিলান
Sampling rate fmax-এর সমান ধরা, বা bandwidth আর fmax গুলিয়ে ফেলালাগে ≥ ২ × fmaxটেলিফোনের ৮ kHz-এর সাথে মিলিয়ে দেখুন
পুরোনো কমান্ড (iwconfig, ifconfig) বা বানানো standard/RFC নম্বরআধুনিক Linux-এ iw, ip; নম্বর বানানো হতে পারেman iw, IEEE/ITU-র দলিল বা rfc-editor.org দেখুন

AI-কে physical layer-এর অঙ্ক দিলে অনুমান আর যাচাইয়ের শর্তসহ দিন:

নিচের data communication অঙ্কটি ধাপে ধাপে সমাধান করো। একটি চ্যানেলের bandwidth 4 kHz, SNR 30 dB. (ক) Shannon capacity কত? (খ) 24 kbps পাঠাতে Nyquist অনুযায়ী কত signal level লাগবে, আর সেটি কি capacity-র নিচে? নিয়ম: ১. dB থেকে অনুপাতে রূপান্তর আলাদা লাইনে দেখাও। ২. log2 কীভাবে হিসাব করেছ (log10 x / log10 2) দেখাও। ৩. প্রতিটি সংখ্যার একক লেখো — Hz, bps, dB আলাদা রাখো। ৪. শেষে sanity check দাও: C ≈ B × SNR_dB / 3 দিয়ে উত্তর মেলাও। ৫. কোনো standard বা RFC-র উল্লেখ করলে তার পুরো নাম দাও, নিশ্চিত না হলে বলো।

AI-এর উত্তর মানার আগে — চেকলিস্ট

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

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

প্র ০১Dial-up modem-এর গতি ১৯৯০-এর দশকে ৩৩.৬ kbps-এ এসে কেন থেমে গেল? তারপর “৫৬k” modem কীভাবে সেই সীমা পেরোল বলে মনে হলো?

১৯৯০-এর দশকে বাড়ি থেকে ইন্টারনেটে যাওয়ার প্রধান পথ ছিল টেলিফোন লাইন আর modem. গতি বাড়ছিল ধাপে ধাপে — ২,৪০০, ৯,৬০০, ১৪.৪ k, ২৮.৮ k — আর তারপর ITU-T-র V.34 standard-এ ৩৩.৬ kbps. সেখানে এসে ধারাবাহিক উন্নতি থেমে গেল। কারণটি প্রকৌশলের সীমাবদ্ধতা নয়, গণিতের: টেলিফোন নেটওয়ার্ক কণ্ঠস্বরের জন্য বানানো, তাই একটি ভয়েস চ্যানেলের bandwidth মোটামুটি ৩,০০০–৩,৪০০ Hz, আর ভালো লাইনে SNR ৩৫ dB-এর আশেপাশে। Shannon-এর সূত্র বসালে C ≈ ৩,০০০ × log২(৩,১৬৩) ≈ ৩৪.৯ kbps. অর্থাৎ V.34 Shannon-সীমার একেবারে কাছে পৌঁছে গিয়েছিল — উন্নত QAM constellation, trellis coding আর লাইন অনুযায়ী মানিয়ে নেওয়া (adaptive equalization) দিয়ে।

তাহলে ৫৬k কীভাবে এল? চাবিকাঠি হলো noise-এর উৎস চেনা। ততদিনে টেলিফোন কোম্পানির ভেতরের নেটওয়ার্ক digital হয়ে গেছে: আপনার বাড়ির তার analog, কিন্তু এক্সচেঞ্জে কণ্ঠস্বর ৮,০০০ sample/s × ৮ bit = ৬৪ kbps PCM-এ রূপ নেয় (অংশ ৯)। দুই প্রান্তেই analog modem থাকলে সংকেত দুইবার analog-digital রূপান্তর পেরোয়, আর quantization noise-ই SNR-কে প্রায় ৩৫ dB-এ বেঁধে রাখে। কিন্তু ISP-র modem যদি সরাসরি digital লাইনে যুক্ত থাকে, তাহলে ISP থেকে আপনার দিকে (downstream) পাঠানো সংকেত শুরু থেকেই PCM-এর স্তরগুলোর সাথে মিলিয়ে বানানো যায় — তখন quantization noise প্রায় থাকেই না। V.90 (১৯৯৮) এই কৌশলে downstream-এ তাত্ত্বিকভাবে ৫৬ kbps দেয়: প্রতি sample-এ ৭টি নির্ভরযোগ্য bit × ৮,০০০ = ৫৬,০০০. Upstream-এ (আপনার দিক থেকে) সেই সুবিধা নেই, তাই ৩৩.৬ k-ই থেকে যায়। বাস্তবে নিয়ন্ত্রক সংস্থার শক্তি-সীমা আর লাইনের মানের কারণে downstream সাধারণত এর চেয়ে কম পাওয়া যেত।

পরে DSL একই তামার তার থেকে কয়েক Mbps বের করল ভয়েস চ্যানেলের filter এড়িয়ে তারের কয়েক MHz bandwidth ব্যবহার করে — Shannon লঙ্ঘন হয়নি, B বড় হয়েছে।

মূল উপলব্ধি: Shannon-সীমা কোনো যন্ত্রের নয়, চ্যানেলের। সীমা পেরোতে হলে চ্যানেলটাই বদলাতে হয় — noise-এর উৎস সরিয়ে (V.90) বা bandwidth বাড়িয়ে (DSL).

প্র ০২Manchester এত চমৎকার clock দেয় — তাহলে দ্রুততর Ethernet কেন Manchester ছেড়ে 4B/5B, MLT-3, PAM-5 আর 64B/66B-এর দিকে গেল?

১৯৮০-এর দশকের 10 Mbps Ethernet Manchester বেছেছিল সঙ্গত কারণে: প্রতিটি bit-এর মাঝখানে transition থাকায় প্রাপক আলাদা clock তার ছাড়াই প্রেরকের তাল ধরে ফেলে, DC component নেই, আর সার্কিট সহজ। দাম ছিল bandwidth — সবচেয়ে খারাপ ক্ষেত্রে (একটানা ০ বা ১) প্রতি bit-এ দুটি transition, অর্থাৎ ১০ Mbps-এর জন্য তারে ১০ MHz-এর মৌলিক frequency. তখনকার তারের জন্য এটি সামলানো যেত।

কিন্তু ১০০ Mbps-এ একই কৌশল মানে ১০০ MHz-এর কাছাকাছি সংকেত — সাধারণ twisted-pair তারে attenuation আর crosstalk frequency-র সাথে দ্রুত বাড়ে, আর তার বাইরে বিকিরণ (electromagnetic interference)-এর নিয়মও আছে। তাই 100BASE-TX অন্য পথ নেয়: 4B/5B দিয়ে নিশ্চিত করে যে লম্বা ০-এর সারি আসবে না (clock-এর সমস্যা টেবিল দিয়ে সমাধান), খরচ মাত্র ২৫% বাড়তি bit — ১২৫ Mbaud. তারপর তিন-স্তরের MLT-3 সংকেত, যা ধীরে ধীরে চক্রাকারে স্তর বদলায়, ফলে মূল frequency আরও কমে যায়। Manchester-এর “১০০% বাড়তি”-র বদলে “২৫% বাড়তি” — এটাই ছিল বড় জয়।

1 Gbps-এ (1000BASE-T) একই চার জোড়া তার, আর পদ্ধতি আরও চতুর: চার জোড়াতেই একসাথে, দুই দিকেই (echo cancellation দিয়ে) পাঁচ-স্তরের PAM-5 — প্রতি জোড়ায় ১২৫ Mbaud, প্রতি symbol-এ গড়ে ২ bit ডেটা। এখানে আমরা Nyquist-এর শিক্ষাটি দেখি: baud বাড়ানো কঠিন হলে প্রতি symbol-এ bit বাড়ান। আর 10 Gbps-এর অনেক রূপে 64B/66B — ৬৪ bit ডেটায় মাত্র ২ bit বাড়তি (প্রায় ৩%), clock-এর জন্য transition আসে scrambling থেকে: ডেটাকে একটি নির্দিষ্ট ছদ্ম-এলোমেলো ক্রমের সাথে মিশিয়ে দেওয়া, যাতে লম্বা ০-এর সারি প্রায় অসম্ভব হয়।

ধারাটি স্পষ্ট: overhead ১০০% → ২৫% → প্রায় ৩%, আর স্তর ২ → ৩ → ৫ → ১৬ (10GBASE-T-এ PAM-16). চিপ সস্তা হয়েছে, তারের bandwidth সস্তা হয়নি।

মূল উপলব্ধি: Line coding-এর পছন্দ যুগের অর্থনীতি মেনে চলে। যখন সার্কিট দামি আর bandwidth সহজলভ্য, তখন Manchester; যখন সার্কিট সস্তা আর bandwidth-ই আসল সীমা, তখন বেশি স্তর আর কম overhead.

প্র ০৩Wi-Fi router “১০২৪-QAM সমর্থন করে” বলে বিজ্ঞাপন দেয় — তাহলে পাশের ঘরে গেলে গতি কেন অর্ধেকেরও কম হয়ে যায়?

১০২৪-QAM মানে প্রতি symbol-এ ১০ bit — ২৫৬-QAM-এর (৮ bit) চেয়ে ২৫% বেশি। কিন্তু constellation-এর বিন্দু এখন ১,০২৪টি। Transmitter-এর শক্তি সীমিত (নিয়ম আর ব্যাটারি দুটোই সীমা টানে), তাই একই সর্বোচ্চ amplitude-এর ভেতরে বেশি বিন্দু বসাতে হলে পাশাপাশি বিন্দুর দূরত্ব কমে — বর্গাকার QAM-এ প্রতি দিকে বিন্দু ১৬ থেকে ৩২ হলে দূরত্ব প্রায় অর্ধেক। প্রাপক বিন্দু চিনতে পারবে কেবল যদি noise সেই দূরত্বের চেয়ে অনেক ছোট থাকে। মোটামুটি নিয়ম হলো প্রতি bit/symbol বাড়াতে প্রায় ৩ dB বেশি SNR লাগে, তাই ১০২৪-QAM-এর জন্য খুব উঁচু SNR দরকার — সাধারণত router-এর একই ঘরে, কাছাকাছি, আর বাধা ছাড়া।

পাশের ঘরে যাওয়ার পথে দেয়াল (বিশেষত ইট-কংক্রিটের ঢালাই, যা বাংলাদেশের বাড়িতে সাধারণ) কয়েক dB থেকে দশ dB-এর বেশি পর্যন্ত attenuation যোগ করতে পারে; দূরত্ব বাড়লে বেতার সংকেত চারদিকে ছড়িয়ে আরও দুর্বল হয়। Noise কিন্তু কমে না — পাশের ফ্ল্যাটের Wi-Fi-ও একই চ্যানেলে শব্দ করে। ফলে SNR নামে, আর Wi-Fi কার্ড ও router নিজেরাই modulation-and-coding scheme (MCS) নামিয়ে আনে: ১০২৪-QAM → ২৫৬-QAM → ৬৪-QAM → ১৬-QAM → QPSK. সাথে error-correcting code-এর হারও বদলায় (৫/৬ থেকে ১/২ পর্যন্ত — অর্থাৎ পাঠানো bit-এর অর্ধেক পর্যন্ত শুধু সুরক্ষার জন্য)। এর সাথে ভুল হলে আবার পাঠানো আর একই চ্যানেলে অন্য যন্ত্রের সাথে পালাক্রমে কথা বলার খরচ (পর্ব ১৪) মিলিয়ে ব্যবহারযোগ্য গতি আরও কমে।

মোবাইল নেটওয়ার্কেও একই খেলা: মোবাইল টাওয়ারের কাছে ৪G/৫G উঁচু QAM দেয়, cell-এর কিনারায় নেমে আসে QPSK-তে — গতির পার্থক্য শুধু ভিড়ের নয়, পদার্থবিজ্ঞানেরও।

মূল উপলব্ধি: বিজ্ঞাপনের “সর্বোচ্চ গতি” আসলে সবচেয়ে ভালো SNR-এ সবচেয়ে উঁচু MCS-এর হিসাব। বাস্তব গতি ঠিক করে আপনার জায়গার SNR — Shannon-এর সূত্র প্রতিটি ঘরে আলাদা উত্তর দেয়। Router ঘরের মাঝখানে খোলা জায়গায় রাখাই অনেক সময় নতুন router কেনার চেয়ে বেশি কাজের।

প্র ০৪Shannon ১৯৪৮ সালে সীমা দেখালেন, কিন্তু সেখানে পৌঁছানোর পথ দেখালেন না। প্রকৌশলীদের সেই সীমার কাছে পৌঁছাতে প্রায় অর্ধশতাব্দী কেন লাগল?

Shannon-এর প্রমাণ ছিল এক অর্থে “অস্তিত্বের প্রমাণ”। তিনি দেখালেন, যদি অনেক লম্বা code-word এলোমেলোভাবে বেছে নেওয়া হয়, তাহলে গড়ে সেগুলো C-এর কাছাকাছি হারে প্রায় নির্ভুলভাবে তথ্য পৌঁছায় — অতএব অন্তত একটি ভালো code নিশ্চয়ই আছে। কিন্তু এলোমেলো code-এর decoding মানে প্রতিটি সম্ভাব্য code-word-এর সাথে মিলিয়ে দেখা, যার সংখ্যা code-এর দৈর্ঘ্যের সাথে সূচকীয় হারে বাড়ে। বাস্তবে চালানো অসম্ভব। তাই প্রশ্ন দাঁড়াল: এমন code কি আছে, যা সীমার কাছে যায় এবং দ্রুত decode করা যায়?

পরের কয়েক দশকে বীজগাণিতিক code এল — Hamming (১৯৫০; পর্ব ০৯-এ দেখবেন), Reed–Solomon (১৯৬০; CD, QR code, উপগ্রহে আজও), convolutional code আর Viterbi-র decoding পদ্ধতি (১৯৬৭)। এগুলো কার্যকর, কিন্তু Shannon-সীমা থেকে কয়েক dB দূরে থেকে যেত — অর্থাৎ একই নির্ভুলতার জন্য কয়েক গুণ বেশি শক্তি বা কম গতি। মহাকাশযানের মতো ক্ষেত্রে প্রতিটি dB-ই মূল্যবান।

১৯৯৩ সালে Claude Berrou, Alain Glavieux আর Punya Thitimajshima “turbo code” প্রকাশ করেন: দুটি সরল encoder-কে মাঝখানে bit-এর ক্রম এলোমেলো করে জুড়ে দেওয়া, আর প্রাপকে দুটি decoder বারবার একে অপরের সাথে “মতামত” বিনিময় করে। ফল Shannon-সীমার ১ dB-এরও কম দূরে — অনেকে প্রথমে বিশ্বাসই করতে চাননি। এর কিছু পরে গবেষকরা আবিষ্কার করলেন যে Robert Gallager ১৯৬০-এর দশকের শুরুতে তাঁর PhD গবেষণায় LDPC (low-density parity-check) code প্রস্তাব করেছিলেন, যা প্রায় একই রকম কাজ করে — কিন্তু তখনকার কম্পিউটারে চালানো অসম্ভব ছিল বলে প্রায় ভুলে যাওয়া হয়েছিল। ২০০৮–০৯ সালে Erdal Arıkan polar code দেখান, যা কিছু চ্যানেলে প্রমাণিতভাবে capacity-তে পৌঁছায়।

আজ এগুলো আমাদের পকেটে: ৩G/৪G-তে turbo code, Wi-Fi আর ৫G-র ডেটায় LDPC, ৫G-র control তথ্যে polar code, 10GBASE-T Ethernet-এ LDPC. প্রতিটি অগ্রগতি দেখায় যে তত্ত্ব কখনো কখনো প্রযুক্তির কয়েক দশক আগে হাঁটে।

মূল উপলব্ধি: একটি সীমা জানা আর সেখানে পৌঁছানো আলাদা সমস্যা। Shannon “কতটা” বলেছেন; “কীভাবে” খুঁজতে লেগেছে নতুন গণিত, আর সস্তা দ্রুত চিপ — যেগুলো ছাড়া ভালো code-ও কাগজে আটকে থাকে।

প্র ০৫অডিও CD-তে sampling rate কেন ঠিক ৪৪.১ kHz, ৪০ kHz নয়? আর নিয়মের কম হারে sample নিলে ঠিক কী ঘটে?

মানুষের কান মোটামুটি ২০ Hz থেকে ২০ kHz পর্যন্ত শোনে (বয়সের সাথে ওপরের সীমা কমে)। Nyquist sampling theorem অনুযায়ী ২০ kHz পর্যন্ত ধরতে লাগে অন্তত ৪০ kHz. কিন্তু “অন্তত” শব্দটি গুরুত্বপূর্ণ: sampling-এর আগে একটি anti-aliasing filter দিয়ে ২০ kHz-এর ওপরের সব frequency সরাতে হয়, আর বাস্তবের কোনো filter হঠাৎ খাড়া দেয়াল নয় — ২০ kHz থেকে কাটতে শুরু করে পুরো বন্ধ করতে কিছু পরিসর লাগে। ৪৪.১ kHz-এ fs/২ = ২২.০৫ kHz, তাই filter-এর হাতে ২০ থেকে ২২.০৫ kHz-এর একটি “transition band” থাকে।

ঠিক ৪৪,১০০ সংখ্যাটির পেছনে ইতিহাসও আছে। CD-র আগে digital audio রেকর্ড রাখা হতো ভিডিও টেপে, বিশেষ PCM adaptor দিয়ে — কারণ সাধারণ অডিও টেপ এত bit ধরতে পারত না। ভিডিওর প্রতিটি লাইনে কয়েকটি sample বসানো হতো, আর NTSC আর PAL দুই ভিডিও পদ্ধতিতেই মেলে এমন একটি হার হিসেবে ৪৪.১ kHz দাঁড়ায়। Sony আর Philips যখন CD-র standard ঠিক করে (১৯৮০ সালের দিকে), এই হারই গৃহীত হয় — যাতে সেই টেপে রেকর্ড করা master সরাসরি ব্যবহার করা যায়।

নিয়মের কম হারে sample নিলে কী হয়? ধরুন fs = ৮ kHz, আর সংকেতে ৫ kHz-এর একটি সুর আছে (filter না করা)। প্রাপক sample থেকে যে তরঙ্গ পুনর্গঠন করবে, তার frequency হবে ৮ − ৫ = ৩ kHz — একটি সম্পূর্ণ ভিন্ন সুর, যা মূল সংকেতে ছিলই না, আর এখন আসল ৩ kHz-এর সাথে মিশে আলাদা করা অসম্ভব। এটিই aliasing. সিনেমায় সেকেন্ডে ২৪টি ছবি নেওয়া হয়; গাড়ির চাকার স্পোক যদি দুই ছবির মাঝে প্রায় এক স্পোক-দূরত্ব ঘোরে, চোখে মনে হয় চাকা স্থির বা উল্টো দিকে ধীরে ঘুরছে। ছবিতে, শব্দে বা নেটওয়ার্কে — নিয়ম একই।

টেলিফোন এই কারণেই কণ্ঠস্বরকে ৩.৪ kHz-এর নিচে filter করে ৮ kHz-এ sample নেয়, তাই উঁচু frequency-র কিছু ধ্বনি ফোনে অস্পষ্ট শোনায়; আধুনিক VoLTE আর কল অ্যাপের wideband codec ১৬ kHz বা বেশি হারে sample নেয়।

মূল উপলব্ধি: Sampling theorem একটি সর্বনিম্ন সীমা দেয়, নকশা নয়। বাস্তব filter, পুরোনো যন্ত্রের সাথে মিল আর খরচ মিলে আসল সংখ্যা ঠিক হয় — আর সীমার নিচে নামলে ভুলটি এমনভাবে ঢোকে যে পরে আর ধরা যায় না।

অনুশীলন

খাতা-কলম আর ক্যালকুলেটর নিন — প্রতিটি সংখ্যার একক লিখে লিখে হিসাব করুন।

  1. হাতে হিসাব (Shannon + Nyquist): একটি চ্যানেলের bandwidth ৪ kHz, SNR ৩০ dB. (ক) Shannon capacity কত? (খ) Noise উপেক্ষা করে Nyquist অনুযায়ী ২৪ kbps পাঠাতে কত স্তর লাগবে? সেই গতি কি capacity-র নিচে?

    (ক) SNR = ১০৩০/১০ = ১,০০০. C = ৪,০০০ × log২(১,০০১) = ৪,০০০ × ৯.৯৬৭ ≈ ৩৯,৮৬৯ bps ≈ ৩৯.৯ kbps. শর্টকাটে যাচাই: B × dB/৩ = ৪,০০০ × ১০ = ৪০ kbps — মিলেছে। (খ) ২৪,০০০ = ২ × ৪,০০০ × log২L → log২L = ৩ → L = ৮ স্তর. ২৪ kbps < ৩৯.৯ kbps, তাই সম্ভব, আর হাতে বেশ খানিকটা ব্যবধানও থাকছে।

  2. হাতে আঁকুন: Bit-সারি 110010. লাইন শুরুতে low. (ক) NRZ-I-এ প্রতিটি bit-এর স্তর কী? (খ) Manchester (IEEE 802.3: ০ = high→low, ১ = low→high)-এ প্রতিটি অর্ধেকের স্তর লিখুন, আর মোট কয়টি transition?

    (ক) NRZ-I: ১ → উল্টে high; ১ → উল্টে low; ০ → low; ০ → low; ১ → উল্টে high; ০ → high. অর্থাৎ H L L L H H — মোট ৩টি transition. (খ) Manchester: ১ = LH, ১ = LH, ০ = HL, ০ = HL, ১ = LH, ০ = HL → LH LH HL HL LH HL. Transition: ৬টি মাঝখানে, আর সীমানায় শুধু ১১ আর ০০ জোড়ায় ২টি; শুরুতে লাইন low আর প্রথম অর্ধেকও low, তাই শুরুতে কিছু নেই — মোট ৮টি. যাচাই: line coding প্রোগ্রামে bits = "110010" দিলে NRZ-I-এর edges=3 আর Manchester-এর edges=8 আসে।

  3. আউটপুট অনুমান করুন: Line coding প্রোগ্রামে const bits = "00000000"; দিলে চারটি code-এর edges আর high কত ছাপা হবে? কোন code-এ প্রাপক clock হারাবে?

    NRZ-L: edges=0 high=0% — পুরো সময় low. NRZ-I: edges=0 high=0% — ০-তে উল্টানো নেই, তাই এটিও সমতল। Manchester: edges=16 high=50% — প্রতিটি ০ high থেকে শুরু হয়, তাই শুরুর ওঠা ১টি, মাঝখানে ৮টি, আর পাশাপাশি ০ ০-এর সাতটি সীমানায় ৭টি। Differential Manchester: edges=16 high=50% — প্রতিটি ০-এর শুরুতে ১টি আর মাঝখানে ১টি। NRZ-L আর NRZ-I-এ প্রাপক clock হারাবে আর DC-ও জমবে; এজন্যই 4B/5B-এর মতো code লম্বা ০-এর সারি আসতেই দেয় না।

  4. কোড লিখুন: একটি JavaScript ফাংশন pcmRate(fmax, bits, channels) লিখুন, যা Nyquist হারে sampling ধরে PCM bit rate (bps) আর আনুমানিক SQNR (৬.০২n + ১.৭৬ dB) ছাপায়। টেলিফোন (৪ kHz, ৮ bit, ১ চ্যানেল) আর CD-র মতো কিন্তু ঠিক Nyquist হারে (২০ kHz, ১৬ bit, ২ চ্যানেল) দিয়ে চালান।
    function pcmRate(fmax, bits, channels) {
      const fs = 2 * fmax;                        // Nyquist: at least twice f_max
      const rate = fs * bits * channels;          // bits per second
      const sqnr = 6.02 * bits + 1.76;            // full-scale sine, uniform steps
      console.log(`fs=${fs} Hz, rate=${rate} bps, SQNR~${sqnr.toFixed(1)} dB`);
    }
    pcmRate(4000, 8, 1);    // fs=8000 Hz, rate=64000 bps, SQNR~49.9 dB
    pcmRate(20000, 16, 2);  // fs=40000 Hz, rate=1280000 bps, SQNR~98.1 dB

    টেলিফোনে ৬৪ kbps — অংশ ৯-এর সাথে মেলে। ২০ kHz-এ ঠিক Nyquist হারে ১২,৮০,০০০ bps, আর আসল CD (৪৪.১ kHz) ১৪,১১,২০০ bps — পার্থক্যটুকু filter-এর জন্য রাখা বাড়তি ব্যবধান (ভাবনার প্রশ্ন ৫)।

নিজেকে যাচাই করুন

ভুল হলে কারণসহ ব্যাখ্যা পাবেন, আবার চেষ্টাও করতে পারবেন।

ক্রমমোবাইলে বলা কথা digital হয়ে তারে যাওয়া পর্যন্ত — ধাপগুলো সঠিক ক্রমে সাজান (▲▼ চেপে সরান)

  1. Filter দিয়ে প্রায় ৪ kHz-এর ওপরের frequency সরানো
  2. প্রতি সেকেন্ডে ৮,০০০ বার মান মাপা (sampling)
  3. প্রতিটি মানকে সবচেয়ে কাছের স্তরে বসানো (quantization)
  4. স্তরের নম্বরকে ৮-bit binary-তে লেখা (encoding)
  5. Bit-সারিকে line coding বা modulation দিয়ে সংকেতে রূপ দেওয়া

একটি টেলিফোন লাইনের bandwidth ৩,০০০ Hz আর SNR ৩,১৬২ (প্রায় ৩৫ dB). Shannon capacity প্রায় কত?

  • ৩ kbps
  • ৬ kbps
  • প্রায় ৩৪.৯ kbps
  • প্রায় ৯.৫ Mbps

৪,০০০ Hz bandwidth-এর একটি noise-হীন চ্যানেলে ৮ স্তরের সংকেত ব্যবহার করলে Nyquist অনুযায়ী সর্বোচ্চ bit rate কত?

  • ৮,০০০ bps
  • ২৪,০০০ bps
  • ৬৪,০০০ bps
  • ১২,০০০ bps

IEEE 802.3 (Ethernet) রীতির Manchester encoding-এ একটি bit-এর মাঝখানে সংকেত low থেকে high-এ উঠলে সেই bit কী?

  • ১
  • ০
  • কিছুই না — মাঝখানের transition শুধু clock-এর জন্য
  • আগের bit না জেনে বলা যায় না

একটি modem ১৬-QAM ব্যবহার করে প্রতি সেকেন্ডে ২,৪০০টি symbol (২,৪০০ baud) পাঠায়। bit rate কত?

  • ২,৪০০ bps
  • ৩৮,৪০০ bps
  • ৪,৮০০ bps
  • ৯,৬০০ bps

একটি সংকেতের শক্তি একটি তার পার হয়ে ২০ mW থেকে ৫ mW-এ নামল। Attenuation কত dB?

  • +৩ dB
  • −১২ dB
  • প্রায় −৬ dB
  • −১৫ dB

একটি analog সংকেতের সর্বোচ্চ frequency ৪ kHz. প্রতি sample-এ ৮ bit ব্যবহার করে PCM করলে ন্যূনতম bit rate কত?

  • ৩২ kbps
  • ৬৪ kbps
  • ২.০৪৮ Mbps
  • ৫১২ kbps

শব্দকোষ

লেখার মধ্যে ডটেড দাগ দেওয়া শব্দে মাউস রাখুন বা চাপুন — অর্থ দেখাবে। এই পর্বের সব নতুন শব্দ এখানে একসাথে:

মনে রাখুন

  1. Physical layer bit-কে সংকেতে রূপ দেয়: line coding (digital → digital), modulation (digital → analog), PCM (analog → digital).
  2. Sine তরঙ্গ = amplitude, frequency (T = ১/f), phase; λ = গতি/f. Fourier: square wave = বিজোড় harmonic-এর যোগফল, amplitude ৪/(nπ)।
  3. Bandwidth (Hz) ≠ bit rate (bps). dB = ১০ log১০(P২/P১); SNRdB = ১০ log১০SNR; −৩ dB ≈ অর্ধেক।
  4. Nyquist: ২B log২L (noise-হীন); Shannon: B log২(১ + SNR) (চূড়ান্ত সীমা); bit rate = baud × log২L.
  5. Manchester (IEEE: ০ = high→low, ১ = low→high) clock দেয় কিন্তু দ্বিগুণ bandwidth খায়; ১৬-QAM = ৪ bit/symbol; PCM টেলিফোন = ৮,০০০ × ৮ = ৬৪ kbps.

পরের পর্বে: সংকেত তো বানানো হলো — এবার সেটি কিসের ওপর দিয়ে চলে? তামার twisted pair, coaxial, fiber আর বেতার; আর একই মাধ্যম অনেকে মিলে ভাগ করার কৌশল FDM, TDM আর WDM.

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

এই পর্বটি শেয়ার করুন:
এই পর্বে ভুল পেয়েছেন? জানান