DSP-Programmierung mit dem TMS320C25

Jürgen Hasch, DG1SCR@DB0RBS

Einleitung

Der Begriff "Digitale Signalverarbeitung" (DSV, englisch DSP) steht für die Berechnung von digitalen Zahlenwerten nach einer bestimmten Rechenvorschrift, ausgehend von gegebenen Eingangsgrößen. Die ersten Anwendungen dafür entstanden in den 50er und 60er Jahren mit der Simulation analoger Schaltungen auf Digitalrechnern. Für ein gegebenes Eingangssignal wurde (in langwieriger Rechnung) das Ausgangssignal der eingegebenen Schaltung berechnet.

Durch die enormen Fortschritte in der Mikroprozessortechnik können heutzutage viele analoge Systeme durch in Echtzeit arbeitende digitale Systeme ersetzt werden. Anwendungen wie exakt linearphasige Filter, Sprachcodierung oder Datenübertragung mit komplexen Modulationsarten, sind erst mit Hilfe digitaler Systeme effizient realisierbar. So ist beispielsweise bei modernen GSM-Telefonen die gesamte Signalverarbeitung bis zur ZF-Schnittstelle mit Hilfe Digitaler Signalverarbietung realisiert.

Einige Vorteile der DSV sind:

Natürlich kann man auch einige Nachteile aufzählen:

1. Grundlagen der DSV

Der folgende kurze Abriß über die wichtigsten Grundlagen kann natürlich keine Einführung in die Digitale Signalverarbeitung bieten, soll aber zumindest ein paar der wichtigsten Begriffe vorstellen.

Ausgangspunkt ist ein sogenanntes "Echzeitsystem zur Digitalen Signalverarbeitung" wie in der Abbildung gezeigt:

Am Eingang liegt das analoge Signal x(t) an. Es wird über einen Tiefpaß dem Analog-Digital-Wandler zugeführt, dort abgetastet und quantisiert. Am Eingang des digitalen Rechenwerks liegt dann die Wertefolge x(n) an. Das Rechenwerk (z.B. ein Signalprozessor) berechnet daraus die Ausgangsfolge y(n), die dann über einen Digital-Analog-Wandler, mit anschließendem Tiefpaß zur Glättung, in das Ausgangssignal y(t) umgesetzt wird.

Die ganze Schwierigkeit der DSV besteht nun darin, dem Rechenwerk die Umsetzung der Eingangsfolge x(n) in die Ausgangsfolge y(n) beizubringen.

Das Rechenwerk selbst kann aus festverdrahteter Logik, einem PC oder eben wie hier besprochen aus einem Signalprozessor bestehen.Voraussetzung selbst einen Signalprozessor programmieren zu können ist neben Grundkentnissen bei der Programmierung von Mikroprozessoren auch das Verständnis, wie aus dem analogen Eingangssignal digitale Zahlenwerte und ungekehrt werden und welche Konsequenzen daraus folgen.

Zuerst soll deshalb der Analog-Digital-Wandler etwas genauer betrachtet werden.

Ein A/D-Wandler besteht im Prinzip aus drei Stufen, wie die Abbildung zeigt:

Direkt am Eingang liegt der Abtaster, der zu festen Zeitpunkten n*TA (TA ist der Kehrwert der Abtastfrequenz fA) das Eingangssignal durchläßt und zum Quantisierer weitergibt. Dort wird dem analogen Wert mit unendlich vielen Stufen, ein diskreter Wert aus einem Bereich mit endlich vielen Stufen zugeordnet. Die Auflösung des Wandlers bestimmt die Anzahl der möglichen Werte. Anschließend wandelt der Codierer den Wert in das gewünschte Zahlenformat (z.B. in das Zweierkomplement) um. Aus dem analogen Eingangssignal wurde somit eine zeit- und wertdiskrete Folge.

Abtasttheorem

Der Abtastvorgang läßt sich mit Hilfe der untenstehenden Abbildung veranschaulichen. Das links gezeigte zeitkontinuierliche Eingangssignal x(t) wird zu festen Zeitpunkten abgetastet, das entspricht einer Multiplikation mit den rechts angedeuteten Abtastimpulsen T(t)


Das Ergebnis dieser "idealen Abtastung" ist ein zeitdiskretes, aber noch wertekontinuierliches Signal.

Man kann diese Betrachtung auch im Frequenzbereich vornehmen. Dem Eingangssignal x(t) im Zeitbereich entspricht X(f) im Frequenzbereich und den Abtastimpulsen T(t) im Zeitbereich entspricht T(f) im Frequenzbereich. Die Multiplikation der Signale im Zeitbereich wird dabei zur Faltung im Frequenzbereich.

Man sieht, daß das Eingangssignal periodisch im Frequenzbereich geworden ist. Die Periode wird durch die Abtastfrequenz fA festgelegt. Ist diese Frequenz zu klein gewählt, überlappen sich die einzelnen Spektren und das abgetaste Signal wird verfälscht.

Um das Eingangssignal eindeutig erfassen zu können, muß die also die Abtastbedinung eingehalten werden:


fG höchster zulässiger Signalanteil des Eingangssignals
(gleichzeitig auch Grenzfrequenz des Eingangstiefpasses)

fA Abtastfrequenz des A/D-Wandlers

Die Abtastfrequenz muß also mindestens zweimal so hoch sein, als die höchte im Eingangssignal vorkommende Frequenz, sonst kommt es zu Überlappungen. Aus diesem Grund ist auch ein Tiefpaß am Eingang notwendig, er sperrt für alle Signale größer fG.

Für den Digital-Analog-Wandler gilt entsprechend, daß die Wandlungsfrequenz ebenfalls doppelt so hoch wie die maximal gewünschte Ausgangsfrequenz sein muß. Der Tiefpaß am Ausgang dient zur Glättung des Ausgangssignals (entfernen aller Frequenzen oberhalb der halben Abtastfrequenz).

Festkomma-Darstellung

Viele Signalprozessoren - auch der TMS320C25 - verwenden zur Verarbeitung von Zahlenwerten die sog. Festkomma-Darstellung zur Basis 2, um einen Zahlenbereich von -1.0 bis +0.99 abzudecken. Am Beispiel eines 4-Bit Zahlensystems soll die Festkomma-Darstellung erläutert werden.Benötigt man nur positive ganze Zahlen, dann lassen sich mit 4 Bit die Zahlen 0-15 codieren, wie in der Tabelle gezeigt:

Dezimal

Binär

0

0000

1

0001

2

0010

3

0011

...

...

14

1110

15

1111

Zur Darstellung auch negativer Zahlen führt man das Zweierkomplement ein, d.h. man verwendet das höchstwertige Bit als Vorzeichenbit und zählt bei negativen Zahlen von 0 ausgehend rückwärts. Die Abbildung am Zahlenrad veranschaulicht das:

Um den Zahlenbereich von -1.0 bis 0.99 darstellen zu können, sieht man noch einen Skalierungsfaktor vor und erhält so die Festkomma-Darstellung. Die Abbildung zeigt die Festkomma-Darstellung für das 4-Bit System:

2. Hardware

In dem Abschnitt über die Grundlagen wurde ein "Echtzeitsystem zur DSV vorgestellt", die Abbildung zeigt die Realisierung eines solchen Systems im Blockschaltbild:

Das Herzstück der Karte ist das Rechenwerk in Form eines Signalprozessors. Man könnte hier natürlich jeden beliebigen Mikroprozessor einsetzen, jedoch sind Signalprozessoren für häufig benötigte Rechenoperationen wie Addition und Multiplikation optimiert. Es gibt eine ganze Reihe von Signalprozessoren verschiedener Hersteller, z.B. von Texas Instruments (TMS320-Serie), Motorola (56000er-Reihe) oder Analog Devices (ADSP21xx-Reihe).

Der in der DSP-Karte TMS320C25 von Texas Instruments ist zwar nicht mehr der aktuellste Vertreter aus der TMS320-Familie, aber dafür sehr preiswert und recht weit verbreitet. Die Rechenleistung ist für die relativ einfachen Anwendungen im Amateur-Bereich auch erst einmal ausreichend.

Der eingesetzte TMS320C25 ist ein 16-Bit Mikroprozessor und Vertreter der zweiten Generation von TI-Signalprozessoren. Er ist in der sog. Havard-Architektur aufbebaut, bei der getrennte Daten- und Programmspeicher existieren, es lassen sich somit maximal 2*64KW (ein Wort hat 16 Bit) adressieren. Der Prozessor erreicht bei einem Takt von 40MHz bei den meisten Befehlen eine Befehlszykluszeit von 100ns, was eine maximale Rechenleistung von 10 Millionen Befehlen in der Sekunde ergibt. Spezielle Befehle für die gleichzeitige Multiplikation und Addition oder 'bit-reversal'-Adressierungsarten sind bei DSV-Programmen ebenfalls vorteilhaft.

Analogbaustein: Stereo-Codec

Der hier verwendete Stereo-Codec (Coder-Decoder) CS4215 besitzt jeweils zwei Analogein- und ausgänge mit 16 Bit Auflösung und in mehreren Schritten programmierbarer Wandlungsfrequenz. Die Datenübertragung vom Signalprozessor zum Codec geschieht über eine synchrone serielle Schnittstelle.

Die Analogeingänge besitzen Anti-Aliasing-Filter, das Signalanteile oberhalb der halben Wandlungsfrequenz unterdrücken, die Analogausgänge besitzen entsprechend Glättungstiefpässe für die halbe Wandlungsfrequenz.

3. Beispiele

Digitale Filter: Das FIR-Filter

FIR-Filter, auch Transversalfilter genannt, sind die einfachste Form von Digitalfiltern. Da sie keine Rückkoplung besitzen (nichtrekursiv sind), sind sie relativ einfach zu berechnen und in ihren Eigenschaften vorhersagbar. Als Beispiel soll ein schmalbandigen CW-Filters realisiert werden.

Zur Realisierung eines FIR-Filters verwendet man meistens einen der folgenden beiden Möglichkeiten:

Hier wurde die Fenstermethode mit Kaiserfenster gewählt. Die Abbildung zeigt die erhaltene Übertragungsfunktion |H(f)| des gewünschten Filters (positive und negative Frequenzen sind zu sehen):

Die dazugehörige Zeitfunktion (Impulsantwort) h(n) des Filters, bei einer Filterlänge von N=216:




Die Struktur einens FIR-Filters kann mit den vorgestellten Operatoren (Addition, Multiplikation und Zeitverzögerung) dargestellt werden:

Die Realisierung in Assemblercode für den 320C25 sieht dann folgendermaßen aus:

        LRLK    AR0,XN-1        ; Tabelle mit Abtastwerten
        ZAC                     ; Akkumulator löschen
        RPTK    FIRLEN-1        ; 215+1 Wiederholungen
        MACD    HN,*-   ; Multiplikation, Addition und kopieren
        APAC
        SACH    YN              ; Ergebnis speichern

Adaptives FIR-Filter

Das im vorigen Abschnitt gezeigte Filter hat einen Nachteil: Die Filtercharakteristik läßt sich nur durch Umprogrammierung ändern. Hat man aber eine zeitlich veränderliche Störung auszufiltern, hilft das nicht weiter.

Die Abbildung zeigt das Blockschaltbild eines Adaptiven Filters zur Unterdrückung periodischer Störungen, beispielsweise von Sinusschwingungen:

Das Eingangssignal x(n) wird um M Abtasttakte verzögert dem FIR-Filter der Länge N mit der Übertragungsfunktion H(z) zugeführt. Das gefilterte Signal y(n) wird vom Eingangssignal x(n) abgezogen, es ensteht das Fehlersignal (n). Mit Hilfe dieses Fehlersignals werden die Filterkoeffizienten verändert:

hneu(0..N) = halt(0..N) + 2**(n)

Wobei eine Zeitkonstante ist, die die Dauer des Einschwingvorgangs bestimmt.

Die folgenden Abbildungen zeigen was bei einem sinusförmigen Eingangssignal mit veränderlicher Frequenz geschieht:

Eingangssignal x(n):

Filterausgang y(n):

Fehlersignal (n):


Man erkennt, daß nach einer kurzen Einschwingzeit das Fehlersignal (n) abgeklungen ist, die periodische Störung - und nur diese - ist ausgefiltert worden. Verwendet man das Ausgangssignal des Filters y(n) erhält man einen Bandpaß, der nur die periodische Störung durchläßt.

Der Programmteil zum Abgleich der Koeffizienten sieht so aus:

  REPT FIRLEN
        ; Koeffizientenabgleich
        ; HN_NEU = HN_ALT + (2 * MU * EPSILON) * V_R-i
        ZALR    *,AR0           ; HN_ALT[i] gerundet
        MPYA    *-,AR2          ; V_R-i
        SACH    *+                      ; HN_NEU[i]
  ENDM

FFT

Das vom A/D-Wandler kommende Eingangssignal ist physikalisch gesehen eine Spannungs-zeitfunktion. Mit Hilfe der Diskreten Fourier-Transformation (DFT) kann man diese Spannungszeitfunktion in Elementarfunktionen zerlegen und somit das Spektrum ermitteln.

Auf die mathematische Beschreibung der Diskreten Fourier-Transformation und der Ableitung des FFT-Algorithmus soll hier verzichtet werden, dies ist ausführlich in [1]-[7] zu finden.

Mit entsprechend optimiertem Code ist eine 256-Punkte FFT innerhalb von 10ms auf dem TMS320C25 möglich. Als Beispiel für eine FFT ist das Zeitsignal eines DTMF-Tones und das daraus berechnete Spektrum wiedergegeben:

Anhang: Literatur

Allgemeine Literatur

[1] Daniel Ch. von Grüningen: Digitale Signalverarbeitung
VDI-Verlag

[2] P. Gerdsen, P. Kröger: Digitale Signalverarbeitung in der Nachrichtenübertragung
Springer-Verlag

[3] Openheimer, Schafer: Digital Signal Processing
Howard Sams

[4] Rabiner: Digital Signal Processing Algorithms in C
John Wiley & Sons

[5] S. Stearns, R. David: Signal Processing Algorithms in Fortran and C

Prentice-Hall

[6] J. Treichler, C. Johnson, M. Larimore: Theory and Design of Adaptive Filters
John Wiley & Sons

[7] S. Mitra, J.F. Kaiser: Handbook for Digital Signal Processing
John Wiley & Sons

Speziell zum TMS320C25

[7] J. Hasch, DG1SCR: Signalprozessorkarte mit dem TMS320C25
Adacom-Heft 7/94

[8] TMS320C2x User's Guide
Texas Instruments

[9] Digital Signal Processing Applications Volume I-III
Texas Instruments

[10] B. Hutchins, T. Parks: A Digital Signal Processing Laboratory using the TMS320C25
Prentice Hall

[11] R. Chassaing, D. W. Horning: Digital Signal Processing with the TMS320C25
John Wiley & Sons