Open-source USB interface: Audio Widget

Member
Joined 2004
Paid Member
The idea is best understood as the diodes are not conducting normally so the ground connection is open. Hoever when the ground difference exceeds .7V you want the diodes conducting to prevent damage from ground differences.

USB2 is an odd duck since as it starts up its common mode, needing the ground and then switches to differential at high speed mode. I would use 1N4001's back to back. they have a higher capacitance but not a lot, and if they need to conduct they can pass a lot of current. Not so for a 1n914. The turn on time for a 1n4007 (found on the web) is around 4 nS. Fast enough for anything in the real world like a static discharge. Turn off is slow but that doesn't matter here.

If its working without the connection you may have another hidden connection tying the grounds together. Its worth checking for since it will defeat any isolation effort at the interface.

On paper adding some significant common mode inductance would be the easy isolation solution. 10 turns of a USB cable through an old transformer core could be a lot of isolation. You could use it as an anti-vibration weight on top of the DAC as well.
 
Alex and Demian,

many thanks for the info. I was looking at diodes with forward voltage of 0.3V but they all seemed to be rated for low currents. STPS1L30 seems to combine low forward voltage with reasonable current. Any good?

USB2 is an odd duck since as it starts up its common mode, needing the ground and then switches to differential at high speed mode.
I had a understood from the PDF that Alex linked to that it was necessary that the differential lines were referenced (via resistors) to A ground (e.g. PC) not necessarily that the PC and uC ground had to be joined other than to avoid frying chips in case of static discharge.

If its working without the connection you may have another hidden connection tying the grounds together. Its worth checking for since it will defeat any isolation effort at the interface.
I have checked for continuity between USB and uC grounds. So if they are tied the resistance between the two grounds is > 200Ohm.

Giulio
 
In fact, in our amateur radio project some will put in two diodes in series to get a forward drop of 1,4V so u have 4 diodes all together.

Btw, the SDTrans thread has an interesting way of obtaining 4x 24Mhz clocks with a dpll miltiplier to clock the Es9018 synchronously.

Those who plan to populate the ab1.12 with es9018 should consider the scheme.

Alex
 
The lower threshold diodes will let more junk through. . .

Thank you both for the help. Eventually I went for 1N4001 that I had at hand.
Now that I have had time to listen extensively without qualms of frying the chips, I must say that the improvement is significant: lower noise floor (can hear more tape hiss on analog recordings) and much more analogue sound.

Highly recommended.
 
Hi there, i've bought an AB1.1 and want to use the i2s output to drive a pair of PCM1704 (old stuff...i now). There is the possibility to put the AB1.1 in a 16bit i2s mode instead of a 24/32? PCM1704 utilize the sony right aligned standard and not i2s, putting out 16bit between LRCK changes could save me from adding any glue logic to align data. Obviously this will lower the BCK clock, but i have to ask, just in case anyone has a solution.

Also, in the latest firmware i've read that the output was upgraded to 32 bit output, from what release this change was implemented?

Thank you.
 
The PCM1704 is a great part! Personally, I use a Xilinx Spartan3 as glue logic, but I see how that can be a little over the top....

The AVR32 PISO can supposedly be set up to do all sorts of weird things, including I2S. Unfortunately I'm no expert in using it.

Beware of one thing: The PCM1704 latches its SIPO registers at a given bit clock tick. So to reduce jitter you want to tap its bit clock directly from the XOs, not via the MCU. That might be a bit tricky here since the XOs are 22/24MHz while the MCU's PISO can only run up to 16MHz.

Børge
 
Thank you Borge for the quick reply. I'm no expert in xilinx pieces nor AVR32 :D so i hope some software expert can point me in the right direction. Regarding PCM1704 it is supposed (from BB/TI) that it is a highly insensitive part to jitter, so the MCU clock can be enough? Don't know... Actually i have an AD1865 dac with a shifter and take i2s from hiface usb that runs pretty well, i've bought an AB1.1 because hiface it's incompatible (and by the word of producere newer will be) with linux, i hope AB1.1 is at the same level once fitted with dedicated PSU's.

If there is not such a possibility i will use a shifter, but to reduce the trial and error factor i need also to know what nr of bit the output of AB1.1 is.

Regards.
 
Every IC manufacturer on the planet states their chips are highly insensitive to jitter. It's like stating your ICs are black with metal pins.

The PCM1704 is a multi-bit converter. This means the time-current integral you get from jitter is dt*dI where dt is the error period and dI is the difference from one output sample to the next. The dt error only occurs once per audio sample, in your case 1/44100s. With 8x oversampled data it happens 8x as often but then again dI is probably smaller, too.

With modern delta-sigma architectures the clock signal is used for a lot more output updates, and the current steps are taller. But then again the errors may even out over time.

You may get a working unit using the clock from the MCU but for Hi-End aspirations I'd recommend trying to make the MCU act as bit clock slave.

Børge
 
That or use 11.2896 / 12.288 MHz XOs directly. Then you can feed the DAC chip directly and bypass all the dividers to the MCU.

Here's a neat trick which works for the PCM1704 which doesn't need MCLK/WCLK=2^n: Use a 13.0548MHz clock. Divide by 34 for 48*2^n and by 37 for 44.1*2^n. You'll be within +-92ppm of the target frequency. I have a very few extra but they operate at 5V.

Børge