-
Die Erfindung betrifft eine Recheneinheit für ein Audiosystem für ein Fahrzeug, ein Fahrzeug mit einer solchen Recheneinheit, ein Verfahren zur nahtlosen Übergabe einer Audioausgabe, ein Computerprogrammelement und ein computerlesbares Speichermedium.
-
In Fahrzeugen können Audiosysteme und/oder Warnsysteme verbaut sein. Diese können der Unterhaltung und/oder der Information des Benutzers bzw. des Fahrers dienen. Ferner können Warntöne über das Audiosystem des Fahrzeugs ausgegeben werden bzw. es können Warntöne in das Ausgabesignal des Audiosystems eingespeist werden. Da die Multimediasysteme in den Fahrzeugen jedoch zunehmen komplexer werden, verlängert sich auch zunehmend die Zeit bis diese Systeme vollumfänglich zur Verfügung stehen. Um diesen Umstand zu beheben, können zwei verschiedene Rechenknoten eingesetzt werden, wobei einer der Rechenknoten schnell startet und für die grundlegende Audioausgabe, wie z.B. Warntöne, verantwortlich ist. Diese Warntörne sollten möglichst gleich nach dem Einsteigen bzw. dem Start des Fahrzeugs verfügbar sein. Der zweite Rechenknoten kann für die Multimediaaudioausgabe verantwortlich sein. Hierbei kann eine etwas längere Zeit zum Starten vertretbar sein, z.B. 30 Sekunden. Die Audiosignale dieser beiden Rechenknoten können anschließend durch einen Mixer zu einer Audioausgabe gemischt werden und über Lautsprecher an den Benutzer ausgegeben werden. Alternativ kann der zweite Rechenknoten, sobald dieser betriebsbereit ist, die Berechnung der Audioausgabe des ersten Rechenknotens mitübernehmen, jedoch kann hierbei ein störender Sprung in der Ausgabe des Audiosignals entstehen, wenn eine Übergabe zwischen den beiden Rechenknoten stattfindet.
Moderne Infotainment-Systeme bestehen typischerweise aus mehreren Rechenknoten. Diese Rechenknoten können räumlich verteilt sein oder sich als separate Rechenknoten auf einem Siliziumchip befinden oder rein virtuell in einem von einem Hypervisor kontrollierten System existieren. Dabei startet ein erster Rechenknoten (Early) sehr schnell auf, um die Basisfunktionen, wie z.B. CAN-Bus und Soundausgaben, zur Verfügung zu stellen. Aufgrund der höheren Komplexität braucht der zweite Rechenknoten (Multimedia), mit z.B. Multimedia Aufgaben, mehr Zeit für den Aufstart. Um gewisse Audiofunktionen wie das Abspielen von Tönen (Parc Distance Control, offene Türe, nicht geschlossenes Gurtschloss oder Chimes) sehr schnell zur Verfügung zu haben, wird ein sehr einfaches Audiomanagement (AM) auf dem ersten Rechenknoten realisiert. Erst mit dem Aufstart des zweiten Rechenknotens wird das vollständige Audiomanagement für alle Quellen (Multimedia), z.B. Radio, Streaming, CD oder MP3, möglich.
-
Während der Übergabe von dem ersten Rechenknoten auf den zweiten Rechenknoten ist keine Audioausgabe möglich.
-
Es ist eine Aufgabe der Erfindung, die Audioausgabe in einem Fahrzeug zu verbessern.
-
Diese Aufgabe wird durch den Gegenstand der unabhängigen Ansprüche gelöst. Ausführungsformen und Weiterbildungen sind den abhängigen Ansprüchen, der Beschreibung und den Figuren zu entnehmen.
-
Ein erster Aspekt betrifft eine Recheneinheit für ein Audiosystem eines Fahrzeugs. Die Recheneinheit weist einen ersten Rechenknoten, einen zweiten Rechenknoten und einen Programmspeicher auf. Der Programmspeicher ist dazu eingerichtet, von dem ersten Rechenknoten und von dem zweiten Rechenknoten beschrieben zu werden. Die Recheneinheit ist dazu eingerichtet, dass nach dem Start der Recheneinheit der erste Rechenknoten eine Audioausgabe segmentweise berechnet und die Segmente nacheinander in den Programmspeicher schreibt, ablegt oder speichert bzw. in diesem zwischenspeichert. Ferner ist die Recheneinheit dazu eingerichtet, eine Übergabe der Berechnung der Audioausgabe von dem ersten Rechenknoten auf den zweiten Rechenknoten dann durchzuführen, wenn der Programmspeicher durch den ersten Rechenknoten mit Audiodaten bis zu einem vordefinierten Punkt beschrieben ist, sodass ein ganzes Audiosegment für die Audioausgabe zur Verfügung steht und wenn der zweite Rechenknoten betriebsbereit ist. Der zweite Rechenknoten ist dazu eingerichtet, die Audioausgabe nach der Übergabe zu berechnen und ebenfalls segmentweise in den Programmspeicher zu schreiben bzw. in diesem zwischenzuspeichern.
-
Somit kann die Audioausgabe während der Übergabe von dem ersten Rechenknoten an den zweiten Rechenknoten ohne Qualitätsverlust und ununterbrochen aufrechterhalten werden.
-
Es sei angemerkt, dass der erste und der zweite Rechenknoten schnell auf einen gemeinsam adressierbaren Programmspeicher (shared memory) lesen und schreiben kann. Dieser Programmspeicher kann ein Direkt Memory Access (DMA) Speicher sein, der zyklisch und segmentweise vom Audioausgabesystem ausgelesen wird und von diesem in das Audioausgabesignal gewandelt wird. Zunächst berechnet der erste Rechenknoten die Segmente für die vom Audioausgabesystem ausgeführte Audioausgabe und sobald der zweite Rechenknoten betriebsbereit bzw. aufgestartet ist und einen Zustand für die Übergabe erreicht hat, kann die Berechnung der Audioausgabesegmente an den zweiten Rechenknoten übergeben werden. Anschließend kann die Berechnung der Audioausgabe auf dem ersten Rechenknoten pausiert werden. Ferner kann die exakte Abspielposition der Audiodatei, welche die Grundlage für die Audioausgabe bildet, ebenfalls im shared memory gespeichert werden. Die Übergabe der Berechnung der Audioausgabe von dem ersten Rechenknoten auf den zweiten Rechenknoten erfolgt dann, wenn der Programmspeicher bis zu einem vordefinierten Punkt mit der Audioausgabe durch den ersten Rechenknoten beschrieben wurde. Vorzugsweise wird der Programmspeicher komplett mit der Audioausgabe für ein ganzes Audiosegment durch den ersten Rechenknoten beschrieben. Durch das Beschreiben des Programmspeichers bis zu einem vordefinierten Punkt kann sichergestellt werden, dass das Ausgeben der Audioausgabe durch ein Audioausgabesystem während der Übergabe reibungslos funktioniert und keine Unterbrechung der Ausgabe des Audiosignals auftritt. Dabei muss die Größe der im Programmspeicher abgelegten Audiodaten (z.B. einem ganzen Audiosegment) derart groß gewählt sein, dass die Ausgabezeit für diese Audiodaten durch den Ausgabe-Mechanismus (z.B. den DMA-Übertragungs-Mechanismus) größer ist als die Zeit für die Übergabe des Audiostatus und der Audioausgabenberechnung von dem ersten Rechenknoten an den zweiten Rechenknoten. Die Ausgabe kann auf Basis der in dem Programmspeicher gespeicherten Audioausgabe erfolgen.
-
Somit kann sichergestellt werden, dass keine Unterbrechung der Ausgabe der Audioausgabe, also des gespeicherten zur Ausgabe bestimmten Audiosignals, während der Übergabe zwischen den Rechenknoten auftritt. Dadurch kann die Qualität der Ausgabe der Audioausgabe verbessert werden und störende Unterbrechungen können vermieden werden.
-
Gemäß einer Ausführungsform der Erfindung ist der erste Rechenknoten ein schnell startender Rechenknoten für die Berechnung von einer grundlegenden Audioausgabe, wie beispielsweise Warntöne, z.B. von einem geöffneten Gurtschloss, einer offenen Tür oder von der Parkabstandskontrolle. Der zweite Rechenknoten ist ein Rechenknoten für die Berechnung einer vollständigen Audioausgabe, beispielsweise für ein Multimediasystem inklusive Navigationsansagen, CD, MP3, Streaming und/oder Radio. Es sei angemerkt, dass die vollständige Audioausgabe die grundlegende Audioausgabe umfassen kann.
-
Als Audioausgabe wird hierbei ein Audiosignal bezeichnet, welches anschließend durch ein Audioausgabesystem ausgegeben wird. Diese Audioausgabe kann in dem Programmspeicher zwischengespeichert werden, sodass dieser Programmspeicher als Puffer dienen kann. Die Audioausgabe kann hierbei direkt berechnet werden, beispielsweise auf Basis eines Sinussignals oder aber die Audioausgabe kann aus einer vordefinierten Audiodatei erzeugt werden. Beispielsweise können verschiedene vordefinierte Audiodateien auf einem Speicher abgelegt werden und der Rechenknoten spielt situationsbedingt die passende Audiodatei ab.
-
Es sei angemerkt, dass die Audiodatei ein analoges oder digitales Signal sein kann, jedoch vorteilhafterweise ein digitales Signal ist, welches bereits auf einem Speicher gespeichert ist, wobei beide Rechenknoten auf den Speicher mit der Audiodatei zugreifen können.
-
Es sei ferner angemerkt, dass die Recheneinheit eine Steuereinheit, ein Prozessor oder ein Schaltkreis sein kann. Ferner kann die Recheneinheit eine Speichereinheit zum Speichern von Daten aufweisen. Ferner können die beiden Rechenknoten in einer gemeinsamen Recheneinheit angeordnet sein, oder aber die beiden Rechenknoten können verteilt angeordnet sein. Ferner kann ein Rechenknoten durch einen Rechenkern eines Prozessors gebildet werden.
-
Der zweite Rechenknoten kann eine Vielzahl von Audiosignalen von verschiedenen Audioquellen berücksichtigen, wie ein z.B. Multimediasystem oder ein Infotainmentsystem. Ferner kann die Audioausgabe in der Verarbeitung der Audioquelle vielfältige Modifikationen erhalten, z.B. durch Berücksichtigung der Geschwindigkeit des Fahrzeugs, des Quellensignalpegels, der Verstärkertemperatur, der vom Benutzer ausgewählten Quelle(n) und von der Audioquelle dazu gemischter Quellen, beispielsweise Navigationsdurchsagen oder des Geräuschpegels im Fahrzeuginnenraum, z.B. bei Freisprecheinrichtungen.
-
Gemäß einer Ausführungsform können eine Vielzahl von Audioquelle bei der Berechnung der Audioausgabe berücksichtigt werden, z.B. ein Radio, ein Webradio, ein CD-Spieler, ein AUX-Anschluss, eine Bluetooth-Schnittstelle, ein Navigationssystem oder eine Freisprecheinrichtung.
-
Gemäß einer Ausführungsform der Erfindung weist die Recheneinheit ferner ein Audioausgabesystem auf (DMA Controller). Das Audioausgabesystem ist dazu eingerichtet, die in den Programmspeicher gespeicherten Audioausgabesegmente zyklisch zu lesen und kontinuierlich auszugeben.
-
Somit kann die vom ersten oder zweiten Rechenknoten berechneten Audioausgabesegmente, welche in dem Programmspeicher zyklisch abgelegt werden, durch das Audioausgabesystem akustisch ausgegeben werden, sodass ein Benutzer diese Audioausgabe akustisch wahrnehmen kann.
-
Gemäß einer Ausführungsform weist das Audioausgabesystem ferner einen Lautsprecher auf. Dieser Lautsprecher ist dazu eingerichtet, die in dem Programmspeicher gespeicherte und durch das Audioausgabesystem ausgegebene Audioausgabe in ein akustisches Signal zu wandeln.
-
Gemäß einer weiteren Ausführungsform der Erfindung weist der Programmspeicher einen ersten Speicherbereich und einen zweiten Speicherbereich auf. Die Recheneinheit bzw. der erste oder zweite Rechenknoten ist dazu eingerichtet, zunächst den ersten Speicherbereich mit der Audioausgabe zyklisch und segmentweise zu beschreiben und wenn der erste Speicherbereich bis zu dem vordefinierten Punkt beschrieben ist, auf den zweiten Speicherbereich zu wechseln. Vorteilhafterweise wird der erste Speicherbereich für ein komplettes Audiosegment durch die von dem ersten Rechenknoten berechneten Audioausgabe beschrieben, um anschließend auf den zweiten Speicherbereich zu wechseln und diesen komplett mit dem nächsten Segment der kommenden Audioausgabe zu beschreiben. Das Audioausgabesystem ist dazu eingerichtet, die im ersten Speicherbereich gespeicherte Audioausgabe auszugeben und wenn diese ausgegeben wurde, auf die in dem zweiten Speicherbereich gespeicherte Audioausgabe zu wechseln.
-
Mit anderen Worten kann das Audioausgabesystem die in dem ersten und zweiten Speicherbereich gespeicherte Audioausgabe abwechselnd ausgeben, sodass eine gepufferte und unterbrechungsfreie Ausgabe der Audioausgabe erfolgt. Die Recheneinheit ist dazu eingerichtet, wenn die im ersten Speicherbereich gespeicherte Audioausgabe ausgeben wurde und wenn der zweite Speicherbereich bis zu einem vordefinierten Punkt beschrieben ist, wieder den ersten Speicherbereich mit der Audioausgabe zu beschreiben, sodass der erste Speicherbereich und der zweite Speicherbereich jeweils abwechselnd mit der Audioausgabe beschrieben werden. Somit entsteht ein Ping-Pong-Speicher, welcher abwechselnd beschrieben und ausgelesen wird und anschließend auf den jeweils anderen Speicherbereich gewechselt wird. Mit anderen Worten kann während der Ausgabe der im ersten Speicherbereich gespeicherten Audioausgabe der zweite Speicherbereich mit der kommenden Audioausgabe beschrieben werden und umgekehrt. Die Speicherbereiche sind vorteilhafterweise gleich groß und werden von dem ersten bzw. zweiten Rechenknoten bis zu einem vordefinierten Punkt beschrieben. Alternativ kann der gemeinsame Speicher für Audiodaten auch als Ringspeicher organisiert sein, der es der Recheneinheit erlaubt mehrere Audiosegmente hintereinander zyklisch zu beschreiben und es dem Audioausgabesystem erlaubt mehrere bereits beschriebene Audiosegmente zu lesen.
-
Nun folgt eine detaillierte Beschreibung des Audioausgabesystems mit Hilfe eines direkt adressierbaren gemeinsamen Programmspeichers (DMA) und deren Funktionsweise. Der erste Rechenknoten berechnet die Audioausgabe und legt diese in einem der beiden Speicherbereiche ab, z.B. einen Teil einer Audiodatei. Diese berechnete Audioausgabe kann abwechselnd in einer festen Größe, z. B. N = 8192 Abtastwerte = ein Datenübertragungsblock oder Audiosegment, abwechselnd auf zwei verschiedene Speicherbereiche (Puffer) im Hauptspeicher geschrieben werden. Diese Speicherbereiche können an den Adressen A (erster Speicherbereich) bzw. B (zweiter Speicherbereich) beginnen oder auch unmittelbar an einander grenzen. Nach dem Start der Recheneinheit werden zunächst beide Speicherbereiche mit der durch den ersten Rechenknoten berechneten Audioausgabe beschrieben.
-
Die Steuerung des Audioausgabesystems für den Programmspeicher („DMA Controller“) erlaubt typischerweise diese zwei Adressen A und B und die Anzahl N der Speicherwörter (gleich der Audioabtastwerte (Samples) der Audioausgabe) des zu übertragenden Speicherbereichs zu setzen und den DMA Datenübertragungsvorgang zu starten. Der DMA Controller kann abwechselnd die Adressen A oder B laden, wenn die Anzahl N der Daten aus einem Speicherbereich an die Wandlung für das Audioausgabesignal übertragen wurde. Ferner kann die Adresse der DMA Interruptserviceroutine, die aufgrund eines Unterbrechungssignals vom DMA Controller an die Recheneinheit bei Erreichen der Anzahl N der übertragenen Speicherwörter von einem Rechenknoten angesprungen wird, in die Interruptvektortabelle dieses Rechenknotens eingetragen werden.
-
Startadresse A: Vor dem Start der allerersten Audioausgabe schreibt der erste Rechenknoten die ersten beiden Audiosegmente ab Adresse A und Adresse B in den Programmspeicher. An der Adresse A beginnt nun die Datenübertragung zur im Audiotakt gesteuerten Audiosenke indem der erste Rechenknoten den DMA Übertragungsmechanismus startet. Danach liest der DMA Controller automatisch und ohne Zutun der Rechenknoten kontinuierlich den Hauptspeicher ab Adresse A aus und überträgt die Audioausgabe im Takt der Audiosenke an die Peripherie, wo die Audioausgabe anschließend serialisiert oder analog gewandelt werden und an andere Komponenten außerhalb der Recheneinheit (auch SoC (System on Chip) genannt) ausgegeben werden (typischerweise einem Verstärker mit nachgeschalteten Lautsprechern). Wenn Adresse A gelesen ist, kann die interne Leseadresse des DMA Controllers inkrementiert werden, sobald die Ausgabe eines Audioabtastwertes im Audioausgabetakt an die Audiosenke erfolgt ist, sodass das nächste Sample der Audioausgabe aus dem Programmspeicher vom DMA Controller gelesen und an die Peripherie übertragen wird.
-
Folgeadresse B: Wenn die Anzahl der zu übertragenden Daten erreicht ist, wird die Leseadresse B vom DMA Controller zur Datenübertragung geladen und der DMA Controller erzeugt ein Unterbrechungssignal (Interrupt), der die Programmausführung des ersten Rechenknotens unterbricht und für die Ausführung einer Interruptserviceroutine auf dem ersten Rechenknoten sorgt. In dieser Interruptserviceroutine wird der Datenbereich im Hauptspeicher ab Adresse A wieder mit einer neuen Audioausgabe überschrieben. Währenddessen läuft die Ausgabe der Audioausgabe durch den DMA Controller ab Adresse B weiter und die Leseadresse wird weiter inkrementiert bis alle Audioausgabedaten dieses Speicherbereichs gelesen sind. Der DMA Controller fährt anschließend mit der Übertragung der Audioausgabe ab Adresse A fort.
-
Folgeadresse A: In dem Moment signalisiert der DMA Controller wieder ein Unterbrechungssignal an den ersten Rechenknoten, der die normale Programmausführung unterbricht und das Überschreiben des gerade ausgegebenen Speicherbereichs ab Adresse B durch die Interruptserviceroutine erlaubt, während gleichzeitig die zuletzt von dem ersten Rechenknoten berechnete Audioausgabe ab Adresse A vom DMA Controller an die Peripherie ausgeben werden.
-
Somit kann der Effekt der Ausgabe der Audiodaten per DMA derart beschrieben werden, dass für die Abspieldauer der Audioausgabe, die Ausgabe der Audioausgabe ohne Zutun eines Rechenknoten ungehindert und störungsfrei erfolgen kann, während auf dem Rechenknoten beliebige Programm- oder Zustandsänderungen möglich sind. Es wäre sogar möglich den Rechenknoten komplett neu zu initialisieren, wenn die Größe des Speicherbereichs ausreichend dimensioniert ist.
-
Gemäß einer Ausführungsform der Erfindung ist die Recheneinheit dazu eingerichtet, die Übergabe der Berechnung der Audioausgabe von dem ersten Rechenknoten auf den zweiten Rechenknoten dann durchzuführen, wenn der erste Speicherbereich oder der zweite Speicherbereich durch den ersten Rechenknoten bis zu dem vordefinierten Punkt beschrieben ist und wenn der zweite Rechenknoten betriebsbereit ist.
-
Die Übergabe zwischen dem ersten Rechenknoten und dem zweiten Rechenknoten kann vorteilhafterweise dann erfolgen, wenn der erste Speicherbereich bzw. der zweite Speicherbereich bis zu dem vordefinierten Punkt beschrieben ist, vorzugsweise wird der erste Speicherbereich bzw. der zweite Speicherbereich voll beschrieben. Ist der erste bzw. der zweite Speicherbereich bis zu dem vordefinierten Punkt beschrieben, kann die dort gespeicherte Audioausgabe durch das Audioausgabesystem ausgegeben werden und in der Zwischenzeit kann der zweite Rechenknoten die kommende Audioausgabe berechnen und wiederum in denjenigen Speicherbereich schreiben, welcher gerade nicht für die Ausgabe der Audioausgabe verwendet wird. Somit kann die Übergabe während des Ausgabe stattfinden, ohne dass die Ausgabe der Audioausgabe unterbrochen wird.
-
Gemäß einer Ausführungsform der Erfindung weist der Programmspeicher einen dritten Speicherbereich auf. Der erste Rechenknoten ist dazu eingerichtet, nach jedem Beschreiben des ersten Speicherbereichs oder des zweiten Speicherbereichs bis zu dem vordefinierten Punkt die exakte Abspielposition einer von beiden Rechenknoten zugreifbaren Audiodatei in den dritten Speicherbereich abzulegen, sodass eine nahtlose Übergabe der Audioausgabe möglich ist.
-
Durch das Ablegen der exakten Abspielposition der von beiden Rechenknoten zugreifbaren Audiodatei, kann eine nahtlose Übergabe der Berechnung erreicht werden. Somit weiß der zweite Rechenknoten, an welchem Punkt er mit der Berechnung der Audioausgabe starten soll und somit wird eine Unterbrechung oder ein Sprung in der Ausgabe der Audioausgabe verhindert.
-
Gemäß einer weiteren Ausführungsform der Erfindung ist die erste Recheneinheit dazu eingerichtet, nach dem Beschreiben des ersten Speicherbereichs oder des zweiten Speicherbereichs bis zu dem vordefinierten Punkt ein Unterbrechungssignal (Interrupt) auszulösen, welches signalisiert, dass der erste Speicherbereich oder der zweite Speicherbereich bis zu dem vordefinierten Punkt beschrieben ist. Der zweite Rechenknoten ist dazu eingerichtet, in Reaktion auf dieses Unterbrechungssignal die Audioausgabe zu übernehmen, indem der zweite Rechenknoten die exakte Abspielposition aus dem dritten Speicherbereich liest, die kommende Audioausgabe berechnet und diese Audioausgabe in dem ersten Speicherbereich oder in dem zweiten Speicherbereich speichert, je nachdem welche gerade nicht für die Ausgabe der Audioausgabe verwendet wird.
-
Durch das Unterbrechungssignal kann dem zweiten Rechenknoten signalisiert werden, wann eine Übergabe der Berechnung stattfinden kann. Nach dem Unterbrechungssignal kann der zweite Rechenknoten die Berechnung übernehmen, indem er die exakte Abspielposition aus dem dritten Speicherbereich liest und basierend darauf die kommende Audioausgabe berechnet. Diese Audioausgabe kann der zweite Rechenknoten anschließend in dem Programmspeicher speichern, sodass die Ausgabe der Audioausgabe nahtlos fortgesetzt werden kann.
-
Gemäß einer Ausführungsform der Erfindung weisen der erste Speicherbereich und der zweite Speicherbereich jeweils eine Größe auf, welche einer Ausgabezeit der Audioausgabe t entspricht. Die Ausgabezeit der Audioausgabe t ist länger als die für die Übergabe benötigte Zeit.
-
Diese Zeit der Audioausgabe t kann beispielsweise 10ms oder 100ms lang sein. Mit anderen Worten ist der erste bzw. der zweite Speicherbereich derart dimensioniert, dass dieser beispielsweise 10ms oder 100ms Audioausgabe speichern kann. Ferner kann die Audioausgabe t auch dynamisch sein, sodass bei einer bevorstehenden Übergabe die Größe des ersten und des zweiten Speicherbereichs vergrößert wird, sodass mehr Zeit für die Übergabe bleibt.
-
Ein weiterer Aspekt der Erfindung betrifft ein Verfahren zur nahtlosen Übergabe einer Berechnung einer Audioausgabe. Das Verfahren weist die folgenden Schritte auf:
- - Berechnen einer Audioausgabe durch einen ersten Rechenknoten;
- - Beschreiben eines Programmspeichers mit der berechneten Audioausgabe durch den ersten Rechenknoten;
- - Übergabe der Berechnung der Audioausgabe von dem ersten Rechenknoten auf einen zweiten Rechenknoten, wenn der Programmspeicher durch den ersten Rechenknoten bis zu einem vordefinierten Punkt beschrieben ist und wenn der zweite Rechenknoten betriebsbereit ist;
- - Berechnen der Audioausgabe durch den zweiten Rechenknoten; und
- - Beschreiben des Programmspeichers mit der berechneten Audioausgabe durch die zweite Recheneinheit.
-
Ein weiterer Aspekt der Erfindung betrifft ein Fahrzeug mit einer vorhergehend und nachfolgend beschriebenen Recheneinheit für ein Audiosystem.
-
Bei dem Fahrzeug handelt es sich beispielsweise um ein Kraftfahrzeug, wie Auto, Bus oder Lastkraftwagen, oder aber auch um ein Schienenfahrzeug, ein Schiff oder um ein Flugzeug oder ein Helikopter.
-
Ein weiterer Aspekt der Erfindung betrifft ein Programmelement, das, wenn es auf einer Recheneinheit eines Audiosystems ausgeführt wird, die Recheneinheit anleitet, das vorhergehend und nachfolgend beschriebene Verfahren durchzuführen.
-
Ein weiterer Aspekt der Erfindung betrifft ein computerlesbares Speichermedium, auf dem ein Programmelement gespeichert ist, das, wenn es auf einer Recheneinheit eines Audiosystems ausgeführt wird, die Recheneinheit anleitet, das vorhergehend und nachfolgend beschriebene Verfahren durchzuführen.
-
Weitere Merkmale, Vorteile und Anwendungsmöglichkeiten der Erfindung ergeben sich aus der nachfolgenden Beschreibung der Ausführungsbeispiele und der Figuren.
-
Die Figuren sind schematisch und nicht maßstabsgetreu. Sind in der nachfolgenden Beschreibung der Figuren gleiche Bezugszeichen angegeben, so bezeichnen diese gleiche oder ähnliche Elemente.
- 1 zeigt ein Blockdiagramm einer Recheneinheit gemäß einer Ausführungsform der Erfindung.
- 2 zeigt ein Fahrzeug mit einer Recheneinheit gemäß einer Ausführungsform der Erfindung.
- 3 zeigt ein Flussdiagramm für ein Verfahren zur Audioausgabe gemäß einer Ausführungsform der Erfindung.
- 4 zeigt ein Ablaufdiagramm für ein Verfahren zur Audioausgabe gemäß einer Ausführungsform der Erfindung.
- 5 zeigt ein weiteres Ablaufdiagramm für ein Verfahren zur Audioausgabe gemäß einer Ausführungsform der Erfindung.
-
1 zeigt ein Blockdiagramm einer Recheneinheit 1 eines Audiosystems. Die Recheneinheit 1 weist einen ersten Rechenknoten 10, einen zweiten Rechenknoten 20 und einen gemeinsam beschreibbaren Programmspeicher 30 auf. Der Programmspeicher 30 weist wiederum einen ersten Speicherbereich 31, einen zweiten Speicherbereich 32 und einen dritten Speicherbereich 33 auf. Dieser Programmspeicher 30 kann von beiden Rechenknoten 10, 20 beschrieben und gelesen werden und dient somit als gemeinsamer Programmspeicher 30 (shared memory). Der erste und der zweite Speicherbereich 31, 32 dient weiterhin der Speicherung der Audioausgabe, welche durch ein Audioausgabesystem 40 ausgegeben werden soll. Vorteilhafterweise sind der erste Speicherbereich 31 und der zweite Speicherbereich 32 gleich groß und sind derart dimensioniert, dass diese einer Ausgabezeit der Audioausgabe t entsprechen, wobei die Ausgabezeit der Audioausgabe t länger ist als die für die Übergabe benötigte Zeit. Die Audioausgabe t kann beispielsweise 10ms oder 100ms betragen. Es sei angemerkt, dass der erste und der zweite Speicherbereich auch dynamisch sein können, sodass bei einer bevorstehenden Übergabe der Speicherbereich vergrößert werden kann, da neben der Berechnung der kommenden Audioausgabe auch die Übergabe stattfinden muss. In dem dritten Speicherbereich 33 kann die exakte Abspielposition einer von beiden Rechenknoten 10, 20 zugreifbaren Audiodatei gespeichert sein, sodass der zweite Rechenknoten 20 nach der Übergabe die nahtlose Audioausgabe sicherstellen kann. Der erste Rechenknoten 10 weist eine Steuerung 11, eine grundlegenden Audiomanager 12 und einen Audioprozessor 13 für die grundlegende Audioausgabe auf. Der zweite Rechenknoten 20 weist ebenfalls eine Steuerung 21, einen vollständigen Audiomanager 22 und einen Audioprozessor 23 auf. Der erste Rechenknoten 10 ist ein schnell startender Rechenknoten mit einem reduzierten Betriebssystem, sodass grundlegende Audiosignale, wie Warntöne, berechnet werden können. Diese berechnete grundlegende Audioausgabe wird durch den Audioprozessor 13 für die grundlegende Audioausgabe in dem ersten bzw. dem zweiten Speicherbereich 31, 32 des Programmspeichers 30 geschrieben.
-
Diese beiden Speicherbereiche 31, 32 können abwechselnd mit der Audioausgabe beschrieben werden, sodass der erste Speicherbereich 31 beschrieben wird, während das Audioausgabesystem 40 die Audioausgabe aus dem zweiten Speicherbereich 32 liest und ausgibt, und dass der zweite Speicherbereich 32 beschrieben wird, wenn das Audioausgabesystem 40 die Audioausgabe aus dem ersten Speicherbereich 31 ausgibt. Somit entsteht ein Ping-Pong-Speicher, welcher wechselseitig beschrieben und ausgelesen wird.
-
Der erste bzw. der zweite Speicherbereich 31, 32 wird bis zu einem vorbestimmen Punkt beschrieben, vorzugsweise komplett. Nach jedem Beschreiben des ersten bzw. zweiten Speicherbereichs 31, 32 wird durch den ersten Rechenknoten 10 ein Unterbrechungssignal erzeugt, welches dem zweiten Rechenknoten 20 signalisiert, dass eine Übergabe stattfinden kann. Es sei angemerkt, dass dieses Unterbrechungssignal nur dann zu einer Übergabe der Berechnung führt, wenn der zweite Rechenknoten 20 betriebsbereit ist und innerhalb einer vordefinierten Zeitspanne in Reaktion auf das Unterbrechungssignal die Übergabe initiiert. Des Weiteren schreibt der erste Rechenknoten nach jedem beschreiben des ersten bzw. des zweiten Speicherbereichs 31, 32 die aktuelle Abspielposition einer von beiden Rechenknoten 10, 20 zugreifbaren Audiodatei in den dritten Speicherbereich 33. Somit kann der zweite Rechenknoten 20 bei erfolgter Übergabe an der richtigen Position mit der Berechnung der kommenden Audioausgabe fortsetzen. Es sei angemerkt, dass der erste bzw. der zweite Rechenknoten die Audioausgabe berechnen kann, z.B. basierend auf einem Sinussignal, oder aber der Rechenknoten kann aus einer vordefinierten Anzahl an Audiodateien die passende Audiodatei und Abspielposition bestimmen und diese in dem gemeinsamen Programmspeicher 30 ablegen, schreiben bzw. speichern. Ist die Übergabe erfolgt, wird die Audioausgabe durch den zweiten Rechenknoten 20 berechnet, welcher auch weitere Audiofunktionen, wie Multimediaanwendungen und Navigationshinweise, bei der Berechnung berücksichtigen kann, wodurch eine vollständige Audioausgabe möglich ist. Diese berechnete Audioausgabe wird anschließend wiederum in den gemeinsamen Programmspeicher abgelegt bzw. gespeichert, sodass das Audioausgabesystem 40 diese ausgeben kann.
-
2 zeigt ein Fahrzeug 2 mit einer vorhergehend und nachfolgend beschriebenen Recheneinheit 1 für ein Audiosystem. Über das Audiosystem können Warntöne, ein Audioeingangssignal von einer Audioquelle, wie z.B. ein Radio, ein Referenzsignal und/oder ein Hinweissignal ausgegeben werden. Die Warntöne müssen direkt nach dem Start des Fahrzeugs ertönen, sodass hierfür ein schnell startendes System (Rechenknoten inkl. Betriebssystem) benötigt wird, welches die Audioausgabe hierfür berechnet. Dies wird durch den ersten Rechenknoten der Recheneinheit 1 sichergestellt, welcher ein schnell startender Rechenknoten für die grundsätzliche Audioausgabe ist. Im weiteren Verlauf der Fahrt sollte jedoch der zweite Rechenknoten die Berechnung der Audioausgabe übernehmen, da dieser mehr Rechenleistung aufweist und somit eine komplexere Audioausgabe (inkl. mehrerer Audioquellen und Warnsignalen) berechnen kann. Dieser benötigt jedoch länger um gestartet zu werden und somit steht er zu Beginn der Fahrt unter Umständen nicht für die Berechnung der Audioausgabe zur Verfügung. Daraus folgt, dass eine Übergabe zwischen dem ersten Rechenknoten und dem zweiten Rechenknoten stattfinden muss, wenn der zweite Rechenknoten die vollständige Audioausgabe berechnen soll. Diese Übergabe der Berechnung von dem ersten Rechenknoten zu dem zweiten Rechenknoten sollte hierbei derart erfolgen, dass das Ausgaben der Audioausgabe nahtlos erfolgt. Mit anderen Worten sollte es für den Fahrer des Fahrzeugs 2 nicht hörbar sein, wenn die Berechnung der Audioausgabe übergeben wird.
-
3 zeigt ein Flussdiagramm für ein Verfahren zur nahtlosen Übergabe einer Audioausgabe. In einem ersten Schritt S1 erfolgt die Berechnung einer Audioausgabe durch einen ersten Rechenknoten. Diese berechnete Audioausgabe wird durch den ersten Rechenknoten in dem Schritt S2 in einen Programmspeicher geschrieben. Insbesondere kann der Programmspeicher zwei Speicherbereiche aufweisen, welche abwechselnd bis zu einem vordefinierten Punkt durch den ersten Rechenknoten beschrieben werden. Ferner können die Schritte S1 und S2 mehrmals hintereinander ausgeführt werden, insbesondere so lange bis ein zweiter Rechenknoten betriebsbereit ist. In Schritt S3 erfolgt die Übergabe der Berechnung der Audioausgabe von dem ersten Rechenknoten auf den zweiten Rechenknoten, wenn der zweite Rechenknoten betriebsbereit ist. Hierbei erfolgt die Übergabe dann, wenn der Programmspeicher bis zu dem vordefinierten Punkt beschrieben wurde, vorzugweise wenn der Programmspeicher, der erste Speicherbereich oder der zweite Speicherbereich komplett beschreiben wurde. Ferner kann der erste Rechenknoten ein Unterbrechungssignal ausgeben, wenn der Programmspeicher, der erste Speicherbereich oder der zweite Speicherbereich bis zu dem vordefinierten Punkt beschrieben ist, sodass der zweite Rechenknoten daraufhin die Berechnung der Audioausgabe übernehmen kann. In dem darauffolgenden Schritt S4 erfolgt die Berechnung der Audioausgabe durch den zweiten Rechenknoten. Diese berechnete Audioausgabe wird anschließend in Schritt S5 durch den zweiten Rechenknoten in den Programmspeicher, den ersten Speicherbereich oder den zweiten Speicherbereich geschrieben. Es sei angemerkt, dass der Programmspeicher, der erste Speicherbereich oder der zweite Speicherbereich von beiden Rechenknoten beschrieben und ausgelesen werden kann. Dadurch dass die Übergabe der gesamten Berechnung der Audioausgabe dann erfolgt, wenn der Programmspeicher bis zu einem vordefinierten Punkt beschreiben ist (vorzugweise komplett), kann eine nahtlose Ausgabe der Audioausgabe trotz Übergabe deren Berechnung sichergestellt werden.
-
4 zeigt ein weiteres Flussdiagramm für ein Verfahren zur nahtlosen Übergabe einer Audioausgabe. Zunächst erfolgt in Schritt S10 die Initialisierung des ersten Rechenknotens. Hierbei startet dieser sein Betriebssystem, sodass eine Audioausgabe berechnet werden kann. Gleichzeitig startet Schritt S20 mit der Initialisierung des zweiten Rechenknotens. Der erste Rechenknoten ist insbesondere für die Berechnung einer grundlegenden Audioausgabe, z.B. von Warntönen, gedacht. In Schritt S11 berechnet der erste Rechenknoten die Audioausgabe und schreibt die ersten beiden Audiosegmente in den direkt adressierbaren Speicherbereichen ab Adresse A und B. Hierbei kann der erste Rechenknoten die Audiosignale direkt berechnen oder aber auf vordefinierte Audiodateien zurückgreifen, wobei dabei der erste Rechenknoten hierbei die exakte Abspielposition dieser vordefinierten Audiodateien bestimmt. Danach startet dieser die Übertragung der Audioausgabe durch das Audioausgabesystem (den Direct Memory Controller), der die Audiodaten zunächst aus dem Adressbereich ab Adresse A liest und an die Audioperipherie ausgibt.
-
Währenddessen wird in Zwischenschritt S21 der zweite Rechenknoten initialisiert. Diese Initialisierung dauert in der Regel deutlich länger, als die Ausführung der ersten Folgeschritte S12, S13, S14, S15 und S16 des ersten Rechenknotens. Nachdem der zweite Rechenknoten seine Initialisierung im Schritt S21 abgeschlossen hat, stellt er eine Aufforderung zur Audioübergabe an den ersten Rechenknoten, indem zum Beispiel eine von ersten Rechenknoten lesbare Speicheradresse ÜBERGABE mit einem vereinbarten Wert „AUFFORDERUNG“ beschrieben wird. Zuvor muss diese Speicheradresse mit einem anderen Wert initialisiert werden.
-
Wenn der Direct Memory Controller seine Daten aus dem ersten Speicherbereich ab Adresse A ausgegeben hat und dies an den ersten Rechenknoten zum Beispiel mit einem Unterbrechungssignal signalisiert hat, fährt der erste Rechenknoten mit Schritt S12 fort und lädt den Speicherbereich ab Adresse A nach, das heißt berechnet die entsprechende Audioausgabe und legt die Audiodaten ab Adresse A ab.
Währenddessen fährt der Direct Memory Controller fort, die Audiodaten ab Adresse B zu lesen und an die Audioperipherie auszugeben.
-
Nach dem Schritt S12 fragt der erste Rechenknoten im Schritt S13 ab, ob eine Audioübergabe vom zweiten Rechenknoten angefordert ist und kontrolliert dazu den Wert der Speicheradresse ÜBERGABE, ob sie den Wert „AUFFORDERUNG“ enthält. Ist dies nicht der Fall, wird im Schritt S14 das nächste Audiosegment berechnet und auf die Signalisierung des Direct Memory Controllers gewartet, dass die Daten vollständig aus dem Speicherbereich ab Adresse B vom DMA Controller gelesen wurden. Dann wird das neu berechnete Audiosegment ab Adresse B in den Programmspeicher geschrieben.
-
Währenddessen fährt der Direct Memory Controller fort, die Audiodaten ab Adresse A zu lesen und an die Audioperipherie auszugeben. Nach dem Schritt S14 fragt der erste Rechenknoten im Schritt S15 erneut ab, ob eine Audioübergabe vom zweiten Rechenknoten angefordert ist und kontrolliert dazu wieder den Wert von ÜBERGABE, ob diese den Wert „AUFFORDERUNG“ enthält. Ist dies nicht der Fall wird wieder auf die Signalisierung des Direct Memory Controllers gewartet, dass die Daten vollständig aus dem Speicherbereich ab Adresse A vom DMA Controller gelesen und an die Audioperipherie ausgegeben wurden. Anschließend wird mit dem Schritt S12 fortgefahren.
-
Dieser Zyklus wiederholt sich bis in den Schritten S13 oder S15 unmittelbar nach der Signalisierung durch das Audioausgabesystem der erste Rechenknoten feststellt, dass die Adresse ÜBERGABE den Wert „AUFFORDERUNG“ beinhaltet und damit der zweite Rechenknoten die Audioübergabe vom ersten Rechenknoten angefordert hat und beide mögliche Ablaufflüsse im Schritt S16 zusammenkommen.
-
Somit kann der erste und der zweite Speicherbereich abwechselnd mit der berechneten Audioausgabe beschrieben werden. Das Audioausgabesystem hingegen liest die in dem ersten Speicherbereich abgespeicherte Audioausgabe und gibt diese aus. Sobald die Audioausgabe aus dem ersten Speicherbereich ausgegeben wurde, wechselt das Audioausgabesystem auf den zweiten Speicherbereich und gibt die dort gespeicherte Audioausgabe aus. Wurde auch diese ausgegeben, wechselt das Audioausgabesystem wieder zurück auf den ersten Speicherbereich, sodass eine wechselseitige Ausgabe der Audioausgabe erfolgt. Somit ist es vorteilhaft, um eine nahtlose Ausgabe der Audioausgabe sicherzustellen, die Übergabe zwischen den beiden Rechenknoten dann durchzuführen, wenn das Audioausgabesystem gerade den einen Speicherbereich abspielt und der andere Speicherbereich beschrieben werden kann.
-
Im Schritt S16 kopiert der erste Rechenknoten den Audiomanagementstatus (welche Audioquellen gerade aktiv sind), welcher Adressbereich A oder B zuletzt mit Audiodaten beschrieben wurde und die exakte(n) Abspielposition(en) in einen dritten Speicherbereich und signalisiert dies dem zweiten Rechenknoten zum Beispiel mit einem Unterbrechungssignal und über die gemeinsam schreib- und lesbare Speicheradresse ÜBERGABE mit dem Wert „JETZT“, die der zweite Knoten nach dem Schritt S21 abfragt.
-
Basierend darauf berechnet nun der zweite Rechenknoten in Schritt S17 die Audioausgabe und schreibt diese in den ersten bzw. zweiten Speicherbereich ab Adresse A oder B, je nachdem welcher gerade nicht für die Ausgabe der Audioausgabe verwendet wird. Außerdem werden die Unterbrechungsanforderungen der Audioausgabe auf den zweiten Rechenknoten umgeleitet, so dass künftige Unterbrechungen durch die Audioausgabeeinheit (des Direct Memory Access Controllers) nach vollständiger Ausgabe eines Audiosegments ab Leseadresse A oder B zu einem Nachladen von Audiodaten durch den zweiten Rechenknoten führen. Somit wurde die Berechnung der Audioausgabe von dem ersten Rechenknoten auf den zweiten Rechenknoten übergeben, ohne dass eine Unterbrechung in der Audioausgabe für den Benutzer wahrnehmbar war.
-
5 zeigt ein weiteres Ablaufdiagram für ein Verfahren zur nahtlosen Übergabe einer Audioausgabe. Hierbei kommen zwei verschiedene Rechenknoten (erster und zweiter Rechenknoten) zu Einsatz, welche getrennt voneinander sind. Dies wird durch den schwarzen durchgezogenen Strich in der Mitte des Diagramms symbolisiert. Die Übergabe der Berechnung der Audioausgabe (Suspendierung) erfolgt von dem ersten Rechenknoten auf den zweiten Rechenknoten. Hierbei kann der zweite Rechenknoten eine Anforderung zur Übergabe stellen (ÜBERGABE = „AUFFORDERUNG“) und der erste Rechenknoten kann, wenn ein Speicherbereich bis zu einem vordefinierten Punkt beschrieben wurde, die Übergabe auslösen (ÜBERGABE = „JETZT“). Dieses Vorgehen wir durch die gestrichelten Pfeile in 5 dargestellt. Die schwarzen Pfeile symbolisieren einen Ablauf von Arbeitsschritten. Auf den Programmspeicher (shared Memory) kann durch beide Rechenknoten zugegriffen werden. Die einzelnen Verfahrensschritte und Stati werden im Folgenden kurz erläutert.
- S10: Initialisierung des ersten Rechenknotens (Early)
- S11: Initialisierung (z.B. Lesen der Audiodatei vom Filesystem); Laden DMA Puffer A und B, Ausgabe Puffer A
- S12: Nachladen Puffer A und Ausgabe DMA Puffer B
- S13: Suspendierung möglich? Unterbrechungssignal wird ausgelöst
- S14: Nachladen Puffer B und Ausgabe DMA Puffer A
- S15: Suspendierung möglich? Unterbrechungssignal wird ausgelöst
- S16: Wenn Suspendierung: AudioManagement Statusübergabe
- S16': als Unterschritt von S16; Kopieren des AudioManagement Status, der exakten Abspielposition (der Audiodatei und der Sounderzeugungsparameter) in den shared memory
- S20: Initialisierung des zweiten Rechenknotens (Multimedia)
- S21: Aufforderung zur Suspendierung durch den zweiten Rechenknoten an den ersten Rechenknoten; ÜBERGABE auf „AUFFORDERUNG“ setzen
- S22: Warten auf ÜBERGABE = „JETZT“; AudioManagement Status und Abspielposition aus dem Shared memory lesen
- S22': Initialisierung AudioManagement, Audiodateiwiedergabe ab letzter Abspielposition
- S22": Umsetzung der DMA Unterbrechungen auf den zweiten Rechenknoten
- S22'": Wiedergabe Audiodatei, Audioausgabe mit DMA Mechanismus