Skip to content

Bevia/DSP-Modem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Digital Modem Lab

A multi-language DSP modem implementation and validation suite covering QPSK modulation, RRC filtering, channel modeling, synchronization, and forward error correction.

Structure

Directory Language Purpose
python/ Python Reference implementation, notebooks, and test vector generation
matlab/ MATLAB/Octave Algorithm prototyping and visualization
cpp/ C++ High-performance implementation
c/ C Embedded-target implementation
test_vectors/ Golden reference I/Q data and expected outputs
reports/ Generated plots: BER curves, constellations, spectra, eye diagrams
tools/ Python Utility scripts for vector generation and cross-language comparison
docs/ Architecture, roadmap, and validation strategy

Architecture

Digital Modem Architecture

Quick Start

Python

cd python
pip install -r requirements.txt
pytest tests/

C++

cd cpp
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
ctest --test-dir build

Generate Test Vectors

python tools/generate_vectors.py --modulation qpsk --snr 10 --out test_vectors/

Book: Building a Digital Modem from A to Z

This project is the foundation of an upcoming book that walks through building this entire DSP modem system from scratch — no black boxes, no hand-waving.

The book covers every layer of the stack:

  • Signal theory — complex baseband, Nyquist criteria, spectral shaping
  • Modulation — Gray-coded QPSK, 8-PSK, and 16-QAM symbol mapping
  • Pulse shaping — root-raised cosine filter design and matched filtering
  • Channel modeling — AWGN, phase noise, and frequency offset impairments
  • Synchronization — timing recovery (Mueller-Müller, Gardner) and carrier phase lock (Costas loop)
  • Error correction — forward error correction fundamentals and BER validation
  • Multi-language implementation — the same algorithms built in Python, MATLAB/Octave, C++, and C for embedded targets
  • Verification methodology — test vectors, golden references, and cross-language comparison

The goal is that a reader can follow along and reproduce every result in this repository, understanding not just how each block works but why it is designed that way.

Stay tuned — updates will be tracked in docs/.

Modulation Schemes

  • QPSK (primary target)
  • 8-PSK, 16-QAM (planned)

Key Features

  • Gray-coded symbol mapping
  • Root-raised cosine (RRC) matched filtering
  • AWGN / phase noise / frequency offset channel models
  • Mueller-Müller and Gardner timing error detectors
  • Costas loop carrier phase recovery
  • BER vs Eb/N0 validation against theory

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors