Serial Port Format - Where's the LSB?
I need help understanding the data format for I2S serial ports. I have configured an external device to send I2S data to the ADAU1452 in 24 bit format and it appears to be working. The issue I'm having is that the LSB of the data is always set to 0, even though I can see that bit toggling on a scope.
As a sanity check, I set up a simple program on the EVAL- ADAU1452 MINIZ board to input data from the Codec. I see the same thing: The LSB from the converter is always 0.
Is this normal, correct operation for the serial ports in 24bit format?
-Barockteer
Audio Signal Processors
adau1452
SigmaDSP Audio Processors
Yes, This is a little counter intuitive, but it is correct. The reason is that the 24-bit incoming data is in 1.23 format, In other words, the MSB is the sign bit with a 23-bit number representing the fraction between -1 and 1 (-1 LSB). When the word is converted to the default 32-bit 8.24 format, the word is sign extended, and a the mantissa is filled with the remaining 23 significant bits. Stated another way, the missing 24th bit is to the left of the binary point.
Ken
Thanks very much for your answer! I spent a day chasing my tail on this, thinking I had mismatched clock polarities, framing errors, etc.
-Barockteer
So have I. That's why I knew the answer. lol
Hello PolEx,
Thanks Ken for the answer. I simply put it that we add seven bits on the MSB side of the incoming 24 bit data and we add one bit in the LSB side of the data.
Then on its way out the one LSB is truncated. The upper seven bits are saturated and the sign bit brought back down. That is a little bit more tricky.
I have also been scratching my head once wondering why I look at data in the core and it looks good and I get 0x7F FF FF on the I2S output? It was because the internal 32 bit level was greater than the 24 bit number can hold so it becomes saturated (clipped) at the max level which is 0x7F FF FF.
We also get caught with this stuff every once in a while. :)
Dave T
Please log in to reply.