Caller
ID Encoder/Decoder DSP C Code
Description:
implements byte transmission and reception for standard Caller ID (or
Calling Line Identification CID) over local telephone loops. The software
consists of 4 routines:
CID-encode
- calculates the checksum and sequences message bytes from a buffer loaded
in the user code, optionally preceded by pre-amble of channel seizure
and/or mark carrier signals for user-set periods, and transmits by calling:-
CID-transmit - adds start and stop bits to each byte and generates each
transmit sample with per-sample timing for 1200b/s at (selectably) either
ITU V.23 (1300Hz Mark, 2100Hz Space) or Bell 202 (1200Hz Mark, 2200Hz
Space) frequency modulation
CID-decode
- detects pre-amble of channel seizure and/or mark carrier signals for
user-set periods then loads demodulated bytes into a buffer and finally
performs checksum testing, the pre-amble and bytes being detected by calling:-
CID-receive - accepts each receive sample to decode to bits and bytes,
performing line signal detection, demodulation from V.23 or Bell 202,
start-stop bit and bit-centre timing, and byte verification
The
routines can be used with most CID formats eg ETSI, UK SIN 227, US SDMF/MDMF,
Bell Canada. The only assumptions are: the second message byte is the
total no. of bytes following excluding the final checksum byte; the checksum
is arithmetic. Message parameterisation must be done in the user code.
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 byte buffer formatting is 2
per 16-bit word for efficiency in multi-channel use. The CID-transmit
and/or CID-receive routines are available separately. Sample rates of
8.0kHz and 9.6kHz can be selected. Each function has an initialisation
call and a per-sample main routine call and is re-entrant for multi-channel
operation.
Performance:
| SNR
for 10-6 BER on Flat Channel: |
12.0dB
- Bell 202 ; 12.5dB - V.23 (4kHz BW noise) |
| Local
loop line length for no errors: |
>9km |
Processor
Load:
| Function |
MIPS# |
Data
memory (words) |
Prog
memory (bytes)# |
| Encode+Transmit |
0.7 |
(5
+ M/2) x N |
128 |
| Transmit
only |
0.5 |
4
x N |
64 |
| Decode+Receive |
3.0 |
(26
+ M/2) x N |
310 |
| Receive
only |
2.4 |
24 x N |
181 |
-
#figures are for 'C54x operation with the assembler interface at 8.0kHz
sampling
- in the data memory figures M is the user-set buffer size in bytes and
N is the no. of channels
Availability:
NOW - sale is under licence - integration support offered
|