Mixed Signal Strom sparend: Echtzeit-FFT mit einem 16-Bit-RISC-Mikrocontroller

Autor / Redakteur: (kr) / Kristin Rinortner

Da Strom sparende Mikrocontroller immer mehr Peripheriefunktionen wie A/D-Wandler bieten, die bisher größeren Mikroprozessoren, ASICs und DSPs vorbehalten waren, eröffnen sich neue

Firmen zum Thema

( Archiv: Vogel Business Media )

Da Strom sparende Mikrocontroller immer mehr Peripheriefunktionen wie A/D-Wandler bieten, die bisher größeren Mikroprozessoren, ASICs und DSPs vorbehalten waren, eröffnen sich neue Möglichkeiten, die komplexen Algorithmen auch bei geringer Leistung zu berechnen. In diesem Beitrag wird zuerst die diskrete Fourier-Transformation (DFT) erläutert und anschließend werden einige Aspekte der praktischen Umsetzung diskutiert.

Der MAXQ2000 ist ein 16-Bit-RISC-Mikrocontroller mit einem Single-Cycle-Hardware-Multiplier (MAC). Damit eignet er sich sehr gut für die Implementierung einer FFT (Fast Fourier Transform – schnelle Fourier-Transformation) in Anwendungen, bei denen aus dem Zeitsignal das entsprechende Spektrum berechnet werden soll. Bei der hier vorgestellten Lösung mit dem MAXQ2000 und einem MAX1322 (14 Bit A/D-Wandler) liegt die Abtastrate bei 200 kSPS, die FFT arbeitet mit 256 Punkten.

Bildergalerie
Bildergalerie mit 5 Bildern

In Bild 1 sind das Blockschaltbild und die Signale im Zeit- und Frequenzbereich abgebildet. Die Werte für das Spektrum können über die serielle Schnittstelle auf einen PC übertragen und auf dem Bildschirm dargestellt werden. Die Software für den MAXQ2000 und den PC steht zum Download zur Verfügung (siehe InfoClick).

Die diskrete Fourier-Transformation

Soll das Spektrum einer kontinuierlichen Zeitfunktion x(t) bestimmt werden, muss man einerseits ein Abtastintervall T und andererseits ein Zeitfenster TA wählen (Bild 2). Bei einer Abtastrate von 200 kSPS ist T = 5 µs und das Zeitfenster hat bei 256 Abtastwerten eine Länge von 256 * 5 µs = 1,28 ms.

Die Nyquist-Frequenz ist in Gleichung 1 beschrieben

(

und die minimale Frequenz beträgt 781,25 Hz (Gleichung 2).

Die diskrete Fourier-Transformation wird gemäß Gleichung 3 berechnet.

Aus den N Abtastwerten im Zeitbereich werden also N Werte im Frequenzbereich bestimmt.

Gleichung 3 kann auch geschrieben werden als:

Handelt es sich bei x(k) um eine gerade Funktion, wird die Summe mit den Sinus-Termen Null sein, ist x(k) ungerade, gilt das gleiche für die Summe der Kosinus-Terme. Das wird allerdings in der Praxis kaum vorkommen, der Abtastwertesatz wird i.A. weder gerade noch ungerade sein und auch keine Symmetrien aufweisen.

Insgesamt sind N Werte im Frequenzbereich zu bestimmen, für die Berechnung eines Wertes sind 2N Multiplikationen nötig (jeweils N Multiplikationen für die Sinus-Summe und N für die Kosinus-Summe), insgesamt also 2N2 Multiplikationen und 2N(N-1) Additionen. Bei 256 Abtastwerten sind das 131 072 Multiplikationen und 130 560 Additionen.

Mit der Definition WkN = e(-j2k¶)/N lässt sich Gleichung 3 folgendermaßen schreiben:

Außerdem hat WknN folgende zyklische Eigenschaft: WIN = W+NN

Für das Berechnen von Gleichung 5 werden also insgesamt nur folgende Werte benötigt:

Diese Werte (sie bestehen aus einem Sinus- und einem Kosinus-Anteil) können als Konstanten im Speicher abgelegt werden. Es zeigt sich außerdem, dass eine DFT in DFTs geringerer Länge zerlegt werden kann. Nutzt man diese Tatsache aus (dabei muss N eine Potenz von 2 sein), reduziert sich die Anzahl der Multiplikationen bei N=256 von 2N2=131 072 auf (N/2)log2(N)=1024. Diese Zerlegung einer DFT in kaskadierte DFTs geringerer Länge wird FFT genannt, da sie einen wesentlich geringeren Rechenaufwand erfordert.

In erster Linie ist der Betrag der einzelnen Spektralkomponenten von Interesse, er ergibt sich aus Gleichung 6:

Der Realteil besteht aus dem Beitrag der Kosinus-Terme, der Imaginärteil aus demjenigen der Sinus-Terme.

Die Spektralkomponenten müssen nur für bestimmt werden, weil N/2 der Nyquist-Frequenz entspricht und das Spektrum symmetrisch bezüglich dieser Frequenz ist (Bilder 3 bis 5).

Einige praktischen Aspekte für die Umsetzung

Speicher: Der hier gewählte Mikrocontroller verfügt über 2 kByte RAM. Insgesamt benötigt man 2N 16-Bit-Variablen. In dieser Anwendung ist N=256 und es werden für den Real- bzw. Imaginärteil der Variablen jeweils 16 Bit benötigt, insgesamt also 1024 Byte RAM. Damit steht noch RAM für andere Teile der Software zur Verfügung.

Geschwindigkeit: Obwohl der hier verwendete MAXQ2000 ein hohes MIPS/mA-Verhältnis aufweist, muss die für die FFT benötigte Anzahl Instruktionen klein gehalten werden. Das kann durch eine Optimierung des Codes mit dem verwendeten C-Compiler (Embedded Workbench for MAXQ) erreicht werden.

Die Multiplikationen für die Berechnung der FFT werden als Makro im C-Code eingefügt und sind in Assembler geschrieben.

Zahlendarstellung: Der eingesetzte Mikrocontroller hat keine Gleitkomma-Arithmetik, deshalb muss man die Zahlen für die Fixkomma-Arithmetik so formatieren, dass sich eine möglichst hohe Genauigkeit ergibt. Hier wird das Q8.7 Format gewählt:

• Bits 0 bis 6 sind die Nachkommastellen der jeweiligen Zahl,

• Bits 7 bis 14 repräsentieren den ganzzahligen Teil und

• Bit 15 repräsentiert das Vorzeichen.

Tabelle mit den trigonometrischen Werten: Die für die FFT benötigten Sinus- und Kosinus-Terme werden in einer Tabelle gespeichert und nicht von der Software berechnet. Diese Werte werden als „const“ deklariert und im Programmspeicher abgelegt (nicht im RAM). Somit bleibt das RAM reserviert für Variablen, deren Werte sich bei der Programmausführung verändern.

Der 16-Bit-RISC-Mikrocontroller MAXQ2000

Der MAXQ2000 ist ein 16 Bit Strom sparender RISC-Mikrocontroller, wobei praktisch alle Befehle (auch die Multiplikation) in einem Maschinenzyklus ausgeführt werden. Der Baustein basiert auf einer speziellen Architektur, bei der sämtliche Befehle auf einen Move zwischen zwei Registern zurückzuführen sind, dabei werden nur die für diesen Befehl benötigten Teile des Prozessors getaktet, was zu geringer Störstrahlung und einem sehr guten MIPS/mA-Verhältnis führt. Diese Eigenschaften sind vor allem bei Anwendungen zur Signalverarbeitung vorteilhaft, die oft kleinen analogen Signale werden nicht gestört und es können digitale Filter, digitale Regler oder eine FFT bei kleinem Stromverbrauch realisiert werden.

Der 14-Bit-A/D-Wandler MAX1322

Der MAX1322 ist ein simultan-abtastender 14-Bit-A/D-Wandler mit zwei Kanälen (die Typen MAX1321 und 20 haben die gleichen Eigenschaften wie der MAX1322, verfügen aber über 4 bzw. 8 Kanäle). Die maximale Abtastrate liegt bei 900 kSPS, der Eingangsspannungsbereich bei +/-5 V. Die Eingänge sind bis +/-16,5 V überspannungsgeschützt.

Beschreibung der Software und Download-Link

Eine detaillierte Beschreibung der Software und der Link für den Download ist auf der Homepage von Maxim zu finden (siehe InfoClick).

Maxim, Tel.+49(0)89 85799210

*Dipl.-El.-Ing. ETH Ueli Eschmann ist bei Maxim-Dallas als Regional Business Manager Microcontrollers Europe tätig.

(ID:189034)