Home Computer Audio Asylum

Music servers and other computer based digital audio technologies.

Ultimate Digital to Analogue...

Hello,

Sorry for the rather eye-catchy subject !

As many of you, I've been thinking for a long time about how to build the best music system.
And I've finally decided to get down to doing it. So, let's pool some brains.

I write this post to get your ideas and critics, so please express.
I will ask you to be constructive and refrain from flaming.

So, this first post will be about designing a good DAC for a computer. This includes the following questions :

Let's start from the beginning.
*************************************************
1. How to get rid of jitter ? Where is the master clock ?

The master clock should be on the same board carrying the DAC chips, with the shortest path between clock and DAC. The source (computer) and everything else should be slaved to it. This eliminates most jitter problems. Of course the implementation must be good enough (see next episode)...

Physically the DAC will be one box. There will probably be several boards inside (digital, analog, etc). Power supply will probably be external to keep noise down.
A computer can play DVDs and will be able to play any future audio/video formats (HD-DVD, Blu-Ray) while being slaved to the master clock in the DAC, so there is no problem for video playback either.
There shall be two clocks, one for 44.1k based sample rates and one for 48k based sample rates, with appropriate selections.

*************************************************
2. How many channels ?

A stereo system for 24b/192k needs about 10 Mbps.
If we want to be future proof, let's provision for a craziest multichannel system with active digital XO :
- 3 front channels, 4 way
- 4 subwoofers
- 2 rear channels, 2 way

By putting all channels 24/192 except the woofers and LF channels in each speaker we get about 70 Mbits/s.
Hm, so this leaves between 2 and 20 channels.

I think I'll start with 6 or 8 x 24/192 channels to be able to do digital crossover for 4 way speakers and various other experiments. There should be an expansion connector...
Calculating the number of channels was to know the required bandwidth. SPDIF/ADAT are, or course, out : not flexible enough, too much jitter.

I will also include a stereo ADC for analog sources : tuner, vinyl.

*************************************************
3. Where to do the digital crossovers and filtering / upsampling ? In the PC or in the DAC box ?

Doing them in the PC will allow use of standard, proven software like BruteFIR.
It will be a phenomenal time saving but, due to available bandwidth, will pretty much limit the max sample rate to 192 kHz. I think this is enough. A DSP might be added to the DAC box to oversample to the DAC chips native frequencies if a DSP expert is found or I can learn how to do it. I don't think it is a good idea to do the room correction/crossover in a DSP chip : it already works well with a PC.

*************************************************
4. Connection from the DAC box to the computer.

From our bandwidth requirements, we have :
- Custom PCI FPGA board : Out, PCI is obsolete.
- Firewire
- USB2
- Ethernet

The connection should also allow the computer to tell the DAC which sample clock to use, and the DAC to query data from the computer, effectively slaving it to its clock.

I prefer Ethernet because it's the most mature one, the easiest to program and it can be 100m. long so the PC can be in another room.
USB is too short (5m max) and eats system resources.
Firewire is nice but isn't very mature. Maybe someone can comment on this ? Also, Firewire audio puts the clock in the component which is elected as bus master. I don't fully understand how the protocol works.

Connection includes drivers. The PC will, of course, run Linux, so I will have to write a kernel driver which will masquerade this DAC as a sound card and take care of all communication :
- data transmission
- clock management
- setting volume from the computer
- displaying the song title on the DAC LCD front panel (LOL)
- etc

Linux already has support for ethernet audio (like making the soundcard on a computer virtually appear on another) so I think this should be doable without too much headache.

*************************************************
5. Implementation.

I will design the electronics around the DACs, clock, and analog output stage / volume control. However this needs to be fed data in a format like I2S. I will not design a board carrying a CPU, Ethernet transceiver et al, this is too much work.

So, I'm hunting readymade boards with the following characteristcs :

- Computer connection (Ethernet 100Mbps, real USB2 or Firewire)
- A nice CPU with enough power and DMA to lug aroung the data, or a FPGA which can synthetize a CPU core
- Included communication stack (like a TCP/IP stack)
- Enough RAM and output pins
- Easy to program (Ideally uclinux)
- Bonus if it includes a DSP or a FPGA
- Price should be acceptable (ie. not 1500 euro + tax like the DICEII dev board)

So, said board will receive the data from the computer, buffer it and send it to the DAC. It will probably output the samples in parallel format with DMA access, so a converter will be needed to make them I2S. This will either be a FPGA or other programmable component.

Examples :

http://www.acmesystems.it/?id=4 (cheap)
http://www.acmesystems.it/?id=120 (cheap)
http://www.cesys.com/index.php?language=en&doc=advanced&docparams=USB2FPGA&menuparams=50 (unknown price)
http://www.traquair.com/products/microline/c6713compact.html (unknown price)


*************************************************

Now, I'm waiting for your comments (and especially suggestions for the CPU board !)

If anyone wants to embark on the project, you're welcome.


This post is made possible by the generous support of people like you and our sponsors:
  Sonic Craft  


Topic - Ultimate Digital to Analogue... - Peufeu 10:28:32 08/27/06 (4)


You can not post to an archived thread.