The package contains a DSP lilbrary libdspfec.a and various utility programs for testing and demonstration purposes. The included Makefile will build the library and all executables.
- The reference implementation uses 48 ksps. For other sample rates the filter coefficients in nyquist.c must be reworked. It is therefore easier to resample to 48 ksps.
libdspfec.a and dsfec.h
Top level applications
Complete encoder and modulator.
Takes arbitrary data stream as input (LSB first according to HDLC standard), applies CRC and FEC, and outputs modulated baseband.
- Input: 500 bps arbitrary data; becomes 1000 symbols/sec with FEC (Since it is R=1/2 FEC, the HDLC framing code and CRC are part of the 500bps, i.e. 6 bytes / packet)
- Output: 48 kHz 16-bit linear PCM little-endian
Complete demodulator and decoder.
- Input: 48 kHz 16-bit linear PCM little-endian
- Output: 500 bps data stream
The following will take the data from input.dat, and output 48 ksps baseband that can be sent to audio:
cat input.dat | ./mod > baseband.raw
The following will take the baseband data, demodulate and decode it:
can baseband.raw | ./demod > output.dat
We can also combine it into one command:
cat input.dat | ./mod | ./demod > output.dat
input.dat and output.dat should be identical.
Generates morse code signal and adds it to the input signal. See manual page for details.
Generates Gaussian noise and adds it to the input signal. See manual page for details.
- dpsk.h line 58-61