Allgemein

Ausgangssituation

Audiosysteme sind oft nur als komplette und starre Systeme verfügbar. Diese Systeme stellen meist viele Funktionen zur Verfügung, von denen oft nur ein kleiner Teil verwendet wird oder bestimmte gewünschte Funktionen nicht enthalten sind. Anders ausgedrückt zahlt man für Funktionalitäten die eigentlich nicht verwendet werden oder man muss Kompromisse eingehen bei der Wahl eines Systems.

Zielsetzung

Es soll ein modulbasiertes Audiosystem (Modular Audio System - MAS) entwickelt werden, welches individuell angepasst werden kann. Diese Anpassung erfolgt über sogenannte Module. Ein Modul erweitert die Basisfunktionalität des Audiosystems um eine oder mehrere Funktionen.
Am Beginn des Projektes wurde definiert, dass ein Bluetooth Modul und ein USB Slave Modul realisiert werden müssen.

Basissystem:
Das Basissystem muss mehrere analoge Ein- bzw. Ausgänge bereitstellen. Die analogen Eingänge sind dafür vorgesehen, dass man ein Gerät per Aux-Kabel mit dem MAS verbinden kann und dann über die internen oder externe Lautpsrecher (analoge Ausgänge) Musik wiedergeben kann. Als Eingänge müssen mehrere Cinch (Links und Rechts) und 3,5mm Stereo-Klinkenstecker eingeplant werden. Für einen Linken-, Rechten- und Subwoofer-Kanal muss jeweils eine 6,3mm Mono-Klinkenbuchse vorgesehen werden.
Ein Klasse-D Audioverstärker wird für die Audioausgabe an den analogen Ausgängen verwendet.
Die Stromversorgung kann entweder über ein Netzteil oder einen Akku erfolgen.
Per Infrarot kann das MAS ebenfalls gesteuert werden.
Es werden sechs Modulschnittstellen zur Verfügung gestellt.
Die Bedienung des Systems erfolgt über ein Touch-Display, Taster und Regler.

Bluetooth Modul:
Über das Bluetooth Modul kann sich ein bluetooth-fähiges Gerät (Smartphone, Rechner, ...) mit dem Audiosystem verbinden und Audiodaten am MAS wiedergeben.

USB Slave Modul:
Das USB Slave Modul bietet die Möglichkeit einen Rechner per USB Kabel mit dem MAS zu verbinden und dies als externe Soundkarte zu verwenden. Die Audiodaten werden an das System übertragen und wiedergegeben.

Überblick

 

Akku & Spannungsversorgung

 

Hardwarespezifikation

  • Prozessor: ARM Cortex-M3
  • 5 Zoll LCD Touch-Display
    • 800x480 px
    • 16 Bit Farbtiefe
    • kapazitiver Touch
  • Analoge Eingänge:
    • 3 x Cinch L/R
    • 2 x Stereo-Klinke 3,5mm
  • Analoge Ausgänge:
    • Mono Klinke 6,3mm Links
    • Mono Klinke 6,3mm Rechts
    • Subwoofer Klinke 6,3mm
    • Kopfhörer-Stereo-Klinke 3,5mm
  • USB-Schnittstelle für Firmwareupdates
  • 2 x Interne Lautsprecher
  • Lautstärkeregler
  • Drehschalter zur Auswahl der analogen Eingängen
  • Hardwaretasten:
    • Play/Pause
    • Mute
    • Nächster Song
    • Vorheriger Song
    • Nächstes Modul
    • Vorheriges Modul
  • Infrarotempfänger für Fernbedienung
     

Modul - USB Slave

 

Modul - Bluetooth

 

Bus für Audioübertragung (I2S)

Beim I2S (Inter-IC Sound) Bus handelt es sich um einen unidirektionalen synchronen Datenbus zur Übertragung von Audiodaten.

  • Daten im 2er Komplement und MSB first
  • Daten gültig bei steigender Flanke
  • Datenlänge
    • 16, 20, 24 oder 32 Bit
  • Paketlänge (unbenutzte Bit werden automatisch maskiert)
    • 16 Bit (für 16 Bit Daten)
    • 24 Bit (für 16, 20 und 24 Bit Daten)
    • 32 Bit (für 16, 20, 24 und 32 Bit Daten)


Die Definition von Phillips sieht vor, dass das MSB der Daten mit der zweiten steigenden Flanke von SCLK nach einem Pegelwechsel von LRCLK gelesen wird.

Abb.: I2S Phillips – 24 Bit Paket mit 16, 20 und 24 Bit Daten, SCLK = 48*LRCLK

 

Firmware - Modular Audio System

 

Benutzerschnittstelle

 

Gehäuse (Bilder)

 
 

Aktueller Entwicklungsstand (07.02.2018)

  • Produktprototyp fertig gestellt
  • Grundfunktion der Audiowiedergabe läuft problemlos.
  • Audiostream von USB Slave und Bluetooth Modulen problemlos möglich
  • Modulkommunikation befindet sich noch in Entwicklung
  • Erweiterung um Zusatzmodule möglich

 

Interessante Fehler

1) LCD-Frequenz zu hoch:

  • Symptome: Das LCD-Display zeigt keine korrekten Bilder an, die Zeilen werden „verkürzt“ und einzelne Pixel scheinen „verloren“ zu gehen. Dadurch sind einzelne Zeilen kürzer, die letzten Zeilen werden nicht (korrekt) gerendert. Dies tritt nur auf, wenn die Firmware auf den externen RAM zugreift, in dem das aktuell angezeigte Frame abgelegt ist.
    LCD-Frequenz: 40 MHz, RAM-Frequenz: 60 MHz
  • Grund: Der LCD-Controller muss die Pixel per DMA in interne FIFO übertragen (ein 16 Bit Wert pro Pixel mit einer Frequenz von 40 MHz, kurze Pausen nur am Anfang und Ende jeder Displayzeile, wird als „Horizontal Front- und Back-Porch“ bezeichnet). Da die FIFOs nur 16 Pixel zwischenspeichern können, ergibt sich im ungünstigsten Fall (Mitte einer Pixelzeile) eine Übertragungsgeschwindigkeit von 40 MHz (= 40 Millionen 16-Bit Werte), das RAM kann theoretisch 60 Millionen 16-Bit Werte pro Sekunde bereitstellen. Solange die CPU nie auf den externen RAM zugreift, ist die Geschwindigkeit gerade ausreichend (Refresh-Zyklen des RAMs müssen berücksichtigt werden, ebenso Extra-Zyklen zum Starten eines Burst-Transfers). Greift nun die CPU auf den RAM zu um ein neues Frame zu rendern, reicht die Bandbreite nicht mehr aus um den LCD-Controller schnell genug mit Pixeldaten zu versorgen. Dadurch kommt es zu Artefakten auf dem Display und die CPU muss häufig auf den Zugriff warten à Verlängerung der Renderdauer.
  • Lösung: Ab einer LCD-Frequenz von 30 MHz sind keine Artefakte und Bildstörungen zu erkennen (selbst mit optimierten Render-Routinen). Um einen Sicherheitsspielraum zu haben, wurde die Frequenz auf 24 MHz heruntergesetzt. Für das menschliche Auge sind keine Unterschiede erkennbar (40 MHz: >80 FPS, 30 MHz: >60 FPS, 24 MHz: >45 FPS). Auch der Rendervorgang durch die CPU wurde dadurch leicht beschleunigt und das externe RAM kann nun problemlos auch für andere Zwecke eingesetzt werden.

2) Mehrfache Flanken-Interrupts bei Tastern:

  • Symptome: Ein Druck auf einen Taster löst mehrere Edge-sensitive Interrupts aus, auch das Loslassen löst mehrere (fehlerhafte) Interrupts aus. Drei Taster sind nur sehr selten davon betroffen und arbeiten ansonsten fehlerfrei, die anderen drei Taster sind immer betroffen, jedoch schwankt die Anzahl der „falschen“ Flanken deutlich.
  • Grund: Bei allen Tastern waren Störungen auf den Leiterbahnen auf der Hauptplatine die Ursache. Die Leiterbahnen der drei besonders stark betroffenen Taster liegen über mehrere Zentimeter parallel zu Adressleitungen des externen RAMs (60 MHz). Durch einen groß dimensionierten Tiefpassfilter (TP) in den Leitungen (Zeitkonstante ~10 Millisekunden) kommt es zu einem sehr flachen Pegelwechsel. Zusätzlich wurde der Strom durch die Hochohmigkeit des TP (100 Kiloohm) stark begrenzt, wodurch Übersprecher während Pegelwechsel zu falscher Flankenerkennung führen.
  • Lösung: TP niederohmiger realisieren (behebt selten auftretende Störungen auf drei von sechs Leitungen) und für stark gestörte Leitungen TP entfernen und Entprellung in Software durchführen.

3) Externer RAM reagiert nicht

  • Symptome: Das externe RAM reagiert nicht auf Lese- und Schreibbefehle, der gesamte Chip friert bei Zugriffen ein.
  • Grund: Timings zum Ausgleichen der Leitungslängen und Einhalten der Vorgaben des Chips waren nicht korrekt eingestellt.
  • Lösung: Es wurden an alle Steuerleitungen und an einige Adressleitungen dünne Drähte angelötet und an Stiftleisten verbunden. Dann wurde über ein Oszilloskop mit 16 digitalen Eingängen das Timing auf Nanosekunden genau gemessen und in einem iterativen Verfahren so lange angepasst bis ideale Timings erreicht wurden.

4) Externer RAM Bank Select Pins

Beim EMC des LPC1788 sind die Bank Select Pins immer die Adresspins A13 und A14. Dies trifft auch zu, wenn nicht alle Adressleitungen unterhalb, also A0 bis A12, verwendet werden. Dadurch ergibt sich eine „Lücke“, da die Adressleitung A12 vom Controller nicht verwendet wird. A0 bis A11 werden als normale Adressleitungen verwendet und A13 und A14 als Bank Select 0 und 1. Dieser Fehler wurde mit Revision 2.0 der Platine behoben.

Team

Studierende:

Auzinger Simon

Doppelhammer Christoph

Knaack Philipp

Rabl Elias

Schweiger Edwin

 

Betreuer:

Prof.(FH) Mag. Dr. Langer Josef

Partner

Partner

Sponsoren