Home > DIY HiFi > Ian’s FIFO reclocker and Buffalo III DAC

Ian’s FIFO reclocker and Buffalo III DAC

Here is a summary of the information regarding the FIFO reclocker (mostly from Ian and mostly from diyaudio). It is getting hard to sift through all the good information.

In particular, I have focused on its application with the Buffalo III DAC which seems a very popular combination.

1- “Normal” connection to Buffalo III DAC

That is in asynchronous mode: Bitclock, LRclock and Data. The master clock signal from the FIFO reclocker is not connected. BIII operates in asynchronous mode generating its own local master clock. This is the default operation of the Buffalo DAC (I, II, III)

(Most photos-which are excellent- are also from Ian)

Buffalo III DPLL setting: default

According to the documentation, the default setting is the same as the “BEST” setting. Best setting works all the time for any input configuration. It is said that with this setting, the DPLL is set “automatically”. I think this is what “automatically” means: the DPLL sets the bandwidth depending on the incoming sample rate. It likely selects wide bandwidth values. It definitely does not attempt to choose the lowest bandwidth possible.

With this setting, Ian reported (post 505, post 516):

Then I connected the FIFO I2S output into BIII via U.FL coaxial cables…The result was quite impressed. I don’t want to say it’s perfect, but I have to say it’s very close to (perfect). I tried a couple of different kind of XO and found that the sound of ESS9018 still quite sensitive to the jitter from the input digital audio stream. I suspect the internal DPLL still has to trace the input clock to get lock with it. So, the clock jitter, outside the DPLL bandwidth, will still be introduced into DAC, which usually, is the close in phase noise. While the final phase noise within the DPLL bandwidth will be decided by the performance of the internal DPLL (phase noise floor).
No click noise at all with same 192Khz input.

I use BIII default setting so far with all the switch jumpers at off position. I don’t think this optimized for all the sample rates..

Buffalo III DPLL setting: lowest (post 523):

Yes, when I set the switch to “lowest”, I got drop-offs too. It sounds a little bit better for me, but I gave up after half hour ‘warm up’

DPLL setting for 192KHz sample rate material (post 528)

I have to set bandwidth to ‘low-middle’ to achieve long term stable lock with 192Khz I2S


Earlier experiments have shown that the “warm up period” – the time it takes for the local clock in combination with a source clock to stabilize and thus allow the DPLL to operate with no drop-offs in its lowest bandwidth setting- could be up to one hour. It seems that using the FIFO reclocker did not improve this condition.  If feeding a signal with jitter approaching a practical zero value still causes drop-offs -even after half an hour, then one may conclude that the lower settings in the Sabre32 DPLL were specified perhaps to push the limits of the design and not so much for “normal operation”.

2- Synchronous connection to Buffalo III DAC

If the source signal is of low enough jitter, then there is no advantage of using the asynchronous reclocker in the Sabre32 DAC to eliminate jitter since there is practically no jitter to be eliminated. The FIFO reclocker is an excellent candidate (at the present, I would even say “the best”) for synchronous connection with the Buffalo/Sabre DAC. In addition, high quality clocks -similar in quality to the clock used in Buffalo DAC- can be used in the FIFO clock board which further eliminates the need of generating a high quality local clock.

Because the Buffalo DAC was not designed for easy switching to synchronous operation, in order to use it in synchronous mode, the local clock needs to be disabled or removed (see post 542)

Then some king of connector is installed. Here, a U.FL socket is installed.

The external clock is delivered though a coax cable.

With this setup, Ian reported the following results:

It runs right away without any hesitating. The LOCK LED keeps lighting all the way indicating it is synchronized with the input I2S stream unconditionally even I set the bandwidth switches to ‘lowest’ and run music at 192KHz from an USB.

In my configuration, ESS9018 sounds great in both of the modes, sync and async. I even couldn’t tell which one is better. But there is slightly difference on the sound style. Async is more like ESS9018 while sync is more like classical high-end DACs. I usually don’t talk much about the sound, because too many psychological factors and personal feelings mixed. I’ll left this part to others, trust your ears and try to find out the best parameter settings of 9018 for the sync mode.

3- Switching between synchronous and asynchronous mode (post 745)

If the source clock is not of the best quality, then it is advantageous to use the local (high quality, low jitter) clock of the Buffalo DAC  and leverage the ASRC function to remove jitter. The Buffalo DAC was designed to always work in asynchronous mode and does not have an easy way to switch the local clock in and out of operation.

Ian designed a small carrier board that allows manual switching between synchronous and asynchronous mode. The clock carrier board is connected to the Buffalo III board through a 3-pin header. The Buffalo III DAC was designed with this kind of mod in mind so there are through hole connectors under the clock; the Buffalo II does not have such connectors making the modification a bit more challenging.

For asynchronous mode, manually insert the clock into the socket

For synchronous operation, remove the clock and connect the external clock signal

It would be nice to have some electronic way to switching the clocks (so switching can be automated with an external microprocessor such as Arduino)

What to do with a Buffalo II?

Here is an implementation reported at the TPA forums:

Pin 24 on the ESS chip is the Xtal in pin. As wktk smile said, R17 (RHS of this resistor when the TPA logo is at the top of the board) is connected to the Crystek clock output, which makes a convenient soldering point.

I unpowered the separate supply to the Crystek crystal, then connected up the Hiface clock output to this resistor pad using some Mil coax cable I had lying around. Note I grounded the source end of the coax but not the destination to avoid a ground loop but shield this high frequency signal.

Mental note – pinouts from the dot on the ESS chip go counter clockwise…and the Crystek pinout then would have made sense too…for the Crystek, pin 1 is bottom left, pin 2 bottom right, pin 3 is top right (Clock out)…

Anyhow, it works and initial impressions are positive with the music having excellent drive (PRAT), the bass is very solid, and great inner detail (OK it had lots of the latter before). Well worth trying this guys!

4- Additional enhancements

Further enhancements to the FIFO kit has been implemented through both experience and user feedback.

U.FL signal input connector board for BIII DAC (post 743)

Ian reported the following improvement:

I did some test with this new adapter on my BIII yesterday. It works very well. I’ve noticed some improvement: With BIII (DPLL bandwidth set to lowest) working with I2S FIFO at SYNC mode, If feeding signals with this adapter and U.FL cables, DPLL locks solid never lost; However, without this adapter and U.FL cables, it will lost lock occasionally(every 10 minutes roughly).

Hmmm… this means that the bitclock, even if derived from the same master clock, can experience some disturbances resulting in phase noise with respect to the master clock (the master clock was already connected with a U.FL socket). I think even in asynchronous mode, the use of U.FL would be beneficial.

Multi-frequency clock board (post 837).

After Ian reported good results with the Silicon Labs Si570 clock, I decided to do some research on my own and documented my findings here: link. The advantage of the Si570 programmable clock is that you can generate “any” frequency you need by programming the registers through an I2C connection. This is useful especially since good clocks in frequencies that are “common” to audio equipment are no longer manufactured.

In this post, Ian explains the advantages and disadvantages of a Si570 based clock board:


  • Generates low jitter audio clock for multi-frequencies with one chip solution. Especially for some frequencies for which very hard to get good audio clocks.
  • Not that sensitive to the power supply.
  • To cover the full digital audio frequency range, the cost will be less than using CCHD957 or other low jitter oscillators.
  • Supports almost all kinds of applications which need low jitter digital audio clocks such as CD players, SACD players, Network/HD players, DACs, USB interface, ASRCs,DSPs…… (If used as a standalone board)
  • Integrates seamlessly with FIFO project to allow switching between different Fs.
  • Very flexible and can be calibrated under the software support.


  • Close-in phase noise performance is not as good as CCHD957 or sc-cut oscillators.
  • Need software driver when switching frequency (not all the time).
  • 100mA power consumption which is a bit higher than normal oscillators.

I can think of yet another advantage: Since the frequency can be adjusted in 1 Hz increment, the frequency can be adjusted in order to match the frequency of the incoming data. With this capability, the FIFO fill levels can be adjusted in order to reduce its latency.

Notice the ATMEGA 8 microprocessor which is used to program the Si570 clock which is an I2C device

The first prototype of Si570 based clock board was down. With the single programmable XO, now I got 11.2896, 12.2880, 16.9344, 18.4320, 22.5792, 24.5760, 33.8688, 45.1584, 49.1520, 90.3168, 98.3040 MHz. Switching between frequencies will take only a couple of ms. Pretty amazing for such a small gear. More information here [post 881]

Phase noise comparison with the Crystek 957 device and the Crystek 950:

Frequency Si570 CCHD-957 (49.152 MHz) CCHD-950 (80 MHz)
10 Hz
N/A -98 dB
-70 dB
100 Hz
-112 dB -129 dB -102 dB
1000 Hz
-122 dB -153 dB -135 dB
10000 Hz
-132 dB -162 dB -160 dB
100000 Hz
-137 dB -168 dB -166 dB
1000000 Hz
-144 dB -168 dB -166 dB

Most of the phase noise comes from the close-in frequencies. As can be seen in the table, the Si570 clock cannot match the Crystek 957, but compared to the on-board clock in the Buffalo DAC, and especially compared with the original clock that came with the Buffalo II (the model I currently have), the close-in phase noise values are comparable or even better.

If we calculate the RMS jitter we obtain the following:

(Assume the 10 Hz jitter value for the Si570 can be obtained by extending the graph following the same characteristics slope as that shown by other clocks. We will assume a value of -82 dB)

  • For Si570 (assume 90.3168 MHz):  052 psec RMS
  • For CCHD-950 -80MHz: 1.90 psec RMS

According to Ian’s impressions (with a evaluation board) [link]


I’m having an original Si570 evaluation board, so I got chance tasting it on my FIFO platform before I really finish the clock board. During the real listening test, the sound of Si570 was quite impressed. It comes with much more details and crystal clear wide and deep 3D imaging. Actually I tested a whole bunch of clocks. Si570 beat all of them except CCHD957. It’s better than what I expected. So, I decided giving the Si570 clock board a try.

According to Ian’s next impression with his finished board [Post 913]

…Another discovery is, ESS9081 sounds different for a same 44.1 KHz stream with different MCLK frequencies, for example 45.1584MHz and 90.3168MHz. Hard to tell which one is better, but the sound style is a bit different indeed. I know it’s the internal up-sampling digital filter, different performance for different MCLK.

Plans for having the clock board be battery powered

Although the Silabs official document mentioned that Si570 is not quite sensitive to the PSU noise, I found it’s not true, at least for this application. The close-in phase noise performance of Si570 is not as good as CCHD950, 957. So, to compete with them, Si570 need better low noise PSU. Both 1/f noise of PSU and the XO crystal itself contribute to the close-in phase noise. After I bypassed the on board low noise LDO and make the Si570 directly powered by a LiFeP04 3.4V battery cell, ESS9018 sounds better with more details and more liquid.

Si570 is a bit special case. It comes with whole DSPLL circuit but a pure XO. I’ll design a battery manager board later on to make the battery as a standard equipped power supply rather than just a testing configuration.

With a programmable clock, you can also experiment with different oversampling and oversampling bypass as documented in this post [link]

There is a V2 of the Si570 Board [post 1512]

  • More frequencies
  • More connection options
  • Support for different regulators

Here is comparing V1 and V2

5- Firmware capabilities

This set-up summary is derived from the documentation available for download at diyaudio. So far there has been two major versions of the firmware: The firmware that came with the devices from the first group-buy and the firmware that came with the devices from the second group-buy.

  • First group-buy information and documentation: [link]
  • Second group-buy information and documentation: [link]
  • The firmware is factory upgradable for free and you only have to pay for shipping [post 724]

Input/Output capabilities

Feature Original Firmware (v. 3.30)
Updated Firmware (v. 3.80) Comments
FIFO Input format
I2S (32bit and 16bit)
I2S, LJ (32bit and 16bit). RJ (16 bit and 24 bit) Most “modern” sources are I2S 32bit. Upgraded FW makes it a universal re-clocker. For example, you can connect to the I2S connections of a CD ROM
Output Master clock (single clock board)
Fixed 256 Fs
Fixed 256 Fs and Fixed 512 Fs
The single clock board does not detect the input sample rate so the XO frequency must match the input sample rate to produce the fixed output master clock FS (Note 1)
Output Master clock (dual clock board)
Automatic switching 128Fs, 256Fs, 512Fs and 1024 Fs
Automatic switching 128Fs, 256Fs, 512Fs and 1024 Fs Automatic input sample rate detection. (Note 2)
Output format
32bit I2S
32bit I2S and 32bit LJ
LJ to integrate FIFO with some DSPs or DACs which do not accept I2S input, for example, PMD100, SM5842, SM5843


1- For example, if the input sample frequency is 44.1 KHz, then the user must choose a XO of 11.2896 MHz (44.1×256). This also means that for 44.1KHz, the maximum speed XO that can be used is 22.5792 MHz (with the new firmware).  This is the lowest frequency available for the Crystek CCHD-957 clock and was  the main reason Ian increased the FS for the single XO board. This board is only suitable if you only have to deal with a single sample rate because changing the input sample rate requires that you manually change the XO and/or set jumpers.

2- The double XO clock board has a frequency management MCU. During normal operation, this MCU will run at deep sleep mode, or power down mode. In this mode, all of the clocks, include CPU clock, IO clock and watchdog clock, are stopped. That means the MCU do not generate any EMI noise at this time. When the frequency detecting logic on the FIFO board finds that the input I2S frequency has changed, it will wake up the MCU by pulling down the interrupt line, and at same time mute the I2S output. After the wake-up, the MCU will set a new MCLK frequency as well as the *Fs according to the information provided by the FIFO board. (Post 54)

Firmware version history (as of August 20, 2012):

  • V3.30 For group-buy I
  • V3.50 Implements 512Fs default XO support in single clock board
  • V3.60 Implements left justified output format
  • V3.70 Implements left justified, 16/24bit right justified input format
  • V3.75 fixed a bug on switching between 44.1KHz and 48KHz with dual clock board running at dual speed mode
  • V3.80 for group-buy II (Post 457)

6- Power Requirements

From the manual

  • 6V 500mA DC
  • Absolute minimum voltage: 4.5 V
  • Absolute maximum voltage 6.7 V

The actual power consumption for the 3 boards (the SPDIF board, the FIFO board and the dual clock board) is 110 mA total [post 100, post 300, post 316]

7- Pricing

I must commend Ian for the overall pricing of the FIFO kit. In addition, the accessory boards are very, very affordable. My wish is for him to continue to have a very good paying day job 🙂
Package of Universal SMT XO Adapters lot of 5 $9.99 USD/ea

BIII adapters PCB $3.99 USD/ea

You can find all the purchasing information in the group buy section of diyaudio

8- Setup

FIFO Board Setup

There are 4 jumpers (The holes labeled TP41, TP42, TP43 and TP48 in the photo) that can be used to select input format, output format and single clock board FS operation. The jumpers are either left open in their factory configuration or can be shorted to ground.

FIFO Input Format

Jumper TP41 Jumper TP42
Input Format
Open I2S 16bit-32bit (Original firmware only supports this mode)
Open Ground Right Justified 16bit
Ground Open Left Justified 16-bit-32bit
Ground Ground Right Justified 24bit

FIFO Output Format and Single Clock Board Master Clock Operation

Jumper TP43
Output Format
Jumper TP48 Master Clock
Open I2S (32bit)
Open 256 Fs
Ground Left Justified (32 bit)
Ground 512 Fs


TP48 only takes effect if you use the single XO board. If you use the double XO board, this setting is ignored

Single Oscillator Board Setup

You must choose the correct frequency for the oscillator depending on what sample rate you desire:

If your source sample is 44.1KHz, then these are the only two choices for the oscillator frequency

  • 11.2896 MHz (must set jumper TP48: open in the FIFO board)
  • 22.5792 MHz (must set jumper TP48: ground in the FIFO board) -New FW

If your sample rate is 96KHz, then these are the only two choices:

  • 24.576 MHz (must set jumper TP48: open in the FIFO board)
  • 49.152 MHz (must set jumper TP48: ground in the FIFO board) -New FW


The board tells you which oscillator to use. With the new firmware, you can use double the speed by setting the jumper to support 512 Fs

Dual Oscillator Board Setup

The dual clock board also has two sets of jumpers that are used to tell the device whether you are using “high speed” or “low speed” oscillators. These jumpers are already installed from the factory as shown in the photo below.

Choosing the oscillators

Choose the oscillators in accordance to input sample rate and required/supported Master clock frequencies as shown in the table below. In addition, one oscillator is to support the 44KHz family of frequencies and the other oscillator is to support the 48KHz family of frequencies. Further, the frequencies of the oscillators can at most be one multiple apart. For example you can use a 45.1584MHz clock and a 24.576Mhz clock, but you cannot use a 11.2896 MHz clock and a 49.152 MHz clock in your dual clock board

Clock F
44K/48K 88K/96K 176K/192K 352K/384K
45.1584MHz / 49.152MHz 1024Fs 512Fs 256Fs 128Fs
22.5792MHz / 24.576MHz 512Fs 256Fs 128Fs Not supported
11.2896 MHz / 12.288MHz 256Fs 128Fs Not supported Not supported

Master clock compatibility

Different DACs support different master clock Fs for the different input sample rates. I’ve summarized the supported master clock Fs for popular DACs. Before choosing the oscillators for the clock board, make sure the master clock Fs is supported by the target DAC.

9- Where is my own FIFO reclocker?

It is still in the box. I can’t believe I’ve had it since March of this year. Life has been taking away time from audio hobby :-). At least I started to review the available information and documentation (which I’ve summarized here, so I won’t forget)

However, based on what Ian has reported, I don’t expect it to behave too much different from my current source with respect to drop-offs. If you see item #1 above, drop-offs are expected with DPLL set to lowest.

Improvements are expected only with synchronous connection, and that would require removing the local oscillator which I am currently hesitant of doing.

In the mean time, I will send it back for firmware upgrade.

  1. Bunpei
    August 21, 2012 at 23:36

    What a perfect and fantastic summary! What I wanted to know is compactly covered here. A great job!

    • BlogGeanDo
      August 22, 2012 at 00:14

      Thanks, Bunpei. I also needed the information in a compact form 🙂

  2. August 22, 2012 at 00:10

    “It is getting hard to sift through all the good information.”

    Yes it is… I am also very busy. Thankyou !!!! This is an excellent post

  3. Anonymous
    August 24, 2012 at 12:12

    Dear GLT

    Hope You will forgive me, my small rant, but ..well..

    I was eagerly(!!!) looking Your famous drop-out tests, with IAN FiFo kit. As that could be some indication how well it is relay working. It would be very interesting to see how Sabre is “communicating” with Ian FiFo , if there is any noticeable influence or not.
    There is nothing real it that regard, just theory and good expectations.
    So Your tests could be very interesting.
    But that is not all of my “complains”.. 😉 .. Having the same Buffalo II as You..
    was even more eagerly waiting to see “GLT way” of connecting u.FL cables to Buffalo II inputs and the same regarding Clock Connection.
    Ian Kit is prepared with Buffalo III in mind and owners of Buffalo II are bit left on their own in that regard.
    So Your as usual well fought and elegantly done solutions and artistic quality pictures would be very welcome. 😉 .


    • BlogGeanDo
      August 24, 2012 at 16:20

      Hi Rosendorfer
      Good to hear from you again. I will eventually get to it (the drop out tests) 🙂 I have a bunch of projects still in their packages (including the small PS boards you sent me a while back – I shall apologize for not have done anything with those boards). Regarding the U.FL connectors, I will eventually try that too :-). I am sending the board to Ian next week and in return I’ll getting the U.FL board and clock carrier boards. However, if you mount the clock board on top or under the BII, then the wires can be very, very short and probably not needing the U.FL wires and sockets.
      Thanks for your good words.

  4. Gunnar Wikse
    September 8, 2012 at 12:11

    Thank you GLT for this great summary post. I will proborably use these kits (wich to me seem very good) in my current DM B3 build.

    I would however want to ask if you think it would be possible to use a Omron G6K-2P-DC5 based circuit (like the sidecar, but with only one relay) to switch between sync and asynk mode? The async clock would be powered at all times though so that the warm up does not occur every time you switch between sync and async.

    Is this something to try out and possibly implement on future PCB`s. If the sync is connected to the “off” setting of the relay, this should have no impact on the original circuit?

    Best regards
    Gunnar Wikse

    • BlogGeanDo
      September 8, 2012 at 16:19

      I don’t know. Clock signals at this level of sophistication are very sensitive to what you put in their path. I think it is better to ask Ian in the diyaudio thread. I believe he is using a “clock fanning” chip to switch between the two clocks in his dual-clock board. Another approach is to always use one clock: You use the clock output of the FIFO clock board and just switch the inputs. If your input is from the FIFO board, then you are operating synch and if you use another source (but keep the clock from the FIFO/Clock board), then you are operating in asynch

  5. guglielmo
    February 5, 2013 at 21:02

    anyone have implemented external clock on BII board?

    • BlgGear
      February 5, 2013 at 21:18

      There is a photo in the post showing a BII with external clock… (not mine, but I linked the source)

  6. September 14, 2016 at 14:54

    Quarkbar ? Scarcer than Quarkcoin

  7. September 14, 2016 at 16:24

    social chat rooms

  8. September 14, 2016 at 16:38

    useful here

  9. September 14, 2016 at 17:30

    Pittsburgh SEO company

  1. August 29, 2012 at 07:28

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s