Pulse shaping filters

This module provides several functions enabling to transform a binary sequence into a "continuous" signal (or pseudo-continuous, since we work in the numerical doamin, where the signals are discretized and sampled with a finite sampling rate).

The classical steps for this shaping are the following (see figure below): craation of the symbols (constellation) from the binary sequence (each symbol enabling to code one or several bits), over-sampling (according to the desired over-sampling factor), and finally applying the shaping filter (Gaussian, RC, moving average, etc.).

The following functions are provided:

  • Symbols encoding (resp. decoding): enable to convert a binary sequence to a symbol sequence (real ou complex), or the reverse. To do that, the functions are symmap (symbol encoding) and symdemap (symbol decoding).
  • Sampling frequency change: the goal is to go from 1 sample / symbol to n samples / symbol, which is necessary before applying the pulse shaping filter (upsample and downsample for the reverse operation)
  • Pulse shaping filter: several classical filters are provided: SRRC, RC, Gaussian, NRZ, etc. (psfilter_init et psfilter_process).
  • Some additional functions to compute these three steps in only one call (for specific cases only):

    • Generation of a NRZ signal (Non Return to Zero) from a bit stream (nrz),
    • Generation of a multi-levels NRZ signal (PAM / Pulse Amplitude Modulation) from a bit stream (pam).