Digital Signal Processing Reference
In-Depth Information
1
1
0
0
−1
−1
0
10
20
30
40
0
200
400
(a) Impulse Response
(b) Test Seq, Subseq 10 (Diamonds)
1
1
0
0
−1
−1
0
20
40
60
0
20
40
60
(c) Padded Impulse Resp
(d) Padded SubSeq 10
10
10
0
0
−10
−10
0
200
400
600
0
200
400
600
(e) Equiv Linear Conv
(f) Lin Conv Via FFT to Subseq 10
Figure 3.55: (a) Windowed impulse response; (b) Test chirp; (c) Zero-padded impulse response; (d)
Subsequence 10, padded with zeros; (e) Complete linear convolution of test chirp and impulse response,
performed using the function conv; (f ) Partially complete convolution (through subsequence 10) of the
convolution as performed using the DFT Convolution Theorem.
Col 1
Col 2
Col 3
Col 4
1209 Hz
1336 Hz
1477 Hz
1633 Hz
Row 1
697 Hz
1
2
3
A
Row 2
770 Hz
4
5
6
B
Row 3
852 Hz
7
8
9
C
0 # D
The first step, prior to writing the decoding routine is to discover a useful, relatively short length
N of DFT for each DTMF tone. There is no need, for example, to do an 8000-pt Goertzel computation.
Instead, use the smallest number of samples that contains an integral number of cycles of the frequency
being sought. Thus, the Goertzel Algorithm performed for each DTMF row and column frequency will,
in general, be of a different length so that the detection will be “on-bin” and give the best signal to noise
ratio. The particular bin being sought obviously changes as well, depending on how many cycles of the
tone being sought are contained within the DFT length being performed.
A suggested procedure is as follows:
Row 4
941 Hz
a. Write a short script that will determine 1) for each DTMF frequency, how many samples per
cycle spc there are at the sample rate of 8000 Hz, 2) compute, say, the first 100 multiples of spc ,3)
either manually or by code, pick the multiple that is closest to being a whole number N , and note how
many cycles of the DTMF frequency this is. The length of DFT to be performed when searching for
 
Search WWH ::




Custom Search