# PCM Interface

Address | Register Name | Register Write | Register Read | Default | Description
--- | --- | --- | --- | --- | ---
0x40001000 | PCM0_CFG | (25) TX_ACK_SEL | (25) TX_ACK_SEL | 0x0 | Select which TX word acknowleges the TX request
|  | (24) RX_ACK_SEL | (24) RX_ACK_SEL | 0x0 | Select which RX word acknowleges the RX request
|  | (23) TX_DMA_ENABLE | (23) TX_DMA_ENABLE | 0x0 | Enable/disable the TX DMA request
|  | (22) RX_DMA_ENABLE | (22) RX_DMA_ENABLE | 0x0 | Enable/disable the RX DMA request
|  | (21) TX_IOC_ENABLE | (21) TX_IOC_ENABLE | 0x0 | Enable/disable the TX IOC request
|  | (20) RX_IOC_ENABLE | (20) RX_IOC_ENABLE | 0x0 | Enable/disable the RX IOC request
|  | (19) RX_TX_INT_ENABLE | (19) RX_TX_INT_ENABLE | 0x0 | Enable/disable the RX_TX interrupt
|  | (17) OVERRUN_INT_EN | (17) OVERRUN_INT_EN | 0x0 | Enable/disable the overrun interrupt
|  | (16) UNDERRUN_INT_EN | (16) UNDERRUN_INT_EN | 0x0 | Enable/disable the underrun interrupt
|  | (15) CLK_POLARITY | (15) CLK_POLARITY | 0x0 | Select the PCM clock polarity
|  | (14) TX_DATA_ALIGN | (14) TX_DATA_ALIGN | 0x0 | Select the TX data alignment
|  | (13) RX_DATA_ALIGN | (13) RX_DATA_ALIGN | 0x0 | Select the RX data alignment
|  | (12:8) WORD_SIZE | (12:8) WORD_SIZE | 0x8 | Select the number of bits per PCM word
|  | (7) BIT_ORDER | (7) BIT_ORDER | 0x0 | Select whether the data is transmitted starting with the MSB or LSB
|  | (6) FRAME_ALIGN | (6) FRAME_ALIGN | 0x0 | Align the PCM frame signal to the first/last bit
|  | (5) FRAME_WIDTH | (5) FRAME_WIDTH | 0x0 | Use a long/short PCM frame signal
|  | (4:2) FRAME_LENGTH | (4:2) FRAME_LENGTH | 0x0 | Select the number of words per PCM frame
|  | (1) SUBFRAME | (1) SUBFRAME | 0x0 | Enable the frame duration for each word
|  | (0) SLAVE | (0) SLAVE | 0x1 | Use the PCM interface as a master/slave
0x40001004 | PCM0_CTRL | - | (8) ENABLE_STATUS | 0x0 | PCM enable status
|  | (2) RESET | - | N/A | Reset the PCM interface
|  | (1) DISABLE | - | N/A | Disable the PCM interface
|  | (0) ENABLE | - | N/A | Enable the PCM interface
0x40001008 | PCM0_STATUS | - | (12) BUSY | 0x0 | Indicate that the reception or transmission of the data is ongoing
|  | - | (11) TX_REQ | 0x1 | Indicate that TX data can be written
|  | - | (10) RX_REQ | 0x0 | Indicate that RX data can be read
|  | - | (9) OVERRUN | 0x0 | Indicate that an overrun occurred when receiving data
|  | - | (8) UNDERRUN | 0x0 | Indicate that an underrun occurred when transmitting data
|  | (1) OVERRUN_CLEAR | - | N/A | Clear the overrun status flag
|  | (0) UNDERRUN_CLEAR | - | N/A | Clear the underrun status flag
0x40001010 | PCM0_TX_DATA0 | (31:0) TX_DATA0 | (31:0) TX_DATA0 | 0x0 | Data to transmit on channel 0
0x40001014 | PCM0_TX_DATA1 | (31:0) TX_DATA1 | (31:0) TX_DATA1 | 0x0 | Data to transmit on channel 1
0x40001018 | PCM0_RX_DATA0 | - | (31:0) RX_DATA0 | 0x0 | Data received on channel 0
0x4000101C | PCM0_RX_DATA1 | - | (31:0) RX_DATA1 | 0x0 | Data received on channel 1
0x400010FC | PCM0_ID_NUM | - | (19:16) PCM_NUMBER | 0x0 | PCM Instance number
|  | - | (15:8) PCM_MAJOR_REVISION | 0x1 | PCM Major Revision number
|  | - | (7:0) PCM_MINOR_REVISION | 0x0 | PCM Minor Revision number