DIY CD drive based on a computer CDROM

Things

Matt you can also use the Digital out which is S/PDIF and which should sound way better than the audio out with an external DAC. The buffering is planned to eliminate the jitter in the S/PDIF out of the drive.

All,
I wonder how much jitter we will introduce however, by manipulating the bit stream during buffering. This is not a trivial task. Most timers in MCUs can suffer jitter and without special consideration (interrupts, instruction subtraction from timer reset value etc.) will most certainly suffer jitter.

What is the plan for a clock source?

With control pins needed for LCD, RAM, IDE, Shift Registers, and transmitters will we have enough pins combined with a 16 bit bus or will we have to use port extensions such as 74HC595?

DJ you mentioned a PCB, do we have a schematic?

Gregory
 
All, I wonder how much jitter we will introduce however, by manipulating the bit stream during buffering. This is not a trivial task.

Absolutely right.

I think we lost focus on the real goal of this project. We're becoming blinded by all features we would like to see and we're not considering the complexity of the project and the impact they could have on sound.

Personally I think that those interested in this project are people who don't want to spend all their cash on CD-Pro2 mechanism but instead they want to try their hand making their own CD player. Even when going simple we can achieve great results.

Processing sound using a microcontroller is definitely not the best thing to do. A DSP would be better suited but what's the goal ? Adding echo and other features or simply have a pure signal without any artifacts ?

The buffer idea is really not bad but that will imply a lot of work.

On my side, I would focus on a simple project based on easy to obtain components.

Here are the great lines :
A simple micro controlling the cd-rom drive
a LCD display,
a few buttons and finally RC5 decoding.
I'll be using the drive's SPDIF output and a DAC like Nonoz II.

That will be probably the cheapest way to get a great CD-Rom based transport and DAC and they will be highly and easily customizable

Also, just a thought : I think that we should split up this thread in two threads :)

1. Great sounding and simple DIY CD transport
and
2. Very complex DIY CD transport where results aren't guaranteed but a lot of cash spent on it.


To Gregory, yes I also see the DS89C420's webpage now states 33MHz, but the datasheet I have says 50MHz

I worked with DS89C420 in the past and they were rated @33MHz. However, we were overclocking them @50MHz and they were running fine and very steadily. Just make sure they don't overheat. However, the specs may have changed since.

My :2c:
 
Here are the great lines :
A simple micro controlling the cd-rom drive
a LCD display,
a few buttons and finally RC5 decoding.
I'll be using the drive's SPDIF output and a DAC like Nonoz II.
In fact, that's exactly what I intended when I started this thread.
It certainly may be a good idea to have a more complex, buffered, DSP-ed, overclocking, overkilling, unbelieveable drive later on, but shouldn't we first concentrate on getting that disc rotating...?
 
Konnichiwa,

HBarske said:
In fact, that's exactly what I intended when I started this thread.
It certainly may be a good idea to have a more complex, buffered, DSP-ed, overclocking, overkilling, unbelieveable drive later on, but shouldn't we first concentrate on getting that disc rotating...?

Well, I already have a CD-Drive (ROM) that does all that on board, no external stuff needed (NEC, SCSI).

It sounds dreadful too, via it's S/P-DIF output.

How about we all buy Philips CD-713 instead via a group buy and simply refit the Digital Output parts? Can't get cheaper and easier than that.

If a job is worth doing we might as well amke sure we do it well. Controling the basic drive functions (Play/Pause/FFD/REV/STOP) is minor in scope and guarantees nothing else than mediocre sound at best. So, why bother (other than for intellectual challenge)?

Now if can make DAE Mode, Memory buffered with an external "out" clock work we may challenge Meridians best, DIY style and show Krell, Levinson, Linn and co a clean pair of heels.

Sayonara
 
Konnichwa,

HBarske said:
@Thorsten:Simply because it's a proven strategy to do step one first and step two afterwards...?

Hmmm. SOMEHOW it strikes me that having a CD Drive that "plays" is easy. We have had links to at least 4 projects, two with full PD Code and all else. Except these do nothing BUT give you buttons (and display).

HBarske said:
I don't have any problems with DAE mode and other toys, but I think this is useless without having the basics done first.

Given that DAE and co work completely different to syncronous "CD-Player" mode the basics make no sense at all. Get a "lets buy it together" group by on a Philips CD 713 - it will do better and lend itself much more to high performance mods than a CD Drive. And it comes with buttons and Display PLUS CD-Drive and even a decent DAC for little money.

Why reinvent the wheel and make it square?

Sayonara
 
So many postings to reply to...

I've noticed a lot of you have talked about using the CDROMs SPDIF out, but I definitely won't do this. Yes it might take some time and effort to get the project sounding as good as it can if done the IDE way, but from experience I can tell you that using the SPDIF from the CDROM is not going to sound as good no matter how good a DAC you use. Since there is no signal processing to be done, an MCU shouldn't cause too much problems, but still I intend to do as much as possible to counteract the little trouble it will give.

You should just all check your drives, because some of the newer CDROMs come with a SPDIF socket on the back, but it isn't connected. Companies saving costs you know...

I would advise Matttcattt (and any others) against using the PC PSU, those create more noise than anything else.

Douchekop asked, and yes I plan to use a SPDIF transmitter IC now that I know I can get one. The ones from Cirrus Logic (Crystal) seem to be the best. See the links posted earlier.

Thanks to ray for correcting me about the TI transmitters!

I see everyone noticed that we may be becoming a little too ambitious. I still plan on doing everything I've said so far, and implementing all the features mentioned, but I'm also planning (and have since the beginning) to do so in phases. I can't believe anyone would try to sit down and code this whole thing at once and think it will work perfectly right away. For this reason, I will lay out my PCB in such a way that everything (including buffer memory) is there already so that I can implement all the features bit by bit (excuse the pun). Meaning I'll start trying to get the CD spinning and work my way from there.

I agree clocking is important, and as a (slightly later) part of the project, I plan to design a high quality clock circuit. This will probably consist of a high spec crystal, a phase locked loop (PLL) and a clock buffer. At the very least that is...

To Wang:
Where's the fun in using a CDROM that already implements the buttons itself?

Hold on I feel a flowchart coming on!

DJ
 
Here's the flowchart with thanks to all those who made suggestions after the preliminary version. All suggestions are welcomed after this one as well.

Please note that the filling/emptying of the buffer has been removed from the button-loop, since this is now automatically built into the play-loop.
 

Attachments

  • flowchart.gif
    flowchart.gif
    19.7 KB · Views: 2,845
Flowchart

DJ: Great flowchart. I agree with you that the project should be build in phases. Where's the fun when you could buy anything:clown: Did I understand right that you already have a evaluation board or are you still in the designing part. I just received my controller DS89C420 and a DS232A. The great thing about this controller is that it had a boot rom included. Are you planning to use that option? Also, what compiler do you use?

Great work though,

MGB
 
Hey MGB,

Thanks for the compliment. No I don't have an eval board yet. I'll be doing my PCB layout this weekend (I hope). I'm not sure if I'll be using the boot rom yet, but like many things I'm keeping that option open.

I'll probably be using the sdcc compiler which can be set up for many different MCUs and is available free from http://sdcc.sourceforge.net/

I'll post my PCB layout when I'm done so that you can use it as well. (Perhaps you could check it for errors first!)

Cheers for now.

DJ
 
Konnichiwa,

HBarske said:
Okay, in that case a have to switch for another argument :D

Okay. Then I have to switch too. If all we want is a "unit" that plays a CD, has controls and outputs a S/P-DIF datastream of highly questionable nature (usually high Jitter etc.) you can get any number of inexpensive CD/DVD Players that will do that for very little money.

If we want a high performance digital source we need to have some form of cleaning up the signal from the ROM Drive. For that I see two options:

1) Use DAE Mode on the drive and a uP with a large DIMM Stick plus an external "master" clock input allowing the Drive to be clocked from a suitably equipped DAC. This is obviously most future-proof (the IDE interface will be around a good while longer) and once a suitable kit exists easiest thing, as the CD-Drive remains unmodified and ANY IDE CD Drive can be used.

2) Use syncronous CD Mode and externally reclock the S/P-DIF Datastream. This can be implemented quite easily using for example one of Guido's PCB's, but it requres the CD Driver to be opened up and the Audio Clock to be found and replaced by the external clock. With CD only drives becoming rare the likelyhood is that most Drives in the future will use a cheap 27MHz PLL clock (as do many DVD Players) is high, also the retention of the S/P-DIF output is questionable.

I do applreciate that option 2 is much easier to program and implement, but here we have a failry large and recourcefull DIY Group, so why not go the whole Hog and implement Option 1 which will be still usefull in a few years?

Now also some comments on the operation of the DAE Mode system. If we specify a minimum 32MB RAM and dedicate 24MB to the buffer we could use the highest speed of the CD Drive on initialisation of the Disk to read as much of the 24 MB buffer full. Say 10 Seconds initialisation and then a drop to maximum quad speed? Extracting at quad speed should make it easy to fill the buffer up quickly, allowing then only short reads to fill up the buffer as it empties.

To send the Data to the S/P-DIF transmitter we need to send 32 serial bits per Frame (L/R Clock) halve period. This suggests a bitrate at around 2.8MHz, not really all that dramatic in terms of speed for modern uP's....

Sayonara