4. Übung (DTMF-Detektor) - Beuth Hochschule für Technik Berlin

4. Übung (DTMF-Detektor)
In der vierten Laborübung soll ein DTMF-Detektor (Dual Tone Multiple Frequency) entwickelt werden.
Bei der DTMF-Übertragung werden die Informationen der Telefontastatur mittels einer Kombination
zweier Sinustöne im Sprachband codiert. Der Detektor hat die Aufgabe, die Töne heraus zu finden
und die beiden gefundenen Töne wieder in die Tasteninformation zu decodieren. Die
Tasteninformation wird über die LEDs auf dem EVB angezeigt. Die prinzipielle Struktur des Detektors
ist in der folgenden Abbildung dargestellt.
DTMF-Detektor
Goertzel-Filter
Frequenz 1
Decoder
Input
Detektor
Goertzel-Filter
Frequenz 2
LEDs
Goertzel-Filter
Frequenz K
Erstellen Sie ein neues Projekt in Ihrem Gruppenverzeichnis wie in Übung 1. Laden Sie die Templates
für die Übung 4 aus dem Netz herunter und legen Sie sie in diesem Projektordner ab:
main.c
isr.asm
isr.h
process_data.c
process_data.h
iir.asm
iir.h
codeclib.dlb
codeclib.h
adsp-BF561-codec.ldf
Initialisierung des Codecs und Endlosschleife
Interrupt-Service-Routine in Assemblercode
Definitionsdatei für isr.asm
Modul mit der Verarbeitungsroutine
Definitionsdatei für process_data.c
Modul mit der IIR-Routine in Assemblercode
Definitionsdatei für iir.c
Library mit Initialisierungsroutine für den Codec
Definitionsdatei für codeclib.dlb
Linker Deskription File mit den notwendigen Informationen für den
Linker (Speicherbereiche, Objekte, Prozessoren, …)
Fügen Sie alle Dateien zu Ihrem Projekt hinzu. Die ISR arbeitet wie in Übung 3. Im Modul
process_data.c sind die Filterstrukturen für die 16 Goertzel-Filter und die Funktion process_data()
definiert, die wiederum die IIR-Routine für alle Filter aufruft. Die Koeffizienten müssen Sie noch
gemäß Ihrer Vorbereitung hinzufügen. In der IIR-Routine iir.asm selber erfolgt die Berechnung der
Differenzengleichung gemäß der Darstellung in der Dokumentation zur Vorbereitung.
Da die Filter randstabil sind, steigt die Ausgangsamplitude bei der entsprechenden Resonanzfrequenz
des Filters im Prinzip immer weiter an. Daher werden die Delaylines der Filter nach einer bestimmten
Zeit Teval wieder auf Null gesetzt. Definieren Sie die Variable NO_OF_SAMPLES_FOR_EVAL so,
dass die Zeit Teval 10 ms beträgt. Skalieren Sie das Eingangssignal vor der Filterung so, dass es
innerhalb dieser Zeit gerade nicht zu Überläufen kommt. Gehen Sie dabei von einem Eingangssignal
von ca. 100mV Eingangsamplitude aus.
Nehmen Sie mit dem Scope die Ausgangssignale der Filter auf.
Aus den Ausgangssignalen der Real- und Imaginärteilfilter wird durch Quadrierung und Addition dann
das Betragsquadrat der komplexen Filterausgänge
berechnet, so dass das Ergebnis
phasenunabhängig wird.
” Prof. Dr.-Ing. M. Purat, 2007, Labor für Digitaltechnik und Digitale Signalverarbeitung, TFH Berlin
(v3)
Seite 16 / 17
Nehmen Sie mit dem Scope das Betragsquadrat der Ausgangssignale der komplexen
Filter auf.
Erweitern Sie die Funktion process_data um die Detektion und die Decodierung. Bestimmen Sie bei
der Detektion aus den Betragsquadraten der Ausgangssignale getrennt für die Spalten- und
Zeilenfrequenzen jeweils den Maximalwert und merken sich, bei welcher Frequenz (Zeile / Spalte)
dieser auftritt. Bestimmen Sie von den verbleibenden Betragsquadraten (d.h. jeweils den drei
kleineren Werten) den Mittelwert. Vergleichen Sie den mit einem von Ihnen zu bestimmenden Faktor
multiplizierten Mittelwert mit dem Maximalwert getrennt für Zeilen und Spaltenfrequenzen. Liegt der
Maximalwert über dem skalierten Mittelwert (ist also ein DTMF-Signal detektiert), dann ändern Sie die
PFs so, dass eine dem DTMF-Signal zugeordnete LED leuchtet. Die Zuordnung sei wie folgt:
Taste
LED
Taste
LED
1
13
7
5
2
14
8
6
3
15
9
7
A
16
C
8
4
17
*
9
5
18
0
10
6
19
#
11
B
20
D
12
Testen Sie die Funktion Ihres Programms, indem Sie an den Eingang eine der Zeilenfrequenzen
legen und für die Spaltenfrequenz im Programm eine beliebige Spalte als detektiert annehmen. Wenn
die entsprechenden LEDs bei diesem Test leuchten, melden Sie sich beim Betreuer, der dann die
Funktion mit realen DTMF-Tönen verifiziert.
Auswertung:
x
Kommentieren Sie Messungen und Programme, so dass Ihre Überlegungen und
Untersuchungen deutlich werden.
” Prof. Dr.-Ing. M. Purat, 2007, Labor für Digitaltechnik und Digitale Signalverarbeitung, TFH Berlin
(v3)
Seite 17 / 17