This example shows how to model a dual-tone multifrequency (DTMF) generator and receiver. The model includes a bandpass filter bank receiver, a spectrogram plot of the generated tones, and a shift register to store the decoded digits. An alternate form of the example, dspdtmf_audio, includes real-time soundcard audio on all platforms except Solaris™.
DTMF signaling uses two tones to represent each key on the touch pad. There are 12 distinct tones. When any key is pressed the tone of the column and the tone of the row are generated. As an example, pressing the '5' button generates the tones 770 Hz and 1336 Hz. In this example, use the number 10 to represent the '*' key and 11 to represent the '#' key.
The frequencies were chosen to avoid harmonics: no frequency is a multiple of another, the difference between any two frequencies does not equal any of the frequencies, and the sum of any two frequencies does not equal any of the frequencies.
The frequencies of the tones are as follows:
1209 Hz 1336 Hz 1477 Hz
697 Hz 1 2 3 770 Hz 4 5 6 852 Hz 7 8 9 941 Hz * 0 #
When you run the simulation, the spectrogram of the received tone will be constructed. If you use the version of the model designed for audio hardware, the received tone is played through the system soundcard. The detected dialed numbers will be shown on the numeric display scope. The following parameters can be adjusted:
Frequency bias for each tone (from the DTMF Generator mask dialog)
Channel noise power and signal gain (from the Channel mask dialog)
Receiver bandpass filter frequency bandwidth (from the DTMF Receiver mask dialog)
Floating-point version: dspdtmf
Floating-point version using audio hardware: dspdtmf_audio