Beyond AC97 Audio Controller IP Core is designed to enable easy control of external AC97 CODECs using multi port AMBA AHB/APB or WISHBONE SOC interconnect. It is implemented in a way to minimize audio data handling by SOC processor via built-in dedicated audio DMA engine. External interface supports one external AC97 revision 2.3 compliant audio CODEC with 6 output (3 of them can be Double Rate Audio) and 3 input channels.
Features
Beyond AC97 Audio Controller main features are:
Audio Features
Fixed 48kHz audio support
Hardware variable sample rate support from 8kHz to 48kHz (up to 96kHz with Double Rate Audio enabled)
Double Rate Audio support for Left, Right and Center channels
16, 18 and 20-bit sample size support
Mono, stereo or multichannel (1, 2, 4 or 6 channels) audio output support
Stereo Input and dedicated Mono microphone Input Channel support (all together 3 input channels)
Power management support (individual subsections or full power-down mode)
Full access to codec registers (tone, loudness, 3D stereo enhancement, etc.)
Supported SoC Bus Interfaces
The core is available with support for any of the following interconnect options:
AMBA:
AHB for Master Interface
AHB for optionally APB for Slave Interface
WISHBONE Master and Slave Rev. B.3 compliant interfaces (efficient burst transfers supported for Master)
Other buses: for additional options please contact salesbeyondsemi.com
Interface Features
Can operate as Slave only audio controller (Master doesn't need to be connected)
Integrated audio DMA engine using Master Interface
Full audio stream/channel decoding (through DMA)
All channels can be configured to use any stream and/or sub-stream data (including stereo channels)
Memory Features
System memory double-buffering supported
Internal memory double-buffering supported
Fully configurable internal memory support (size, distributed/block)
Configurable stream descriptor memory size
Architecture
Figure bellow shows the general architecture of the Beyond AC97 Audio IP core. It consists of following building blocks: