Modem DSP C Code
implements the ITU Recommendations R.38A(200b/s), R.38B(200b/s), R.37(100b/s),
R.36(200-50b/s), and R.35(50b/s) for telegraphy modems. These offer transmission
of FSK-modulated data in the telephone voiceband divided into sub-bands
from 420Hz to 3120Hz (mean band frequencies), with independent operation
of individual bands.
The C code is suitable for any
processor with an ANSI-compliant C compiler. It is designed especially
for efficient operation on low-cost fixed-point DSP- and general-purpose
micro-processors. All data memory is specified as 16-bit integer words.
Multiplies are integer 16x16-bit with 32-bit products.
The software implements separately
one selected sub-band transmitter and one selected sub-band receiver from
any of the R-series listed above. The software is operated by individual
subroutine calls for transmitter and receiver initialisation, wherein
the R.38A/R.38B/etc. channel is set, and for per-sample processing. The
user is responsible for interfacing samples and data to hardware. The
code is re-entrant to facilitate multi-channel operation. A comprehensive
user's guide is provided with the code, together with example application
files. Test results are available.
at the sample interface, the code can operate at 8.0kHz and 9.6kHz sample
rates. At the data interface, operation can be in either Asynchronous
or Synchronous mode. In Asynchronous mode, data is transferred with start
& stop bits auto-inserted/-deleted.
In Synchronous mode, data is transferred
transparently, with the receiver performing clock recovery on bit transitions.
In both cases, the data can be passed in multiple-bit blocks, and the
nominal clock used is that of the R-series selected. At the control interface,
the desired mode and channel is set on initialisation call.
for 10-6 Error Rate at R.38A 200b/s (4kHz BW noise): 4.0dB Flat Channel
#example figures from compiling for the TI TMS320C5000(C55x) DSP processor
NOW - sale is under licence - integration support offered