My DUT is galvanically isolated between the host communicating with it. The trigger itself, generated by the host, is also galvanically isolated. On the DUT side, I have very clean voltage. The DUT itself is powered by an isolated power supply – the DUT’s GND and the power supply are not physically connected to the host’s GND with dirty voltage.
The problem and the issue to be resolved – the ChipWhisperer Lite ADC, which I need to connect to ground and vcc of DUT, will transmit dirty ground. Am I right? So how do I solve this problem?
DIRTY_GND_HOST < > ISOLATION > DUT
DIRTY_TRIGGER_HOST < > ISOLATION > DUT
CWLITE_GND < HOST > GOES_DIRTY > DUT NOT ISOLATED ANY MORE
Regards.
Look at this paper for inspiration.
You can also use an H-field probe.
I fixed the ADC ChipWhisperer Lite not connecting to the USB port ground, so I simply isolated its TIO4 trigger. Now the ADC input is connected only to a clean voltage.
Other problems arose:
-
Connecting my DUT without clock synchronization seems to produce a correct trace.
-
Connecting my DUT with clock synchronization (the ChipWhisperer generates a clock for the DUT – synchronous sampling mode) results in traces that look as if the ADC has lost bit resolution – the traces look like they have 1-2 bits?! They should be recording 8-bit traces correctly – is my CWlite broken, or is there something wrong with its configuration?
No, I don’t think it’s broken!
CW-lite’s ADC has 10-bit resolution and chipwhisperer power samples are given over a [-0.5, +0.5] range (unless you use the as_int=True option in capture_trace()).
That means 1 bit of resolution is 0.00098, which is exactly the step size you’re seeing here.
What you are showing is exactly what happens when the gain is too low; you simply need to increase the gain.
Ok, I increased the gain from 5 to scope.gain.gain = 60 and now the traces look better, is 60 a good setting?
Ideally you set the gain so that the measurements are close to +/- 0.5, but without clipping.