XMOS-based Asynchronous USB to I2S interface

Hello everyone,
below there are pictures of my latest version of XMOS based USB to I2S interface. I've been working on it for some time now... drivers are from Thesycon and firmware from XMOS with slight changes to adapt it to my PCB needs. It's 2 channel, 24 bit / 192 khz with some improvements over XMOS' reference design:
* 4 layer, gold plated PCB with 1/2/2/1 oz (or 35/70/70/35 um) copper thickness. There are a lot of vias to minimize the impedance.
* there are two USB inputs available: USB-B connector (mounted on the board) and 5-pin external header for something like this.
* isolated (using GMR isolators) or nonisolated (6GHz microBNC) I2S output signals.
* seven LINEAR voltage regulators are present on the card: every oscillator (and the ICs in the digital audio signal's paths) have its own dedicated LDO (the three chips soldered on the botom side of the board).
* Heavy decoupling all over the places, including OsCONs SVP electrolytics.
* USB OR external PSU. There's one green Power LED indicator on the board.
* SPDIF output signal at 1:1 trafo.
* Two LEDs can be wired to L7 and L8 pin header heaving the following functions: "Host Active" and "Audio Stream".

The oscillators are from Fox but I do have 7 pairs of ultra low phase noise NDKs available for assembling. I must admit, NDKs are very hard to aquire due to the long time of delivering (up to three months!)

May 2013 Updates:
The WaveIO's pictures are outdated as I now use oscillators only from japanese manufacturer NDK. I'll upload new pictures soon to reflect the changes.
--------
To update WaveIO's firmware to handle 32 bit @ 384 KHz audio streams, please follow my instructions listed below (valid for Windows OSes).
From the beginning I would like to say that there are two ways to upload the .bin file but only one to revert the changes to defaults.

The easiest upload way would be via "TUSB Audio Control Panel" app:
1. First thing to check is if your WaveIO card does have DFU (Device Firmware Upgrade) implemented in firmware.
All boards following September 2012 should have this feature enabled.
a) Plug in your WaveIO card and make sure that is detected by your computer (drivers are installed).
b) Open "TUSBAudio Control Panel" located in "Luckit" installation folder and click on the "Device 0" text on the left side of main window.
c) If the RevisionID value listed there is greater or equal with 0x0331 (Hex) then you can move on to the next step. If not, then you'll have to
wait to finish the daughter board and I'll make both the hardware and software changes in the same time.
An externally hosted image should be here but it was not working when we last tested it.

2. Download the file named "WaveIO_32Bit_384Fs.bin" on your computer.
3. To effectively upload the new firmware on your WaveIO you simply have to click on the "Firmware Upgrade" text on the left side, browse
for the file you have downloaded and hit the "Start Firmware Update" button.
4. The process should take up to 10 seconds after that you can easily check it by clicking again the "Device 0" text and see that the value for
"RevisionID" is changed to 0x0333 (Hex). You don't have to unplug your WaveIO board.
5. Done
An externally hosted image should be here but it was not working when we last tested it.


LEDs: Since WaveIO hardware does not support two additional signals to drive LEDs for 352.8 and 384 KHz sample rates I thought that a
simple approach will be to display these freqs. by driving two LEDs simultaneously so:
* 352.8 fs will enable 88.2 & 176.4 LEDs while
* for 384 fs, 96 & 192 LEDs will be on.
If anyone has a better and simple idea please let me know!

Power: @ USB enumeration, WaveIO will report to be external powered device so it should work okay in both configurations: USB and
external powered. This measure was taken especially to work with iPad, iPhone or other portable/battery-powered devices.

That's it for now! I'll be back soon with the second uploading/revert_to_defaults option.

Kind regards,
L
 

Attachments

  • USBtoI2S_top.jpg
    USBtoI2S_top.jpg
    155.8 KB · Views: 30,732
  • USBtoI2S_bot.jpg
    USBtoI2S_bot.jpg
    125.9 KB · Views: 27,793
Last edited:
A big "Thank you" Bunpei, mostly for your help related to NDK parts!
I think your design considers very well various requirements DIY users would always have.
Perhaps you are right! Though, I've choosen the parts that fits my requirements and expectations (like LP5900 for oscillators). Even if there is room for improvements I think this board act as expected. For now, I'm working on the decoupling networks, trying hard to minimize the noise on the board. It's not crucial but every DIYer have a paranoia :) = mine is mostly PSU.
Meanwhile, a friend of mine (also an active member on this forum) will make some tests with dedicated HW to this card. I hope he will have enough free time to draw some graphics for the two versions: with FOX and NDK oscillators. My goal is to use only NDK parts and replace other alternatives but you know how hard is to do this, mainly in small quantities.
I did listen to the NDKs mostly and I kinda like it: in the time spent trying to squeeze the noise out of my board by moding the cap networks.

Kind wishes,
L
 
Last edited:
wow

This looks like great work Lorien. A nice compact module. Are you going to support OSX with native USB2 on Mac?
This looks like what many DIYers have been looking for, cannot wait to hear more.
BTW, do you know the approximate current consumption at 5V? I am thinking a LiFePO4 supply for this might be nice.
 
Are you going to support OSX with native USB2 on Mac?
Thank you barrows! Since this board is entirely based on XMOS / Thesycon work (SW speaking) you can see details directly on XMOS web site: "USB Audio Class 2.0 is natively supported by Apple OS X version 10.6.3 and above. Support for Windows is provided via XMOS partners, Thesycon and Centrance. The drivers are configurable and provide support for WDM/Direct X and ASIO 2.1."
Power consumption: I've made few measurements and this board will need at least 5V / 430 mA @ 24 bit / 192KHz to work properly :p
Though, Fox oscillators are consuming up to 8 times more power than NDKs, there's NO switching Vreg there and speaking off... this board have plenty of them. I must confess that the "no compromise" ideology regarding PSUs must come to an end soon otherwise ordinary USB ports will start to complain about power requirements.
I like your LiFePO4 PSU suggestion and I'll definitely implement it. My real job has offered me few pleasant surprises like these rechargeable batteries pictured below (used in some sort of hybrid/electric cars - I don't recall manufacturer' name). I've mistakenly short circuit one of it and I saw what they are capable off :warped:
Kind regards,
L
 
Last edited:
There's allways the external PSU option... though for all the tests I've used the USB 5V supply.
According to the specs, Idd for one oscillator is stated up to 35 mA for freq. between 20-50 MHz, please see here. There are two pcs. on that board: 22.5792 MHz and 24.576 MHz. One more reason to switch for NDKs.
BTW I forgot the picture:
An externally hosted image should be here but it was not working when we last tested it.
 
Last edited:
  • Like
Reactions: 1 user
BTW I forgot the picture:

Haha is that the ultra-low impedance high-current PSU for your board in the background? ;) Nice pic.

More seriously I'm really surprised that its taking so much current, given what's in that XMOS document. I must have overlooked something major to be more than 6dB adrift in my power consumption estimates. You're using the single core XMOS right ? (128 pin package, as opposed to the dual core which is 124pins ?) 35mA for two oscillators (presumably you disable the one that's not in use) doesn't account for such a difference.
 
Haha is that the ultra-low impedance high-current PSU for your board in the background?
Well, most of it... ~3.3V x 2 pcs. will be enough to blow away this card :)
Back to the power consumption, first thing to notice is that XMOS chip on my board is TH5 (500 MHz) variant. In addition, my ampermeter reads on 1.0V core PSU: 231 mA at full load (24/192) - though is not a precise one. Considering the fact that uP is warmer (even if the chip's thermal pad IS soldered on top and the board is a 4 layer one without thermal reliefs on vias underneath the chip)... I can only assume that it's working at its full capacity.
Though, I'll switch it with 400 Mhz variant or... better, I'll assembly another board around this chip.

Be back soon,
L
 
Last edited:
Finally, after five insane days servicing air conditioning systems for cars, saturday got some time to play with this card....
Wishing to get rid of any additional source of EMI and switching noise, I choosed (for 1.0V core PSU) the NI LP3879 Linear Vreg. instead of ON-semi NCP1521 1.5MHz DC-DC converter part found on XMOS' reference board. Even if the later one have efficiency up to 95.3% - it's still a switching one.
Taking into consideration the I/O architecture of the XS1-L1 chip, the I2S signals comes directly form it thus it is not necessary to realign these signals to the master clock using FF. Even if XS1-L1 have two sets of PSU (for core and for I/O) I could choose DC-DC converter insted of LP3879 to power up the core and a better Vreg for 3.3V I/Os. Still, all the data processing happen in that chip thus noise can easily propagate. Moreover, that package is big enough to make you think harder at impedance and ground bouncing issues. So, for the sake of I2S signal's integrity, I thought it's better to replace the DC-DC converter with an linear vreg and minimize the noise as much as I can even if the later one is less efficient and comes with a higher price.
BTW, the current rising after replacing the 400 MHz XMOS chip with 500 MHz part was negligible... both works flawless and at the same temperature.
 
Last edited:
This board comes with full-featured driver :) From my knowledge, all XMOS reference boards are shipped with demo driver support, the fully functional one is subjected to minimium order quantities as stated on XMOS site:
"Access to the Thesycon production driver via the bundled part is subject to a minimum order quantity" ... Qs that are >= 90 pcs. depending on the chip you'll use (XS1-L1 in this case).
At the beginning, it was annoying for me to hear periodic beeps so I've changed XMOS board's VID/PID to my own... and now I have get rid of one source of stress.
Regards,
L
 
This board comes with full-featured driver :) From my knowledge, all XMOS reference boards are shipped with demo driver support, the fully functional one is subjected to minimium order quantities as stated on XMOS site:
"Access to the Thesycon production driver via the bundled part is subject to a minimum order quantity" ... Qs that are >= 90 pcs. depending on the chip you'll use (XS1-L1 in this case).
At the beginning, it was annoying for me to hear periodic beeps so I've changed XMOS board's VID/PID to my own... and now I have get rid of one source of stress.
Regards,
L

Do we have a price yet?
I am trying to decide which USB to I2S interface I want to invest in.
They seem to be popping up all over.
 
I've changed the firmware to display incoming sample rate by using LEDs connected at one of the pin header (J9 - on the bottom left corner of the board).
On the other hand, I'm thinking on a improved version of this board: better PSU will be a "must have". Any suggestion are welcomed!
 
Last edited:
New Board...

Lorien, I guess you are considering a new design to further optimize the power supplies, perhaps? If you mandate an external supply, then I would suggest that adding a shunt regulator to power the clocks. A TentLabs part might be appropriate here, as the high bandwidth, low noise, and low output impedance should allow the best performance of the clocks.