README: BPSK Communication Link
Simulation
This README provides an extensive guide to the BPSK communication link simulation
contained in bpsk_practice.py. It is organized into four detailed chapters:
1. Communication Concepts – In-depth theoretical background with illustrative figures
and worked examples.
2. Python Functions & Modules – Detailed descriptions of each library and function used.
3. System Workflow & Results – End-to-end pipeline, inputs/outputs, and exhaustive
figure descriptions.
4. Code Breakdown – Line-by-line walkthrough of the Python implementation.
Chapter 1: Communication Concepts (Expanded)
1.1 Digital Baseband Communication Overview
In a digital baseband link, information is transmitted as discrete symbols (bits) over a physical
medium. The major components are:
1. Source Encoder (Optional) – Converts raw data (e.g., text, audio) into a binary
sequence.
2. Channel Encoder (Optional) – Adds redundancy (e.g., convolutional codes) for error
correction.
3. Modulator (Bit Mapper) – Maps bits to waveform symbols; here BPSK maps 0→–1
and 1→+1.
4. Pulse Shaping Filter – Shapes impulses to control bandwidth and satisfy the Nyquist ISI
criterion.
5. Channel (AWGN) – Adds additive white Gaussian noise with power spectral density
N0/2N_0/2N0/2.
6. Matched Filter & Sampler – Maximizes signal-to-noise ratio (SNR) at symbol decision
instants.
7. Decision Device – Performs hard decisions: y[k]≥0→1y[k] ≥ 0 → 1y[k]≥0→1, else 000.
8. Channel Decoder & Source Decoder – (Not implemented) Recovers original data using
error-correction codes.
[Source] → [Channel Encoder] → [Modulator] → [Pulse Shaper] → s(t) → [AWGN] →
r(t)
↓
[Matched Filter] → [Sampler] → Decisions
→ [Output Bits]
Figure 1.1: System Block Diagram
This block diagram illustrates the end-to-end BPSK link, highlighting optional coding stages.
1.2 BPSK Modulation Theory
1.2.1 Symbol Mapping and Signal Space
Binary Phase-Shift Keying (BPSK) uses two antipodal signals: s0(t)=−Eb p(t)s_0(t) = -
\sqrt{E_b}\,p(t)s0(t)=−Ebp(t), s1(t)=+Eb p(t)s_1(t) = +\sqrt{E_b}\,p(t)s1(t)=+Ebp(t).
Pulse p(t)p(t)p(t): Typically a rectangular pulse of duration TTT (symbol period).
Baseband Representation: Map bits {0,1}→{−1,+1}\{0,1\} → \{-
1,+1\}{0,1}→{−1,+1}, yielding s[k]⋅p(t−kT)s[k]·p(t−kT)s[k]⋅p(t−kT).
1.2.2 Constellation and Euclidean Distance
Constellation Points: ±1\pm1±1 on the real axis.
Minimum distance: dmin =2Ebd_{\min} = 2\sqrt{E_b}dmin=2Eb.
Impact: Larger dmin d_{\min}dmin improves noise immunity.
1.2.3 Theoretical Bit Error Rate (BER)
For AWGN channel, theoretical BER is:
Pb=Q(2Eb/N0)P_b = Q\bigl(\sqrt{2 E_b/N_0}\bigr)Pb=Q(2Eb/N0)
where
Q(x)=12π∫x∞e−u2/2 du.Q(x) = \frac{1}{\sqrt{2\pi}}\int_x^\infty e^{-u^2/2}\,du.Q(x)=2π1∫x∞
e−u2/2du.
Example: For Eb/N0=6 dB\mathrm{E_b/N_0}=6\,\mathrm{dB}Eb/N0=6dB,
Pb≈Q(2.828)≈0.0023.P_b \approx Q(2.828) \approx 0.0023.Pb≈Q(2.828)≈0.0023.