FFT of digital loopback

Hello,

Recently ordered SA9227 based USB ↔ I2S converter and decided to check distortions of the converter itself making I2S loopback.
The results look strange to me. I expected a symmetrical spectrum, but there is always a horizontal “shelf” on frequencies below the test signal.
I would admit the shelf on the both sides or downward curve on the both sides (of the test signal) as well, anyway a symmetrical curve.
The “shelf” goes down with the test signal frequency increasing and goes up with decreasing.
The “shelf” goes down with FFT size (quantity of points) increasing and goes up with decreasing.
What could be a reason/explanation of such behavior? The converter specifics? The measurement specifics? Something else I’ve missed?

Thanks in advance,
Serge
 

Attachments

  • FFT.png
    FFT.png
    6.6 KB · Views: 101
  • FFT1.png
    FFT1.png
    6.5 KB · Views: 89
  • fft2.png
    fft2.png
    6.5 KB · Views: 89
That curve is definitely spectral leakage, perhaps you haven't accounted for the latency in DACs/ADCs and prematurely started sampling. You want to send continuous sample stream and only start reading samples say a few ms after it starts - my guess is you are seeing leading zeroes in the loopback which would produce spectral leakage like this.

Audio sigma-delta converters have dozens of samples latency each way, they are not like flash or SAR converters commonly used for other signal acquisition uses.
 
There are no AD/DA conversions at all. It's pure digital (I2S) loopback. Also the FFT is alive, taken periodically/continuously, not momentarily, So it's still a puzzle
Ah, is the signal generated isochronous to the FFT sampling? If not you might just be seeing the Hann window spectral leakage. Can you use a higher performance window function? Or up the size of the FFT considerably, like 256k points?
 
I've done such test with my USB<->I2S project:

1731883434342.png


The only time there was an issue - it was related to improper slave/master configuration. I am not familiar with SA9227 but are you sure that I2S output is configured as master (generates BCK, WCK) and the input port is slave (expects external BCK, WCK)?

If input port is configured as master - you'll need ASRC for such loopback test (well, it is one of the options).
 
Are the I2S input/output streams synchronous (use same clock)? If not the problem is quite likely with spectral leakage as some already suggested. Try with another FFT window and e.g. 64k FFT size.
It's the single USB board with 3 TXCOs. In and Out are on 48k everywhere (board/FFT/generator), so probably the clock source on the board is the same. The PC based clock (48k) is different, but WSAPI is used in the software. So hope the streams are synchronous. Anyway I don't know a way to check the clock inside the PC. Scheduled some experiments and will post the results. The most promising idea for me know is "signal generated isochronous" related. And the purpose is still to understand the shelf appearance reason, not to make the shelf lower
 
Alright, let's do a simple test with multimeter.
Measure voltage on BCK, WCK out. There should be ~1.6v during operation.
Disconnect BCK and WCK inputs and measure voltage here. If they are inputs - there should be 0 or 3.3v.

(BTW, is there any documentation for this module?)
Oscilloscope is better isn't it. All levels/shapes fit the expectations, TTL etc etc, Disconnecting any of the pins breaks the signal as expected. The problem doesn't look HW related at all. I guess it's somewhere around clocking/synchronicity
(BTW, is there any documentation for this module?)
Unfortunately just SA9227 datasheet publicly available only. FW is not disclosed at all