This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

PCM9211: DIR Parity Error Processing

Part Number: PCM9211


Hi,

MPO0 pin outputs "high" only if occuring the parity error when setting 01 or 10 to PRTPRO[1:0] on the register 23h and setting 1010(selecting the parity output) to MPO0SEL[3:0] on the register 78h, which transitions from "high" to "low" if an 8x continuous parity error is replaced by previous data and muted after ninth parity error.
Is this behavior as expected ?

Best regards,
Kato

  • Kato-san,

    In order to trigger a parity error, PRTPRO[1:0] must be set to 01 or 10. In both cases 9 continuous Parity errors must be detected for EPARITY to = 1.

    There is no register setting that would allow MPO0 to go high immediately when a single Parity error is detected.

    Best regards,
    -Steve Wilson
  • Hi Steve-san,

    Thank you for your reply.

    Actually, MPO0 pin can output to "high" immediately when setting "01" or "10" to PRTPRO[1:0] and "1010" to MPO0SEL[3:0] if detecting a parity error.
    So, could you please tell me why MPO0 is kept to "low" during the mute when DIR outputs is muted due to ninth parity error ?

    Best regards,
    Kato

  • Kato-san,

    If I understand you correctly, you are saying that the MPO0 goes high when any parity error is detected, but if 9 consecutive parity errors are detected in a row, the DIR outputs are muted, and MPO0 goes low?

    best regards,
    -Steve wilson
  • Hi Steve-san,

    Yes, our customer said that MPO0 goes low if the DIR outputs are muted due to the parity error.

    Best regards,
    Kato

  • Hi Kato-san,

    I'll look into running some tests on the bench to reproduce the issue reported by customer regarding the MPO0 getting deasserted when the DIR output is MUTED after 8 consecutive parity errors. 

    As far as the input goes, is the customer continuously inputting S/PDIF frames w. parity error as part of negative testing? I wanted to clarify if the input continues to be S/PDIF w. parity errors when you see the MUTE? I do not have design team members to consult at the moment but we will definitely look into the implementation details in addition to bench testing and will have an update.

    Thanks.


    Best regards,
    Ravi

  • Hi Ravi-san,

    Thank you for your response.

    Yes, your understanding is correct, I heard from our customer that the parity error flag is deasserted to "low" even if S/PDIF input data is continuously included the parity errors when the DIR output is muted by the parity errors.
    So, I am looking forward to hearing from you.

    Best regards,
    Kato

  • Hi Kato-san,

    As discussed on last reply, I did detailed bench testing w. S/PDIF input with and without Parity errors to study the design implementation of
    the DIR blcok of PCM9211.

    Based on the testing and internal discussion, here's how the DIR block is implemented -

    With the below register settings,
    Register 23h | RTPRO[1:0] bits set to 01 or 10 [PCM or Non-PCM]
    Register 78h | MPO0SEL[3:0] bits set to 1010 [Parity]

    If the PCM9211 receives frames with PARITY ERROR eight times sequentially, the DIR output is muted on the next error. In addition, the output of the DIR block
    is disabled completely and hence we also clear the flags associated with DIR block like Parity, PCM detection etc.

    Below is the screen capture of the same -
    Ch3 (TOP) is PARITY error flag routed to MPIO_A0
    Ch2 (BOTTOM) is DOUT at Main Output Port.

    NOTE that the testing was done w 48kHz sampling rate. As a result, each S/PDIF frame duration is ~20uS and hence we see the ERROR status stay asserted for ~160uS (duration of 8 frames). After 8 erroneous frames, the DIR output is MUTED and all flags are cleared as we stop processing the input frames once the PCM9211 output is MUTED.

    This implementation is critical as we do not carry over any error status from prior session when we start receiving valid frames and parts UNMUTED itself in such scenario.

    Hope this clarifies your question.

    Best regards,

    Ravi

  • Hi Ravi-san,

    Thank you for testing.

    I was relieved that our symptom was reproduced, so could you please verify the following additional test ?
    My purpose is to check whether only parity errors can be detected without the mute.

    <Requirement Test Condition>
    - Register 23h | PRTPRO[1:0]  = 01
    - Register 78h | MPO0SEL[3:0] = 1010
    - Changing only input data type from PCM data to non-PCM data for Channel Status Data of S/PDIF without changing audio data

    Best regards,
    Kato

  • Hi Ravi-san,

    Sorry for rushing you, so please let me know if you have any updates on this issue.

    Best regards,
    Kato

  • Dear Kato-san,

    I ran few more tests on the PCM9211 w PRTPRO[1:0] values set to '01' and '10'. Below are the findings -

    Input: S/PDIF signal from AP2722 via BNC

    Results:

    When we set to PRTPRO[1:0]='01', we do see MPIO_A0 goes HIGH (indicating PARITY ERROR) during the 8 frames w. parity error and output is NOT MUTED.

    When we set to PRTPRO[1:0]='10', we do see MPIO_A0 goes HIGH (indicating PARITY ERROR) during the 8 frames w. parity error and output is MUTED.

    When we set to PRTPRO[1:0]='00', we do see MPIO_A0 does NOT go HIGH (indicating NO ERROR) during the 8 frames w. parity error and output is NOT MUTED.

    Based on the results, there seems to be some ambiguity about what is being processed as PCM and non-PCM data based on the device implementation. I will have to consult w some team members who can dig into design implementation as we do not have anyone from original design team who worked on this part. At the moment, we have all the bench results as outlined above...

    Best regards,
    Ravi

  • Hi Ravi-san,

    Thank you for verifying.

    According to the verification result, MPIO_A0 goes "high" and the parity error and output are NOT MUTED even above 8 x continuous parity errors if setting "01" to PRTPRO[1:0] and inputting non-PCM data with the parity error.
    That is, is my understanding correct that PCM9211 can detect only the parity check in this case ?

    Best regards,
    Kato