Unable to import external clock

Greetings,

I have a CW1200 that I am trying to clock externally with a microcontroller. This MCU outputs a 4 MHz square wave (see picture):

Following the diagram found on: Scope API — ChipWhisperer 5.7.0 documentation, I initially set the clkgen_src = 'extclk' to input this 4 MHz wave. The actual AES engine that I would like to sample is running at 16 MHz so I am attempting to set the ADC rate at about 48 MHz via the clkgen_mul and clkgen_div attributes. In order to do so, I attempt to multiply the 4MHz wave by 12 (clkgen_mul = 12) and divide by 1 (clkgen_div = 1). I then set the adc_src = 'clkgen_x1' which as I understand should take this multiplied wave and pass it through to clock the ADC directly.

Unfortunately, I am unable to get the CLKGEN and ADC modules to lock (and also the intended clock rates)when using the following python code:
scope.default_setup()
scope.clock.reset_adc()
scope.clock.reset_clkgen()
scope.clock.reset_dcms()
scope.adc.samples = 68000
scope.adc.presamples = 2500
scope.adc.timeout = 3
scope.adc.decimate = 1 # ADC Sampling Rate
scope.clock.clkgen_src = "extclk" #extclk / system
scope.clock.clkgen_mul = 12 #2-256, starting with 4MHz system
scope.clock.clkgen_div = 1 #1-256, starting with 4MHz system
scope.clock.adc_src = "clkgen_x1"
scope.clock.extclk_freq = 4000000

I seem to be misunderstanding something or perhaps setting some attribute(s) to an incorrect value for my situation. Any help is greatly appreciated.

Dallas

Hi Dallas,

Sorry for the late response here.

What pin are you feeding the clock into? The correct pin is HS1.

Also, you need to reset the DCMs after changing your clock settings not before. I’d recommend setting extclk_freq after switching to the extclk, then setting the desired frequency via scope.clock.clkgen_freq.

Alex