VHDL Projekt 12 - Pflichtenheft
Gliederung
- Funktion des Bausteins
- Verhalten bei fehlerhaften Eingangssignalen
- Schnittstellen
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.
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).
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. |
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. |