Is dither applied to all I2S output ports in this processor family? In the AD1940 family this is an option on the I2S port description and I find no mention of Dither in the ADAU144X family.
The ADAU144x does not have dither on the serial ports. I am intrigued by your question and I'm currently looking for a way to generate dither in software. Right now I'm able to generate +/- 1 LSB dither, but in reality we need +/- 0.5 LSB in order to make it work. I feel that this would probably require some double-precision calculation or perhaps some scaling in order to make it work properly. I'll check with the software team to see if they have any suggestions.
I am surprised that there would be no dither applied as simple truncation can lead to audible artifacts being produced at the outputs.
Yes, truncation can lead to audible artifacts, but in this case, no truncation is actually occuring. The DSP outputs a full 24-bit signal and the serial ports output a full 24 bits as well.
Dither is useful in situations where you are lowering the bit rate of a signal by truncating the LSBs. For example, if you connected our 24-bit DSP to a 16-bit audio DAC, then the DAC's serial input port would truncate the lower 8 bits, effectively reducing the dynamic range of the signal from 144 dB to 96 dB. In this case, artifacts resulting from truncation could certainly be louder than the noise floor of the DAC and could be audible to the listener.
However, if you output from the DSP directly to a 24-bit DAC (see our list of 24-bit audio codecs for examples), there is no truncation necessary. The full 24 bits are output from the DSP directly to the DAC input, so your dynamic range of 144 dB is preserved. Our evaluation board, for example, features a full 24-bit path from AD1938 to ADAU1442 to AD1938.
And by the way, if you have a situation where you need to output to a 16-bit DAC, you could manually implement dither in the DSP itself. You basically need to create a white noise signal, apply a gain of -102 dB (which makes it have a peak-to-peak amplitude of 1 LSB in a 16-bit system), and then add that noise to the audio signal. This will effectively add +/- 0.5 LSB of noise to the output signal, which is really the simplest form of dither.
Actually I am concerned with having dither even on the 24 bit word. I would prefer to give up a little dynamic range to insure that any further processing of the 24 bit word does not result in artifacts. I still think it would be good to have +/- 0.5 bits of dither on the 24 bit word to insure that there are no tones in the noise floor. I assume that the internal math results in truncation to to 24 bits at the output also.
The accumulators are 56 bits deep, but after calculations are performed, the audio reverts to 5.23 format before it is passed on to the next algorithm, or "cell." This is because audio is stored in data RAM as a 5.23 word. So, yes, on each calculation there will be a truncation to 24 bits.
Prior to outputting on the you could do a double precision dither operation that would put +/- 0.5 LSB of noise on the signal, but this isn't possible with the currently available cells in the library. I've put a request in to the software team for this algorithm; hopefully it will show up in the next release of SigmaStudio.
Retrieving data ...