The nice thing is each of these components so I can use a switched mode PSU just to get going with DC then upgrade (switched mode gives a massive noise headache):
Power (230v)
Using a IEC fused and EMI filtering socket, feeding a torriodal transformer to convert the 230v into 15-20v AC. This can be put in a shielding box for additional shielding.
Power (15-20V ac to 15-20V DC)
Ac to dc component using diode rectifier bridge with high quality caps to limit ripple along with some small chokes to reject more ac noise. One of these should be able to drive the entire system but it can be doubled up with a double secondary torriodal.
Regulated power supplies (10-20V DC to 5V & 3.3V)
two separate power supply components - one for 5V & one for 3.3V - based on paralleled Analogue Devices LT3045 (max 500mA each) which could be mounted on the case to act as a heatsink.
This means I can size up the PSUs as needed and the PSU output gives exceptionally low ripple and noise.
in theory each component could even have it’s own regulated power supply.. my CD player has 9 power supplies in it
Noise - the output from the regulated power supplies will ultimately be what drives the headphones as the system doesn’t have an amp - just direct modulation.
If more current is required to drive the headphones, several options are available:
* parallel fpga output pin per channel
* parallel cpld output per channel
* last but not least as Sallen-key butterworth output stage with TL074 to switch a larger power output in digital pwm.
Naturally parallelising things means they need to be either interlocked or just masterclocked and simply accept any minor deviation (which is a form of jitter).
my concern is I have 55ohm headphones that need a decent voltage swing to overcome back emf - think of the headphone speaker as a stepper motor.
A final enhancement may be a 2V 600ohm RCA line out for a normal amp.
Clocking
Using a AD 9415 gives a programmable master clock for all the components. This would probably be 100Mhz.
it means the usb-i2s, fpga and cplds (I’ll introduce these later) can all be driven off the same single clock.
Jitter - the xmos usb-i2s has a FIFO buffer for minimising jitter caused by the USB transfer. An extension of this is running a FIFO in the fgpa but this may not be required (the breakout board has DDR ram that can be used).
the fact that everything is off the same fast master clock helps minimise jitter end to end.
Power Modulation
The system works by switching power (3.3v) on and off very fast (millions of times a second) the result is - variable voltage level that moves the headphone speakers (or line out). Because the rapid switching the output is a still a square wave and that normally causes noise and harmonics. Switching so fast means the noise is further up the frequency spectrum - well beyond the 20KHz max of your hearing. So we use a low pass filter to block any noise above 20KHz.
The usb-i2s outputs pcm as i2s so DSD is delivered as PCM - essentially the voltage level requires for period of the sound as a number - this is where the “24bit” comes in, it means the voltage of 3.3v can be of any 16,777,216 levels (or think of it as 0.000000196695328 volt increments!).
It sends these numbers at a rate of 192KHz or 192,000 times a second for each channel (left ear and right ear).
The xmos chip has a programming that understands PCM and DSD over PCM. Although the xmos outputs the required bit rate on it’s gpio pins, I can then use that output on the input of the fpga to change the bit rate. There’s some “research” needed in how that would impact the audio if switched mid streaming.. but I assume one streaming starts that it won’t change - the fpga can be made to cope with any rate/bit depth on the fly.
So we use a field programmable array (fpga) to read the PCM number and create the switching required to modulate the power to match the required voltage level for left and right channels.
And it does that at 192,000 times a second
and switches the power on and off to the output pin linked to the headphones millions of times a second! Busy busy!
A field programmable gate array is a but like a CPU except it does everything in parallel rather than serially following steps of a program. They can be programmed like a CPU todo different things.
The fpga program does the “DAC” digital to audio conversion - so I can start with a 1bit sigma delta dac, change the programme and get a 2nd or 3rd order sigma delta dac, reprogram to a multi-bit sigma delta and finally reprogram to a multi-bit dac when making hardware changes.
an enhanced form is to add cplds (think a really fast but much dumber fpga) with a programm that takes the task of switching the power on and off quickly - this allows multiple cplds per channel to allow more electrical current.
finally a further option is adding TL074s and coding the Modulation of the cplds to allow a larger voltage (20V?) DC regulated power supply to be switched exceptionally fast. The same technique is used by chopper servo controllers - I use a 3.3v 650mA max stepper motor with a current chopper controller that switches a 12V 1A power supply quickly to vary the power to both servo coils for each 2 degree step of rotation. The 12V overcomes the electro emotive field that the motor cool creates that prevents the change (speed up or slow down) and the current chopping modulation prevents cooking the motor.
We’d be switching even faster than the chopper but not current chopping. However I’m still researching this option. Almost making the Modulators in parallel or the same as an H bridge (d class amp without the Analogue to digital conversion of the input audio step).
The output for each ear then goes through the low pass filter and to the headphone or line out.
Volume control could be done either as a digital rescaling or changing the power voltage.. not decided which but leaning to the digital.
Why?
it’s important to say - there is no separate dac making a very small analogue signal and preamps and power amplifiers making the audio louder step in analogue.
The quality of sound is important here - the digital only approach means a very clean (and stark) quality of sound. Naturally you can use dsp within the computer or fpga to alter the sound.
People say it can sound a little thin - given they’re listening to a 1-bit sigma dac or a multi-bit then what they are often hearing is the analogue amp and the relationship to the speakers. A lot of low quality amps have bass, “fat” bass, caused by the amp’s inability to control the larger cones and coils, or harmonics creating warmth etc. A good amp (analogue or digital) can rattle the windows with low frequency but still render the sound of humming bird wing beats, and the sound of bird song. That clarity is what I’m after
The fpga etc can be reprogrammed, component modules can be added as I go along with incremental benefit.
the base starting point with be a usb-i2s and a fpga with some additional components for filters etc. The psus will be plug in the wall type switched mode. Allowing the idea to be tested and working for about £100-150 with little need for oscilloscope.
Seriously tempted to get a dilgent 2ch 200mhz digital oscilloscope i can then test each change and objectively measure the change and track down issues. One channel input and one output, fast enough FFT etc. I may eBay a couple of things..