Before the days of iPod docks in every conceivable piece of audio equipment, most devices were actually built very well. Most shelf top equipment usually came with well designed circuits using quality components, and late 90s CD players were no exception. [Mariosis] heard of some very nice DACs found in some of these units and decided to take one out for a spin. He’s using a Raspberry Pi to play audio with the DAC found in a late 90s Kenwood CD player.
After fortune favored a CD player with a dead drive on [Mariosis]’ workbench, he dug up the service manual and found some interesting chips – a PCM56 DAC, a little bit of logic, and an SM5807 oversampling chip that does all the conversion for the DAC.
This oversampling chip uses an I2S – not I2C – bus to carry the data from the CD to the DAC. There is, of course, an I2S driver for the Raspi, but the first attempts at playing audio didn’t result in anything. It turned out there was a problem with what the oversampler expected – the ‘standard’ I2S signal delays the data one tick behind the LRCLK signal.
There are two ways to fix this problem: programming a kernel driver, or building some custom logic to fix the problem. Obviously breaking out some flip-flops and NOR gates was the cooler option, giving [Mariosis] a great sounding stereo with a vintage DAC.