VHDL Projekt 12 - Pflichtenheft

 

Gliederung

  1. Funktion des Bausteins
  2. Verhalten bei fehlerhaften Eingangssignalen
  3. Schnittstellen


Projektüberblick VHDL Frames anzeigen
Zurück zur Homepage

Funktion des Bausteins

Zu implementieren ist ein Spitzenwertdetektor als Teil einer Digital Audio - Pegelanzeige (Aussteuerungsanzeige). Die Aussteuerungsanzeige erhält als Eingabe einen seriellen Audiodatenstrom und realisiert die Ausgabe über eine Leuchtdiodenmatrix mit insgesamt 32 Leuchtbalken (16 pro Kanal). Zusätzlich sollen neben den aktuellen Pegeln auch die Maximalwerte für 2s als Leuchtpunkt erhalten werden. Die Aussteuerungsanzeige umfaßt insgesamt vier Komponenten: Einen Seriell/Parallel-Konverter, einen Logarithmisierer, den zu implementierenden Spitzenwertdetektor und einen Anzeigentreiber.

In den Grundzügen gestaltet sich das Protokoll zur Übertragung der Digital Audio Daten wie folgt. Zur Übermittlung der Audiodaten werden drei Leitungen verwendet: Daten (SDATA, serial data), Bittakt (SCLK, shift clock) und Worttakt (FSYNC, frame sync). Dabei wird ein Stereosignal mit jeweils 18Bit pro Sample mit einer Samplefrequenz von 44.1kHz übertragen. Die seriellen Daten werden, beginnend mit dem höchstwertigem Bit (MSB), bei der steigenden Flanke von SCLK ausgegeben. Die Audiodaten sind vorzeichenbehaftet, d.h. sie können Werte zwischen -131072 und 131071 annehmen. Um den Beginn zu markieren, wird beim MSB mit SCLK steigend auch noch FSYNC gewechselt. Vom Zeitverhalten her ist nur FSYNC direkt mit der Samplefrequenz gekoppelt (FSYNC=44.1kHz), die Datenübertragung mit SCLK kann Lücken aufweisen. Es soll aber angenommen werden, daß pro FSYNC-Zyklus 64 SCLK-Takte auftreten.

Im folgenden sei der Aufbau der Digital Audio - Pegelanzeige schematisch dargestellt.

Blockschaltbild der Digital-Audio-Pegelanzeige

Der eingehende serielle Audiodatenstrom wird vom Seriell/Parallel-Konverter eingelesen und als je ein 18Bit Wert für den Linken und den rechten Kanal (LEFT und RIGHT) ausgegeben. Bei jedem ausgegebenen Samplepaar wird ein FLAG gesetzt. Da die Samplefrequenz 44,1kHz beträgt ist auch FLAG mit 44,1kHz gepulst.

Die Logarithmisierungseinheit hat die Aufgabe, die 262144 möglichen Pegel der Signale LEFT und RIGHT auf eine sinnvolle Unterteilung in db umzurechnen, wobei 16 Werte unterschieden werden sollen.

Der Spitzenwertdetektor erhält als Eingangssignale die vier Bit breiten logarithmisierten Pegelwerte LOG_L und LOG_R sowie das mit 44,1kHz gepulste Signal FLAG. Die beiden Werte LOG_L und LOG_R sind auf FLAG synchronisiert. Es sollen nun die kurzfristigen und langfristigen absoluten Spitzenwerte für jeden Kanal ermittelt werden. Die kurzfristigen Spitzenwerte dienen dazu, ein übermäßiges Flackern der Anzeige zu vermeiden. Dazu werden von den eingehenden Pegelwerten über einen Zeitraum von 0.05s die jeweiligen Maxima für jeden Kanal getrennt bestimmt. Anschließend werden sie über die Ausgänge MAX_L (für den Linken Kanal) und MAX_R (für den Rechten Kanal) ausgegeben. Dann werden die kurzfristigen Spitzenwerte für die nächsten 0,05s ermittelt und ausgegeben.

Die langfristigen Spitzenwerte werden ebenfalls aller 0,05s gleichzeitig mit den kurzfristigen Spitzenwerten ausgegeben. Auch sie werden für den linken und den rechten Kanal getrennt berechnet. Allerdings haben sie eine maximale Lebensdauer von 2s. Tritt innerhalb dieser 2s ein größerer oder gleich großer Spitzenwert auf wird der alte Spitzenwert durch den neuen überschrieben, der dann wieder eine Lebensdauer von 2s hat. Existiert ein Spitzenwert 2s ohne das er durch einen größeren oder gleich großen Spitzenwert ersetzt wurde, so wird er durch den Spitzenwert der letzten 0,05s ersetzt. Als zusätzliche Einschränkung müssen die Spitzenwerte einen Wert größer -12 db verfügen. Werden innerhalb der letzen 0,05s, der maximalen Lebensdauer von 2s, eines Spitzenwertes keine Werte größer -12 db festgestellt, so wird der Spitzenwert auf logisch Null gesetzt. Das gleiche gilt für den Fall das noch kein Wert größer -12 db festgestellt wurde. Die Ausgabe der langfristigen Spitzenwerte erfolgt über die Ausgänge PEAK_L (für den Linken Kanal) und PEAK_R (für den Rechten Kanal).



Projektüberblick VHDL Frames anzeigen Zum Seitenanfang
Zurück zur Homepage

Verhalten bei fehlerhaften Eingangssignalen

Fehlerart Auswirkungen
Die Werte von LOG_R und LOG_L liegen außerhalb des spezifizierten Bereiches. Nicht möglich, da sowohl LOG_R und LOG_L vier Bit breit sind und insgesamt 16 Werte für jeden der beiden Eingänge spezifiziert sind.
Gekippte Bits an den Eingängen LOG_R und LOG_L. Es wird mit den falschen Werten gearbeitet, daher kann es zu einer Verfälschung der Ausgangswerte kommen. Dies ist immer dann der Fall, wenn der veränderte Wert eigentlich das kurzfristige Maximum gewesen wäre oder der falsche Wert größer als das richtige kurzfristige Maxima ist.
Die Signale LOG_L und LOG_R liegen zu spät an oder stabilisieren sich zu spät. Es wird mit den alten Werten weitergearbeitet oder es werden, wenn die Signale gerade in der Stabilisierungsphase sind, Phantasiewerte verwendet. Als Folge kann es zu einer Verfälschung der Ausgangswerte kommen.
Das Signal FLAG zeigt Aussetzer. Dies führt zu einer ungenauen Zeitmessung. Die Zeiträume, über welche die Maxima bestimmt werden verlängern sich. Damit erfolgt auch die Ausgabe der Ergebnisse über MAX_L, MAX_R, PEAK_L und PEAK_R später. Die Werte die während des fehlenden Taktes an LOG_L und LOG_R anliegen werden beider Ermittlung der Maxima nicht berücksichtigt. Als Folge kann es zu einer Verfälschung der Ausgangswerte kommen.


Projektüberblick VHDL Frames anzeigen Zum Seitenanfang
Zurück zur Homepage

Schnittstellen

Signalname Signalbreite MSB Beschreibung
Eingänge
FLAG 1 Bit (0) - Eine fallende Flanke dieses Signals zeigt an, das Daten an den Eingängen LOG_L und LOG_R anliegen. Werden keine Daten geliefert muß das Signal den Wert logisch Null haben. Bei ununterbrochener Datenübertragung weist dieses Signal eine Frequenz von 44,1 kHz auf (entspricht der Samplerate).
LOG_L 4 Bits (0 bis 3) 3 LOG_L enthält codiert die logarithmisch skalierten Audio- Pegelwerte für den linken Kanal. Es sind 16 Werte möglich. Werden keine Werte geliefert muß LOG_L den Wert "0000" haben.
LOG_R 4 Bits (0 bis 3) 3 LOG_R enthält codiert die logarithmisch skalierten Audio-Pegelwerte für den rechten Kanal. Es sind 16 Werte möglich. Werden keine Werte geliefert muß LOG_R den Wert "0000" haben.
Ausgänge
MAX_L 4 Bits (0 bis 3) 3 MAX_L enthält die kurzfristigen Maxima für den linken Kanal. Die Werte enthalten codiert die logarithmisch skalierten Audio-Pegelwerte. Es werden 16 Werte unterschieden. Werden keine Werte geliefert hat MAX_L den Wert "0000".
MAX_R 4 Bits (0 bis 3) 3 MAX_R enthält die kurzfristigen Maxima für den rechten Kanal. Die Werte enthalten codiert die logarithmisch skalierten Audio-Pegelwerte. Es werden 16 Werte unterschieden. Werden keine Werte geliefert hat MAX_R den Wert "0000".
PEAK_L 4 Bits (0 bis 3) 3 PEAK_L enthält die langfristigen Maxima für den rechten Kanal. Es werden insgesamt y Werte zwischen "xxxx" und "1111" unterschieden. Werden keine Werte geliefert hat PEAK_L den Wert "0000". "xxxx" steht für den kleinsten Wert der für einen Absolutbetrag größer -12db steht.
PEAK_R 4 Bits (0 bis 3) 3 PEAK_R enthält die langfristigen Maxima für den rechten Kanal. Es werden insgesamt y Werte zwischen "xxxx" und "1111" unterschieden. Werden keine Werte geliefert hat PEAK_R den Wert "0000". "xxxx" steht für den kleinsten Wert der für einen Absolutbetrag größer -12db steht.


Projektüberblick VHDL Frames anzeigen Zum Seitenanfang
Zurück zur Homepage