Modem Code for Group 3 FAX
Software Overview
ILLICO is offering assembly language and 'C' language Digital Signal Processing
software modules that implement the CCITT modem standards for Group 3 FAX: V.21, V.27ter, V.29, and V.17. These
software modems can replace conventional FAX modem chip sets in applications where a general purpose DSP is available
on a dedicated or shared basis. Digital sample interpolation permits direct "all digital" interface with
64 Kb/s PCM data streams and avoids conversion to an analog signal. For analog environments, a simple Mu or A-law
codec provides the analog interface. Addressing of variables is organized for easy implementation of multiple independent
modems in one processor.
The target applications for these software modems are FAX relay, store-and-forward
FAX servers, and multi-channel FAX cards. All available code was created by ILLICO's staff and can be customized
to support special interfaces and special signal processing requirements.
The 'C' language version is implemented with fixed-point math. Assembly language
packages are available for the Texas Instruments fixed and floating point families, the Motorola 5600x/563x
fixed point processors, and the NEC770xx fixed point processor.
Features and Benefits:
- Modem code callable with C-language or assembly language conventions.
- HDLC coding for both V.21 and image frames (option).
- Receiver interpolation to support fixed sampling rates.
- Detection of V.21 signals in QAM receiver mode.
- Transmit speed tracking by sample interpolation (option).
- Zero overhead context switching for multiple modems in one processor.
- Detection of start and end of echo protection tone.
- Block oriented I/O to facilitate processor sharing with other applications.
- Diagnostic mean-square-error calculation and eye pattern support.
- Upgrade to V.32bis capability with 3.5K word software plug-in (option).
- Forty page Interface Specification to aid installation and application creation.
- Available in fixed-point 'C' or in 'hand generated' assembly language versions.
1. ANSI 'C' FAX modem
This ANSI 'C' compliant FAX modem software uses only fixed-point math and requires
no external custom math library. The source code is immediately executable on any platform supported with a 'C'
compiler. The following resource usage figures apply to the T.I. TMS320C54x family and assume execution from internal
memory. For this example, compilation was performed on the Code Composer Studio 2.x development platform.
---- Data Ram per channel----
450 words if channel is V.29 receiver
800 words if channel is V.17 receiver
---- Program memory----
13 K words total for V.21, V.27ter, V.29.
20 K words total for V.21, V.27ter, V.29, and V.17.
---- Per channel MIPs loading ----
20 MIPs maximum for V.29 receiver.
30 MIPs maximum for V.17 receiver.
2. Texas Instruments TMS320C54x Processor Family (assembly language).
This software is optimized for the C54x resources and is ideal for FAX handling
on compressed voice systems.
---- Data Ram per channel----
342 words (data variable block and equalizer taps).
328 words (additional for V.17).
---- Program memory----
5.5 K total for V.21, V.27ter, V.29.
8.5 K total for V.21, V.27ter, V.29, and V.17.
---- Per channel MIPs loading ----
5.3 MIPs maximum for V.29/V.27ter/V.21 receivers.
8.6 MIPs for V.17 receiver using 6 pages of internal data RAM
9.5 MIPs for V.17 receiver using 3 pages of internal data RAM
3. Texas Instruments TMS320C55x Processor Family (assembly language).
FAX modem software for the new TMS320C5510 processor is written entirely in C55x
assembly language to take full advantage of the processor's features. This software supports either 24 or 30 channels
on a single processor.
---- Data Ram per channel----
512 words if channel is V.29 receiver
768 words if channel is V.17 receiver
---- Program memory----
5.5 K words total for V.21, V.27ter, V.29.
8.7 K words total for V.21, V.27ter, V.29, and V.17.
---- Per channel MIPs loading ----
3.5 MIPs maximum for V.29/V.27ter/V.21 receivers.
5.7 MIPs maximum for V.17 receivers.
4. Texas Instruments TMS320C5x Processors (assembly language).
Versions of this FAX modem software are available for the TMS320C5x family and
for the TMS320C25/2xx devices.
---- Data Ram per channel----
256 words internal (data variable block).
84 words internal or external (equalizer tap block).
328 words external (V.17 only; trellis decoder block).
---- Program memory----
5 K total for V.21, V.27ter, V.29.
8 K total for V.21, V.27ter, V.29, and V.17.
---- Per channel MIPs loading ----
5.3 MIPs maximum for V.29/V.27ter/V.21 receivers.
9.5 MIPs for V.17 receiver.
5. Texas Instruments Floating Point Processor (assembly language).
ILLICO FAX modem software for the TMS320C3x/4x family uses indirect variable
addressing for fast context switching in multi-channel environments. All transmitters and V.21 receiver execution
times are highly optimized to support FAX broadcast applications.
---- Data Ram per channel----
256 words internal (data variable block).
84 words internal (equalizer tap block).
200 words external (V.17 only; trellis decoder block).
---- Program memory----
5 K total for V.21, V.27ter, V.29.
8 K total for V.21, V.27ter, V.29, and V.17.
---- Per channel MIPs loading ----
4.0 MIPs maximum for V.29/V.27ter/V.21 receivers.
6.5 MIPs for V.17 receiver.
6 . Texas Instruments TMS320C6000 Family (assembly language).
V.29, V.27ter, and V.21 FAX modem software is available. The software is hand-crafted
assembly code optimized for maximum channel count.
---- Per channel data RAM ----
512 Half Words (2 bytes/half word)
---- Program memory----
14.0 K bytes total for V.21, V.27ter, V.29.
---- Per channel MCPs loading ----
2.1 MCPs maximum for V.29 receiver
Processing loading example: For a device rated at 200 Million Instruction Cycles
per Second (MCPs), 24 V.29 receiver channels would claim about 25% of the processing power.
7. Motorola 24 bit Fixed Point Processor: 5600x/563xx. (assembly language)
All software is written in DSP56002 assembly language and is qualified for operation
on the 5630x family.
---- Internal Data Ram ----
192 words saved variable context.
128 words scratchpad (not saved as context).
---- External Program memory ----
5 K total for V.21, V.27ter, V.29.
9 K total for V.21, V.27ter, V.29, and V.17.
---- External Data Memory ----
640 locations per channel.
---- Internal Program Memory RAM ----
512 words for full speed operation.
---- 56002 per channel MIPs loading ----
3.5 MIPs maximum for V.29/V.27ter/V.21 receivers.
6.8 MIPs for V.17 receivers.
8. NEC770xx Fixed Point Processor Family (assembly language).
This software is optimized for NEC770xx internal resources.
---- Data Ram per channel----
342 words (data variable block and equalizer taps).
328 words (V.17 only; trellis decoder block).
---- Program memory----
5.9 K total for V.21, V.27ter, V.29.
8.9 K total for V.21, V.27ter, V.29, and V.17.
---- Per channel MIPs loading ----
5.3 MIPs maximum for V.29/V.27ter/V.21 receivers.
9.2 MIPs for V.17 receiver.
|