-
Notifications
You must be signed in to change notification settings - Fork 6
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 testing #141
Comments
baluns are extremely fragile and can be damaged easily |
@sbourdeauducq Did you receive AFEs from Creotech? |
@marmeladapk What do you see on TestMod? If your baluns are broken replace them. |
Cool! |
Great! |
For checking if the DAC has any output at all, I suggest compiling the AMC gateware with the
Yes, I did. |
Today, after following @sbourdeauducq instructions, I used artiq release-5 (without sawg) and I got output on one of the DACs. |
Did the other channels fail or were they not tried? |
They fail, the JESD core for DAC0 fails systematically on all boards with a "not ready" error. |
This depends, I recall that on previous builds Dac1 was reported as not
ready.
czw., 16 sty 2020, 02:01 użytkownik Sébastien Bourdeauducq <
[email protected]> napisał:
… They fail, the JESD core for DAC0 fails systematically on all boards with
a "not ready" error.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#141?email_source=notifications&email_token=AF3AQXESOTCSPDP6XXQ36D3Q56WUZA5CNFSM4JYOVRYKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEJCLYQY#issuecomment-574929987>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AF3AQXAOEH2D3DGWRQLU27DQ56WUZANCNFSM4JYOVRYA>
.
|
Recap from chat with @marmeladapk. He sent a working example (.bit) to M-Labs that exercises the DACs using Creotech+Xilinx IP. His example produces RF output on all channels on his boards. And it checks a DAC register to confirm if SYSREF signal is present on the DAC side. He prefers to wait to send replacement hardware to M-Labs until more is known about this being a hardware vs ARTIQ config issue. |
Trying to narrow down the bug... The "not ready" error on DAC0 is still present with the JESD core modified like this:
But it goes away when it is modified like this:
|
This also makes the error disappear:
It could be that some of the GTH transceivers on the DAC0 lanes fail to initialize (marginal operating conditions?). @marmeladapk How did you clock the transceivers in your tests (with other JESD core) where the DACs worked? I'm running them from the Si5324 (+HMC830/HMC7043) and it could be that excessive jitter aggravates the problem? |
@sbourdeauducq: the AD9154 is able to report a status for the CGS/ILAS, i think you should make the firmware output it (it was possible in previous firmware IIRC). First see if CGS is passing (with the registers of the AD9154 or by looking at the JSYNC since JSYNC is asserted when CGS is detected on all lanes). Then if CGS is fine, get the ILAS status from the AD9154. Also, you should be able to use PRBS without the AD9154 fully syncing, we only need to have the AD9154 PLL to be locked for that. This would help narrowing down the issue. |
Thanks for the information.
then the problem is still present. This patch:
seems to indicate that the problem is coming from Am I missing out something? |
Indeed, you also have to check that the GTH are initialized correctly and init going to READY state on all lanes: https://github.com/m-labs/jesd204b/blob/master/jesd204b/phy/gth_init.py#L111 |
Using cdr_clk_clean_2 or cdr_clk_clean_3 to clock JESD has no visible impact on the behavior. |
With this patch, there's still "ready timeout" on DAC0 and not on DAC1:
|
I'm not sure what's the patch is doing, be the checks that needs to be done are:
|
Ignore this. The behavior is non-deterministic and it could just have been chance. |
Also there are multiple layers to this bug. I have added GTH init diagnostics: Sometimes it fails with "JESD core PHY not done" (which previously would have been indistinguishable from other problems), and sometimes with the "not ready" error from other causes. |
To ease debug, maybe you should disconnect the JSYNC from the restart here: |
What is the purpose of reinitializing the transceivers when JSYNC gets deasserted? |
I also don't get why the transceivers should be restarted when |
Shouldn't this restart be simply handled in |
m-labs/jesd204b@2d135e3 @enjoy-digital can you review? |
The transceivers were reinitialized because we don't know the reason of JSYNC de-assert from the DAC and could be caused by the transceiver not operating correctly. The restart was only enabled when PRBS was not used. Your changes seems fine yes and should simplify understanding the issue. The "JESD core PHY not done" was probably that JESD was constantly re-initialized and that the ready CSR was read while the PHY was still doing the initialization. So now that you know the PHY are initialized correctly, the next step is to enable debug on the DAC and get the CGS/ILAS status. |
Yes, this separation and the diagnostic make things a lot clearer! |
Changing to LVDS3/LVDS11:
does not improve things (I'm now getting errors on both DACs). |
It turns out that the pins in current Migen are OK.
This was with reinitializations disabled (but it seems it doesn't initialize at all anyway):
|
From what i remember, even without JESD at all, SERDES_PLL_LOCK should be set to 1 with just the AD9154 SPI init and a valid clock input. |
Thanks for the hint. Now JESD ready passes on both DACs, and DAC0 is working! I don't understand why DAC1 JESD ready passed though. DAC1 still shows the STPL error, but this could be a one-off problem with my board (since it was working before already on the boards at Creotech). @marmeladapk Can you try on your boards? |
I had a moment to test it on DAC0 on one of the boards with simple sine wave. It seems to work. I didn't try anything more complicated. |
@jbqubit asked me to write about our problems with getting DAC output. This was the only real obstacle for us to finish HT3 currently (because DAC output is required for tests in crate) and to distribute hardware.
We were using AD IP-core for JESD and with it we couldn't get a stable JESD link. Initial phases went ok but it failed at synchronization phase.
Recently @atcher0 used Xilinx IP-core for JESD, which established the link. Today we got output on all channels (JESD subclass 1, so with synchronization)! The only problem is that some channels have 10x the signal than others, however we still need to write controls for attenuators properly, so this may solve itself quickly.
In parallel I was testing if ARTIQ was providing DAC output. I'm using eb271f38 from ARTIQ. Initially I got
DAC sync failed: no sync lock
. This was caused by no signal on HMC7043 SYSREF outputs. After fixing this (pull request m-labs/artiq#1402 ) I got stuck onfailed to align SYSREF at DAC: no rotation seen when scanning DAC SYSREF delay
. When I checked SYSREF input, the signal was changing phase, so I don't know the cause.Anyway, I used Kasli as SAWGMaster + code from sines_2sayma example. I used testmod, which outputs the signal directly. No signal is present at any output. Btw heads up @sbourdeauducq, we think that baluns on testmods may be broken, because we get output on basemods and not on testmods (or pin assignment is wrong).
I think we'll work in parallel on Xilinx IP-core (we've got eval license until March) and I can work with @sbourdeauducq on ARTIQ, since we have the same setup now.
The text was updated successfully, but these errors were encountered: