Problem with sampler on Kasli-Soc #197
Labels
No Milestone
No Assignees
5 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: M-Labs/artiq-zynq#197
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
When the sampler is connected to the EEM2&3,3&4 and 4&5, the sampler test will fail. But the sampler test can pass for the other EEM ports. This has been reproduced with two independent sets of boards.
We came across similar issue during our tests, but we need further investigation, as there were issues with EEM6&7 ports too. The system consists of Kasli-Soc, SMA-TTL and Zotino.
Here is our test log:
Tested another Kasli-SoC, can confirm the issue persists for 2&3, 4&5, 6&7 EEM ports.
Quite possibly there is similar problem for the Mirny, as we came across it with failure
ValueError: Mirny PROTO_REV mismatch
. Also 9&10 EEM channels didn't work out for SamplerIIRC both Mirny and Sampler use SPI for communication, seems like a common point...
Ports 10&11 also do not work for Sampler right now. The only ports I can confirm working are 8&9.
It could be quite random and be essentially a FPGA timing issue that depends on global P&R results and not just the EEM port numbers. Maybe looking at the signals on the scope when it fails, and IOB packing and timing reports from FPGA compilation could shed some light on what is going on.
I've checked the difference between configurations with failing and not failing sampler (just different ports), and failing configuration produces this additional warning in Vivado IDE in DRC report:
Is that much meaningful?
It looks like the issue is with various LVDS standards used on the Kasli-SoC:
While it is all LVDS_25 on RISCV Kasli, on Kasli-SoC the reported EEMs are LVDS_18 standard (p99 https://docs.xilinx.com/v/u/en-US/ug471_7Series_SelectIO). Which as @mwojcik says may be undefined behavior related to clock signal being too low.
We tested it out more extensively - Sampler (in 1-EEM mode) works exactly only on LVDS_25 pins, but for others gives incorrect values (from a closed set of 10.2, +-5.1, 0.8, +-0.0), if the sampler was actually connected.
However looking at
EEM0_0_[PN]
(refers toADC_SCK
signal) pins with an oscilloscope from sampler connected to ports 1 and 2 we couldn't see any massive difference in voltage levels of the output.Maybe it's the input (that is, Sampler's output) that causes problems with this configuration?
Is DIFF_TERM correctly applied?
Funny you mention that,
DIFF_TERM
was NOT applied for inputs (for outputs they're terminated on the Sampler). I just tested out firmware with DIFF_TERM on ADC_MISO and it seems to work on previously affected ports.Quick fix, I'll make a PR for mainline ARTIQ.
We do need DIFF_TERM on all EEM inputs, so I guess this explains the problem.