def elaborate(self, plat): lfsr1 = Lfsr.num_steps(1200) lfsr2 = Lfsr.num_steps(1000, default_enabled=False) led1 = plat.request('led_r') led2 = plat.request('led_g') m = Module() # Use both LFSRs m.d.sync += [ led1.eq(lfsr1.value[0]), led2.eq(lfsr2.value[0]), ] # step lfsr2 when lfsr 1 is about to restart m.d.sync += [lfsr2.enable.eq(watch_lfsr(m, lfsr1, 1199))] m.submodules += [lfsr1, lfsr2] return m
def elaborate(self, plat): lfsr = Lfsr.num_steps(1100) led = plat.request('led_r') m = Module() m.d.sync += led.eq(lfsr.value[0]) m.d.comb += lfsr.restart.eq(watch_lfsr(m, lfsr, 999)) m.submodules += [lfsr] return m
def __init__(self, n_bits, *, with_enable=False): self.lfsrs = [ Lfsr.num_steps(501 + 7 * i, restart_value=i) for i in range(n_bits) ] self.restart = Signal() # Input self.with_enable = with_enable if with_enable: self.enable = Signal() # Input self.output = Signal(n_bits) # Output
def elaborate(self, plat): # 89.77 90.62 94.95 95.31 95.31 95.31 95.31 95.31 101.58 107.52 lfsr = Lfsr.num_steps(1100, default_enabled=False) button = plat.request('button') led = plat.request('led_r') m = Module() m.d.sync += led.eq(lfsr.value[0]) m.d.comb += lfsr.restart.eq(watch_lfsr(m, lfsr, 999)) m.d.comb += lfsr.enable.eq(button) m.submodules += [lfsr] return m
def make_lfsr(self): return Lfsr.num_steps(self.num_words, default_enabled=False)