freeDSP V2.0 (ADAU1452) developement thread - diyAudio
Go Back   Home > Forums > Source & Line > Digital Line Level

Digital Line Level DACs, Digital Crossovers, Equalizers, etc.

Please consider donating to help us continue to serve you.

Ads on/off / Custom Title / More PMs / More album space / Advanced printing & mass image saving
Reply
 
Thread Tools Search this Thread
Old 26th January 2015, 10:54 PM   #1
Pitrsek is offline Pitrsek  Czech Republic
diyAudio Member
 
Join Date: Nov 2004
Location: CZ
Send a message via ICQ to Pitrsek
Default freeDSP V2.0 (ADAU1452) developement thread

Hello everybody ,
few weeks ago I've discovered the freedsp project and found it to be very interesting... but the ADAU1452 seems so much more potent dsp.
So I got in touch with the creators and joined the team with focus on new version with ADAU1452. I've been pondering about it for some time now, reading datasheets, researching, playing with possibilities etc.
Now it's time to open development thread and ask you about your opinion, feedback, and ideas, so we can make the next version as good as we can.


Flood of questions and ideas follows..

The general idea:
DSP, DAC, PSU - each on its own separate board, connected via wires, maybe backplane. ADC is not in my scope at this moment
PCB width 100mm - enclosures available, length 80mm(half eurocard) or 100mm, we will see.
Smaller builds could fit into extruded enclosure (hammond,fischer), bigger in rack

PSU board:
talema 70000K +- 15v for opamps and 48V(via voltage doubler) for phantom - no reason not to add it. will be useful with possible ADC board
Another transformer for digital part, maybe with double secondary - second winding for analog circuitry - PLL, DAC ref. etc.
I haven't made my mind about it yet. Any suggestions?

DAC
Stacked TRS 6,3mm - only way to fit 8ch to 100mm wide PCB, 8ch - why not 4x2ch? Big, expensive, I'd like the project to be accessible, and I like KISS principle. I've narrowed down DAC choices to following:
PCM1690 - cheap, available, even got samples somewhere...
AK4358 - comparable with PCM, number-wise
dual AK4413EQ, higher performing pin compatible alternative available AK4414EQ - really nice spec.
AK4458 - new part, isn't available yet, would be nice to use new stuff in the design though. I'll try to get samples.
Opinions (and experiences) about/with DAC chips highly welcomed. My life is too short to try everyone of them, so in the end I'll just pick one and go with it,If you have something to say about them, please do.

Why no ESS stuff? I'd like you to be able to buy all necessary parts at usual outfits (digikey,farnell,mouser...).
Yes, you can buy Sabre in single qty, no problem, but the shipping is prohibitive. And world is full of sabre dacs.

DSP board.
All IO should be brought out. Clocks on UFL connectors, others on 2.54 headers, signal/ground, signal/ground... SPDIF on BNC.
We could add MCLK input, its just a few additional parts and might be useful for some.
Number of I2s lines is limited, 4in, 4out more channels is accessible via TDM. I'm considering providing isolation on I2S lines, so you could use the board directly with BBB as a source.
Would be nice if one could plug BBB directly into the board - you even could program the dsp with it.


I believe it's enough for a first post. Opinions, advices, questions?

At this point it's just bunch of ideas, in the end it could be single board with XLR outputs.... Nothing is set yet... well probably DSP, oscillator, and LDO for PLL are set ... What I meant is if you think that single board(or XLR, or DAC XYZ) solution is better, say it and add why you think so

Thanks for reading

Pitrsek


P.S.:Please feel free to notify my about my spelling/grammar mistakes via PM.TY.
  Reply With Quote
Old 27th January 2015, 03:08 AM   #2
soekris is online now soekris  Denmark
diyAudio Member
 
Join Date: Jun 2009
Since everybody have their own DAC preference, I'll suggest to split the boards into two (or three with ADC input), then you can have different DAC options and even do boards with XLR connectors for those with 1U 19" cases....

And I could do an expensive discrete R-2R DAC board to fit :-)

I'm a little interested in the ADAU1452, even go an AD eval board, although I'm not convinced that it's the best fit for the really highend....
__________________
Søren
  Reply With Quote
Old 27th January 2015, 10:32 AM   #3
marce is offline marce  United Kingdom
diyAudio Member
 
Join Date: Jun 2007
Location: Blackburn, Lancs
To minimise the wires between the boards the DSP board could possible be the backplane as well allowing any DAC/ADC boards to plug in, this would avoid taking clocks and I2S via connectors and wires, never a good idea with these signals.
  Reply With Quote
Old 27th January 2015, 08:49 PM   #4
Pitrsek is offline Pitrsek  Czech Republic
diyAudio Member
 
Join Date: Nov 2004
Location: CZ
Send a message via ICQ to Pitrsek
At the moment I'm inclined to modular approach. One board for dac, one for psu, one for DSP.
"Best fit for the really highend" - let's say that the aim of the project is to be as good as possible, within some reasonable bounds - money and complexity/accessibility wise. That is one of the point of using SigmaDSP - the "programing" doesn't seems hard at all. I haven't heard it yet, so I'll take your word for it. Thank you for the input . Btw. congratz on your DAC

Today I've looked a bit into ways how to connect boards.
Stacking board one on another would be nice, but board distance of 1U is quite a gap to cross... 2.54mm headers are too far apart for my liking, and for this distance are not readily available, nor cheap. Additionally, stacking would create stubs.
Backplane - if ti was for one particular build, I'd be inclined to go with it. But creating one universal - how big it should be? What if you want to build it into 1u rack side by side? In order not to create stubs, you would need some kind of jumpers/switches. I'm not sure that ordinary 2l board (1,5mm thick) will give you better ground return path than for example shielded or twisted ribbon cable. It's just assumption, I haven't measured it. One more board to design, and to pay for.
Cables - poit to point - no stubs. As universal as it gets. If you go with something that is readily available its reasonably cheap too.
Ribbon cables - it works with them, but sockets are big. Other two options are Sata cables and RJ45. Cheap, with grounding/screening for each wire. Also stacked connectors exists. And you can end the other side of STP cable with whatever connector you please. I like the last two options the most.

That's all for today.
Pitrsek
  Reply With Quote
Old 28th January 2015, 04:00 PM   #5
diyAudio Member
 
Join Date: Apr 2003
Location: Tampere Finland Europe
It would be nice if the ADC and DAC modules used the "diyinhk" connector pinout, see this XMOS USB to I2S PCB for it:

XMOS DSD DXD 384kHz high-quality USB to I2S/DSD PCB - DIYINHK

Using the same pinout one could build new converter modules (also using TDM interface) that could be used with above USB module and this freeDSP 2. In case someone wants to build a CODEC board then use the "P8" labelled pin next to MUTE for bringing in the ADC data.

Instead of BBB I would use Olimex LIME2 (but that's not important). Simple solution would be to use MSP430 (Energy IDE) or some Arduino board (like on Elektor). Maybe an I2C or SPI connector would be enough. There is no standard pinout though, I2C requires just clock, data and ground. Don't forget EEPROM as once programmed nothing else is needed. Bring also the Aux ADC inputs to some header because that way a simple volume control could be implemented in DSP (in digital domain).

Separate PSU module for the DSP is overkill, I think it's better to have just something like a microUSB connector and some LDO's or buck regulators.

Last edited by mhelin; 28th January 2015 at 04:17 PM.
  Reply With Quote
Old 28th January 2015, 09:32 PM   #6
Pitrsek is offline Pitrsek  Czech Republic
diyAudio Member
 
Join Date: Nov 2004
Location: CZ
Send a message via ICQ to Pitrsek
Default Cable measurements

Hi everybody,
due to my curiosity regarding cable performance, I've stayed a little later in my day-job today. For a quick comparison I've created improvised test fixtures for SATA cable, UTP/LAN cable(Didn have STP on hand) and ribbon cable. I've calibrated VNA(3Ghz made by RS) with through measurement, then plugged one port in cable, second port into the other cable and measured S21.
Sata Cable - only two wires used, all shielding connected to ground
UTP cable - only two pairs used, half of other pairs connected to ground
Ribbon - only two wires used, every other wire connected to ground. G,S,G,S,G,F,G,F,G - F= left to float

First graph is comparison with the other end of cables left open, second is sata cable with various termination - both cables terminated, only one (S21 and S12 were practically the same). The termination was of questionable quality - two 0207 tht 100R resistors in parallel, soldered to the end of cable.

That's all I've been able to measure today, Ribbon and UTP with termination some other time. Sorry for overlapping markers/quality of graphs, I'll try to do better next time.

Unfortunately AD does not state edge rise time in the datasheet for adua1452, nor do they provide IBIS model .

2Sokeris: Do you have means to measure rise times on your ADUA evalboard?
I'll contact AD about rise times, but I like to have another solution for backup if the AD decide not to respond.

If I decide to go with ribbon cable, I'll will consider the same pin-out - thank you for the suggestion.

I'll try to provide all pins from DSP - ADC and MP included.

Strong point of BBB is it's capability to sync to external clock, I've wrote to the author of BBB I2S driver, and it should be possible to use BBB in TDM mode, so it would not occupy all of the inputs. Does LIME2 support I2S output as a slave to external clock? We could support RPiB+ too - clock management in DSP is quite flexible, so we can provide bitclock to which RPiB+ can slave it's output. AFAIK the driver with slave support is not ready.
Do you know somebody with capability to modify current RPI I2S driver?

Yes, since limited number of MP pins on DSP, I2C would be preferable com. bus solution. One drawback is that we loose compatibility with eval board. FreeDSP V1 uses arduino to upload firmfare to EEPROM. You could program the EEPROM with BBB or RPI too

Since we will have opamps on DAC board, USB connector and external supply won't cut it. Well, not without SMPS... So we will have a separate psu board with 115/230 inputs. The board will provide 15V and 48v for opamps and for phantom, additionally it will provide power for DSP. It could be single 5V - with separate regulators for oscillator,PLL and digital. With analog part of DAC fed either form same rail, or from +15. Or it could be dual output, one rail for digital, the other for sensitive stuff - pll, dac, etc. Do you know of 115/230 low power toroid with single output and with small mag. field?

Pitrsek
Attached Images
File Type: jpg fixtures.jpg (430.7 KB, 91 views)
File Type: png OpenComparison.png (35.5 KB, 88 views)
File Type: png ribonVsata.png (40.6 KB, 88 views)
  Reply With Quote
Old 30th January 2015, 09:24 AM   #7
diyAudio Member
 
Join Date: Apr 2003
Location: Tampere Finland Europe
Quote:
Originally Posted by Pitrsek View Post
Strong point of BBB is it's capability to sync to external clock, I've wrote to the author of BBB I2S driver, and it should be possible to use BBB in TDM mode, so it would not occupy all of the inputs. Does LIME2 support I2S output as a slave to external clock?

Pitrsek
LIME2 and Cubietrack (uses the same Allwinner A20 SoC) can run the I2S in slave mode, yes (one example here: http://www.cubieforums.com/index.php/topic,1081.60.html). LIME2 has all of the I2S pins on the 0.05" header (adapter to 0.1" header available), Cubietruck needs some soldering of resistors. There are many A20 boards available but almost all fail in some details with the I2S (like on my Phoenix A20 the second I2S data out is used as GPIO to control USB OTG host/device mode - difficult to mod for multichannel I2s but works as stereo in/out). Anyway, you could build Linux crossover using just the LIME2 (which got 8 output channels on the I2S header pins, not supported on ALSA drivers yet though).
  Reply With Quote
Old 30th January 2015, 11:00 AM   #8
diyAudio Member
 
Join Date: Apr 2003
Location: Tampere Finland Europe
Quote:
Originally Posted by Pitrsek View Post
... We could support RPiB+ too - clock management in DSP is quite flexible, so we can provide bitclock to which RPiB+ can slave it's output. AFAIK the driver with slave support is not ready.
Do you know somebody with capability to modify current RPI I2S driver?
AFAIK, in RPi SoC driver you first do everything like it is done now, I mean set the RPi clock like in master mode. Then you just disable the PCM clock (MODE_A Register, bit CLK_DIS), set the clock mode to codec clock master (CLKM) to external, set the FS to slave mode (FSM) and at last enable the PCM clock. In addition the signal mode in bcm2835_i2s_dev has to be set RPi slave / actually codec clock & frame master (bit SND_SOC_DAIFMT_CBM_CFM set masked by SND_SOC_DAIFMT_MASTER_MASK). On physical level the question is how to handle the change from output in input (low impedance source to high impedance). If you connect the extral outputs to other outputs (though usually via small resistors are used) is there a danger that the converter/DSP clock output ports will be burn when driven to Vcc or GND.

I don't know how the clock mode should be changed in ALSA Soc in a managed way though. I would propably implement it so that the master mode is a fallback mode when external clock is lost.

Btw. there is a comment in drivers (bcm2835-i2s.c) about slave mode problem:

/*
* Toggle the SYNC flag. After 2 PCM clock cycles it can be read back
* FIXME: This does not seem to work for slave mode!
*/

Last but not least a new machine driver is needed. It can be copy of any existing one like eg. https://github.com/raspberrypi/linux...ifiberry_dac.c but with the SND_SOC_DAIFMT_CBM_CFM bit set in dai_fmt . I guess the dummy codec driver could be used with it (unless you want to implement the ADAU1452 I2C control to RPi, would be useful for something simple like volume control).

Last edited by mhelin; 30th January 2015 at 11:17 AM.
  Reply With Quote
Old 30th January 2015, 09:07 PM   #9
Pitrsek is offline Pitrsek  Czech Republic
diyAudio Member
 
Join Date: Nov 2004
Location: CZ
Send a message via ICQ to Pitrsek
Default Cable measurements, take two

Last night it occurred to me that leaving other end of cables open might not have been good idea(if for nothing else, it's not realistic). So I tied ground on the other end together on small copper plane and retested everything. I've attached results for one wire terminated, other left floating. Results worsened when I terminated both ends. I suspect this has something to do with ground/return sharing between the two wires. I measured both wires at the same end, all wires were cca. 47cm long(length of SATA cable).

I got even more curious and decided to test cables for crosstalk in time domain. Set generator for 50Ohm output, 12MHz and output voltage 3.3V(which means half of it at 50Ohm load). You can see the well behaved trace in attachment (connected to 50R input of scope). Rise time is 6.5ns. I connected generator to one cable and 350MHz scope to the other wire and measured RMS voltage over few periods. Please note that bandwidth was severely limited compared to to VNA measurement, also the cable is probably unrealistically long for my application.

Results:

Sata:
ends of both wires open - 16mV
50R termination on wire connected to the signal generator - 12mV
Scope connected to the other end of cable - so generator is on one side and scope on the other - 10mV

Ribbon:
ends of both wires open - 7.7mV
50R termination on wire connected to the signal generator - 7.7mV
I did not bothered with connecting scope to the other end, It was late and I wanted to go home. Anyway, I already knew everything I needed to know.

So... If you misuse SATA cable for single ended connection it ain't that bad. It will work OK. If you decide to use it properly with LVDS drivers, you will get probably way better performance (I haven't measured it - I got access only to 2 port VNA and no suitable blaun at hand). LVDS drivers aren't that expensive, but it will add up in the end and you will slowly start to loose benefits SATA - price, simplicity, elegance.Twice the connectors, cables + drives... but you could use rally long calbes

By using ribbon cables we could provide also I2C and digital power on the same connector -> less cabling, big connectors. Stubs on I2C bus would be probably quite big.

I'd like to start working on schematics next week and close the cable issue before it. I'll sit down and crunch some money numbers for various connection schemes. In a meantime, you can voice your opinion on cable choice - sata, ribbon, LVDS sata. Or something completely different.

Thank you mhelin for your input on RPi. We could provide simple logic buffer with enable connected to GPIO of RPi. So buffer/clock input would be enabled by RPi only after setting up I2S for slave operation.

I'd love to implement volume control via I2C, I'm afraid that is beyond my possibilities at the moment - time wise. If there is someone with skills and interest, I'm more than happy to provide pcbs for this project in exchange for the driver.
Attached Images
File Type: png S21R501X.png (25.4 KB, 38 views)
File Type: png testsetup.png (28.0 KB, 38 views)
File Type: png sataTerminated.png (31.2 KB, 12 views)
File Type: png ribbonTerminated.png (31.6 KB, 12 views)
  Reply With Quote
Old Yesterday, 05:55 PM   #10
diyAudio Member
 
Join Date: Apr 2003
Location: Tampere Finland Europe
SATA cable might be nice a I2S interconnection between devices like USB to I2S converter and a DAC. However, when a usual ribbon cable is used it is meant to be as short as possible, shorter than 10 cm anyway, and used only as for the board-to-board connection. Also it is important the each other signal is the (return) ground. I2S lines also usually have a series 22 -47 ohm resistors, no termination except the input impedance of that of the converters or DSP. If you can get the boards fit physically close enough to each other you could just use angled headers (source -eg. DSP) and receptacles (sink - DAC etc). In case boards fitted with usual headers should be connected together also a small PCB (length of 50mm or less) with receptacles could be fine.
  Reply With Quote

Reply


Hide this!Advertise here!
Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
freeDSP - an open source 2-in 4-out digital crossover board CharlieLaub Digital Line Level 56 24th January 2015 06:24 PM
iBIBk developement thread. G Full Range 142 5th February 2010 03:30 AM


New To Site? Need Help?

All times are GMT. The time now is 01:43 AM.


vBulletin Optimisation provided by vB Optimise (Pro) - vBulletin Mods & Addons Copyright © 2015 DragonByte Technologies Ltd.
Copyright ©1999-2015 diyAudio

Content Relevant URLs by vBSEO 3.3.2