I’m trying to increase the sampling rate on my ChipWhisperer-Husky for power analysis on a CW305 target (AES). Using scope.clock.adc_mul = 12 with scope.clock.clkgen_freq = 7.37e6 gives the following errors:
(ChipWhisperer Scope WARNING|File ChipWhispererHuskyClock.py:663)
Could not calculate pll settings for the requested frequency (7363636); generating a 7333333 clock instead. It may be possible to get closer to the requested frequency with a different adc_mul. It may also be possible to get closer to the requested frequency if you set scope.clock.pll._allow_rdiv to True; however this can result in an inconsistent clock phase between the target and ADC clocks; use at your own risk!
(ChipWhisperer Scope WARNING|File ChipWhispererHuskyClock.py:703) Target clock may drop; you may need to reset your target.
Target connection test passed
Current Setup:
-
ADC Samples: 60 (scope.adc.samples = 60)
-
Clock: scope.clock.clkgen_freq = 7.37e6, scope.clock.adc_mul = 12 (~88.44 MS/s expected)
-
Code:
scope = cw.scope()scope.clock.clkgen_freq = 7.37e6scope.clock.adc_mul = 12scope.adc.samples = 60scope.adc.stream_mode = Falsetrace = cw.capture_trace(scope, target, bytearray(16), bytearray(16))
Goal: Achieve a stable sampling rate >60 MS/s (e.g., 80–100 MS/s) for finer-grained power traces.
Questions:
-
How can I resolve the PLL error to achieve a stable 88.44 MS/s or higher with adc_mul = 12?
-
Is setting scope.clock.pll._allow_rdiv = True safe for power analysis, given the clock phase warning?
-
What’s the maximum stable clkgen_freq and adc_mul for Husky?
Any advice on optimizing clkgen_freq, adc_mul, or other parameters to achieve a stable, high sampling rate would be greatly appreciated!