We are developing using XU232-1024 chip for usb audio device. We aim at handling 16 outputs over I2S.
To do so, we use the reference design 6.15.2 with a modification in the audio/i2s part :
Instead of having one deliver task to handle 8 I2S IO, we have two deliver tasks running in parallel (that we call deliver1 and deliver2) that would handle each 8 I2S IO (to get the 16 I2S IO in total).
deliver1 task is managing the LRCLK and synchronizes with deliver2 when needed (at LRCLK change and to handle command from mixer).
The problem we have is that the I2S frame of deliver2 is one bitclock cycle behind the I2S frame of deliver1.

Yellow : LRCLK / Blue : Bitclock
The dotted vertical cursor corresponds to when the I2S frame from deliver1 starts.
The plain vertical cursor corresponds to when the I2S frame from deliver2 starts.
(my scope is only two channels so I couldn't display everything at the same time)
All I2S port are clocked with the same bitclock clock block, so both frames should be starting at the same time.
Do you have any idea of what is happening ? Could the synchronization of the port on the bitclock be broken because we are using two tasks ?
Cheers,
Marc