Dual-Tone Multiple Frequency (DTMF) Detector Implementation full report
Active In SP
Joined: Mar 2010
12-04-2010, 10:36 PM
Dual-Tone Multiple Frequency (DTMF) Detector Implementation.docx (Size: 36.34 KB / Downloads: 260)
Final Report on
Dual-Tone Multiple Frequency (DTMF) Detector Implementation
for EE382C Embedded Software Systems
Dual-tone Multi-frequency (DTMF) signals are used in touch-tone telephones as well as many other areas such as interactive control, telephone banking, and pager system. As analog telephone lines are converted to digital, researchers became interested in digital DTMF detectors.
There are many digital DTMF detecting algorithms, but most of them do not comply with the related International Telecommunications Union (ITU) and Bellcore recommenÃ‚Â¬dations or are not suitable for real-time implementation.
In this project and implimentation, my primary aim was to implement the new DTMF algorithm proposed by M. D. Felder, J. M. Mason, and B. L. Evans on a TMS320C50 digital signal processor for 24 channels. My design tool in this task was Ptolemy, to be more specific the C50 domain, which caused several problems during the project and implimentation. In order to overcome these problems, I started to write a new target for the C50 domain which is named as SimC50 due to its ability to run assembly codes on a simulator and display the results. Despite the fact that current C50 targets generate code for TI TMS320C50 DSP Starter Kit (DSK), the new target generates code for TI TMS320C50 Evaluation Module (EVM).
At the time this report was written all the tasks of the new target except getting the results from the simulator part, were finished. Additional work was needed to modify some C50 stars because they were written for DSK only.
Dual-tone multi-frequency (DTMF) is an international signaling standard for telephone digits. These signals are used in touch-tone telephone call signaling as well as many other areas such as interactive control applications, telephone banking, and pager systems.
A DTMF signal consists of two superimposed sinusoidal waveforms whose frequencies are chosen from a set of eight standardized frequencies. These frequencies were chosen in Bell Laboratories, where DTMF signaling system were originally proposed as an alternative to pulse dialing system in telephony.
The detector part of early DTMF systems consisted of analog implemented bandpass filter-banks, which were tuned to the eight standard frequencies. As analog lines as well as many other analog systems were converted to digital, researchers became interested in digital DTMF detectors. Digital implementation has many advantages over analog implementation such as accuracy, stability, re-programmability, and chip count; that is, instead of using several analog chips for detecting multi-channel DTMF tones, only a digital signal processor (DSP) chip is used for all channels.
Many digital DTMF detecting algorithms have been proposed , , ,  but they have several drawbacks as follows:
1. Most of them do not comply with the related International Telecommunications Union (ITU) and Bellcore recommendations.
2. Some of them have too heavy computational load.
3. Some of them need too much memory to implement on a low cost DSP.
The algorithm proposed by M. D. Felder, J. M. Mason, and B. L. Evans , is an efficient DTMF detection algorithm which complies with all ITU and Bellcore specifications and does not need any buffering. The inventors, simulated their algorithm on Ptolemy's synchronous data flow (SDF) domain and concluded that this algorithm could be implemented for 24 channels, on a low cost fixed point DSP such as the TMS320C50. In this project and implimentation, my aim was to implement the mentioned algorithm on a TMS320C50 for 24 channels.
This report is organized as follows: Section 2 gives background information about DTMF signals, standards, and detectors. Section 3 is focused on implementation topics such as modeling and code generation in C50 domain, the new target for C50 domain and the motivation to write it. The last section concludes this report.
A DTMF signal consists of two superimposed sinusoidal waveforms whose frequencies are chosen from a set of eight standardized frequencies. For example, by pressing the "1" button on the touch-tone telephone key pad in Figure 1, a signal consisting of a 697 Hz sinusoid and a 1209 Hz sinusoid is generated. A DTMF detector attempts to detect these frequencies in the presence of noise, and determines which button is pressed.
Coloumn frequencies (Hz)
<N 1477 1633
697 1 2 3 A
770 4 5 6 B
852 7 8 9 C
941 * 0 # D
Figure 1: Touch pad in DMTF systems
Detection of frequencies in noisy environment is a well studied area in digital signal processÃ‚Â¬ing. The difficulty of DTMF tone detection is due to the standards which must be satisfied when these signals are detected. A summary of ITU and Bellcore's DTMF standards and recommenÃ‚Â¬dations are given below:
1) Signal frequencies:
Low group (Hz): 697, 770, 852, 941 High group (Hz): 1209, 1336, 1477, 1633
2) Frequency tolerances:
a. Frequencies with an offset less than Ã‚Â±1.5% must be accepted.
b. Frequencies with an offset more than Ã‚Â±3.5% must be rejected.
3) Signal Reception Timing:
a. Tones with a duration less than 23 ms must be rejected.
b. Tones with a duration more than 40 ms must be accepted.
c. An interruption of more than 40 ms must be accepted as a pause (One tone has finished,
a new one has started).
d. An interruption of less than 10 ms must be tolerated (The tone continuous).
4) Twist (power difference between frequencies):
a. The low frequency may have 8 dB higher power
b. The high frequency may have 4 dB higher power
Bellcore has some recommendations which are in fact a subset of ITU specifications. HowÃ‚Â¬ever, Bellcore does not only give some standards, but also some standardized performance tests as well.
Some Bellcore tests and recommendations which are different from ITU specifications are as follows:
1) Bellcore guard time test:
Guard time is the minimal length of a tone that can be reliably detected. The guard time is determined by decreasing tone lengths at the input of the detector and counting the number of detects. The receiver guard time is calculated in ms as (500- total detects)/10 and must be under 40 ms.
2) Bellcore power level test:
A minimum detection of 25 out of 35 at a tone power of -25 dBm is required.
3) Bellcore talk-off Tests:
The most important test might be the talk-off test which determines how often a detector detects a speech as a valid tone. Bellcore provides three one-hour audio tapes which include over 50,000 speech samples, to test a detector. Testing a DTMF detector with all these speech samples is equivalent to testing the detector on one million calls if it was be used in a local central office. Bellcore specified the following allowed false detection numbers: For digits 0-9; 333 for digits 0-9,*,#; 500 and for digits 0-9,*,#,A-D; 600.
Since these standards were determined when DTMF detectors were analog their aim was to specify optimum analog detectors. For example, the standard frequencies are determined so that they have no common multipliers. This guarantees that none of the frequencies have common harmonics and thereby improves the performance of analog detectors. However, the most commonly used digital frequency analysis technique, the Discrete Fourier Transform (DFT), samples the frequency domain with equally spaced samples, and therefore, it is not possible to have a sample exactly at each standard frequency.
This fact guided researchers to use a Non-uniform Discrete Fourier Transform (NDFT) in
DTMF detection algorithms. Although it was possible to have arbitrary located samples in frequency domain, more computation was required when using the NDFT. The tradeoff between high frequency resolution and less computational load is the main problem in designing DTMF detectors.
The new algorithm , complies with all frequency specification of ITU, pasts all Bellcore test, and its computationally efficiency is such that it can be implemented on a DSP for 24 channels. The algorithm is based on NDFT but uses about 30 different modifications. These modifications result in an algorithm which requires no buffering and according to the inventors simulations, requires approximately 1000 words of data memory, 2000 words of program memory and 24 million instructions per second (MIPS) when implementing on a digital signal processor for 24 channels.
3 Modeling and Implementation
In order to implement the algorithm on a TMS320C50, my plan was to go through these steps:
Â¢ Model the algorithm in Ptolemy's C50 domain,
Â¢ Generate code for TMS320C50 within the C50 domain,
Â¢ Optimizing the generated code by hand such that it can be implemented on a DSP for 24 channels.
Since the algorithm was already modeled in Ptolemy's SDF domain, I wanted to re-target this model to C50 domain. Before re-targeting the SDF universe to C50, I checked whether in the computations any number exceeds the range of-1 to 1. This is important since I would implement the algorithm on a fixed point processor. Although the creators of the SDF domain model scaled the numbers in the algorithm in several places, I found 3 points where the numbers exceeds this range. By re-scaling, I fixed this future problem. Then I created a new universe which included only the DTMF detector galaxy, a dummy constant input and two black-holes to connect the outputs of the detector galaxy. The new universe is shown in Figure 2.
3.1 New Stars
All stars which are used in a source domain should be present in the target domain to be able to re-target a universe. Therefore I have written the required TMS320C50 assembly codes to create the C50 versions of these three new stars which are used in the SDF domain model. These stars were:
betfCor e dtmf
Figure 2: The DTMF Code universe which includes only the detector galaxy and some dummy input and outputs
1. Power: This star computes the power of an input stream. The length of the stream can be modified by the user.
2. DtmfNdftCoeff: This stars returns the NDFT coefficients for one of the 8 standard DTMF frequencies. These coefficients will be used as an input to the NdftVarD star and are defined as 2cos(^1) where f\ is a DTMF frequency and fs is the sampling rate which can be defined by the user.
3. NdftVarD: This star accepts a NDFT coefficient and a stream as input and computes the NDFT over some number of samples which can be defined by editing the numSamples parameter. A second parameter sequentialExecs determines how many times the algorithm will be executed without reseting the internal states. For example, if you specify numSam-pfes=106, sequentialExecs=2 and a coefficient of /j=697 is fed to the coefficient input, this star will compute the 2 x 106 = 312 point DFT at the frequency point fj=697 Hz.
3.2 Problems In C50 Code Generation
The next step was to generate the TMS320C50 assembly code of the DTMF detector within Ptolemy. At this step I encountered some problems:
1. The generated code was 105 standard letter pages long,
2. Ptolemy generates only code for Texas Instrument (TI)'s TMS320C50 DSP Starter Kit (DSK).
3. In the generated code, some memory locations are allocated several times.
4. The C50 domain did not have a simulation target.
Why the first item was a problem is obvious. Managing 105 pages of code is not easy. A large portion of the generated code, consisted of memory declaration directives. Since the C50 domain uses a SDF model it allocates memory for every arch in the graph. In other words the SDF over-models our application.
The second item was a problem because I wanted to generate code for the TI TMS320C50 Evaluation Module (EVM). Although both boards have the same processor they are quite difÃ‚Â¬ferent. The differences between EVM and DSK is summarized in Table 1
Â¢ No emulation hardware
Â¢ No external memory
Â¢ Simplified assembler
Â¢ Generated code is not in common object file format (COFF)
Â¢ Does not have a linker phase, assembler does the memory allocation
Â¢ Different assembler directives: .ds .ps .entry On-board emulation
64K single access RAM (SRAM)
Full feature assembler
COFF format code generation
Memory is allocated by the linker
.bss .usect .sect .asect
Table 1: Differences between DSK and EVM
The main difference is that the DSK has very limited features compared with the EVM. The most important difference in my case is the fifth item in Table 1; since the DSK does not have a linking phase, memory allocation is done by the assembler. This means that for every code and data block, memory is allocated immediately after the first line is encountered. Since the assembler does not know what kind of code or data is in the following part of the code it cannot allocate the current block such that the memory usage is optimum. On the other hand, in the EVM, an assembler is used to generate object files for every code and data section, and then a linker is used to allocate memory for each object by using their size. This results in an optimum memory allocation. When working with small project and implimentations, it might be possible to manually specify starting addresses for each code and data block for optimum memory allocation, but if the assembly code is as long as 105 pages, this is not an easy job.
3.3 Conversion from DSK compatible to EVM compatible code
At this point, I had the desired assembly code in DSK compatible format and wanted to convert it to EVM compatible code. At the beginning, it seemed to be a substitution task only. I thought substitution of all DSK assembler directives to EVM assembler directives should solve my problem. Therefore I wrote a PERL script which did this job. But after running the script on the code I realized that the conversion is not as easy as I thought.
The problem was that some numbers which I supposed to be addresses were in fact not
addresses. For example, one snapshot of the C50Test star:
; load auxiliary register #2 with 1
execute the next code if acc < 0
; subtract 1 from auxiliary register
Although the AH registers are generally used as index registers, in this piece of code the AR2 register is used like an accumulator. In this case, it is not possible to discriminate whether the number in the LAR command is an address or an immediate value by looking only the LAR instruction line.
3.4 New Target: SimCSO
Since, a code as long as mine cannot be converted from DSK compatible to EVM compatible manually, writing a new target which generates assembly code for EVM was the best solution. Therefore I started to write a new target in C50 domain which is called SimCSO. This domain will be able to generate code for EVM and, if required, run it on the EVM simulator to obtain memory and run time statistics.
One important point is that the C50 stars are written with only DSK in mind; as a result some of these stars include assembler directives which work only with DSK assembler and are not compatible with EVM assembler. Therefore all these non-compatible stars have to be fixed such that both it is possible to use them with both targets. By the time this report was written the new target was generating code and was compiling code with the EVM assembler. Although the linked code could be loaded into the EVM simulator there were still some problems with running and getting the required information back to Ptolmey.
4 Conclusion and Future Work
In this project and implimentation, my aim was to implement the new ITU and Bellcore compliant, zero buffering, NDFT based DTMF detection algorithm proposed by M.D. Felder, J.M. Mason, and B.L. Evans on a TMS320C50 for 24 channels. Since the inventors of this algorithm had already simulated the new algorithm in Ptolemy SDF domain, I planed to use the C50 domain to generate C50 assembly code for the detector and optimize it by hand.
Since, in order to re-target a universe from one domain to another, all stars have to be present in the target domain, I have created the C50 versions of the three new SDF stars.
The generated code was not compatible with the TI TMS320C50 EVM board and an autoÃ‚Â¬matic conversion from DSK to EVM compatible code was not easy. This motivate me to write a new target for the C50 domain which can generate code for the EVM and can simulate it to obtain memory requirements and computation time information. However, all stars in C50 domain were written for the DSK target and many of them were not compatible for use with the new target. Therefore I started to modify all C50 domain stars such that they were compatible with both DSK and EVM targets. By now, the new target is able to generate EVM compatible code and use the assembler and linker to generate executable binaries. These binaries can be loaded to the simulator, but running and passing required information like memory usage and run time back to Ptolemy is not finished yet.
 S. L. Gay, J. Hartung, and G. L. Smith, "Algorithms for multi-channel DTMF detection for the WE DSP32 family," Proc. IEEE Int. Conf. Acoust. Speech Signal Processing, pp. 1134-1137, May 1989.
 P. C. Mock, "Add DTMF generation and decoding to DSP-p P design," Electronic Design Engineers Magazine, pp. 205-220, March 1985.
 S. Bagchi and S. K. Mitra, "An efficient algorithm for DTMF decoding using the subband NDFT," Proc. IEEE Int. Symp. Circ. Sxjst., pp. 1936-1939, April 1995.
 G. Arslan, B. L. Evans, F. A. Sakarya, and J. L. Pino, "Performance evaluation and real-time implementation of subspace, adaptive, and DFT algorithms for multi-tone detection," IEEE Int. Conf. on Telecommun., pp. 884-887, April 1996.
 M. D. Felder, J. C. Mason, and B. L. Evans, "Efficient ITU-compliant dual-tone multiple-frequency detection using the non-uniform discrete Fourier transform." IEEE Signal Processing Letters, To Appear.
 M. D. Felder, J. C. Mason, and B. L. Evans, "Efficient digital ITU-compliant, zero-buffering, DTMF detection algorithm using the non-uniform discrete fourier transform." Filed March 10, 1998. A Non-Confidential Specification Sheet is available at utexas.edU/academic/otl/software.html#DTMF.
Use Search at http://topicideas.net/search.php wisely To Get Information About Project Topic and Seminar ideas with report/source code along pdf and ppt presenaion
project report helper|
Active In SP
Joined: Sep 2010
19-10-2010, 12:04 PM
dtmf_latest.docx (Size: 44.3 KB / Downloads: 85)
DTMF stands for Dual Tone Multiple Frequency. It is a tone consisting of two frequencies superimposed. Individual frequencies are chosen such that it is easy to design filters and easy to transmit the tones through a telephone line having bandwidth of approximately 3.5 kHz. DTMF was not intended to be used for data transfer, it was meant to be used for sending the control signals along the telephone line. With standard decoders it is possible to send 10 beeps per second i.e., five bits per second. DTMF standard specifies 50ms tones and 600ms duration between two successive tones.
Active In SP
Joined: Feb 2011
05-03-2011, 03:21 PM
DTMF MINI PROJ.docx (Size: 769.83 KB / Downloads: 92)
.In general all the PCs are controlled by mouse but we can perform those mouse actions by using a mobile with the help of DTMF (Dual Tone Multiple Frequency) technology.
Dual-tone multi-frequency signaling (DTMF) is used for telecommunication signaling over analog telephone lines in the voice-frequency band between telephone handsets and other communications devices and the switching center.
This project and implimentation consists of a mobile phone (or land phone) for controlling the PC and Microcontroller unit. User has to operate the PC within the visible distance. This project and implimentation consists of Microcontroller based control system attached to the PC.
The term microcomputer is used to describe a system that includes a minimum of a microprocessor, program memory, data memory, and input/output (I/O). Some microcomputer systems include additional components such as timers, counters, analogue-to-digital converters and so on. Thus, a microcomputer system can be anything from a large computer having hard disks, floppy disks and printers, to a single chip computer system.
Here the receiver at the computer end is capable of receiving a set of command instructions in the form of DTMF tones and performs the necessary actions like left click, right click etc.
1. Remote controlling of the computer.
2. Tone enabled operation instructions.
3. Controlling can be done from any phone
4. Easy and immediate access to PC.
2. BLOCK DIAGRAM
Figure 1: DTMF mobile phone controlled PC Block Diagram
The block diagram of DTMF mobile phone controlled PC is shown in figure 1. It consists of a DTMF decoder to decode the signals produced by mobile phone and gives a binary output which is equivalent to the key pressed and this is given to the microcontroller, which produces the instructions according to the program dumped in it. These instructions are given to the PC through MAX232. A software running inside the PC will read the instructions from microcontroller and perform the specific operation allotted.
Regulated power supply is used to convert the 230v ac to 5v dc voltage. The MAX232 is used to increase the voltage level of instruction signals which are suitable to PC. Crystal oscillator is used to produce the timing signals for microcontroller. LED Indicators are used to check whether the microcontroller receiving the information or not. The detailed explanation of each block is explained in later chapters.
3. REGULATED POWER SUPPLY
The main aim of RPS is to convert AC voltage to DC voltage. Its block diagram is as shown below
The process of transforming energy from one device to another is called transformation. For transforming energy we use transformers.
A transformer is a device that transfers electrical energy from one circuit to another through inductively coupled conductors with out changing its frequency. A varying current in the first or primary winding creates a varying magnetic flux in the transformer's core, and thus a varying magnetic field through the secondary winding.
This varying magnetic field induces a varying electromotive force (EMF) or "voltage" in the secondary winding. This effect is called mutual induction. The input coil is called the primary winding the output coil is the secondary winding.
The voltage induced in the secondary is determined by the TURN RATIO.
Primary voltage number of primary turns
Secondary voltage number of secondary turns
The process of converting an alternating current to a pulsating direct current is called as rectification. For rectification purpose we use rectifiers.
A rectifier is an electrical device that converts alternating current (AC) to direct current (DC), a process known as rectification.
FULL WAVE RECTIFIER:
Full wave rectifier is available in two ways like center-tapped full-wave rectifier and bridge full-wave rectifier
BRIDGE FULL WAVE RECTIFIER:
The Bridge rectifier is a circuit, which converts an ac voltage to dc voltage using both half cycles of the input ac voltage. The circuit has four diodes connected to form a bridge. The ac input voltage is applied to the diagonally opposite ends of the bridge. The load resistance is connected between the other two ends of the bridge.
For the positive half cycle of the input ac voltage, diodes D1 and D3 conduct, whereas diodes D2 and D4 remain in the OFF state. The conducting diodes will be in series with the load resistance RL and hence the load current flows through RL.
For the negative half cycle of the input ac voltage, diodes D2 and D4 conduct whereas, D1 and D3 remain OFF. The conducting diodes D2 and D4 will be in series with the load resistance RL and hence the current flows through RL in the same direction as in the previous half cycle. Thus a bi-directional wave is converted into a unidirectional wave.
Active In SP
Joined: Mar 2011
05-03-2011, 03:58 PM
sir i want to do this project and implimentation.so i would like to request to send me all detailled information about this project and implimentation.thank you.