Asynchronous I2S FIFO project, an ultimate weapon to fight the jitter

due to fifo memory buffer it is asyncronous with the source, it has to be...

not really, the FIFO buffer operates anyway asynchronously, since it stores data and releases them after a certain delay, so starting from the FIFO buffer we have a new sinchronized system, isolated from the source but linked by the MCLK.
If the same MCLK is used to feed directly the DAC BCK... BINGO
The FIFO buffer isolates the source jitter and the DAC chip receives a very clean BCK, that's the way to minimize the jitter in digital to analog conversion.
 
under/overrun

Hi,

After using the Fifi/Spdif combo for several hundreds of hours now, feeding from Wave I/O, Sqeezebox touch, and a dreambox sattuner, going into the DDDAC1794 Nosdac, or the BIII, I never suffered from any bufferproblem whatsoever!
The message I can bring is of a vast and unexpected overall gain in playback Quality, yes capital Q:):)! You guys do the talking while I luckily fancy an overwhelming music experience in the meantime. I never expected this gain was possible using better clocks (Crystek 957/44+49) in this way......
Ed
 
If it was my code I would design them as warning flags...

LED Over= one or many overrun
LED Under= one or many underrun

because it's hard to look and focus on 2 LED for more than 15 minutes :D I would require a soft or hard reset to remove the warning flags. But hey it's not my project :)

Fridrik,

Do you think fifo really need to be reset when empty or full?:)

Actually fifo designed with depth indicator with which you can clearly know what the clock tolerances and quality it is of you digital audio sources. But I didn't public it, because I believe focus on the music is more important than keep monitoring and predict the moment going full or empty. Though the indicator is much better than 2 LED:D.

Regards,

Ian
 
Last edited:
Mini Review

Hi! just to give you folks a brief FIFO review:

Hardware :
FIFO in SPDIF buffer mode
CCHD-957 oscillators with Dual Clock Board
DAC : Anedio D1 ( with integrated headphones amplifier)
Headphones : Beyer DT880 600 ohms ( modded cable)
Sources: Various:
Players: Jriver 18 and Foobar
BNC cable : 6 inch 75 ohms
Fifo opticaly linked to the source: Various cables used ( I'm using a 25 feets toslink cable now!!!) As expected the optical cable is irrelevant to resulting sound performance


Fifo powered by 4 Energizer 2300mah NIMH Batt, also tried 2 LiPeFO4 @6.4Volt sound was on par or maybe less fluide (not sure on this).

With 44.1khz material the sound is better ( definition increased) on the FIFO that with the USB interface of my DAC.

I've tried 3 transfo:

Newava S22083 (Don't like...)
Newava S22160 (softer but the sound is less precise than with the Pulse transformer)
DA101C (sound cheap)

The stock Pulse 65612 give the best image and 3D sensation on my setup. Voices are more recessed (ei: toward back).
 
Last edited:
Fridrik,

Do you think fifo really need to be reset when empty or full?:)

Actually fifo designed with depth indicator with which you can clearly know what the clock tolerances and quality it is of you digital audio sources. But I didn't public it, because I believe focus on the music is more important than keep monitoring and predict the moment going full or empty. Though the indicator is much better than 2 LED:D.

Regards,

Ian

Reset : was talking of resetting the EMPTY or FULL LED on the board not the fifo itself.

My point was only that since we don't acces to your debug port the LEDs are the only info the enduser have. Unless you send morse code thru them of course :)
 
Hi! just to give you folks a brief FIFO review:

Hardware :
FIFO in SPDIF buffer mode
DAC : Anedio D1 ( with integrated headphones amplifier)
Headphones : Beyer DT880 600 ohms ( modded cable)
Sources: Various:
Players: Jriver 18 and Foobar
BNC cable : 6 inch 75 ohms
Fifo opticaly linked to the source: Various cables used ( I'm using a 25 feets toslink cable now!!!) As expected the optical cable is irrelevant to resulting sound performance


Fifo powered by 4 Energizer 2300mah NIMH Batt, also tried 2 LiPeFO4 @6.4Volt sound was on par or maybe less fluide (not sure on this).

With 44.1khz material the sound is better ( definition increased) on the FIFO that with the USB interface of my DAC.

I've tried 3 transfo:

Newava S22083 (Don't like...)
Newava S22160 (softer but the sound is less precise than with the Pulse transformer)
DA101C (sound cheap)

The stock Pulse 65612 give the best image and 3D sensation on my setup. Voices are more recessed (ei: toward back).

Good to know that Fridrik, nice system.

What clocks are you using right now?

Actually I did S/PDIF FIFO (similar to your configuration) evaluation on my SONY-PCM7040 DAT (working as DAC), Which was retired from a local studio because of mechanical problem. With FIFO, sound quality got big progressed, very impressive. Even compare with it quite decent internal pll clock.

Different digital transformer sounds different, but no as much as changing clocks. You can try both, I'm interested in your result.

Have fun!

Ian

BTW, I'm glad you like my pulse :). Actually it not that bad, it was selected as standard setup from a couple of candidates.
 
Last edited:
The worst audio clock I have ever met was from a CDROM, but it still better than 100ppm. Clocks from most of the digital audio sources we are running right now will be better than 30ppm, which including the CD players and many USB sound cards. If they are talking about 50ppm, that means it's over a wide temperature range, says 0-55 degree C. At room temperature, situations will be much better.

Ian

Ian, thats good to know. Would you able to say anything similarly about the jitter from those clocks on modern equipment ? Like mostly what frequency and magnitude is it out of say an spdif output ?

Thanks!
 
Reset : was talking of resetting the EMPTY or FULL LED on the board not the fifo itself.

My point was only that since we don't acces to your debug port the LEDs are the only info the enduser have. Unless you send morse code thru them of course :)

You guess it, of course, it's even better than morse code. I believe you will fall in love with my fifo depth indicator if your care about the fifo and clock status:D.

But forgive me, I sill not decide if I'm gonna publish it. So, I have to keep it as secret for now, though that indicator already hidden inside your fifo board:).

Ian
 
What clocks are you using right now?

Like suggested 2 CCHD-957 and waiting for the SI570 board :D

BTW, I'm glad you like my pulse :). Actually it not that bad, it was selected as standard setup from a couple of candidates.

I'm suprised that you have a soft spot for the Newava S22160 maybe with loudspeakers....
 
Last edited:
not really, the FIFO buffer operates anyway asynchronously, since it stores data and releases them after a certain delay, so starting from the FIFO buffer we have a new sinchronized system, isolated from the source but linked by the MCLK.
If the same MCLK is used to feed directly the DAC BCK... BINGO
The FIFO buffer isolates the source jitter and the DAC chip receives a very clean BCK, that's the way to minimize the jitter in digital to analog conversion.

umm, not sure what you are arguing with. it DOES have to be asynchronous with the input clock, if it was fully synchronous, you would be bypassing the fifo. its just a fact of having to half/fill the buffer, whether or not the clock of the unit is in time, its still asynchronous with the input, as its shifted in time (in this case by an exact clock multiple) so cannot strictly be called synchronised.

I know what you mean and agree, but if we use you definition of synchronised, we could say that when 2 people set their watches to different times, but ticking exactly 30seconds apart, they are synchronised... thats clearly not the case is it? the clocks will sound as they are ticking in time with each other, but closer inspection reveals they are offset. for the function you describe, ticking at the same time is enough to prevent the 'problem' ever occurring, but they are not synchronised =)

anyway, we all should have known that there was a backdoor to explicitly display this information of buffer depth, Ian, somehow always predicts the future, but then I suppose its not unexpected that the designer would want to know such a thing in the design stages.
 
Last edited:
But forgive me, I sill not decide if I'm gonna publish it. So, I have to keep it as secret for now, though that indicator already hidden inside your fifo board

Ian,

As it is your design, you are of course free to do whatever you want, but I am not sure it is the best policy to say "Trust me, this will never be a problem, but I am not sure I want to give you a way to check whether it is or not". If you are confident buffer over/underflow isn't a problem in practice, why not give us the indicator that allows us to see if/when it is an issue - I think that would help dispel a lot of the concerns.
 
the concerns are completely unfounded, created by:

people with half the information and too much time on their hands, or companies that wish to find something to criticize the fifo for, while replicating some of its functions in the next release....

probably it involves a hack of some sort as well. I wouldnt mind having the info for the display for the master control unit i'm working on though.
 
Last edited:
But forgive me, I sill not decide if I'm gonna publish it. So, I have to keep it as secret for now, though that indicator already hidden inside your fifo board:).

Hi Ian,

I understand entirely your right to your own intellectual property!

If there is a way to obfuscate the FIFO code intelligence and intellectual property (perhaps in a future design) then I can see that this information would be very useful to ensure video sync for people using FIFO for AV system or at least a system with occasional video usage. Regardless, once my FIFO from GBIII arrives I'll be trying out some ideas I have and presenting them to the community if they work out well enough.

Regards,
Chris