XMOS-based Asynchronous USB to I2S interface
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.
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.
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.
I think your design considers very well various requirements DIY users would always have.
By the way, have you compared resulting sonic qualities between NDK and FOX oscillators?
A big "Thank you" Bunpei, mostly for your help related to NDK parts!
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.
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.
In case Lorien hasn't measured it, XMOS has a helpful guide to estimating power consumption.
Based on that document I'd estimate in the range 150 - 200mA from 5V.
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:
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:
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.
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,
|All times are GMT. The time now is 03:52 PM.|
vBulletin Optimisation provided by vB Optimise (Pro) - vBulletin Mods & Addons Copyright © 2014 DragonByte Technologies Ltd.
Copyright ©1999-2014 diyAudio