--- nand.py- +++ nand.py @@ -143,6 +143,24 @@ self.nand_b.out.conn = self.nand_o.inp_b self.nand_o.out.conn = Pin(self, 'out') +class RSFF(Obj): + def __init__(self, parent, name='rsff', latency=10): + Obj.__init__(self, parent, name) + NAND(self, 'nand_r', latency) + NAND(self, 'nand_s', latency) + Joint(self, 'jt_r') + Joint(self, 'jt_s') + + Pin(self, 'R', 'H').conn = self.nand_r.inp_a + self.nand_r.out.conn = self.jt_r.new_pin() + self.jt_r.new_pin().conn = Pin(self, 'Q') + self.jt_r.new_pin().conn = self.nand_s.inp_a + + Pin(self, 'S', 'L').conn = self.nand_s.inp_b + self.nand_s.out.conn = self.jt_s.new_pin() + self.jt_s.new_pin().conn = Pin(self, 'nQ') + self.jt_s.new_pin().conn = self.nand_r.inp_b + class CLK(Obj): def __init__(self, parent, hz=1.0, name='clk'): Obj.__init__(self, parent, name)