Simple OFDM modem for transceiving datagrams
Find a file
Ahmet Inan 99b6a4e963 use a shortened systematic polar code and CA-SCL decoding
using SPC(64800, 43072):
mode 6: 8PSK, 2700 Hz BW and about 10 seconds long
mode 7: 8PSK, 2500 Hz BW and about 11 seconds long
mode 8: QPSK, 2500 Hz BW and about 16 seconds long
mode 9: QPSK, 2250 Hz BW and about 18 seconds long

using SPC(64512, 43072):
mode 10: 8PSK, 3200 Hz BW and about 9 seconds long
mode 11: 8PSK, 2400 Hz BW and about 11 seconds long
mode 12: QPSK, 2400 Hz BW and about 16 seconds long
mode 13: QPSK, 1600 Hz BW and about 24 seconds long
2021-09-03 20:52:09 +02:00
.gitignore use a shortened systematic polar code and CA-SCL decoding 2021-09-03 20:52:09 +02:00
decode.cc use a shortened systematic polar code and CA-SCL decoding 2021-09-03 20:52:09 +02:00
encode.cc use a shortened systematic polar code and CA-SCL decoding 2021-09-03 20:52:09 +02:00
freezer.cc use a shortened systematic polar code and CA-SCL decoding 2021-09-03 20:52:09 +02:00
LICENSE Initial commit 2021-06-11 11:12:44 +02:00
Makefile use a shortened systematic polar code and CA-SCL decoding 2021-09-03 20:52:09 +02:00
polar_tables.hh use a shortened systematic polar code and CA-SCL decoding 2021-09-03 20:52:09 +02:00
psk.hh Initial commit 2021-06-11 11:12:44 +02:00
README.md use the DVB recommended T=10 BCH code 2021-07-21 17:15:47 +02:00

OFDM MODEM

Quick start:

Create file uncoded.dat with 43040 bits of random data:

dd if=/dev/urandom of=uncoded.dat bs=1 count=5380

Encode file uncoded.dat to encoded.wav WAV audio file with 8000 Hz sample rate, 16 bits and only 1 (real) channel:

./encode encoded.wav 8000 16 1 uncoded.dat

Start recording to recorded.wav audio file and stop after 20 seconds:

arecord -c 1 -f S16_LE -r 8000 -d 20 recorded.wav

Start playing encoded.wav audio file:

aplay encoded.wav

Decode recorded.wav audio file to decoded.dat file:

./decode decoded.dat recorded.wav

Compare original uncoded.dat with decoded.dat:

diff -s uncoded.dat decoded.dat

Simulating

Prerequisite: disorders

Encode uncoded.dat to analytic audio signal, add multipath, AWGN, SFO, CFO, decode and compare:

./encode ping.wav 8000 16 2 uncoded.dat 2000 && ../disorders/multipath pong.wav ping.wav ../disorders/multipath.txt 10 && ../disorders/cfo ping.wav pong.wav 234.567 && ../disorders/sfo pong.wav ping.wav 147 && ../disorders/awgn ping.wav pong.wav -30 && ./decode decoded.dat ping.wav && diff -s uncoded.dat decoded.dat

Reading

  • Robust frequency and timing synchronization for OFDM
    by Timothy M. Schmidl and Donald C. Cox - 1997
  • On Timing Offset Estimation for OFDM Systems
    by H. Minn, M. Zeng, and V. K. Bhargava - 2000