This repository contains the code and resources for a project developed by Federico Forzano for the Wireless Ecosystems course at the University of Ferrara, taught by Prof. Velio Tralli. For more information about the course, see the official course page.
The project implements and simulates a digital communication system based on Continuous Phase Modulation (CPM). It includes:
- A CPM modulator based on a finite state machine, supporting different modulation indices, pulse shapes, and memory lengths.
- A receiver with Viterbi decoding for symbol sequence reconstruction, including simulation of transmission over an AWGN channel.
- Tools for spectral analysis of CPM signals under various parameters.
- Performance evaluation scripts to estimate bit error rates as a function of noise and system configuration.
- Jupyter notebooks for interactive exploration, visualization, and reporting.
CPM_Spettri.ipynb/CPM_Spettri.py: Spectral analysis of CPM signals, exploring the impact of modulation parameters and pulse shapes.Performance_evaluation.ipynb/Performance_evaluation.py: Simulation and evaluation of system performance, including error probability estimation.Relazione_interattiva.ipynb: Interactive report and simulation notebook, with detailed explanations and plots.ImpostazioneSistema/: System setup scripts, impulse and waveform generation, and utility functions.Modulatore/: CPM modulator implementation and related logic.Ricevitore/: Receiver implementation, including Viterbi decoding and signal processing.- Data/configuration files (
*.npy,*.pkl,*.configurations): Used for storing generated signals, symbol sequences, and modulation parameters.
- Python 3.8+
- NumPy, Matplotlib, SciPy (see notebooks/scripts for additional dependencies)
Clone the repository and run the notebooks or scripts to reproduce the simulations, analyze spectra, and evaluate system performance. Configuration files and data are generated automatically by the scripts.
See LICENSE for details.
Federico Forzano
Prof. Velio Tralli