-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
DAC Update Spurs and Crosstalk #61
Comments
The list below contains the 2.55 MHz spur powers resulting from a single DAC updating with the configuration detailed above. Noise floor at -85 dBmV ch24 updating:
ch25 updating:
ch26 updating:
ch27 updating:
ch28 updating
ch29 updating: ch30 updating:
ch31 updating:
|
It's worth picking a few channels and measuring the cross-talk to all 31 other channels. |
Does |
@pathfinder49 can you have a go at installing altium please (I'm happy to help you if you get stuck). See if you can figure out the origin of the cross-talk. Also, can you post a spectrum? Is this noise just at the DAC clock frequency? What data are you writing, do you see pattern-dependent spurs? We don't need to do something completely exhaustive here, but just need to get an idea of the orders of magnitude and see if there are any channels that are particularly bad/good (which would point to a layout issue that might be fixable) |
It does. |
i.e with data constantly being written to channel 24 you don't see any spurs on that channel? e.g. no clock spurs etc on that channel? To check I've understood you:
|
This noise is at the DAC update frequency. So far I'm looking with a narrow bandwidth around 2.55 MHz to reduce the noise floor.
I don't see DAC update spurs at 2.55 MHz.
Correct
SCLK is toggling at 47.6 MHz, LDAC is held low, CLR is held high. In this mode words are immediately transferred to the DAC when CS is brought high. CS toggles at 2.55 MHz.
That is correct. |
This is for major carry transitions. What data were you writing? Try triggering the scope off cs and turning on a bit of averaging... |
Then I missunderstood our earlier discussion. This shouldn't pertain to this issue. I was repeatedly writing the same code. |
Aside: I've removed R153 from channel 31 and connected the DAC output directly to the amplifier input with a wire (no PCB contact). This changes the cross-talk pickup of channel 31. channel 31 spur from updating:
|
I'm now picking a few channels to check crosstalk to all channels for. Updating channel 31 I observe crosstalk to:
Updating ch28 I observe crosstalk to:
From above:
|
Looking at altium, the CS trace runs like this: It runs underneath (or close to) the analogue line of the channels listed above. Ch16 seems to be an odd one out here. I will double check that I didn't get it mixed up with channel 17 tomorrow. Edit: The CS trace crosses the channel 26 (above ch23) analogue lines without causing as much crosstalk. |
Indeed, I got channel 16 and 17 confused. I've double checked the other channels. They are all correct. |
@pathfinder49 Thanks for the summaries. I think we have been talking past each other, but I now understand what you're up to.
So, bascially, right now you're putting a fixed data work onto a single channel. So we expect to see:
If you look at those two figures in the DAC data sheet and then read the section about what the measurements mean, I think you'll see that the glitches are highly pattern dependent, so we shouldn't expect to see them here. The fact that you don't see any spurs on the channel you're updating suggests that with a fixed data word you don't get any glitches due to the DAC itself. In other words, all you're measuring is the cross-talk between the CS trace and the analog outputs (perhaps via the reference/supplies). |
I don't follow what you mean here. Can you draw a line on the schematic to show what you did? |
Was this measurement with an unmodified board? |
You can use altium to highlight a net across all layers (see some of the images Greg posted). Can you post an image that clearly shows the active CSS trace, as well as the affected channels? |
At a high level, the real question here is whether there is anything easy we can do to reduce these spurs. Assuming:
I'm not sure there is anything easy we can do to improve this. There are a few things we could potentially do, but I don't think the complexity would be warranted
But, I'm not sure any of those would be warranted; the worst-case spurs are better than -40dBmV (10uV RMS). It would presumably be worse than that if all channels toggle, but not so bad for an out-of-band spur... |
@pathfinder49 one final question: do the spur heights you measure depend in any way on grounding etc? |
Once we have the data on this to show the coupling mechanics, it would be interesting to hear from @gkasprow if he can think of any ways the layout could be improved to make this effect smaller.... |
I did not look for this as it shouldn't be significant for our use case.
The data lines are changing. They repeat the same word every 1/47.6 us. I've described the expected data line frequencies above.
As I understand it, the glitches are for pattern changes. Here an identical pattern is repeated.
I do see a self-induced update spur in some channels. I expect that with some averaging I could resolve them in more channels. This is much less significant than the crosstalk caused in other channels. The self induced spurs may also be due to the CS line toggling.
The board was modified as described in the initial post. grounded IC3 shield, etc.
This is already the case in the picture I posted. Unhelpfully this is highlighted in dark grey. I couldn't find a better way than control clicking the trace... |
The crosstalk to a channel is very dependent on its position. To me, this suggests the crosstalk is avoidable by routing the digital (CS?) lanes differently. From the highlighted trace above, it looks like the the crosstalk is significant when the CS line passes underneath(/close to) the CMC slot of a channel. The channel 28 trace runs in layer 5 so the main coupling mechanism may well be elsewere... |
You haven't said what the data word is yet. e.g. if it's 0xffff then the data lines are static. I assume this isn't the case but you really need to document everything required to reproduce the measurement.
From the diagram you posted, I can't understand what you were trying to achieve or why that modification would have any effect on anything. The noise source is not the DAC output (which is static) it's the CS line, which you haven't touched.
Aah, ok, thanks. I didn't notice that the first time around. |
The interpretation I have for that is as follows:
The channel 28 trace runs in layer 5 so the main coupling mechanism may well be elsewhere... There are two hopefully quick things you can do to test this hypothesis
Don't forget that with the current stackup the return currents for both digital and analog signals flow through the same planes, so there will be common-impedance couplings. If the Kelvin connection doesn't help we could consider additional ground layers in the next revision, which are only tied together at specific points. However, that would need some thought... |
How can you say whether it's the CMC or the output signal/return traces from a channel (or even the vais used for those traces)? They all come from the same area of the PCB and I don't see a strong enough spatial correlation to separate the causes. |
Agreed. This was only intended to identify the relevant board area. |
The word for -9.5 V is: 0000 0110 0110 0110 |
I'm not sure I find that convincing...e.g. ch8 has only slightly lower cross-talk than those channels but the CS line is much further from that capacitor. See if the Kelvin connection works. Otherwise have at the cross-talk from a few more channels and see if a pattern emerges. |
I tried both of these modifications on channel 17 (channel 28 updating).
Edit: populating the CMCs makes a large difference for some channel combinations. |
Some of the spurs are word dependent. Updating ch28 with the word 0x0000 (-10 V), I observe reduced crosstalk to some channels:
The relevant traces are shown below.
Channel 23 is paticularly interesting. The entire spur appears to couple in from the digital line underneath the CMC pads. On the rear side this trace runs underneath the double diode. The digital line crosses the analogue trace to the double diode and C1. The coupling to channel 31 and 29 also reduces. There may be a different mechanism at work here. Edit: The word dependence seems to correlate well with the digital line passing close to an analogue via. I'll look at a few more traces to check this. |
Look, for example, here at the spurs when updating channel 18. The two worst-affected channels are 18 and 5. But the CS line is routing with respect to those two channels is quite different. That suggests that there isn't just one noise-critical node in the circuit. That will make it harder to identify/fix the noise coupling. |
That's potentially interesting. Try to get as much data as you can and sort through it. Post here if you find strong correlations... |
I've remeasured channel 4 and 18 with the word 0x0000 (-10 V). This is compared to the previous crosstalk from writing -9.5 V. My configuration is the same as as before with a noise floor around -85 dBmV. Channel 4 updating:
Trace routing for channel 4:
Channel 18 updating:
Trace routing for channel 18:
|
I've not noticed a unifying pattern for all crosstalk. However, there may be some patterns.
With the exception of the crosstalk from ch18 to ch5, all spurs I've encountered with -50dBmV or above are in group 1. All in all, this seems like a bit of a complicated model for the amount of data I have... |
To test the patterns, I predicted and then measured update spurs for channels 6 and 25. I made the following predictions:
Note: I did not predict coupling from channel 6 to channel 1 as I missed the SCLK trace passing close to the buffer output via. I would also expect a (word independent) spur from this. Channel 17 has the CMC slot populated. Spur hights are tabulated below (spurs over -70 dBmV in bold):
Predictions for channel 25 updates, correctly identified prominent spurs and their behaviour. The unpredicted coupling to channel 26 fits point 3 above. Predictions for channel 6 updates were less successful. Channel 3 was correctly identified. Channel 1 makes sense (though not predicted). Coupling from the CS line seems to behave oddly. It's unclear why no spur is seen in ch5. Edit: looking through the data and routings again, it may be that the posititive via of the differential pair is more succeptible than the negative via. I'll look for suitable channel combinations to test this hypothesis. Edit 2: Modifying channel 26 by de-soldering R67 and connecting to C101 makes no diffference. Edit 3: Removing the CMC from channel 17 makes a significant difference here. Without the CMC (R66 & R67 populated) the ch17 spur (channel 25 updating) becomes -66dBmV. This is for both the -10 V and -9.5 V words. |
I've studied some channels in more detail. This suggests:
|
I've summarised my findings in #62 |
I'm having a look at the DAC update spurs.
For a first look, I'm configuring Kasli & Fastino in the "no spurs" configuration from #56. (With CMCs on the DAC outputs and a ground strap to Fastino)
Single DACs are made to update at 2.55 MS/s by repeatedly writing a voltage via DMA.
Looking at channels 24-29 & 31 there is some variability in the DAC update spur intensity. I'll post proper data later. Of the top of my head, -70dBmV spur amplitude is typical for these spurs.
DAC update cross talk is much more significant. In paticular, channels 27 and 24 Have significant crosstalk onto other channels. The resulting spurs are in excess of -50dBmV.
I'll post more details at a later time.
The text was updated successfully, but these errors were encountered: