Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Short (less than a frame) I2S loopback discontinuity #188

Open
danielpieczko opened this issue Sep 8, 2023 · 5 comments
Open

Short (less than a frame) I2S loopback discontinuity #188

danielpieczko opened this issue Sep 8, 2023 · 5 comments

Comments

@danielpieczko
Copy link
Contributor

xk_316_mc configs 2SMi8o8xxxxxx and 2SSi8o8xxxxxx have seen short discontinuities which are shorter than a frame's worth of samples. Collecting the failures over a week, this has been seen on the Windows 10 and 11 agents, but not on the Mac. It happens after about three minutes of the output stream, so isn't seen in short tests.

Seen often at 176400, and once at 88200.

Discontinuity from xsig

E                       Channel 0: discontinuity (samples 371643, 0 do not differ by 3 but by -371643) (sample 33683089)
E                       Channel 0: discontinuity offset 0: 0 0 0 0 0 0 0 0
E                       Channel 0: discontinuity offset 8: 0 0 0 0 0 0 0 0
E                       Channel 0: discontinuity offset 16: 0 0 0 0 0 371646 371649 371652
E                       Channel 0: discontinuity offset 24: 371655 371658 371661 371664 371667 371670 371673 371676

There are 21 zeros, which is shorter than the 22 or 23 samples per frame that we would expect at 176400.

@danielpieczko
Copy link
Contributor Author

USB protocol trace

In this capture the last good sample value on channel 0 is 371643 = 0x05abbb which is:

  • OUT idx 59640 offset 0x2A0 (last sample in frame)
  • IN idx 59675 offset 0x1A0

The next sample value is 371646 = 0x05abbe, which is:

  • OUT idx 59640 offset 0x000 (start of frame)
  • expected at IN idx 59675 offset 0x1C0 - but this sample value is 00000000

There are then zero values on all channels for remainder of IN 59675 (8 samples), and first 13 samples of IN 59683 (then correct ramp from sample value 0x05abbe)

@danielpieczko
Copy link
Contributor Author

danielpieczko commented Sep 8, 2023

Analysing the lengths of packets in the complete five minute trace:

  • total INs 2444518
  • 2444518*22.05 = 53901621.9 samples per channel during the whole run (expected)
  • len 704 (22 samples) 2322322
  • len 736 (23 samples) 122196
  • no other packet lengths
  • (2322322*22)+(122196*23) = 53901592 (actual)
  • 53901621-53901592 = 29 samples difference over 305 seconds.

Gap between pairs of consecutive 736 len packets should be 20, so 19x704 then 1x736, ...
There were 598 gaps of 21 (out of the 122196 longer packets)

OUT transactions had similar results in terms of packet lengths.

@danielpieczko
Copy link
Contributor Author

Adding a conditional exception on outUnderflow being true here fired during my latest test run.

@xross
Copy link
Contributor

xross commented Sep 11, 2023

Just to clarify, this is with Theyscon driver, correct?

@danielpieczko
Copy link
Contributor Author

Just to clarify, this is with Theyscon driver, correct?

Yes

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants