PCM5100 BCK clk

Hey!

I’ve nabbed your electrical design for plaits involving the PCM5100A + power + audio output. I’ve built one of these PMOD boards that interfaces with Digilent FPGA Dev boards. I’m using an arty a-7. I have your design on the PMOD board and the three wire I2S interface going through the pmod connector and into my FPGA design. I’m having trouble getting an exact BCK into the dac though. The FPGA has a base system clock of 100Mhz and I can’t seem dial in exactly 2.8224Mhz from any sort of clock divider. I’ve tried a few. If i go for a higher sample rate i can get a little closer, like 12.280701 Mhz instead of the datasheets 12.288. My question is, do you know if the PCM5100A’s internal PLL will lock in the system clock and output audio if my BCK is off by that much? Or does it have to be EXACTLY 12288000Hz?

Let’s have a look at it logically… For the PCM5100A to require exactly 12.288MHz as BCK, this exact frequency would need to be “encoded” somewhere in the chip. The chip would need to have a time base, or reference, for this exact frequency. But how? Reaching such an exact frequency would require an external crystal!

So the answer is no – you clock the chip at whatever frequency you want, and everything follows. If you deviate too much from the expected frequency (and that would be by more/less than 10%), the worst that can happen is that the chip will interpret that you are running at a different sample rate, and the wrong digital filter will be used, causing aliasing.

Plaits runs at 47.87234kHz actually, just because the PLL in the STM32F37x can generate the corresponding clock frequency for the PCM5100A (1.5319MHz = 9/47 of 8MHz), which is not 1.536MHz exactly.

That makes sense and makes things much easier. Although there are some pretty interesting tricks to getting a mHz resolution clock out of an FPGA :smiley: Thank you. I suspect my issue is either in my surface mount soldering job (cast iron skillet) or or my I2S driver. I need to write a simulation for it so I can see more detail in the signals.

Cheers,
Ed