Why Philips CD 723 is a bad base for modding

Recently I aquired a low-cost Philips CD 723 player. I paid around 40 Euros including shipping.

It is a very low cost device, but it can read CD-RW without problems. My initial plan was to refit a new power supply, clock and internal DAC which would be fed directly by the player's I2S. Going non-OS, I figured it would be a very good sound for little money project.

Here's why it won't work as intended:

The CD 723 uses a one-chip servo/decoder/digital filter solution which belongs to the CD7 family from Philips. This chip features an internal digital filter, oversampling to either 2fs or 4fs. You can chose between those two filters by software, but you cannot disable them. So no non-OS unless you use the chip's biphase-mark output.

The other problem is the digital filter in the SAA7378 is mediocre at best. The internal resolution is not sufficient at all, stop-band attenuation is very poor, and a -0.5dB downscaling is applied on all input signals to prevent overflows. The chip doesn't even dither before this downscaling. Thus, you will never get accurate samples from the CD out the I2S of the chip!

So, don't buy CD 723, although it is recommended in several threads in this forum!
 
True, but if you had search the forum, you would jave known that before you bought it.

Still, I do recommend the CD723, because it is cheap, it's a simple design, it's easy to modify.

Your problem (and only 1 problem) is that your limmit your self to the I2S output. Don't use it. But by now, you know that too. Use the S/PDIF. If you worry about jitter: use a low jitter clock near you favorite DAC and slave it through to the player... that's the ultimate solution, for any player.

Good luck,

CD723, still highly recommended!:)
 
True, but if you had search the forum, you would jave known that before you bought it.

Sometimes I do things without asking first :D

Use the S/PDIF. If you worry about jitter: use a low jitter clock near you favorite DAC and slave it through to the player... that's the ultimate solution, for any player.

The -0.5dB scaling still applies, even when you use the S/PDIF. It is done in a very mediocre way, without dither and - of course - asymmetric around digital zero. It affects sound quality and prevents you from getting the exact sample values (as on the CD) out of the decoder chip.

Thus, I really cannot recommend CD 723 and similar players using the SAA7378.
 
The -0.5dB scaling still applies, even when you use the S/PDIF. It is done in a very mediocre way, without dither and - of course - asymmetric around digital zero.

If that's true, it's new for me and indeed something to consider.

Could you explain it a little more ellaborate.. howcome that the S/PDIF is affected? assymetric attenuation around zero? What's that?


Regards,
Thijs
 
This website (it's not mine) explains how to hack the controller to get 1fs dataflow.

Although I can't read french, I understood he is using an Atmel controller to interfere with the communication between the SAA7378 and the player's controller to alter the output format setting.

In the SAA7378 datasheet from 1995, page 15, there is a table which shows six modes the DAC output interface can work in. All of them are either 4fs or 2fs. However, in his program, is he using none of these documented modes, but rather an "invalid" combination of bits.

Now there are two possibilities:

1. This guy is really clever and remembered the SAA7378 is basically an advanced SAA7345 and a TDA1301T on one die, and the "old" 1fs modes from the SAA7345 still work in the SAA7378, although they don't appear in the datasheet.

2. He took the output format codes from a website or from a different data sheet (like the one for SAA7345), assumed they are the same for the newer chip and tried them. They don't work and the chip remains in its default setting, which is 4fs.

From looking at his website, he seems to be very knowledgeable, so I hope it's the first possibility.

If that's true, it's new for me and indeed something to consider.
Could you explain it a little more ellaborate.. howcome that the S/PDIF is affected? assymetric attenuation around zero? What's that?

It seems the downscaling multiplier is before the biphase-mark output in the SAA7378 block diagram.

This guy really had a close look at the issue and he explains it much better than I could.

It looks like my warning finally can be refuted (which is in my best interest, after all I own one of those machines), but some issues need to be sorted out before I agree:

- Can we really circumvent the digital filter section of the SAA7378 for exact bit-for-bit accuracy, by setting the output to this undocumented, "illegal" mode?

- Is there a way of disabling the mediocre -0.5db downscaling?
 
Excellent find - I knew somebody would program a microcontroller for the CD400 (CD723) someday - I and others looked at this about a year ago and realised the SA7378 could be changed to no oversampling mode but only by sending signals to it from a microcontroller.

Looks like this is what this guy did it - ther is a lot of activity in France on this player in the site http://forums.delphiforums.com/HAUTE_FIDELITE/start
but mostly in French.

Unfortunately my French is not up to par

PeuFeu has an interest and is himself a French speaker i believe maybe he will let us know the translation.

In the meantime I sent robinetron an email to get details in english - will post them here.

Now to clear up the final
 
Hmmm interesting, but let me play the devils advocate....

Brainless scaling.. shouldn't scaling be brainless? Not even dittered? Should ditter be aplied and only applied just before the ADC?

I read the page but I still don't get it. My CD723 does play a single bit signal.. If he's correct, that shouldn't be possible or should it? hmmm no I guess is should, looking at the in/out table of your linked page.. but a 3bit signal should be heavely distorted? Also if it was dittered before the ADC? I think yes...

Guess I need a CD-writer and a PC S/PDIF input to find out....

cheers,
Thijs
 
I and others looked at this about a year ago and realised the SA7378 could be changed to no oversampling mode but only by sending signals to it from a microcontroller.

Where did you find the relevant information? I cannot find this non oversampling mode in the datasheet.

If there is more information about this chip anywhere, we might be able to defeat the downscaling to make it sound better (and make it work with HDCD decoders).

I will not ditch my CD player project. If I have to design a new servo/decoder PCB to get the right samples out of it using a different chipset, I'll do it.
 
Brainless scaling.. shouldn't scaling be brainless? Not even dittered? Should ditter be aplied and only applied just before the ADC?

DSP... :bigeyes: Scaling by multiples of two is no problem, you "just" lose one bit resolution if you go down 6dB.

However, rounding errors become a problem when you try to multiply by 0.9375. Just try with paper and pencil or a pocket calculator and you will realize the problem. If you just multiply and then make a 16bit signed integer from the result again, you get a fixed mapping of input values to output values, with some "jumps" in it, where two different input values map to the same output value. Can we agree that the signal quality will be compromised to say the least?

Dither would straigthen this up a bit, as it adds some noise just below the LSB (the internal resolution of the multiplier must be higher than 16 bit to achieve this). This noise will have an impact on rounding, and the "jumps" in the input/output value map will not occur at fixed points, but be distributed randomly. The effect of the scaling will be much less audible.

Dither should be applied at the point where the resolution of a digital signal is decreased. If you multiply a 16 bit signal by 0.5, you obviously need 17 bits for an accurate representation of the result. If your DSP outputs only 16 bits, you are decreasing the resolution (and throwing away some information) and need dither.

I suspect the SAA7378 just uses a 16 bit internal resolution multiplier and I don't like that at all.
 
OliverD - if you look at the datasheet for SAA7377 (or similar) you will find section on "Functional Description" - there you will find all the possible modes of operation and the registers to write to to control and switch modes.

This is what he has done - intercepting the signals on the 4 wire line between microcontroller and DAC and hacking into them.

I sent him an email as per his site but it was returned undelivered.

Maybe someone else can translate this site and post here?

John
 
jkeny, I'm well aware of the various modes in the other SAA737x devices, however the SAA7378 datasheet explicitly mentiones only six modes, none of them 1fs.

If the modes from the other SAA737x familiy chips work as well on the SAA7378 as undocumented features, fine.

What about the ugly scaling problem? Any way to circumvent this?
 
OliverD - you are correct - there is no mention of 1fs in SAA7378 datasheet - I just downloaded it - a year ago this datasheet was not available and SAA7377 was considered by those who know to be equivalent - maybe it is and the SAA7378 documentation is not listing all settings or maybe Robinetron (the French hacker) is mistaken and hears what he expects? AS you said he seems knowledgeable.

He also mentions about a ridse in sound of 0.5db after the hack - I can't see how his microcontroller hack overcomes the scaling problem though - which effectively writes off this CD player as a bit perfect source.

I am thinking of moving all my music to PC in lossless format and using this as source - using active crossover program (BruteFir), possibly digital room correction (DRC) and sending it to digital amplifier (panasonic SA-XR*) - this seems to me the most direct route for digital source.

Just need to sort out quiet, visually attractive PC, direct route for PWM data (music not through jittery soundcard but directly from PC in some way and into power DAC (digital receiver - panny SA-XR*). Have not got there yet or even nearly there.

John
 
He also mentions about a ridse in sound of 0.5db after the hack - I can't see how his microcontroller hack overcomes the scaling problem though - which effectively writes off this CD player as a bit perfect source.

Originally the -0.5dB scaling was introduced to prevent overflows in the :bawling: oversampling filter.

It might be that it is bypassed when the 1fs mode is selected. I will have a look into this when I start hacking my CD 723.

Btw, my intention is to reuse only the drive and the SAA7378. The rest will be built from scratch. So, no problem to try various interface settings - I'll have a microcontroller anyway for the user interface.