SNAS598B July 2012 – July 2015 LM4549B
PRODUCTION DATA.
The LM4549B codec can mix, process and convert among analog (stereo and mono) and digital (AC Link format) inputs and outputs. There are four stereo and four mono analog inputs and two stereo and one mono analog outputs. A single codec supports data streaming on two input and two output channels of the AC Link digital interface simultaneously.
All four of the stereo analog inputs and three of the mono analog inputs can be selected for conversion by the 18-bit stereo ADC. Digital output from the left and right channel ADCs is always located in AC Link Input Frame slots 3 and 4 respectively. Input level to either ADC channel can be muted or adjusted from the Record Gain register, 1Ch. Adjustments are in 1.5 dB steps over a gain range of 0 dB to +22.5 dB and both channels mute together (mute bit D15). Input selection for the ADC is through the Record Select Mux controlled from the Record Select register, 1Ah, together with microphone selection controlled by the MS bit (bit D8) in the General Purpose register, 20h. One of the stereo inputs, CD_IN, uses a quasi-differential 3-pin interface where both stereo channel inputs are referenced to the third pin, CD_GND. CD_GND should be AC coupled to the source ground and provides common-mode feedback to cancel ground noise. It is not a DC ground. The other three stereo inputs, LINE_IN, AUX and VIDEO are 2-pin interfaces, single-ended for each stereo channel, with analog ground (AVSS) as the signal reference. Either of the two mono microphone inputs can be muxed to a programmable boost amplifier before selection for either channel of the ADC. The Microphone Mux is controlled by the Microphone Selection (MS) bit (D8) in the General Purpose register (20h) and the 20 dB programmable boost is enabled by the 20dB bit (D6) in register 0Eh. The mono PHONE input may also be selected for either ADC channel.
Five analog inputs are available for mixing at the stereo mixer, MIX1 – all four stereo and one mono, namely the microphone input selected by MS (D8, reg 20h). Digital input to the codec can be directed to either MIX1 or to MIX2 after conversion by the 18-bit stereo DAC and level adjustment by the PCM Out Volume control register (18h). Each input to MIX1 may be muted or level adjusted using the appropriate Mixer Input Volume Register: Mic Volume (0Eh), Line_In Volume (10h), CD Volume (12h), Video Volume (14h), Aux Volume (16h) and PCM Out Volume (18h). The mono microphone input is mixed equally into left and right stereo channels but stereo mixing is orthogonal, that is, left channels are only mixed with other left channels and right with right. The left and right amplitudes of any stereo input may be adjusted independently however mute for a stereo input acts on both left and right channels.
Control of routing the DAC output to MIX1 or MIX2 is by the POP bit (D15) in the General Purpose register, 20h. If MIX1 is selected (default, POP=0) then the DAC output is available for processing by the TI 3D Sound circuitry. If MIX2 is selected, the DAC output will bypass the 3D processing. This allows analog inputs to be enhanced by the analog 3D Sound circuitry prior to mixing with digital audio. The digital audio may then use alternative digital 3D enhancements. TI 3D Sound circuitry is enabled by the 3D bit (D13) in the General Purpose register, 20h, and is a fixed depth implementation. The 3D Control register, 22h, is therefore not programmable (read-only). The 3D Sound circuitry defaults to disabled after reset.
MIX2 combines the output of MIX1 (Stereo Mix 3D) with the two mono analog inputs, PHONE and PC_BEEP; each are level-adjusted by the input control registers Phone Volume (0Ch) and PC_Beep Volume (0Ah) respectively. If selected by the POP bit (D15, reg 20h), the DAC output is also summed into MIX2.
The output of MIX2 is the signal, Stereo Mix. Stereo Mix is used to drive both the Line output (LINE_OUT) and the Line Level output (LNLVL_OUT) and can also be selected as the input to the ADC by the Record Select Mux. In addition, the two channels of Stereo Mix are summed to form a mono signal (Mono Mix) also selectable by the Record Select Mux as an input to either channel of the ADC.
The output volume from LINE_OUT and LNLVL_OUT can be muted or adjusted by 0 dB to 45 dB in nominal 3-dB steps under the control of the output volume registers Master Volume (02h) and Line Level Volume (04h) respectively. As with the input volume registers, adjustments to the levels of the two stereo channels can be made independently but both left and right channels share a mute bit (D15).
The mono output (MONO_OUT) is driven by one of two signals selected by the MIX bit (D9) in the General Purpose register, 20h. The signal selected by default (MIX = 0) is the mono summation of the two channels of Stereo Mix 3D, the stereo output of the mixer MIX1. Setting the control bit MIX = 1, selects a microphone input, MIC1 or MIC2. The choice of microphone is controlled by the Microphone Select (MS) bit (D8) also in the General Purpose register, 20h.
Analog Loopthrough refers to an all-analog signal path from an analog input through the mixers to an analog output. Digital Loopback refers to a mixed-mode analog and digital signal path from an analog input through the ADC, looped-back (LPBK bit – D7, 20h) through the DAC and mixers to an analog output. This is an 18-bit digital loopback at 48 kHz, bypassing the the SRC logic even if an SRC rate other than 48 kHz is selected.
COLD RESET is performed when RESET# (pin 11) is pulled low for > 1 µs. It is a complete reset. All registers and internal circuits are reset to their default state. It is the only reset which clears the ATE and Vendor test modes.
WARM RESET is performed when SYNC (pin 10) is held high for > 1 µs and the codec AC Link digital interface is in power down (PR4 = 1, Power-down Control / Status register, 26h). It is used to clear PR4 and power up the AC Link digital interface but otherwise does not change the contents of any internal circuitry.
REGISTER RESET is performed when any value is written to the RESET register, 00h. It resets all registers to their default state and will modify circuit configurations accordingly but does not reset any other internal circuits.
The LM4549B is improved compared with the LM4549A. If it is required to build a board that will use either part, a 10-kΩ resistor must be added from the VREF pin (pin 27) to AVDD for the LM4549A. It is not required for the LM4549B. Addition of this resistor will slightly increase the temperature coefficient of the internal bandgap reference and decrease the THD performance, but overall performance will still be better than the LM4549A. The LM4549A requires that pins 1 and 9 (DVDD) connect directly to a 27 nH. inductor before going to the 3.3-V digital supply and the bypass capacitors. The inductor is not required for the LM4549B and should not be used.
The LM4549B provides 6 bits to control the powerdown state of internal analog and digital subsections and clocks. It also provides one bit intended to control an external analog power amplifier. These 7 bits (PR0 – PR5, EAPD) are located in the 8 MSBs of the Powerdown Control/Status register, 26h. The status of the four main analog subsections is given by the 4 LSBs in the same register, 26h.
The power-down bits are implemented in compliance with AC '97 Rev 2.1 to support the standard device power management states D0 – D3 as defined in the ACPI and PCI Bus Power Management Specification.
PR0 controls the power-down state of the ADC and associated sampling rate conversion circuitry. PR1 controls power down for the DAC and the DAC sampling rate conversion circuitry. PR2 powers down the mixer circuits (MIX1, MIX2, TI 3D Sound, Mono Out, Line Out). PR3 powers down VREF in addition to all the same mixer circuits as PR2. PR4 powers down the AC Link Digital Interface – see Figure 14 for signal power-down timing. PR5 disables internal clocks but leaves the crystal oscillator and BIT_CLK running (needed for minimum Primary mode power-down dissipation in multi-codec systems). PR6 is not used. EAPD controls the External Amplifier Power-Down pin (pin 47).
After a subsection has undergone a power-down cycle, the appropriate status bit(s) in the Power-Down Control/Status register (26h) must be polled to confirm readiness. In particular the startup time of the VREF circuitry depends on the value of the decoupling capacitors on pin 27 (3.3 µF, 0.1 µF in parallel is recommended).
When the AC Link Digital Interface is powered down the codec output signals SDATA_IN and BIT_CLK (Primary mode) are cleared to zero and no control data can be passed between controller and codec(s). This power-down state can be cleared in two ways: Cold Reset (RESET# = 0) or Warm Reset (SYNC = 1, no BIT_CLK). Cold Reset sets all registers back to their default values (including clearing PR4) whereas Warm Reset only clears the PR4 bit and restarts the AC Link Digital Interface leaving all register contents otherwise unaffected. For Warm Reset (see Figure 7), the SYNC input is used asynchronously. The LM4549B codec allows the AC Link digital interface powerdown state to be cleared immediately so that its duration can be essentially as short as TSH, the Warm Reset pulse width. However for conformance with AC '97 Rev 2.1, Warm Reset should not be applied within four frame times of power down that is, the AC Link powerdown state should be allowed to last at least 82.8 µs.
AC '97 Rev 2.1 defines two test modes: ATE test mode and Vendor test mode. Cold Reset is the only way to exit either of them. The ATE test mode is activated if SDATA_OUT is sampled high by the trailing edge (zero-to-one transition) of RESET#. In ATE test mode the codec AC Link outputs SDATA_IN and BIT_CLK are configured to a high impedance state to allow tester control of the AC Link interface for controller testing. ATE test mode timing parameters are given in the Electrical Characteristics table. The Vendor test mode is entered if SYNC is sampled high by the zero-to-one transition of RESET#. Neither of these entry conditions can occur in normal AC Link operation but take care to avoid mistaken activation of the test modes when using non-standard controllers.
The AC Link Output Frame carries control and PCM data to the LM4549B control registers and stereo DAC. Output Frames are carried on the SDATA_OUT signal which is an output from the AC '97 Digital Controller and an input to the LM4549B codec. As shown in Figure 15, Output Frames are constructed from thirteen time slots: one Tag Slot followed by twelve Data Slots. Each Frame consists of 256 bits with each of the twelve Data Slots containing 20 bits. Input and Output Frames are aligned to the same SYNC transition. Note that since the LM4549B is a two channel codec, it only accepts data in 4 of the twelve Data Slots – 2 for control, one each for PCM data to the left and right channel DACs. Data Slot 3 & 4 are used to stream data to the stereo DAC for all modes selected by the Identity pins ID1#, ID0#.
A new Output Frame is signaled with a low-to-high transition of SYNC. SYNC should be clocked from the controller on a rising edge of BIT_CLK and, as shown in Figure 16 and Figure 17, the first tag bit in the Frame (“Valid Frame”) should be clocked from the controller by the next rising edge of BIT_CLK and sampled by the LM4549B on the following falling edge. The AC '97 Controller should always clock data to SDATA_OUT on a rising edge of BIT_CLK and the LM4549B always samples SDATA_OUT on the next falling edge. SYNC is sampled with the falling edge of BIT_CLK.
The LM4549B checks each Frame to ensure 256 bits are received. If a new Frame is detected (a low-to-high transition on SYNC) before 256 bits are received from the old Frame then the new Frame is ignored i.e. the data on SDATA_OUT is discarded until a valid new Frame is detected.
The LM4549B expects to receive data MSB first, in an MSB justified format.
The first bit of Slot 0 is designated the "Valid Frame" bit. If this bit is 1, it indicates that the current Output Frame contains at least one slot of valid data and the LM4549B will check further tag bits for valid data in the expected Data Slots. With the codec in Primary mode, a controller will indicate valid data in a slot by setting the associated tag bit equal to 1. Since it is a two channel codec the LM4549B can only receive data from four slots in a given frame and so only checks the valid-data bits for 4 slots. In Primary mode these tag bits are for: slot 1 (Command Address), slot 2 (Command Data), slot 3 (PCM data for left DAC) and slot 4 (PCM data for right DAC).
The last two bits in the Tag contain the Codec ID used to select the target codec to receive the frame in multiple codec systems. When the frame is being sent to a codec in one of the Secondary modes the controller does not use bits 14 and 13 to indicate valid Command Address and Data in slots 1 and 2. Instead, this role is performed by the Codec ID bits – operation of the Extended AC Link assumes that the controller would not access a secondary codec unless it was providing valid Command Address and/or Data. When in one of the secondary modes the LM4549B only checks the tag bits for the Codec ID and for valid data in the two audio data slots 3 & 4.
When sending an Output Frame to a Secondary mode codec, a controller should set tag bits 14 and 13 to zero.
Bit | Description | Comment | ||||||
---|---|---|---|---|---|---|---|---|
15 | Valid Frame | 1 = | Valid data in at least one slot. | |||||
14 | Control register address | 1 = | Valid Control Address in Slot 1 (Primary codec only) | |||||
13 | Control register data | 1 = | Valid Control Data in Slot 2 (Primary codec only) | |||||
12 | Left DAC data in Slot 3 | 1 = | Valid PCM Data in Slot 3 (Primary & all Secondary modes) |
|||||
11 | Right DAC data in Slot 4 | 1 = | Valid PCM Data in Slot 4 (Primary & all Secondary modes) |
|||||
10:2 | Not Used | Controller should stuff these slots with “0”s | ||||||
1,0 | Codec ID (ID1, ID0) |
The codec ID is used in a multi-codec system to identify the target Secondary codec for the Control Register address and/or data sent in the Output Frame |
Slot 1 is used by a controller to indicate both the address of a target register in the LM4549B and whether the access operation is a register read or register write. The MSB of slot 1 (bit 19) is set to 1 to indicate that the current access operation is 'read'. Bits 18 through 12 are used to specify the 7-bit register address of the read or write operation. The least significant twelve bits are reserved and should be stuffed with zeros by the AC '97 controller.
Bits | Description | Comment |
---|---|---|
19 | Read/Write | 1 = Read 0 = Write |
18:12 | Register Address | Identifies the Status/Command register for read/write |
11:0 | Reserved | Controller should set to "0" |
Slot 2 is used to transmit 16-bit control data to the LM4549B when the access operation is 'write'. The least significant four bits should be stuffed with zeros by the AC '97 controller. If the access operation is a register read, the entire slot, bits 19 through 0 should be stuffed with zeros.
Bits | Description | Comment |
---|---|---|
19:4 | Control Register Write Data | Controller should stuff with zeros if operation is “read” |
3:0 | Reserved | Set to "0" |
Slots 3 and 4 are 20-bit fields used to transmit PCM data to the left and right channels of the stereo DAC for all codec Primary and Secondary modes. Any unused bits should be stuffed with zeros. The LM4549B DACs have 18-bit resolution and will therefore use the 18 MSBs of the 20-bit PCM data (MSB justified).
Bits | Description | Comment |
---|---|---|
19:0 | PCM DAC Data (Left /Right Channels) |
Slots used to stream data to DACs for all Primary or Secondary modes. Set unused bits to "0" |
These slots are not used by the LM4549B and should all be stuffed with zeros by the AC '97 Controller.
The AC Link Input Frame contains status and PCM data from the LM4549B control registers and stereo ADC. Input Frames are carried on the SDATA_IN signal which is an input to the AC '97 Digital Audio Controller and an output from the LM4549B codec. As shown in Figure 15, Input Frames are constructed from thirteen time slots: one Tag Slot followed by twelve Data Slots. The Tag Slot, Slot 0, contains 16 bits of which 5 are used by the LM4549B. One is used to indicate that the AC Link interface is fully operational and the other 4 to indicate the validity of the data in the four of the twelve following Data Slots that are used by the LM4549B. Each Frame consists of 256 bits with each of the twelve data slots containing 20 bits.
A new Input Frame is signaled with a low-to-high transition of SYNC. SYNC should be clocked from the controller on a rising edge of BIT_CLK and, as shown in Figure 18 and Figure 19, the first tag bit in the Frame (“Codec Ready”) is clocked from the LM4549B by the next rising edge of BIT_CLK. The LM4549B always clocks data to SDATA_IN on a rising edge of BIT_CLK and the controller is expected to sample SDATA_IN on the next falling edge. The LM4549B samples SYNC on the falling edge of BIT_CLK.
Input and Output Frames are aligned to the same SYNC transition.
The LM4549B checks each Frame to ensure 256 bits are received. If a new Frame is detected (a low-to-high transition on SYNC) before 256 bits are received from an old Frame then the new Frame is ignored, that is, no valid data is sent on SDATA_IN until a valid new Frame is detected.
The LM4549B transmits data MSB first, in a MSB justified format. All reserved bits and slots are stuffed with 0s by the LM4549B.
The first bit (bit 15, “Codec Ready”) of slot 0 in the AC Link Input Frame indicates when theAC Link digital interface of the codec and the status and control registers are fully operational. The digital controller is then able to read the LSBs from the Power-Down Control/Stat register (26h) to determine the status of the four main analog subsections. It is important to check the status of these subsections after Initialization, Cold Reset, or the use of the power-down modes in order to minimize the risk of distorting analog signals passed before the subsections are ready.
The 4 bits 14, 13, 12 and 11 indicate that the data in slots 1, 2, 3 and 4, respectively, are valid.
Bit | Description | Comment | |
---|---|---|---|
15 | Codec Ready Bit | 1 = | AC Link Interface Ready |
14 | Slot 1 data valid | 1 = | Valid Status Address or Slot Request |
13 | Slot 2 data valid | 1 = | Valid Status Data |
12 | Slot 3 data valid | 1 = | Valid PCM Data (Left ADC) |
11 | Slot 4 data valid | 1 = | Valid PCM Data (Right ADC) |
This slot echoes (in bits 18 – 12) the 7-bit address of the codec control/status register received from the controller as part of a read-request in the previous frame. If no read-request was received, the codec stuffs these bits with zeros.
Bits 11, 10 are Slot Request bits that support the Variable Rate Audio (VRA) capabilities of the LM4549B. For all codec Primary and Secondary modes, the left and right channels of the DAC take PCM data from slots 3 and 4 in the Output Frame respectively. The codec uses bits 11 and 10 to request DAC data from these two slots. If bits 11 and 10 are set to 0, the controller should respond with valid PCM data in slots 3 and 4 of the next Output Frame. If bits 11 and 10 are set to 1, the controller should not send data.
The codec has full control of the slot request bits. By default, data is requested in every frame, corresponding to a sample rate equal to the frame rate (SYNC frequency) – 48 kHz when XTAL_IN = 24.576 MHz. To send samples at a rate below the frame rate, a controller should set VRA = 1 (bit 0 in the Extended Audio Control/Status register, 2Ah) and program the desired rate into the PCM DAC Rate register, 2Ch. Both DAC channels operate at the same sample rate. Values for common sample rates are given in the Register Maps section (Sample Rate Control Registers, 2Ch, 32h) but any rate between 4 kHz and 48 kHz (to a resolution of 1 Hz) is supported. Slot Requests from the LM4549B are issued completely deterministically. For example if a sample rate of 8000 Hz is programmed into 2Ch then the LM4549B will always issue a slot request in every sixth frame. A frequency of 9600 Hz will result in a request every fifth frame while a frequency of 8800 Hz will cause slot requests to be spaced alternately five and six frames apart. This determinism makes it easy to plan task scheduling on a system controller and simplifies application software development.
The LM4549B will ignore data in Output Frame slots that do not follow an Input Frame with a Slot Request. For example, if the LM4549B is expecting data at a 8000 Hz rate yet the AC '97 Digital Audio Controller continues to send data at 48000 Hz, then only those one-in-six audio samples that follow a Slot Request will be used by the DAC. The rest will be discarded.
Bits 9 – 2 are request bits for slots not used by the LM4549B and are stuffed with zeros. Bits 1 and 0 are reserved and are also stuffed with zeros.
Bits | Description | Comment | |
---|---|---|---|
19 | Reserved | Stuffed with 0 by LM4549B | |
18:12 | Status Register Index | Echo of the requested Status Register address. | |
11 | Slot 3 Request bit (For left DAC PCM data) |
0 = | Controller should send valid data in Slot 3 of the next Output Frame. |
1 = | Controller should not send Slot 3 data. | ||
10 | Slot 4 Request bit (For right DAC PCM data) |
0 = | Controller should send valid data in Slot 4 of the next Output Frame. |
1 = | Controller should not send Slot 4 data. | ||
9:2 | Unused Slot Request bits | Stuffed with 0s by LM4549B | |
1,0 | Reserved | Stuffed with 0s by LM4549B |
This slot returns 16-bit status data read from a codec control and status register. The codec sends the data in the frame following a read-request by the controller (bit 15, slot 1 of the Output Frame). If no read-request was made in the previous frame the codec will stuff this slot with zeros.
Bits | Description | Comment |
---|---|---|
19:4 | Status Data | Data read from a codec control/status register. Stuffed with 0s if no read-request in previous frame. |
3:0 | Reserved | Stuffed with 0s by LM4549B |
This slot contains sampled data from the left channel of the stereo ADC. The signal to be digitized is selected using the Record Select register (1Ah) and subsequently routed through the Record Select Mux and the Record Gain amplifier to the ADC.
This is a 20-bit slot and the digitized 18-bit PCM data is transmitted in an MSB justified format. The remaining 2 LSBs are stuffed with zeros.
Bits | Description | Comment |
---|---|---|
19:2 | PCM Record Left Channel data | 18-bit PCM sample from left ADC |
1:0 | Reserved | Stuffed with 0s by LM4549B |
This slot contains sampled data from the right channel of the stereo ADC. The signal to be digitized is selected using the Record Select register (1Ah) and subsequently routed through the Record Select Mux and the Record Gain amplifier to the ADC.
This is a 20-bit slot and the digitized 18-bit PCM data is transmitted in an MSB justified format. The remaining 2 LSBs are stuffed with zeros.
Bits | Description | Comment |
---|---|---|
19:2 | PCM Record Right Channel data | 18-bit PCM sample from right ADC |
1:0 | Reserved | Stuffed with "0"s by LM4549B |
Slots 5 – 12 of the AC Link Input Frame are not used for data by the LM4549B and are always stuffed with zeros.
Up to four codecs can be supported on the extended AC Link. These multiple codec implementations should run off a common BIT_CLK generated by the Primary Codec. All codecs share the AC '97 Digital Controller output signals, SYNC, SDATA_OUT, and RESET#. Each codec, however, supplies its own SDATA_IN signal back to the controller, with the result that the controller requires one dedicated input pin per codec. (Figure 20).
By definition there can be one Primary Codec and up to three Secondary Codecs on an extended AC Link. The Primary Codec has a Codec Identity = (ID1, ID0) = ID = 00 while Secondary Codecs may have identities equal to 01, 10 or 11. The Codec Identity is used as a chip select function. This allows the Command and Status registers in any of the codecs to be individually addressed although the access mechanism for Secondary Codecs differs slightly from that for a Primary.
The Identity control pins, ID1#, ID0# (pins 46 and 45) are internally pulled up to DVDD. The Codec may therefore be configured as 'Primary' either by leaving ID1#, ID0# open (NC) or by strapping them externally to DVDD (Digital Supply).
The difference between Primary and Secondary codec modes is in their timing source and in the Tag Bit handling in Output Frames for Command/Status register access. For a timing source, a Primary codec divides down by 2 the frequency of the signal on XTAL_IN and also generates this as the BIT_CLK output for the use of the controller and any Secondary codecs. Secondary codecs use BIT_CLK as an input and as their timing source and do not use XTAL_IN or XTAL_OUT. The use of Tag Bits is described below.
For Secondary Codec access, the controller must set the tag bits for Command Address and Data in the Output Frame as invalid (that is, equal to 0). The Command Address and Data tag bits are in slot 0, bits 14 and 13 and Output Frames are those in the SDATA_OUT signal from controller to codec. The controller must also place the non-zero value (01, 10, or 11) corresponding to the Identity (ID1, ID0) of the target Secondary Codec into the Codec ID field (slot 0, bits 1 and 0) in that same Output Frame. The value set in the Codec ID field determines which of the three possible Secondary Codecs is accessed. Unlike a Primary Codec, a Secondary Codec will disregard the Command Address and Data tag bits when there is a match between the 2-bit Codec ID value (slot 0, bits 1 and 0) and the Codec Identity (ID1, ID0). Instead it uses the Codec-ID/Identity match to indicate that the Command Address in slot 1 and (if a write) the Command Data in slot 2 are valid.
When reading from a Secondary Codec, the controller must send the correct Codec ID bits (that is, the target Codec Identity in slot 0, bits 1 and 0) along with the read-request bit (slot 1, bit 19) and target register address (slot 1, bits 18 – 12). To write to a Secondary Codec, a controller must send the correct Codec ID bits when slot 1 contains a valid target register address and write indicator bit and slot 2 contains valid target register data. A write operation is only valid if the register address and data are both valid and sent within the same frame. When accessing the Primary Codec, the Codec ID bits are cleared and the tag bits 14 and 13 resume their role indicating the validity of Command Address and Data in slots 1 and 2.
The use of the tag bits in Input Frames (carried by the SDATA_IN signal) is the same for Primary and Secondary Codecs.
The Codec Identity is determined by the inverting input pins ID1#, ID0# (pins 46 and 45) and can be read as the value of the ID1, ID0 bits (D15, D14) in the Extended Audio ID register, 28h of the target codec.
Slots in the AC Link Output Frame are always mapped to carry data to the left DAC channel in slot 3 and data to the right DAC channel in slot 4. Similarly, slots in AC Link Input Frames are always mapped such that PCM data from the left ADC channel is carried by slot 3 and PCM data from the right ADC channel by slot 4. Output Frames are those carried by the SDATA_OUT signal from the controller to the codec while Input Frames are those carried by the SDATA_IN signal from the codec to the controller.
Bit 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Valid Frame |
Slot 1 Valid |
Slot 2 Valid |
Slot 3 Valid |
Slot 4 Valid |
X | X | X | X | X | X | X | X | X | ID1 | ID0 |
Reg | Name | D15 | D14 | D13 | D12 | D11 | D10 | D9 | D8 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | Default |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
28h | Extended Audio ID | ID1 | ID0 | X | X | X | X | X | X | X | X | X | X | X | X | X | VRA | X001h |
REG | Name | D15 | D14 | D13 | D12 | D11 | D10 | D9 | D8 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | Default | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
00h | Reset | X | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0D40h | |
Output Volume | 02h | Master Volume | Mute | X | ML5 | ML4 | ML3 | ML2 | ML1 | ML0 | X | X | MR5 | MR4 | MR3 | MR2 | MR1 | MR0 | 8000h |
04h | Line Level Volume | Mute | X | ML5 | ML4 | ML3 | ML2 | ML1 | ML0 | X | X | MR5 | MR4 | MR3 | MR2 | MR1 | MR0 | 8000h | |
06h | Mono Volume | Mute | X | X | X | X | X | X | X | X | X | MM5 | MM4 | MM3 | MM2 | MM1 | MM0 | 8000h | |
Input Volume | 0Ah | PC_Beep Volume | Mute | X | X | X | X | X | X | X | X | X | X | PV3 | PV2 | PV1 | PV0 | X | 0000h |
0Ch | Phone Volume | Mute | X | X | X | X | X | X | X | X | X | X | GN4 | GN3 | GN2 | GN1 | GN0 | 8008h | |
0Eh | Mic Volume | Mute | X | X | X | X | X | X | X | X | 20dB | X | GN4 | GN3 | GN2 | GN1 | GN0 | 8008h | |
10h | Line In Volume | Mute | X | X | GL4 | GL3 | GL2 | GL1 | GL0 | X | X | X | GR4 | GR3 | GR2 | GR1 | GR0 | 8808h | |
12h | CD Volume | Mute | X | X | GL4 | GL3 | GL2 | GL1 | GL0 | X | X | X | GR4 | GR3 | GR2 | GR1 | GR0 | 8808h | |
14h | Video Volume | Mute | X | X | GL4 | GL3 | GL2 | GL1 | GL0 | X | X | X | GR4 | GR3 | GR2 | GR1 | GR0 | 8808h | |
16h | Aux Volume | Mute | X | X | GL4 | GL3 | GL2 | GL1 | GL0 | X | X | X | GR4 | GR3 | GR2 | GR1 | GR0 | 8808h | |
18h | PCM Out Volume | Mute | X | X | GL4 | GL3 | GL2 | GL1 | GL0 | X | X | X | GR4 | GR3 | GR2 | GR1 | GR0 | 8808h | |
ADC Sources | 1Ah | Record Select | X | X | X | X | X | SL2 | SL1 | SL0 | X | X | X | X | X | SR2 | SR1 | SR0 | 0000h |
1Ch | Record Gain | Mute | X | X | X | GL3 | GL2 | GL1 | GL0 | X | X | X | X | GR3 | GR2 | GR1 | GR0 | 8000h | |
20h | General Purpose | POP | X | 3D | X | X | X | MIX | MS | LPBK | X | X | X | X | X | X | X | 0000h | |
22h | 3D Control (Read Only) |
X | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0101h | |
X | 24h | Reserved | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | 0000h |
26h | Powerdown Ctrl/Stat | EAPD | PR6 | PR5 | PR4 | PR3 | PR2 | PR1 | PR0 | X | X | X | X | REF | ANL | DAC | ADC | 000Xh | |
28h | Extended Audio ID | ID1 | ID0 | X | X | X | X | 0 | 0 | 0 | 0 | X | X | 0 | X | 0 | VRA | X001h | |
2Ah | Extended Audio Control/Status | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | VRA | 0000h | |
2Ch | PCM DAC Rate | SR15 | SR14 | SR13 | SR12 | SR11 | SR10 | SR9 | SR8 | SR7 | SR6 | SR5 | SR4 | SR3 | SR2 | SR1 | SR0 | BB80h | |
32h | PCM ADC Rate | SR15 | SR14 | SR13 | SR12 | SR11 | SR10 | SR9 | SR8 | SR7 | SR6 | SR5 | SR4 | SR3 | SR2 | SR1 | SR0 | BB80h | |
X | 5Ah | Vendor Reserved 1 | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | 0000h |
X | 74h | Vendor Reserved 2 | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | 0000h |
X | 7Ah | Vendor Reserved 3 | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | 0000h |
7Ch | Vendor ID1 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 4E53h | |
7Eh | Vendor ID2 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 4349h |
Writing any value to this register causes a Register Reset which changes all registers back to their default values. If a read is performed on this register, the LM4549B will return a value of 0D40h. This value can be interpreted in accordance with the AC '97 Specification to indicate that TI 3D Sound is implemented and 18-bit data is supported for both the ADCs and DACs.
This output register allows the output level from either channel of the stereo LINE_OUT to be muted or attenuated over the range 0 dB – 46.5 dB in nominal 1.5-dB steps. There are 6 bits of volume control for each channel and both stereo channels can be individually attenuated. The mute bit (D15) acts simultaneously on both stereo channels of LINE_OUT. The AC'97 specification states that support for the MSB of the level is optional. All six bits may be written to the register, but if the MSB is a 1, the MSB is ignored and the register will be set to 0 11111. This will be the value when the register is read, allowing the software driver to detect whether the MSB is supported or not.
Mute | Mx5:Mx0 | Function |
---|---|---|
0 | 0 00000 | 0 dB attenuation |
0 | 0 11111 | 46.5 dB attenuation |
0 | 1 xxxxx | As Written |
0 | 0 11111 | As read back |
1 | X XXXXX | mute(1) |
Default: 8000h |
This output register allows the level from both channels of LNLVL_OUT to be muted or individually attenuated over the range 0 dB to –46.5 dB in nominal 1.5-dB steps. There are 6 bits of volume control for each channel plus one mute bit. The mute bit (D15) acts on both channels. Operation of this register and LNLVL_OUT matches that of the Master Volume register and the LINE_OUT output.
This output register allows the level from MONO_OUT to be muted or attenuated over the range 0 dB – 46.5 dB in nominal 1.5-dB steps. There are 6 bits of volume control and one mute bit (D15). All 6 bits may be written to the register, but if the MSB is a 1, the MSB is ignored and the register will be set to 0 11111. This will be the value when the register is read, allowing the software driver to detect whether the MSB is supported or not.
Mute | MM5:MM0 | Function |
---|---|---|
0 | 0 00000 | 0 dB attenuation |
0 | 0 11111 | 46.5 dB attenuation |
0 | 1 xxxxx | As written |
0 | 0 11111 | As read back |
1 | X XXXXX | mute(1) |
Default: 8000h |
This input register adjusts the level of the mono PC_BEEP input to the stereo mixer MIX2 where it is summed equally into both channels of the Stereo Mix signal. PC_BEEP can be both muted and attenuated over a range of 0 dB to –45 dB in nominal 3 dB-steps. Note that the default setting for the PC_Beep Volume register is 0 dB attenuation rather than mute.
These input registers adjust the volume levels into the stereo mixers MIX1 and MIX2. Each channel may be adjusted over a range of +12 dB gain to –34.5 dB attenuation in 1.5-dB steps. For stereo ports, volumes of the left and right channels can be independently adjusted. Muting a given port is accomplished by setting the MSB to 1. Setting the MSB to 1 for stereo ports mutes both the left and right channels. The Mic Volume register (0Eh) controls an additional 20 dB boost for the selected microphone input by setting the 20dB bit (D6).
Mute | Gx4:Gx0 | Function | |
---|---|---|---|
0 | 0 0000 | +12 dB gain | |
0 | 0 1000 | 0 dB gain | |
0 | 1 1111 | –34.5 dB attenuation | |
1 | X XXXX | mute(1) | |
Default: | 8008h (mono registers) 8808h (stereo registers) |
This register independently controls the sources for the right and left channels of the stereo ADC. The default value of 0000h corresponds to selecting the (mono) Mic input for both channels.
SL2:SL0 | Source for Left Channel ADC | |
---|---|---|
0 | Mic input(1) | |
1 | CD input (L) | |
2 | VIDEO input (L) | |
3 | AUX input (L) | |
4 | LINE_IN input (L) | |
5 | Stereo Mix (L) | |
6 | Mono Mix | |
7 | PHONE input |
SR2:SR0 | Source for Right Channel ADC | |
---|---|---|
0 | Mic input(1) | |
1 | CD input (R) | |
2 | VIDEO input (R) | |
3 | AUX input (R) | |
4 | LINE_IN input (R) | |
5 | Stereo Mix (R) | |
6 | Mono Mix | |
7 | PHONE input | |
Default: 0000h |
This register controls the input levels for both channels of the stereo ADC. The inputs come from the Record Select Mux and are selected via the Record Select Control register, 1Ah. The gain of each channel can be individually programmed from 0dB to +22.5 dB in 1.5-dB steps. Both channels can also be muted by setting the MSB to 1.
Mute | Gx3:Gx0 | Function |
---|---|---|
0 | 1111 | 22.5 dB gain |
0 | 0000 | 0 dB gain |
1 | XXXX | mute(1) |
Default: 8000h |
This register controls many miscellaneous functions implemented on the LM4549B. The miscellaneous control bits include POP which allows the DAC output to bypass the TI 3D Sound circuitry, 3D which enables or disables the TI 3D Sound circuitry, MIX which selects the MONO_OUT source, MS which controls the Microphone Selection mux and LPBK which connects the output of the stereo ADC to the input of the stereo DAC. LPBK provides a mixed-mode analog and digital loopback path between analog inputs and analog outputs. This is an 18 bit digital loopback at 48 kHz, bypassing the SRC logic, even if a sample rate other than 48 kHz is selected.
BIT | Function | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
POP | PCM Out Path: | 0(1) = | 3D allowed | |||||||
1 = | 3D bypassed | |||||||||
3D | TI 3D Sound: | 0(1) = | off | |||||||
1 = | on | |||||||||
MIX | Mono output select: | 0(1) = | Mix | |||||||
1 = | Mic | |||||||||
MS | Mic select: | 0(1) = | MIC1 | |||||||
1 = | MIC2 | |||||||||
LPBK | ADC/DAC Loopback: | 0(1) = | No Loopback | |||||||
1 = | Loopback | |||||||||
Default: 0000h |
This read-only (0101h) register indicates, in accordance with the AC '97 Rev 2.1 Specification, the fixed depth and center characteristics of the TI 3D Sound stereo enhancement.
This read/write register is used both to monitor subsystem readiness and also to program the LM4549B power-down states. The 4 LSBs indicate status and 7 of the 8 MSBs control power down.
The 4 LSBs of this register indicate the status of the 4 audio subsections of the codec: Reference voltage, Analog mixers and amplifiers, DAC section, ADC section. When the "Codec Ready" indicator bit in the AC Link Input Frame (SDATA_IN: slot 0, bit 15) is a "1", it indicates that the AC Link and AC '97 registers are in a fully operational state and that control and status information can be transferred. It does NOT indicate that the codec is ready to send or receive audio PCM data or to pass signals through the analog I/O and mixers. To determine that readiness, the Controller must check that the 4 LSBs of this register are set to 1 indicating that the appropriate audio subsections are ready.
The power-down bits PR0 – PR5 control internal subsections of the codec. They are implemented in compliance with AC '97 Rev 2.1 to support the standard device power management states D0 – D3 as defined in the ACPI and PCI Bus Power Management Specification.
PR0 controls the powerdown state of the ADC and associated sampling rate conversion circuitry. PR1 controls power down for the DAC and the DAC sampling rate conversion circuitry. PR2 powers down the mixer circuits (MIX1, MIX2, TI 3D Sound, Mono Out, Line Out). PR3 powers down VREF in addition to all the same mixer circuits as PR2. PR4 powers down the AC Link digital interface – see Figure 14 for signal power-down timing. PR5 disables internal clocks. PR6 is not used. EAPD controls the External Amplifier Power Down bit.
BIT# | BIT | Function: Status | |
---|---|---|---|
0 | ADC | 1 = | ADC section ready to transmit data |
1 | DAC | 1 = | DAC section ready to accept data |
2 | ANL | 1 = | Analog mixers ready |
3 | REF | 1 = | VREF is up to nominal level |
BIT# | BIT | Function: Powerdown | |
---|---|---|---|
8 | PR0 | 1 = | Power-down ADCs and Record Select Mux |
9 | PR1 | 1 = | Power-down DACs |
10 | PR2 | 1 = | Power-down Analog Mixer (VREF still on) |
11 | PR3 | 1 = | Power-down Analog Mixer (VREF off) |
12 | PR4 | 1 = | Power-down AC Link digital interface (BIT_CLK off) |
13 | PR5 | 1 = | Disable Internal Clock |
14 | PR6 | Not Used | |
15 | EAPD | External Amplifier Power Down | |
0(1) = | Set EAPD Pin to 0 (pin 47) | ||
Default: 000Fh If ready; otherwise 000Xh |
This read-only (X001h) register identifies which AC '97 Extended Audio features are supported. The LM4549B features VRA (Variable Rate Audio) and ID1, ID0 (Multiple Codec support). VRA is indicated by a 1 in bit 0. The two MSBs, ID1 and ID0, show the current Codec Identity as defined by the Identity pins ID1#, ID0#. Note that the external logic connections to ID1#, ID0# (pins 46 and 45) are inverse in polarity to the value of the Codec Identity (ID1, ID0) held in bits D15, D14. Codec mode selections are shown in the table below.
Pin 46 (ID1#) |
Pin 45 (ID0#) |
D15,28h (ID1) |
D14,28h (ID0) |
Codec Identity Mode |
---|---|---|---|---|
NC/DVDD | NC/DVDD | 0 | 0 | Primary |
NC/DVDD | GND | 0 | 1 | Secondary 1 |
GND | NC/DVDD | 1 | 0 | Secondary 2 |
GND | GND | 1 | 1 | Secondary 3 |
This read/write register provides status and control of the variable sample rate capabilities in the LM4549B. Setting the LSB of this register to 1 enables Variable Rate Audio (VRA) mode and allows DAC and ADC sample rates to be programmed through registers 2Ch and 32h respectively.
BIT | Function | |
---|---|---|
VRA | 0(1) = | VRA off (Frame-rate sampling) |
1 = | VRA on | |
Default: 0000h |
These read/write registers are used to set the sample rate for the left and right channels of the DAC (PCM DAC Rate, 2Ch) and the ADC (PCM ADC Rate, 32h). When Variable Rate Audio is enabled via bit 0 of the Extended Audio Control/Status register (2Ah), the sample rates can be programmed, in 1 Hz increments, to be any value from 4 kHz to 48 kHz. The value required is the hexadecimal representation of the desired sample rate, for example 800010 = 1F40h. Below is a list of the most common sample rates and the corresponding register (hex) values.
These two read-only (4E53h, 4349h) registers contain TI's Vendor ID and TI's LM45xx codec version designation. The first 24 bits (4Eh, 53h, 43h) represent the three ASCII characters “NSC” which is TI's Vendor ID for Microsoft's Plug and Play. The last 8 bits are the two binary coded decimal characters, 4, 9 and identify the codec to be an LM4549B.
Do not write to reserved registers. In particular, do not write to registers 24h, 5Ah, 74h and 7Ah. All registers not listed in the LM4549B Register Map are reserved. Reserved registers will return 0000h if read.