--- nand.py- +++ nand.py @@ -435,6 +435,22 @@ self.jt.new_pin().conn = self.and_out.inp_b self.and_out.out.conn = Pin(self, 'D_0', 'L') +class ROM(Obj): + def __init__(self, parent, dbit_n, abit_n, dlst=(), name='rom', latency=10): + Obj.__init__(self, parent, name) + self.n = dbit_n + Pin(self, 'en', 'L').conn = Joint(self, 'jt_en').new_pin() + for i in range(abit_n): + Pin( self, name_i('A', i), 'L' ) + Joint_N(self, abit_n, 'jt_n_A').new_pin_conn(self, 'A', abit_n, 'from_targ') + + for i in range(dbit_n): + dlst_i = [ (d >> i) & 1 for d in dlst ] + rom_b = ROM_D1(self, abit_n, dlst_i, name_i('rom_b', i), latency) + self.jt_en.new_pin().conn = rom_b.en + self.jt_n_A.new_pin_conn(rom_b, 'A', abit_n, 'to_targ') + rom_b.D_0.conn = Pin( self, name_i('D', i), 'L' ) + class CLK(Obj): def __init__(self, parent, hz=1.0, name='clk', pos=(0,0), lamp_name=None): Obj.__init__(self, parent, name, None, pos)