[docs]classShiftReg:"""Driver for shift registers/latch combos connected to TTLs"""kernel_invariants={"dt","n"}def__init__(self,dmgr,clk,ser,latch,n=32,dt=10*us):self.core=dmgr.get("core")self.clk=dmgr.get(clk)self.ser=dmgr.get(ser)self.latch=dmgr.get(latch)self.n=nself.dt=dt@kernel
[docs]defset(self,data):"""Sets the values of the latch outputs. This does not advance the timeline and the waveform is generated before `now`."""delay(-2*(self.n+1)*self.dt)foriinrange(self.n):if(data>>(self.n-i-1))&1==0:self.ser.off()else:self.ser.on()self.clk.off()delay(self.dt)self.clk.on()delay(self.dt)self.clk.off()self.latch.on()delay(self.dt)self.latch.off()delay(self.dt)