I'm using the xCORE-200 MC audio board, with the configuration 2i16o16xxxxx_tdm8.
USB Software rev: 6.15.2.rc1.
I put the hardware into data loopback (by jumpering the center pins of J7 and J8 on the board), so that what gets played out is immediately looped back to the input.
When I play and record simultaneously, the data comes back in the incorrect frames. I.e. in one single frame, I get data from this frame, the previous frame, and the one prior to that. That is, I get data from say, frames 10, 11, and 12, all in the same recorded frame.
Like this:
In my case I found that I recorded this sequence (each row is a frame, each column is a channel):
Code: Select all
0x00000000 0x00000000 0x02000000 0x03000000 0x04000000 0x05000000 0x00000000 0x00000000 0x00000000 0x00000000 0x0a000000 0x0b000000 0x0c000000 0x0d000000 0x00000000 0x00000000
0x00000000 0x01000000 0x02000001 0x03000001 0x04000001 0x05000001 0x00000000 0x00000000 0x08000000 0x09000000 0x0a000001 0x0b000001 0x0c000001 0x0d000001 0x00000000 0x00000000
0x00000001 0x01000001 0x02000002 0x03000002 0x04000002 0x05000002 0x06000000 0x07000000 0x08000001 0x09000001 0x0a000002 0x0b000002 0x0c000002 0x0d000002 0x0e000000 0x0f000000
0x00000002 0x01000002 0x02000003 0x03000003 0x04000003 0x05000003 0x06000001 0x07000001 0x08000002 0x09000002 0x0a000003 0x0b000003 0x0c000003 0x0d000003 0x0e000001 0x0f000001
0x00000003 0x01000003 0x02000004 0x03000004 0x04000004 0x05000004 0x06000002 0x07000002 0x08000003 0x09000003 0x0a000004 0x0b000004 0x0c000004 0x0d000004 0x0e000002 0x0f000002
0x00000004 0x01000004 0x02000005 0x03000005 0x04000005 0x05000005 0x06000003 0x07000003 0x08000004 0x09000004 0x0a000005 0x0b000005 0x0c000005 0x0d000005 0x0e000003 0x0f000003
0x00000005 0x01000005 0x02000006 0x03000006 0x04000006 0x05000006 0x06000004 0x07000004 0x08000005 0x09000005 0x0a000006 0x0b000006 0x0c000006 0x0d000006 0x0e000004 0x0f000004
0x00000006 0x01000006 0x02000007 0x03000007 0x04000007 0x05000007 0x06000005 0x07000005 0x08000006 0x09000006 0x0a000007 0x0b000007 0x0c000007 0x0d000007 0x0e000005 0x0f000005
0x00000007 0x01000007 0x02000008 0x03000008 0x04000008 0x05000008 0x06000006 0x07000006 0x08000007 0x09000007 0x0a000008 0x0b000008 0x0c000008 0x0d000008 0x0e000006 0x0f000006
0x00000008 0x01000008 0x02000009 0x03000009 0x04000009 0x05000009 0x06000007 0x07000007 0x08000008 0x09000008 0x0a000009 0x0b000009 0x0c000009 0x0d000009 0x0e000007 0x0f000007
Code: Select all
0x00000000 0x01000000 0x02000000 0x03000000 0x04000000 0x05000000 0x06000000 0x07000000 0x08000000 0x09000000 0x0a000000 0x0b000000 0x0c000000 0x0d000000 0x0e000000 0x0f000000
0x00000001 0x01000001 0x02000001 0x03000001 0x04000001 0x05000001 0x06000001 0x07000001 0x08000001 0x09000001 0x0a000001 0x0b000001 0x0c000001 0x0d000001 0x0e000001 0x0f000001
0x00000002 0x01000002 0x02000002 0x03000002 0x04000002 0x05000002 0x06000002 0x07000002 0x08000002 0x09000002 0x0a000002 0x0b000002 0x0c000002 0x0d000002 0x0e000002 0x0f000002
0x00000003 0x01000003 0x02000003 0x03000003 0x04000003 0x05000003 0x06000003 0x07000003 0x08000003 0x09000003 0x0a000003 0x0b000003 0x0c000003 0x0d000003 0x0e000003 0x0f000003
0x00000004 0x01000004 0x02000004 0x03000004 0x04000004 0x05000004 0x06000004 0x07000004 0x08000004 0x09000004 0x0a000004 0x0b000004 0x0c000004 0x0d000004 0x0e000004 0x0f000004
0x00000005 0x01000005 0x02000005 0x03000005 0x04000005 0x05000005 0x06000005 0x07000005 0x08000005 0x09000005 0x0a000005 0x0b000005 0x0c000005 0x0d000005 0x0e000005 0x0f000005
0x00000006 0x01000006 0x02000006 0x03000006 0x04000006 0x05000006 0x06000006 0x07000006 0x08000006 0x09000006 0x0a000006 0x0b000006 0x0c000006 0x0d000006 0x0e000006 0x0f000006
0x00000007 0x01000007 0x02000007 0x03000007 0x04000007 0x05000007 0x06000007 0x07000007 0x08000007 0x09000007 0x0a000007 0x0b000007 0x0c000007 0x0d000007 0x0e000007 0x0f000007
0x00000008 0x01000008 0x02000008 0x03000008 0x04000008 0x05000008 0x06000008 0x07000008 0x08000008 0x09000008 0x0a000008 0x0b000008 0x0c000008 0x0d000008 0x0e000008 0x0f000008
0x00000009 0x01000009 0x02000009 0x03000009 0x04000009 0x05000009 0x06000009 0x07000009 0x08000009 0x09000009 0x0a000009 0x0b000009 0x0c000009 0x0d000009 0x0e000009 0x0f000009
How to reproduce:
1) Pull all jumpers from J7 and J8 of xCORE200 MC board.
2) connect the center pins of J7 to J8 (only 2 needed for 16 channels, but all 4 won't hurt).
3) Compile audio release 6.15.2, target is app_usb_aud_xk_216_mc 2i16o16xxxxx_tdm8, with a small modification to Makefile*
4) Connect to linux PC: and run aplay myramp.wav while recording simultaneously.
5) The captured data will be all zeros up until myramp is played. Then it will show out of order data arriving. Namely, channels 0, 1, 8, 9 are 1 frame behind, and channels 6, 7, 15, 16 are 2 frames behind
* The Makefile patch just adds the defines:
-DOUTPUT_VOLUME_CONTROL=0
-DINPUT_VOLUME_CONTROL=0
-DMIXER=0
to preserve all 32-bits of data.
The attached file includes all input and output data, as well as a program for generating the test sequence.
Has anybody else seen this problem? If you don't do a digital loopback test, it may be in your design and you may never catch it!
Thanks,
-Caleb
[update: I verified with an oscilloscope that the bits on the wire are correct, so this is not a problem with the playout channel, but rather it problem seems to be exclusive to the capture/record channel]