class DSModulator: """A second order delta-sigma modulator""" def __init__(self): self.reset() def reset(self): self.integrator1 = 0 self.integrator2 = 0 self.output = False def step(self, x): output = self.output * 2**16 self.integrator1 += x - output self.integrator2 += self.integrator1 - output self.output = self.integrator2 >= 2**15 return self.output