ADC reading reading is too small
TinaHsing opened this issue · 1 comments
Hi Dear developer
I used the zcu216 image download from google drive
Then I used the demo program in 00_Send_receive_pulse without any modification in LoopbackProgram.
my configure input is like below, I changed the pulse_gain to 30000
length to 100
readout length to 300
config={"res_ch":6, # --Fixed
"ro_chs":[0], # --Fixed
"reps":1, # --Fixed
"relax_delay":1.0, # --us
"res_phase":0, # --degrees
"pulse_style": "const", # --Fixed
"length":100, # [Clock ticks]
# Try varying length from 10-100 clock ticks
"readout_length":300, # [Clock ticks]
# Try varying readout_length from 50-1000 clock ticks
"pulse_gain":30000, # [DAC units]
# Try varying pulse_gain from 500 to 30000 DAC units
"pulse_freq": 100, # [MHz]
# In this program the signal is up and downconverted digitally so you won't see any frequency
# components in the I/Q traces below. But since the signal gain depends on frequency,
# if you lower pulse_freq you will see an increased gain.
"adc_trig_offset": 0, # [Clock ticks]
# Try varying adc_trig_offset from 100 to 220 clock ticks
"soft_avgs":100
# Try varying soft_avgs from 1 to 200 averages
}
###################
Try it yourself !
###################
prog = LoopbackProgram(soccfg, config)
iq_list = prog.acquire_decimated(soc, load_pulses=True, progress=True, debug=False)
I found :
A. the ADC reading is very small. and the rising edge is at t = 60(+100)
I double check the ouput waveform in scope, ch6 had around 800mVpp output. and I used xm655 card acompany with zcu216.
the balum selection is 10M~1G.
when I changed the pulse_freq to 800 MHz, the reading is bigger but still small.
B. when i change the adc_trig_offset from 100 to 180
we still can see the rising edge of output wavefrom at t = 0(+180)
Did I do anything wrong so that my adc reading is so small?
the adc_trig_delay seems didn't have a good match to real waveform?
Let me repeat to maike sure I understand correctly:
A. You're seeing very little signal in loopback, you have checked that your baluns are appropriate for the frequency and the output is visible on a scope.
B. You changed adc_trig_offset by 80 units, but the pulse did not shift by 80 units - more like 60.
and answers:
A. I agree you should be seeing a bigger pulse. You should double-check that you're connected to the correct ADC and that you have no loose connections there. You could also connect a signal generator to the ADC instead of the loopback cable, and play a constant sine wave at your readout frequency: since the generator will not be synchronized to the QICK you will not see a coherent constant value, but you should see something.
B. This is OK. adc_trig_offset
is in units of the tProcessor clock, which is 430.08 MHz; the decimated data is sampled at the readout fabric clock, which is 307.2 MHz. So it makes sense that changing adc_trig_offset
by 80 would shift the decimated data by 80*(307.2/430.08) = 57.1 ticks. (soccfg.us2cycles(soccfg.cycles2us(80), ro_ch=0)
is a way to do this conversion in code.) If you look at the "Clocks and durations" section in the 00 demo you will see some more explanation of this.