LRR-TUM-Logo Department of Informatics
Technische Universität München
Informatik X: Rechnertechnik und Rechnerorganisation / Parallelrechnerarchitektur
Prof. Dr. Arndt Bode , Prof. Dr. Hans Michael Gerndt
abakus50x50.gif
 Home  | Addresses  | Staff  | Research  | Lectures 
Search 


Digital Audio Broadcasting
G. Acher & D. Fliegl

Informationen zu den DAB-Projekten

Stand 8.4.2003

Inhalt (in Klammern die damit zusammenhängenden Projekte)

DAB-PCI-Karte (P2)

Die DAB-PCI-Karte von Bosch/Technotrend basiert auf dem DFIRE1-Modul von Bosch.

Für den Betrieb unter Linux ist bereits ein Treiber (dabcore) vorhanden, der den RDI-Rohdatenstrom
(384KB/s) unter /dev/rdi zum Lesen zur Verfügung stellt.
Über dieses Device erfolgt ebenfalls die DCSR-Kommunikation mittels ioctl()-Aufrufen:
 

Der mit den DFIRE mögliche Interrupt zur Signalisierung neuer Daten vom DFIRE wird hier
nicht benutzt.

Die Include-Datei mit der ioctl()-Definition ist in /usr/local/include/dabcore.h zu finden.

Um bereits an der RDI Dekodierung arbeiten zu können, solange DCSR noch nicht funktioniert,
steht das Programm dab zur Verfügung, das mit dab -t 12d folgende DFIRE-Einstellungen vornimmt:

Nach dem Aufruf von dab, Warten auf die Meldung "Server running" und dem Abbruch mit CTRL-C kann der RDI-Strom z.B. mit cat /dev/rdi gelesen und analysiert
werden.

dab kann auch zum Testen und für Inspirationen benutzt werden, da es bereits einen HTTP-Server beinhaltet, den Sourcecode gibt's natürlich nicht...

DAB-USB-Modul (P1)

Das DAB-USB-Modul benutzt für Projekt 1 USB nur zum Laden des Programms für den
Mikrocontroller AN2131, d.h. es muss nichts für USB programmiert werden...
Zur leichteren Einarbeitung steht ein Programmgerüst zur Verfügung, was den AN2131 und
das zur Funktion unbedingt nötige FPGA initialisiert und einge Leuchtdioden blinken lässt.
Dieses Gerüst soll dann erweitert werden.

Weitere auf dem DAB-USB-Modul vorhandene Komponenten (neben dem DFIRE-1):

Die Hardware ist über folgenden Adressen/Ports ansprechbar:

DFIRE-DPR: External Memory, 0x8400-0x87FF, R/W

LCD: External Memory, 0x8802 (RS=0), 0x8803 (RS=1), nur W

Tasten-Matrix: AN2131-Port B, Pins B0-B3, je eine Taste zwischen B0-B1, B1-B2, B2-B3 und B3-B0.

DAC3550A Control: I2C-Adresse 0x9A/0x9B

EEPROM Control: I2C-Adresse 0xA2/0xA3

LEDs: AN2131-Port A, Pins A6-A7

Für das LCD werden in io.c einige Funktionen bereitgestellt, die rudimentäre Ausgabefunktionen beinhalten.
Diese können (müssen aber nicht) erweitert werden.
Vorhandene LCD-Funktionen:

clear_lcd()
putc(char c)
poscursor(char x, char y)
puts(char *s)
 

AN2131 Tools und Hinweise (P1)

Der 8051-C-Compiler/Assembler ist SDCC, dieser produziert aber recht ineffizienten Code und auch tw. einige Fehler, sodass evtl. bei entsprechener Programmgrösse auch in Assembler programmiert werden muss. Wir raten von C-Programmierung (ausser für erste Tests) ab!

Der 8051-Linker erzeugt ein Intel-Hex-Format, die Endung des Binaries ist. ihx.

Debugging über LCD möglich...

Mit "ezload <binary.ihx> "wird der Code in den AN2131 geladen und ein
Reset ausgeführt. Damit wird das Programm an Adresse 0 gestartet.

Alle im AN2131 beschriebenen Register sind in  regezusb.h (für C) bzw. in
regezusb.asm (für Assembler) definiert.

Werden im Assemblercode externe C-Symbole verwendet, so müssen diese mit
einem Unterstrich (_) benutzt werden!
 

Aufbau von MPEG-Frames und Paketdaten (P2)

Zum Extrahieren der Programm-Associated-Data (PAD) ist genaue Kenntnis der MPEG-Struktur
notwendig. Diese ist in der DAB-Spezifikation detailiert beschrieben. Die MPEG-Daten, die
über obige Webaddressen geholt werden, sind ohne weitere Zusatzinformationen.

Die Paketdaten aus obiger Datenquelle werden (zur einfacheren Synchronisation auf den Paketanfang)
am Anfang mit den zusätzlichen Bytes 0xFF 0xFE 0xFD 0xFC (in dieser Reihenfolge)) übertragen.
Allerdings beginnen nicht alle Pakete mit diesem Synchronisationswort, sondern nur einige.

DFIRE-1 (P1, P2)

Das DFIRE1-Modul empfängt und dekodiert DAB soweit, dass der entstehende Datenstrom
leicht auf dem PC weiterverarbeitet werden.
Das Modul hat drei wichtige Schnittstellen: Wichtig für Projekt 2: RDI und DCSR
Wichtig für Projekt 1: DCSR und I2S
 

Digital-Analog-Wandler DAC3550A (P1)

Dieser Baustein sorgt für die Hörbarmachung eines selektieren Audiokanals und besitzt auch einen
Kopfhörerverstärker und eine Lautstärkeregelung. Die Steuerung des Chips erfolgt über den I2C-Bus
(siehe dort). Wichtig sind Grundinitalisierung und Einstellung der Lautstärke. (siehe Datenblatt DAC3550A).
 

Der I2C-Bus (P1)

Der I2C-Bus besteht aus nur zwei Leitungen (ist also seriell) und wird sehr häufig zur Steuerung
von Bausteinen im Audio/TV-Bereich eingesetzt. Für das Projekt reicht es aus, zu wissen, dass j
eder Chip eine individuelle I2C-Adresse hat (möglich alle geraden Zahlen zw. 0 und 254, der
DAC3550A hat 0x9A), über die er angesprochen werden kann. Der Ablauf beim Schreiben ist
dabei folgender:
Startbedingung setzen.
Addresse ausgeben (1 Byte)
Warten, bis der angesprochene Baustein das bestätigt (acknowledge)
Daten (soviel Bytes wie nötig) mit warten auf acknowledge
Stopbedingung setzen
fertig...

Das genaue Timing erledigt der AN2131 über die zwei Register I2CS und I2DAT, der Ablauf ist
sehr schön im AN2131-Datenblatt beschrieben.
 

(none) Webmaster