Title:
Verbesserter Datentransfer in Audiocodeccontrollern
Kind Code:
B4


Abstract:

Audiocodec-Controller umfassend:
eine erste Schnittstelleneinrichtung (140) zum Durchführen eines Datentransfers zu und von einem Audiocodec (180, 190);
eine zweite Schnittstelleneinrichtung (130) zum Durchführen eines Datentransfers von einem externen Speicher (100);
einen Datenpuffer (160) zum Puffern von Daten, die von dem externen Speicher über die zweite Schnittstelleneinrichtung empfangen worden sind, und
ein Auffangregister (200),
dadurch gekennzeichnet, dass
das Auffangregister eingerichtet ist zum Empfangen von Daten von dem Datenpuffer, die von dem Audiocodec angefordert worden sind, und zum temporären Speichern der empfangenen Daten, und
die erste Schnittstelleneinrichtung verbunden ist, um temporär gespeicherte Daten von dem Auffangregister in einer Reihenfolge zu empfangen, die von der Reihenfolge der von dem externen Speicher empfangenen Daten verschieden ist.




Inventors:
Ziep, Norbert (Dresden, 01129, DE)
Berndt, Thomas (Radebeul, 01445, DE)
Application Number:
DE10219357A
Publication Date:
03/11/2004
Filing Date:
04/30/2002
Assignee:
Advanced Micro Devices, Inc. (Sunnyvale, Calif., US)
International Classes:
G10H7/00 (IPC1-7): G06F13/00
Domestic Patent References:
DE69702336T2N/A



Foreign References:
5857083
Attorney, Agent or Firm:
GRÜNECKER, KINKELDEY, STOCKMAIR & SCHWANHÄUSSER (München)
Claims:
Audiocodec-Controller umfassend:
eine erste Schnittstelleneinrichtung (140) zum Durchführen eines Datentransfers zu und von einem Audiocodec (180, 190);
eine zweite Schnittstelleneinrichtung (130) zum Durchführen eines Datentransfers von einem externen Speicher (100);
einen Datenpuffer (160 ) zum Puffern von Daten, die von dem externen Speicher über die zweite Schnittstelleneinrichtung empfangen worden sind, und
ein Auffangregister (200),
dadurch gekennzeichnet, dass
das Auffangregister eingerichtet ist zum Empfangen von Daten von dem Datenpuffer, die von dem Audiocodec angefordert worden sind, und zum temporären Speichern der empfangenen Daten, und
die erste Schnittstelleneinrichtung verbunden ist, um temporär gespeicherte Daten von dem Auffangregister in einer Reihenfolge zu empfangen, die von der Reihenfolge der von dem externen Speicher empfangenen Daten verschieden ist.

Audiocodec-Controller nach Anspruch 1, wobei die erste Schnittstelleneinrichtung eingerichtet ist zum wenigstens zweimaligen Zugreifen auf das Auffangregister, um die temporär gespeicherten Daten zu empfangen, ohne dass der Datenpuffer aus dem externen Speicher nachgefüllt werden muss.

Audiocodec-Controller nach Anspruch 2, wobei der Datentransfer zu dem Audiocodec den Transfer von Rahmen einschließt und die erste Schnittstelleneinrichtung eingerichtet ist zum Übertragen der Daten, die beim wenigstens zweimaligen Zugreifen auf das Auffangregister empfangen worden sind, zu dem Audiocodec in wenigstens zwei Rahmen.

Audiocodec-Controller nach Anspruch 1, wobei der Datentransfer zu dem Audiocodec ein paketorientierter Datentransfer ist, während der Datentransfer von dem externen Speicher ein audiosampleorientierter Datentransfer ist.

Audiocodec-Controller nach Anspruch 1, wobei der Datentransfer zu dem Audiocodec ein Mehrkanalaudiodatentransfer ist.

Audiocodec-Controller nach Anspruch 5, wobei der Mehrkanalaudiodatentransfer einen Datentransfer in Bezug auf einen Kanal vorne links und einen Kanal vorne rechts enthält.

Audiocodec-Controller nach Anspruch 5, wobei der Mehrkanalaudiodatentransfer einen Datentransfer in Bezug auf einen Kanal hinten links und einen Kanal hinten rechts enthält.

Audiocodec-Controller nach Anspruch 5, wobei der Mehrkanalaudiodatentransfer einen Datentransfer in Bezug auf einen Vorne-Mitte-Kanal enthält.

Audiocodec-Controller nach Anspruch 5, wobei der Mehrkanalaudiodatentransfer einen Datentransfer in Bezug auf einen Subwoofer-Kanal enthält.

Audiocodec-Controller nach Anspruch 5, wobei der Mehrkanalaudiodatentransfer ein 2-Kanaldatentransfer in Bezug auf einen Kanal vorne links und einen Kanal vorne rechts ist.

Audiocodec-Controller nach Anspruch 5, wobei der Mehrkanalaudiodatentransfer ein 4-Kanal-Datentransfer in Bezug auf einen Kanal vorne links, einen Kanal vorne rechts, einen Kanal hinten links und einen Kanal hinten rechts ist.

Audiocodec-Controller nach Anspruch 5, wobei der Mehrkanalaudiodatentransfer ein 6-Kanal-Datentransfer in Bezug auf einen Kanal vorne links, einen Kanal vorne rechts, einen Kanal hinten links, einen Kanal hinten rechts, einen Vorne-Mitte-Kanal und einen Subwoofer-Kanal ist.

Audiocodec-Controller nach Anspruch 5, wobei der Mehrkanalaudiodatentransfer einen Transfer von Rahmen mit Zeitschlitzen enthält und jedem Kanal einer der Zeitschlitze zugewiesen ist.

Audiocodec-Controller nach Anspruch 1, betreibbar in wenigstens zwei verschiedenen Betriebsmoden.

Audiocodec-Controller nach Anspruch 14, wobei die wenigstens zwei Betriebsmoden verschiedene Datentransfermoden des Datentransfers zu dem Audiocodec betreffen.

Audiocodec-Controller nach Anspruch 15, wobei sich die Datentransfermoden in der Anzahl unterstützter Audiokanäle unterscheiden.

Audiocodec-Controller nach Anspruch 16, wobei die Datentransfermoden einen 2-Kanal-Datentransfermodus, einen 4-Kanal-Datentransfermodus und einen 6-Kanal-Datentransfermodus enthalten.

Audiocodec-Controller nach Anspruch 16, wobei der Datenpuffer eingerichtet ist zum Puffern der Daten, die von dem externen Speicher empfangen worden sind, in wenigstens zwei verschiedenen Konfigurationen, wobei jede Konfiguration eine der wenigstens zwei verschiedenen Datentransfermoden betrifft.

Audiocodec-Controller nach Anspruch 18, wobei der Datenpuffer eingerichtet ist zum Puffern von Gruppen von Audiodatensamples, wobei die Anzahl von Audiodatensamples in jeder Gruppe der Anzahl unterstützter Audiokanäle entspricht.

Audiocodec-Controller nach Anspruch 15, wobei sich die Datentransfermoden in den unterstützten Transferraten unterscheiden.

Audiocodec-Controller nach Anspruch 20, wobei die Datentransfermoden einen vollratigen Modus und einen halbratigen Modus enthalten.

Audiocodec-Controller nach Anspruch 20, wobei der Datentransfer zu dem Audiocodec den Transfer von Rahmen enthält und sich die unterstützten Transferraten in der Anzahl von Rahmen unterscheiden, die verwendet werden, um Audiodaten bezüglich eines Audiosamples zu übertragen.

Audiocodec-Controller nach Anspruch 14, wobei die wenigstens zwei verschiedenen Betriebsmoden Samplingmoden sind.

Audiocodec-Controller nach Anspruch 1, wobei der Datenpuffer ein FIFO-Puffer ist.

Audiocodec-Controller nach Anspruch 24, wobei der Datentransfer zu dem Audiocodec ein Mehrkanaldatentransfer ist und der FIFO-Puffer eine Vielzahl von Puffereinheiten umfasst, die jeweils Daten bezüglich eines individuellen Kanals puffern.

Audiocodec-Controller nach Anspruch 24, wobei der FIFO-Puffer eingerichtet ist zum Puffern von Audiodatensamples, die eine Breite von einem Wort aufweisen.

Audiocodec-Controller nach Anspruch 26, wobei der FIFO-Puffer eingerichtet ist, dass auf ihn doppelwortweise zugegriffen wird.

Audiocodec-Controller nach Anspruch 1, weiterhin umfassend:
einen Datenpuffercontroller (170) zum Steuern des Datenpuffers, um Daten zu puffern, die von der zweiten Schnittstelleneinrichtung empfangen worden sind.

Audiocodec-Controller nach Anspruch 28, wobei der Datenpuffer ein FIFO-Puffer ist.

Audiocodec-Controller nach Anspruch 28, weiterhin umfassend:
einen zweiten Datenpuffer (150) zum Puffern von Daten, die von dem Audiocodec über die erste Schnittstelleneinrichtung empfangen worden sind,
wobei der Datenpuffercontroller weiterhin eingerichtet ist zum Steuern des zweiten Datenpuffers, um Daten zu puffern, die von der ersten Schnittstelleneinrichtung empfangen worden sind.

Audiocodec-Controller nach Anspruch 28, wobei der Datenpuffercontroller eingerichtet ist zum Überprüfen einer Unterlaufbedingung des Datenpuffers und zum Steuern des Datenpuffers, um nachgefüllt zu werden, wenn die Unterlaufbedingung eintritt.

Audiocodec-Controller nach Anspruch 1, verbindbar mit dem externen Speicher über einen Datenbus, wobei die zweite Schnittstelleneinrichtung eingerichtet ist zum Agieren als Busmaster-Controller.

Audiocodec-Controller nach Anspruch 1, wobei die erste Schnittstelleneinrichtung eingerichtet ist zum Durchführen eines Datentransfers zu und von zwei Audiocodecs.

Audiocodec-Controller nach Anspruch 33, wobei die Datenübertragungen von beiden Audiocodecs Rahmen mit Zeitschlitzen enthalten, wobei die Zeitschlitze des Audiodatentransfers von einem der Audiocodecs und die Zeitschlitze des Audiodatentransfers von dem anderen der Audiocodecs orthogonal sind.

Audiocodec-Controller nach Anspruch 1, wobei der Datentransfer zu und von dem Audiocodec den Transfer von Rahmen mit Zeitschlitzen zum Übertragen von Audiosampledaten enthält und die Länge der Zeitschlitze größer als die Länge der Audiosampledaten ist.

Audiocodec-Controller nach Anspruch 35, wobei die Audiosampledaten innerhalb der Zeitschlitze in den höchstwertigen Bits übertragen werden.

Audiocodec-Controller nach Anspruch 1, nämlich ein AC' 97-gemäßer (AC: Audio Codec) digitaler Controller.

Integrierter Schaltkreischip mit einer Audiocodec-Steuerfunktionalität, wobei der integrierte Schaltkreischip umfasst:
eine erste Schnittstellenschaltung (140) zum Durchführen eines Datentransfers zu und von einem Audiocodec (180, 190);
eine zweite Schnittstellenschaltung (130) zum Durchführen eines Datentransfers vor einem externen Speicher (100); und
einen Datenpuffer (160) zum Puffern von Daten, die von dem externen Speicher über die zweite Schnittstellenschaltung empfangen worden sind,
wobei der integrierte Schaltkreischip weiterhin umfasst:
ein Auffangregister (200) zum Empfangen von Daten von dem Datenpuffer, die von dem Audiocodec angefordert worden sind, und zum temporären Speichern der empfangenen Daten,
wobei die erste Schnittstellenschaltung verbunden ist, um temporär gespeicherte Daten von dem Auffangregister in einer Reihenfolge zu empfangen, die von der Reihenfolge der von dem externen Speicher empfangenen Daten verschieden ist.

Audiocodec-Steuerverfahren, umfassend:
Empfangen (1120) von Daten von einem externen Speicher (100);
Puffern (1120) der empfangenen Daten in einem Datenpuffer (160);
Speichern (310) gepufferter Daten temporär in einem Auffangregister (200) in Übereinstimmung mit einer Anforderung von einem Audiocodec (180, 190); und
Übertragen (330, 1050) temporär gespeicherter Daten von dem Auffangregister zu dem Audiocodec unabhängig von einem Betrieb des Datenpuffers in einer Reihenfolge, die von der Reihenfolge der von dem externen Speicher empfangenen Daten verschieden ist.

Verfahren nach Anspruch 39, wobei der Schritt des Übertragens temporär gespeicherter Daten umfasst:
wenigstens zweimaliges Zugreifen auf das Auffangregister, ohne dass der Datenpuffer aus dem externen Speicher nachgefüllt werden muss.

Verfahren nach Anspruch 40, wobei der Schritt des Übertragens von Daten zu dem Audiocodec den Transfer von Rahmen enthält und der Schritt des wenigstens zweimaligen Zugreifens auf das Auffangregister umfasst:
Übertragen der temporär gespeicherten Daten zu dem Audiocodec in wenigstens zwei Rahmen.

Verfahren nach Anspruch 39, wobei der Datentransfer zu dem Audiocodec ein paketorientierter Datentransfer ist, während der Datentransfer von dem externen Speicher ein audiosampleorientierter Datentransfer ist.

Verfahren nach Anspruch 39, wobei der Datentransfer zu dem Audiocodec ein Mehrkanalaudiodatentransfer ist.

Verfahren nach Anspruch 43, wobei der Mehrkanalaudiodatentransfer einen Datentransfer in Bezug auf einen Kanal vorne links und einen Kanal vorne rechts enthält.

Verfahren nach Anspruch 43, wobei der Mehrkanalaudiodatentransfer einen Datentransfer in Bezug auf einen Kanal hinten links und einen Kanal hinten rechts enthält.

Verfahren nach Anspruch 43, wobei der Mehrkanalaudiodatentransfer einen Datentransfer in Bezug auf einen Vorne-Mitte-Kanal enthält.

Verfahren nach Anspruch 43, wobei der Mehrkanalaudiodatentransfer einen Datentransfer in Bezug auf einen Subwoofer-Kanal enthält.

Verfahren nach Anspruch 43, wobei der Mehrkanalaudiodatentransfer ein 2-Kanal-Datentransfer in Bezug auf einen Kanal vorne links und einen Kanal vorne rechts ist.

Verfahren nach Anspruch 43, wobei der Mehrkanalaudiodatentransfer ein 4-Kanal-Datentransfer in Bezug auf einen Kanal vorne links, einen Kanal vorne rechts, einen Kanal hinten links und einen Kanal hinten rechts ist.

Verfahren nach Anspruch 43, wobei der Mehrkanalaudiodatentransfer ein 6-Kanal-Datentransfer in Bezug auf einen Kanal vorne links, einen Kanal vorne rechts, einen Kanal hinten links, einen Kanal hinten rechts, einen Vorne-Mitte-Kanal und einen Subwoofer-Kanal ist.

Verfahren nach Anspruch 43, wobei der Mehrkanalaudiodatentransfer den Transfer von Rahmen mit Zeitschlitzen enthält und jedem Kanal einer der Zeitschlitze zugewiesen ist.

Verfahren nach Anspruch 39, wobei der Schritt des Übertragens von Daten zu dem Audiocodec in Übereinstimmung mit einem von wenigstens zwei verschiedenen Datentransfermoden durchgeführt wird.

Verfahren nach Anspruch 52, wobei sich die Datentransfermoden in der Anzahl unterstützter Audiokanäle unterscheiden.

Verfahren nach Anspruch 53, wobei die Datentransfermoden einen 2-Kanal-Datentransfermodus, einen 4-Kanal-Datentransfermodus und einen 6-Kanal-Datentransfermodus enthalten.

Verfahren nach Anspruch 53, wobei der Schritt des Pufferns der empfangenen Daten in dem Datenpuffer umfasst:
Anwenden eines von wenigstens zwei verschiedenen Datenpufferkonfigurationen,
wobei jede Konfiguration einen der wenigstens zwei verschiedenen Datentransfermoden betrifft.

Verfahren nach Anspruch 55, wobei der Schritt des Anwendens der Datenpufferkonfigurationen umfasst:
Puffern von Gruppen von Audiodatensamples,
wobei die Anzahl von Audiodatensamples in jeder Gruppe der Anzahl unterstützter Audiokanäle entspricht.

Verfahren nach Anspruch 39, wobei der Schritt des Übertragens von Daten zu dem Audiocodec in Übereinstimmung mit einem von wenigstens zwei verschiedenen Transferratenmoden durchgeführt wird.

Verfahren nach Anspruch 57, wobei die Transferratenmoden einen vollratigen Modus und einen halbratigen Modus enthalten.

Verfahren nach Anspruch 57, wobei der Datentransfer zu dem Audiocodec den Transfer von Rahmen enthält und sich die wenigstens zwei verschiedenen Transferratenmoden in der Anzahl von Rahmen unterscheiden, die verwendet werden, um die Audiodaten in Bezug auf einen Audiosample zu übertragen.

Verfahren nach Anspruch 39, wobei der Datentransfer zu dem Audiocodec ein Mehrkanaldatentransfer ist und der Schritt des Pufferns der empfangenen Daten in dem Datenpuffer umfasst:
Puffern von Daten in Bezug auf jeden einzelnen Kanal in einer separaten Puffereinheit einer Vielzahl von FIFO-Puffereinheiten des Datenpuffers.

Verfahren nach Anspruch 39, wobei die gepufferten Daten Audiodatensamples mit einer Breite von einem Wort sind.

Verfahren nach Anspruch 60, wobei der Schritt des Pufferns der empfangenen Daten in dem Datenpuffer umfasst:
doppelwortweises Zugreifen auf den Datenpuffer.

Verfahren nach Anspruch 39, weiterhin umfassend:
Steuern des Datenpuffers, um eine Unterlaufbedingung des Datenpuffers zu überprüfen und den Datenpuffer nachzufüllen, wenn die Unterlaufbedingung eintritt.

Verfahren nach Anspruch 39, eingerichtet zum Durchführen eines Datentransfers zu und von zwei Audiocodecs, wobei die Datentransfers von beiden Audiocodecs Rahmen mit Zeitschlitzen enthalten, wobei die Zeitschlitze des Audiodatentransfers von einem der Audiocodecs und die Zeitschlitze des Audiodatentransfers von dem anderen der Audiocodecs orthogonal sind.

Verfahren nach Anspruch 39, wobei der Datentransfer zu und von dem Audiocodec den Transfer von Rahmen mit Zeitschlitzen zum Übertragen von Audiosampledaten enthält und die Länge der Zeitschlitze größer als die Länge der Audiosampledaten ist.

Verfahren nach Anspruch 65, wobei die Audiosampledaten innerhalb der Zeitschlitze in den höchstwertigen Bits übertragen werden.

Verfahren nach Anspruch 39, nämlich zum Steuern von AC' 97-gemäßen (AC: Audio Codec) Audiocodecs.

Description:
HINTERGRUND DER ERFINDUNG1. Gebiet der Erfindung

Die Erfindung betrifft allgemein Audiocodec-Controller wie etwa AC '97-Controller (AC: Audio Codec) und insbesondere den Datentransfer zwischen solchen Controllern und einem Audiocodec.

2. Beschreibung des Standes der Technik

Aktuelle Computersysteme wie etwa Personalcomputer sind gewöhnlich mit Audiofähigkeiten ausgestattet und enthalten Soundkarten und Lautsprecher. PC-Audiohardware (PC: Personal Computer) und Audioanwendungen schreiten schnell fort und es gibt eine Menge faszinierender neuer Anwendungen einschließlich 3D-Spielen mit Positionsaudio, DVD-Playback, Internettelefonieren, Spracherkennungssoftware usw. Viele dieser neuen Anwendungen erfordern aufwendige Soundkarten während andere Anwendungen mit preiswerter Hardware verwendet werden können.

Viele Motherboards enthalten auf dem Board einen speziellen Soundchip zum Bereitstellen eingebauter Audiofähigkeiten. Andere Motherboards können eine solche Funktionalität bereitstellen, ohne einen speziellen integrierten Schaltkreischip vorsehen zu müssen, der all diese Audiosignalverarbeitung durchführt. Stattdessen können solche Motherboards Schaltkreise gemäß der AC'97-Spezifikation enthalten. Die AC'97-Funktionalität kann von einem Chipsatz auf dem Motherboard durchgeführt werden, z.B. von einem Southbridge-Bauelement.

Die AC' 97-Spezifikation definiert eine Audiocodec-Architektur und eine digitale Schnittstelle, die speziell zur Implementierung einer Audio- und Modem-I/O-Funktionalität in Mainstream-PC-Systemen entworfen wurde. In einer solchen Architektur wird eine Schnittstelle bereitgestellt, die es ermöglicht, dass Audiodaten in einem eher preiswerten Zusatzchip verarbeitet werden, der einen Analog-zu-digital-Wandler zusammen mit einigen zusätzlichen Analogschaltkreisen enthält. Die wirkliche Audiodatenverarbeitung wird jedoch von der CPU (Central Processing Unit, zentrale Verarbeitungseinheit) des Computersystems durchgeführt. Eine AC' 97 Architektur ist in 1 gezeigt. Das System enthält einen Audiocodec-Controller 110, auf den im folgenden auch als Digitalcontroller Bezug genommen wird, und einen Satz von z.B. zwei Codecs 180, 190. Die Codecs 180, 190 können auf einer Platine oder Karte 120 liegen und es kann einen primären Codec 180 und einen sekundären Codec 190 geben. Die Codecs können Audio-Codecs, Modem-Codecs oder kombinierte Audio/Modem-Codecs sein und beide Codecs 180, 190 können in einem oder in zwei physikalisch separaten integrierten Schaltkreischips bereitgestellt werden.

Die Codecs 180, 190 führen eine Digital-zu-analog-Wandlung und Analog-zu-digital-Wandlung, Mischung und analoge Eingabe/Ausgabe (I/O) für Audiozwecke (oder Modemzwecke) durch und funktionieren stets alle Slaves des Audiocodec-Controllers 110. Der Controller ist typischerweise entweder ein PCI-Beschleuniger (PCI: Peripheral Component Interconnect) oder ein Controller, der in einem Core-Logic-Chipsatz integriert daherkommt. Die digitale Verbindung, die den Audiocodec-Controller 110 mit den Codecs 180, 190 verbindet, ist eine bidirektionale serielle TDM-Format-Schnittstelle (TDM: Time Division Multiplexing) mit fünf Leitungen, die als AC-Link bezeichnet wird. Der AC-Link unterstützt Verbindungen zwischen einem einzelnen Audiocodec-Controller 110 und bis zu vier Codecs 180, 190.

Der Audiocodec-Controller 110 ist weiterhin mit dem Hostspeicher 100 des Computersystems verbunden, z.B. mittels eines PCI-Busses. In dem Audiocodec-Controller 110 gibt es jeweilige Schnittstellen-Controller 130, 140 zum Steuern des Datentransfers an beiden Schnittstellen. Das bedeutet, dass der digitale Controller 110 einen Busmaster-Controller 130 und einen AC-Link-Schnittstellen-Controller 140 umfasst.

Wie aus 1 ersehen werden kann, umfasst der Audiocodec-Controller 110 weiterhin einen Eingabe-FIFO-Puffer (FIFO: First In First Out) 150 und einen Ausgabe-FIFO-Puffer 160, die von einem FIFO-Controller 170 gesteuert werden. Die Puffer 150, 160 speichern Daten in Bezug auf einen der zwei unabhängigen Datenströme des hereinkommenden und herausgehenden Verkehrs. Das bedeutet, dass der Busmaster-Controller 130 auf den Hostspeicher 100 zugreift, um Audiodaten zu empfangen, die von einem der Codecs 180, 190 benötigt werden. Die empfangenen Daten werden in dem Ausgabe-FIFO-Puffer 160 gespeichert und dort dem AC-Link-Schnittstellen-Controller 140 verfügbar gemacht, um an den Codec 180, 190 gesendet zu werden. Der Eingabe-FIFO-Puffer 150 führt die entsprechende Funktion bezüglich des Datenstroms durch, der seinen Ursprung bei den Codecs 180, 190 hat.

In solchen Audio-Subsystemen können mehr als zwei Kanäle in Verwendung sein. Insbesondere in 6-Kanal-Konfigurationen kann es separate Audiokanäle für vorne links, vorne rechts, hinten links, hinten rechts, vorne Mitte und Subwoofer geben. In solchen Fällen wird die Behandlung des Ausgabe-FIFO-Puffers 160 durch den FIFO-Controller 170 ziemlich schwierig und insbesondere der AC-Link-Schnittstellen-Controller 140 muss mit komplizierten Hardwareschaltungen ausgestattet sein, um auf den Ausgabe-FIFO-Puffer 160 zuzugreifen, wenn er die seriellen Daten für den AC-Link erstellt. Dies kann zu signifikanten Schaltkreisentwicklungskosten und Herstellungskosten führen.

DE 697 02 336 T2 offenbart ein Audiosystem für PC mit frequenzkompensierten Wellenformdaten. Eine PC-Audioschaltung wird beschrieben, die einen PC-Busschnittstellenblock und eine Ausgangssteuerungszustandsmaschine umfasst. Ferner wird ein Cache-Speicher bereitgestellt, der mit anderen Einheiten mittels eines internen Adress-Busses verbunden ist. Ein digitaler Signalprozessor wird bereitgestellt, um Datensamples in dem Cache-Speicher zu verarbeiten. Die verarbeiteten Datensamples werden in Akkumulatorschlangen gespeichert. Auf die akkumulierten Samples wird dann von der Ausgangssteuerungszustandsmaschine zugegriffen.

US 5,857,083 A beschreibt eine Busschnittstellenvorrichtung, um eine Schnittstelle eines sekundären Peripheriebusses mit einem System mit einer Host-CPU und einem primären Peripheriebus auszubilden. Ein Phantomgerät wird bereitgestellt, das sich der Host-CPU gegenüber als ein einzelnes multifunktionales Gerät darstellt, das die Funktionen der mit dem Shadow-Bus verbundenen Geräte durchführt. Vier FIFO-Register werden für Lese- und Schreibanforderungen sowie für Daten verwendet, die von den Shadow-Bus-Geräten und dem PCI-Bus kommen. Ferner enthält das Phantomgerät interne Register zum Speichern einer Map des Adressraumes, einer Priorität und eines Betriebsmodus für jedes Shadow-Bus-Gerät.

ÜBERSICHT ÜBER DIE ERFINDUNG

Die Erfindung wird durch die Gegenstände der unabhängigen Ansprüche angegeben.

Bevorzugte Ausgestaltungen der Erfindung sind in den Unteransprüchen definiert.

Eine verbesserte Audiocodec-Steuertechnik wird bereitgestellt, bei der der Datentransfer insbesondere unter Audio-Mehrkanalbedingungen effizienter und zuverlässiger durchgeführt werden kann.

In einer Ausgestaltung wird ein Audiocodec-Controller bereitgestellt, der eine erste Schnittstelleneinrichtung umfasst zum Durchführen eines Datentransfers zu und von einem Audiocodec, eine zweite Schnittstelleneinrichtung zum Durchführen eines Datentransfers von einem externen Speicher und einen Datenpuffer zum Puffern von Daten, die von dem externen Speicher über die zweite Schnittstelleneinrichtung empfangen worden sind. Der Audiocodec-Controller umfasst weiterhin ein Auffangregister zum Empfangen von Daten von dem Datenpuffer, die von dem Audiocodec angefordert wurden, und zum temporären Speichern der empfangenen Daten. Die erste Schnittstelleneinrichtung ist verbunden, um temporär gespeicherte Daten von dem Auffangregister zu empfangen.

In einer anderen Ausgestaltung wird ein integrierter Schaltkreischip bereitgestellt, der eine Audiocodec-Steuerfunktionalität aufweist. Der integrierte Schaltkreischip umfasst eine erste Schnittstellenschaltung zum Durchführen eines Datentransfers zu und von einem Audiocodec, eine zweite Schnittstellenschaltung zum Durchführen eines Datentransfers von einem externen Speicher und einen Datenpuffer zum Puffern von Daten, die von dem externen Speicher über die zweite Schnittstellenschaltung empfangen worden sind. Der integrierte Schaltkreischip umfasst weiterhin ein Auffangregister zum Empfangen von Daten von dem Datenpuffer, die von dem Audiocodec angefordert worden sind, und zum temporären Speichern der empfangenen

Daten. Die erste Schnittstellenschaltung ist verbunden, um temporär gespeicherte Daten von dem Auffangregister zu empfangen.

In einer weiteren Ausgestaltung kann ein Audiocodec-Steuerverfahren bereitgestellt werden. Das Verfahren umfasst das Empfangen von Daten von einem externen Speicher, das Puffern der empfangenen Daten in einem Datenpuffer, das temporäre Speichern gepufferter Daten in einem Auffangregister in Übereinstimmung mit einer Anforderung von Audiocontroller und das Übertragen temporär gespeicherter Daten von dem Auffangregister zu dem Audiocodec unabhängig von einem Betrieb des Datenpuffers.

KURZE BESCHREIBUNG DER ZEICHNUNGEN

Die beigefügten Zeichnungen sind in die Beschreibung eingefügt und bilden einen Teil derselben zum Zwecke der Erläuterung der Prinzipien der Erfindung. Die Zeichnungen sind nicht als die Erfindung nur auf die verdeutlichten und beschriebenen Beispiele beschränkend zu verstehen, wie die Erfindung gemacht und verwendet werden kann. Weitere Merkmale und Vorteile werden aus der folgenden und genaueren Beschreibung der Erfindung ersichtlich werden, wie in den beigefügten Zeichnungen verdeutlicht, in denen:

1 ein Systemdiagramm ist, das die Komponenten eines herkömmlichen AC' 97-Systems verdeutlicht;

2 ein Systemdiagramm ist, das ein AC' 97-gemäßes System gemäß einer Ausgestaltung verdeutlicht;

3 ein Flussdiagramm ist, das den Hauptprozess des Durchführens eines Audio-Out-Datentransfers gemäß einer Ausgestaltung verdeutlicht;

4 eine Sequenz von Datenrahmen auf dem AC-Link in einer vollratigen 2-Kanal-Konfiguration verdeutlicht;

5 eine Sequenz von Datenrahmen auf dem AC-Link in einer halbratigen 2-Kanal-Konfiguration verdeutlicht;

6 eine Sequenz von Datenrahmen auf dem AC-Link in einer vollratigen 4-Kanal-Konfiguration verdeutlicht;

7 eine Sequenz von Datenrahmen auf dem AC-Link in einer halbratigen 4-Kanal-Konfiguration verdeutlicht;

8 eine Sequenz von Datenrahmen auf dem AC-Link in einer vollratigen 6-Kanal-Konfiguration verdeutlicht;

9 eine Sequenz von Datenrahmen auf dem AC-Link in einer halbratigen 6-Kanal-Konfiguration verdeutlicht;

10 ein Flussdiagramm ist, das den Prozess des Betriebs eines Audiocodec-Controllers gemäß einer Ausgestaltung verdeutlicht; und

11 ein Flussdiagramm ist, das ein Beispiel der FIFO-Behandlung verdeutlicht, die in dem Prozess von 10 durchgeführt wird.

DETAILLIERTE BESCHREIBUNG DER ERFINDUNG

Die verdeutlichten Ausgestaltungen der vorliegenden Erfindung werden unter Bezugnahme auf die Zeichnungen beschrieben werden, in denen gleiche Elemente und Strukturen mit gleichen Bezugzeichen angegeben werden.

Wird nun auf die Zeichnungen und insbesondere auf 2 Bezug genommen, die ein Audiosystem gemäß einer Ausgestaltung verdeutlicht, so unterscheidet sich das System von dem von 1 hauptsächlich darin, dass ein Auffangregister ("capture register") 200 im Audio-Out-Datenpfad bereitgestellt wird. Das Auffangregister 200 ist mit dem Ausgabe-FIFO-Puffer 160verbunden, um von dem Puffer Daten zu empfangen, die zuvor von einem der Codecs 180, 190 angefordert worden sind. Weiterhin ist das Auffangregister 200 mit dem AC-Link-Schnittstellen-Controller 140 verbunden, um Daten an den Schnittstellen-Controller 140 zu liefern, die in dem Auffangregister 200 temporär gespeichert sind. Somit kann die Bereitstellung des Auffangregisters 200 ohne eine erforderliche Modifikation des FIFO-Controllers 170 eine effiziente Durchführung eines paketorientierten Datentransfers auf dem AC-Link gestatten, obwohl der Ausgabe-FIFO-Puffer 160 noch auf sampleorientierter Basis gesteuert wird. Dies wird aus der detaillierteren Beschreibung unten weiter ersichtlich werden, wo Beispiele von Betriebmoden und Betriebsverfahren in dem Audiocodec-Controller 210 von 2 gezeigt sind.

Es sind mehrere Konfigurationen des Audio-Subsystems der vorliegenden Ausgestaltung möglich, um den Audioverkehr als 2-, 4- oder 6-Kanal-Datenstrom durchzuführen. In dem 2-Kanal-Modus hat der primäre Codec 180 zwei Kanäle, während ein sekundärer Codec 190 entweder nicht existiert oder sich in einem Leerlaufmodus befindet. In der 4-Kanal-Version kann der primäre Codec 180 vier Kanäle haben, wobei der sekundäre Codec 190 nicht existiert oder sich im Leerlauf befindet. Alternativ können der primäre Codec 180 sowie der sekundäre Codec 190 jeweils zwei Kanäle haben. In entsprechender Weise können zwei verschiedene 6-Kanal-Versionen existieren: eine, bei der der primäre Codec 180 zwei Kanäle und der sekundäre Codec 190 vier Kanäle hat, und die andere, bei der der primäre Codec 180 vier Kanäle und der sekundäre Codec 190 zwei Kanäle hat.

Der Ausgabe-FIFO-Puffer 160 kann in sechs Puffereinheiten unterteilt sein, von denen jede der Speicherung von Daten in Bezug auf einen der möglichen Audio-Out-Kanäle dient: vorne links, vorne rechts, hinten links, hinten rechts, vorne Mitte und Subwoofer. Alternativ kann der Ausgabe-FIFO-Puffer 160 Daten, die vom Host-Speicher 100 empfangen worden sind, in ziemlich genau derselben Weise speichern, als wären die Daten im Host-Speicher 100gespeichert. In der vorliegenden Ausgestaltung speichert der Ausgabe-FIFO-Puffer 160 ein Sample (eine Probe oder Abtastung) für jeden Kanal, wobei ein Sample durch ein Wort von 16 Bits dargestellt wird. Da der Audiocodec-Controller 210 der vorliegenden Ausgestaltung 2-, 4- und 6-Kanal-Konfigurationen unterstützt, ist die Anzahl an Kanälen zu jeder Zeit gerade, so dass jeglicher Zugriff auf den Ausgabe-FIFO-Puffer 160 doppelwortweise durchgeführt werden kann. Da ein Wort ein Sample repräsentiert, wird auf den Ausgabe-FIFO-Puffer 160 auf sample-orientierte Weise zugegriffen. Die folgende Tabelle zeigt am Beispiel einer 6-Kanal-Konfiguration die Art des Auffangens von Daten-Samples in dem Host-Speicher 100 und dem Ausgabe-FIFO-Puffer 160:

Bei der Vorbereitung des Datentransfers über den AC-Link müssen die Samples neu geordnet werden, da die Zuweisung von Samples auf Zeitschlitze in dem seriellen Datenstrom zu den Codecs 180, 190 von einer Mehrkanal-Konfiguration zu einer anderen verschieden sein kann. Ein Beispiel einer entsprechenden Sample-Reihenfolge ist in der Tabelle unten gezeigt:

Wie daraus ersichtlich ist, erwartet der Audio-Busmaster-Controller 130 bei einem gegebenen 2-, 4- oder 6-Kanal-Audiostrom, dass jegliche Sample-Zusammensetzung mit dem Vorne-links-Sample beginnt. Jedoch hängt die Sample-Reihenfolge dann von der spezifischen Kanalkonfiguration ab. Durch die Bereitstellung des Auffangregisters 200 kann jedem möglichen Datenreihenfolgeerfordernis in den verschiedenen Mehrkanalanwendungen leicht genüge getan werden und der paketorientierte Datentransfer auf dem AC-Link kann einfach durch Multiplexieren der temporär gespeicherten konsistenten Daten hinsichtlich der Zeitschlitze durchgeführt werden.

Wird nun zu 3 übergangen, so ist der Hauptprozess der Durchführung des Audio-Out-Datentransfers gezeigt. In Schritt 300 empfängt der Audiocodec-Controller 210 eine Anforderung von dem primären oder einem (optionalen) sekundären Codec 180, 190 nach Audiosamples. Die angeforderten Samples werden dann aus dem Ausgabe-FIFO-Puffer 160 in das Auffangregister 200 gelesen (Schritt 310). Schließlich werden die Samples an den Codec im Schritt 330 gesendet.

Wie aus dem Flussdiagramm von 3 ersehen werden kann, kann es verschiedene Betriebsmoden geben, die die Art und Weise beeinflussen können, wie die angeforderten Daten an den Codec gesendet werden. Die Betriebsmoden können ein variabler Sample-Modus, ein Down-Sample-Modus etc. sein. Darüber hinaus können die Betriebsmoden Transfermoden sein, die sich in der Anzahl unterstützter Kanäle oder Transferraten unterscheiden. Der Ausgabe-FIFO-Puffer 160 kann dann die Daten, die er vom Host-Speicher 100 empfängt, in wenigstens zwei verschiedenen Konfigurationen puffern, wobei jede Konfiguration zu einen der Datentransfermoden gehört. Der Ausgabe-FIFO-Puffer 160 kann weiterhin Gruppen von Audiodatensamples Puffern, wobei die Anzahl von Audiodatensamples in jeder Gruppe der Anzahl unterstützter Audiokanäle entspricht. Zusätzlich können die Samplepaare (Doppelwörter) für die Kanäle vorne links/vorne rechts, vorne Mitte/Subwoofer und hinten links/hinten rechts durch Programmierung jeweils gegeneinander ausgetauscht (Swapping) werden.

Da der Audiocodec-Controller 210 der vorliegenden Ausgestaltung in verschiedenen Betriebsmoden betrieben werden kann, enthält der in 3 gezeigte Prozess einen Schritt 320 des Bestimmens des Betriebsmodus, und der Sendeschritt 330 wird abhängig von dem bestimmten Modus durchgeführt.

In einer anderen Ausgestaltung wird der Betriebsmodus von dem Treiber ganz zu Anfang des Prozesses geladen und konfiguriert. Darüber hinaus kann der Schritt 320 des Bestimmens des Betriebsmodus vor dem Schritt 310 des Lesens der angeforderten Samples aus dem Ausgabe-FIFO-Puffer 160 in das Auffangregister 200 durchgeführt werden. Dies gestattet es sogar, den Schritt 310 abhängig von dem bestimmten Betriebsmodus zu machen.

Ein Beispiel dafür, wie das Senden von Samples über den AC-Link abhängig von einem Betriebsmodus durchgeführt werden kann, wird nun unter Bezug auf die 4 bis 9 diskutiert.

In diesen Figuren werden in 2-, 4- und 6-Kanal-Konfigurationen Datentransfermoden angewendet, die sich in den unterstützten Transferraten unterscheiden. In dem vollratigen Transfermodus werden alle Samples in einem Rahmen gesendet. In dem halbratigen Transfermodus werden zwei Rahmen verwendet, wobei die Samples für vorne links, vorne Mitte und hinten links in einem Rahmen und die Samples für vorne rechts, hinten rechts und Subwoofer in dem folgenden Rahmen übertragen werden. Genauer gesagt verdeutlicht 4 den Fall einer 2-Kanal-Konfiguration, bei der die Daten im vollratigen Modus übertragen werden. 5 ist das entsprechende Diagramm, das den halbratigen Modus verdeutlicht, und die 6 und 7 bzw. 8 und 9 betreffen die 4-Kanal-Konfiguration bzw. 6-Kanal-Konfiguration.

In dem Beispiel halbratiger Datenübertragungen wird das Auffangregister 200 aus dem Ausgabe-FIFO-Puffer 160 mit den Audiosamples aller Kanäle der jeweiligen Konfiguration gefüllt. Der AC-Link-Schnittstellen-Controller 140 wird jedoch veranlasst, auf das Auffangregister 200 zweimal zuzugreifen, um die temporär gespeicherten Daten in einem Rahmen und dann die verbleibenden Samples in dem folgenden Rahmen zu übertragen. Das bedeutet, dass das Auffangregister 200 einen paketorientierten Datentransfer über den AC-Link unabhängig von dem Betrieb des Ausgabe-FIFO-Puffers 160 ermöglicht.

In der vorliegenden Ausgestaltung gestattet der AC-Link-Schnittstellen-Controller 140 weiterhin das Senden von Einwortsamples, d.h. 16-Bit-Samples, über den seriellen AC-Link, obwohl die Zeitschlitze 20 Bit breit sind. In diesem Fall werden die 16-Bit-Samples als die 16 höchstwertigen Bits jedes 20-Bit-Schlitzes übertragen, wobei die niedrigen Bits bei einlaufenden Daten verworfen und bei Ausgabedaten mit Nullen gefüllt werden. Darüber hinaus kann der AC-Link-Schnittstellen-Controller 140, wenn es einen optionalen sekundären Codec 190 in dem System gibt, Eingangsschlitze in vollständig orthogonaler Weise zuweisen, was bedeutet, dass keine zwei Datenschlitze am selben Ort auf beiden Codec-Signalen gültig sein werden.

Wird nun zu 10 übergegangen, so ist eine andere Ausgestaltung des Betriebs des Audiocodec-Controllers 210 gezeigt. In Schritt 1000 überprüft der Controller 210, ob der Codec 180, 190 bereit ist. Ist dies der Fall, so werden die gültigen Schlitzanforderungen im Schritt 1010 gespeichert und der Betriebsmodus im Schritt 1020 festgestellt. Es wird dann in Schritt 1030 überprüft, ob Samples in dem Auffangregister 200 vorhanden sind. Sind keine Samples vorhanden, so wird eine FIFO-Behandlungsroutine 1040 zum Nachfüllen des Auffangregisters 200 durchgeführt. Schließlich werden ein oder mehrere Rahmen an den Codec 180, 190 abhängig von dem Betriebsmodus gesendet, der zuvor festgestellt worden ist (Schritt 1050).

Während die FIFO-Behandlungsroutine 1040 in dem Flussdiagramm von 10 als direkt vor der Sendung der Rahmen durchgeführt gezeigt wird, kann die FIFO-Behandlung auch vollkommen unabhängig von dem in 10 gezeigten Prozess durchgeführt werden. Darüber hinaus kann die FIFO-Behandlungsroutine eine Pufferunterlaufregelung (Pufferunterschreitungsregelung, "under-run policy") enthalten, die garantiert, dass existierende Daten gehalten werden, bis die neuen Daten verfügbar sind. Somit ist für jedes neue Paket, das von dem Codec180, 190 angefordert wird, ein definierter und stabiler Datenstatus für den Codec ohne jegliche Datenverfälschung und Inkonsistenz erzielbar.

11 zeigt ein Beispiel einer FIFO-Behandlungsroutine. In Schritt 1100 bestimmt der FIFO-Controller 170, ob der Ausgabe-FIFO-Puffer 160 in eine Unterlaufbedingung eingetreten ist. Ist dies der Fall, so fordert der Busmaster-Controller 130 neue Daten vom Host-Speicher 100 an (Schritt 1110), und die angeforderten Daten werden in Schritt 1120 empfangen.

Während die Erfindung in Bezug auf physikalische Ausgestaltungen, die in Überreinstimmung damit konstruiert worden sind, beschrieben worden ist, wird Fachleuten ersichtlich sein, dass zahlreiche Modifikationen, Variationen und Verbesserungen der vorliegenden Erfindung im Lichte der obigen Lehren und innerhalb des Umfangs der beigefügten Ansprüche gemacht werden können, ohne von der Idee und dem beabsichtigten Umfang der Erfindung abzuweichen. Zusätzlich sind solche Bereiche, in denen davon ausgegangen wird, dass sich Fachleute auskennen, hier nicht beschrieben worden, um die hierin beschriebene Erfindung nicht unnötig zu verschleiern. Es ist demgemäß zu verstehen, dass die Erfindung nicht durch die spezifisch verdeutlichten Ausgestaltungen, sondern nur durch den Umfang der beigefügten Ansprüche beschränkt ist.