Hi Guenter,

The adc calibration code I use is at
https://github.com/jack-h/adc_tests/blob/disentangle/adc5g

The disentangle branch should work with normal casper snapshot blocks (this
is probably the branch you want). I used the code for a 5GHz clock, be
warned that it may or may not behave effectively at lower rates.

Calibration commands are as-per the github readme file, though you'll need
to do a listdev to figure out what the appropriate snapshot names are, and
replace "scope_raw_0_snap" as approriate in the code snippet below. --

#######
from adc5g import *
set_test_mode(roach, 0)
set_test_mode(roach, 1)
sync_adc(roach)

# Calibrate IO delays per bit (necessary at 5GSps)
delays0 = calibrate_all_delays(roach, 0, ['scope_raw_0_snap',])
delays1 = calibrate_all_delays(roach, 1, ['scope_raw_1_snap',])

# Sweep MMCM phase with the same settings for all bits (probably adequate
for slower speeds, I think this is all most of the ADC5G users do)
#opt0, glitches0 = calibrate_mmcm_phase(roach, 0, ['scope_raw_0_snap',])
#opt1, glitches1 = calibrate_mmcm_phase(roach, 1, ['scope_raw_1_snap',])

unset_test_mode(roach, 0)
unset_test_mode(roach, 1)

#######

Cheers,

Jack


On Thu, 25 Aug 2016, 06:44 Guenter Knittel, <gknit...@mpifr-bonn.mpg.de>
wrote:

> Hi Rurik,
>
>
>
> thanks, that was the kind of background information that I needed.
>
> I’ve got the code working, on to more testing…
>
>
>
> Cheers
>
> Guenter
>
>
>
>
>
> *From:* Primiani, Rurik [mailto:rprimi...@cfa.harvard.edu]
> *Sent:* Donnerstag, 25. August 2016 14:52
>
>
> *To:* Guenter Knittel
> *Cc:* casper list
> *Subject:* Re: [casper] Glitches in ADC-data
>
>
>
> Hi Guenter,
>
> You do not need any additional interface units. All you should need is the
> code.
>
> The error implies that it cannot write to the "s_ctrl" register. Does this
> register exist in your design? I suspect this is part of a snapshot block,
> called "s", and Jack's code is attempting to grab ADC data from the
> snapshot so it can measure glitches in the test vector data. Presumably you
> have a proper snapshot attached to the ADC in the Simulink design since you
> mentioned you were able to successfully calibrate the MMCM phase. You will
> need to either pass that snapshot name to Jack's code or edit the code to
> have the correct name.
>
> Hope this helps,
> Rurik
>
>
>
>
>
> On Thu, Aug 25, 2016 at 7:57 AM, Guenter Knittel <
> gknit...@mpifr-bonn.mpg.de> wrote:
>
> Hi Rurik,
>
>
>
> thanks for the pointer. I have found Jack’s code and tried to use it.
> However, I get
>
> the following error:
>
> …  katcp_wrapper.py", line 196, in _request
>
>     % (request.name, request, reply))
>
> RuntimeError: Request write failed.
>
>   Request: ?write s_ctrl 0 \0\0\0[1]
>
>   Reply: !write fail.
>
>
>
> So I guess I need some more provisions for using this method. I checked
> using planAhead
>
> if there are IODELAYs in the FPGA design, and indeed there are, but maybe
> I need some
>
> additional interface units?
>
>
>
> Thanks
>
> Guenter
>
>
>
>
>
> *From:* Primiani, Rurik [mailto:rprimi...@cfa.harvard.edu]
> *Sent:* Mittwoch, 24. August 2016 15:05
> *To:* Guenter Knittel
> *Cc:* casper list
> *Subject:* Re: [casper] Glitches in ADC-data
>
>
>
> Hi Guenter,
>
> At the SMA we also see glitches sampling at ~4600 MHz. Interestingly we do
> not see any glitches at all when switched to test ramp mode even when
> looking at very long snapshots. For us running a second MMCM calibration
> after both the ADC and FPGA chips get a chance to warm up seems to get rid
> of most of them (though not all). Note: if you do choose to do a second
> MMCM cal. do not issue a sync to the ZDOK 0 ADC as this will disturb your
> FPGA clock.
>
> As you rightly point out it would be better to adjust delay lines per data
> bit. In fact there are IODELAYs on all data bits and these can be
> controlled over the OPB. However, Python code for this isn't currently in
> the default adc5g library.
>
> Jack Hickish has written some code to adjust those delay lines which I'm
> sure he'd be happy to share with you. However, this has been discussed (a
> few) times before on this mailing list so you might be able to find a link
> in the archives.
>
> Best,
> Rurik
>
>
>
> On Aug 24, 2016 8:44 AM, "Guenter Knittel" <gknit...@mpifr-bonn.mpg.de>
> wrote:
>
> Hi all,
>
> we have a number of Roach2 units each with 2 ASIAA 5Gsps ADCs. We are
> operating
> the ADCs at 4GS/s (external sample clock is 2GHz), in single-channel mode.
> The FPGA gateware meets timing for 250MHz.
> Unfortunately I'm observing glitches on the data from the ADCs. Of course
> I'm using
> MMCM and OGP calibration, but the glitches won't go away.
> Most often they occur on the ADC which is connected to ZDOK1.
> I saw in the Python scripts that apparently all SERDES capture the signals
> as they
> arrive to a common clock (from the MMCM). So, are there no IODELAYs used to
> center the signals individually? Could this be the root of my problem?
>
> Thanks
> Gunter
> MPIfR Bonn
>
>
>
>
>
>
>
>

Reply via email to