Releases: dchutchings/py_ofdm
v2.1.1
Flexible pilots / pypi release
We have added a function to generate periodic pilots which is demonstrated in the DVB-T demo.
The nyquist modulator is now in a separate module.
py_ofdm
Various modifications and updates to initial version by Bernd Porr
-
QAM modulation and demodulation is now performed using Roberto Nobrega komm library pypi.org/project/komm which allows the modulation order to be extended to square modulations beyond QPSK/4QAM
-
pilots can be inserted at any user selected indices and not just regularly spaced. DC subcarrier is unmodulated by default.
-
default example corresponds to 802.11a standard, rfmw.em.keysight.com//wireless/helpfiles/89600b/webhelp/subsystems/wlan-ofdm/Content/ofdm_basicprinciplesoverview.htm with 48 data carriers and 4 pilot tones. In practice the carrier separation is 312.5kHz
-
encode() and decode() operate with a complex signal, suitable for quadrature modulation of a carrier. nyquistmod() and nyquistdemod() convert between a complex signal and a double-sampled real signal for baseband modulation.
-
crosscorrelation now finds just the cross-correlation value at a fixed sample point (nIFFT) for a sliding window of width nCyclic
-
imPilots now returns the sum of the squares of the imaginary part of the pilots
-
rewritten examples:
-
ofdm_wifi.py
self contained, generates one random symbol and shows the absolute value of the signal, the real and imaginary parts of the ofdm spectrum, the cross-correction value @nifft, the sum of the squares of the imaginary part of the pilots, and compares output bytes to input bytes. -
ofdm_ex1_tx.py
reads in a pgm image 'DC4_300x200.pgm' and saves ofdm baseband to a WAV file 'ofdm44100.wav' -
ofdm_ex1_rx.py
reads in ofdm baseband from a WAV file 'ofdm44100.wav', displays image and reports bit error ratio (ber).