DTMF
Receiver TMS320C5000 DSP Code
Description:
detects digits dialled by standard Dual Tone Multi-Frequency (DTMF) telephones.
With DTMF, the 16 possible digits are each signified by pairs of tones,
one from a "low" group - 697Hz, 770Hz, 852Hz, 941Hz - and the
other from a "high" group - 1209Hz, 1336Hz, 1477Hz, 1633Hz.
Requirements on a DTMF receiver
design are conflicting. Detection parameters - tone absolute and relative
(twist) levels, tone frequencies, digit-on and -off timings - have specified
tolerance ranges, either side of which the DTMF receiver must definitely
register or not register the digit conditions. There may be interference
from noise or dial-tone. False digits must not be simulated by speech.
Administration specifications differ. This DTMF receiver combines highly
selective digit detection with very efficient DSP resource use.
With the assembler interface, the
software is in the form of 4 callable subroutines: two are for initialising
per-channel memory & loading default parameters, one is for accessing
any newly detected digit, and the main one is for per-sample processing.
It can easily be used in a multi-channel mode: a pointer is set to each
per-channel block of memory at each sub-routine call. By making multiple
sub-routine calls, the code can be operated on blocks of samples. A C-callable
wrapper can also be provided, wherein individual channels can be called
from C to process multiple sample blocks.
To suit applications, some digit
detection parameters are made user-programmable. Operation can be at 8.0kHz
or 9.6kHz sample rates. A user's guide is supplied and full test results
are available.
Specification:
the conditions under which DTMF digit states are registered either a new
digit when in the "pause" state or else a pause(non-digit) when
in the "digit" state are as follows. The symbols Pt/f/r and
* signify that the parameter is user-programmable. All levels are per
DTMF tone.
Parameter: |
Digit
detected |
Digit
NOT detd. |
Notes |
Frequency
offset: |
<= 2% |
>=
3% |
|
Signal
level threshold*: |
>= Pt (Pt >= -45dBm) |
< Pt & >= 0dBm |
Clipping
@ -3dBm/tone |
Forward
Twist*: |
<= Pf (Pf <= 10dB) |
>
Pf |
|
Reverse
Twist*: |
<= Pr (Pr <= 10dB) |
>
Pr |
|
Signal
duration: |
>=
40ms |
<=
20ms |
|
Inter-digit
pause*: |
>=
40(30)ms |
<=
20(10)ms |
ie
40<>20ms (OR 30<>10ms) |
False
detection in speech: |
<
1.0 digits (avg.) |
|
using
Mitel CM7291 CD |
Noise
interference: |
1000/1000
digits |
|
+12dB Signal-Noise-Ratio |
Dialtone
interference: |
1000/1000
digits |
|
-12dB Signal-Dialtone-Ratio |
The
code meets all known specifications eg ITU Q.24 Table A-1 and the Mitel
CM7291 data sheet.
Processor
Load:
MIPS# |
Data
memory (words) |
Prog
memory (words)# |
0.61
|
20(common)+27(/channel) |
0.52k |
-
#figures are for TMS320C54x operation with the assembler interface at
8.0kHz sampling
Digit analysis option: this function
can be added to the basic DTMF receiver. On each digit detected, reported
are: the digit-on and -off times to 2ms accuracy, the per-tone levels
to 0.5dBm accuracies, and the per-tone frequencies to 1.5Hz accuracies.
Availability:
NOW - sale is under licence - integration support offered
|
|