With the following code I can reach sampling rates between 65-78 kHz (depending on the size of the data array). Is it possible to increase the sampling rate?
from artiq.experiment import *
import numpy as np
class SamplerTest(EnvExperiment):
kernel_invariants = {"numberOfSamples","samplingPeriod"}
def build(self):
self.setattr_device("core")
self.setattr_device("sampler0")
self.setattr_argument("samplingDuration", NumberValue(ndecimals=3, step=1, default=1, scale=s, unit="s"))
self.setattr_argument("samplingRate", NumberValue(ndecimals=3, step=10, default=40, scale=Hz, unit="Hz"))
def prepare(self):
self.numberOfSamples = int(self.samplingRate * self.samplingDuration)
self.samplingPeriod = 1 / self.samplingRate
self.data = np.full((self.numberOfSamples,8),0,dtype=np.int32)
@kernel
def run(self):
self.core.reset()
self.core.break_realtime()
self.sampler0.init()
delay(100*us)
self.getSamples()
@kernel
def getSamples(self):
for i in range(self.numberOfSamples):
with parallel:
self.sampler0.sample_mu(self.data[i])
delay(self.samplingPeriod)