--- nand.py- +++ nand.py @@ -239,6 +239,34 @@ self.jt_s.new_pin().conn = Pin(self, 'nQ') self.jt_s.new_pin().conn = self.nand_r.inp_b +class JKFF(Obj): + def __init__(self, parent, name='jkff', latency=10): + Obj.__init__(self, parent, name) + RSFF(self, 'rsff', latency) + NAND_N(self, 3, 'nand_3_J', latency) + NAND_N(self, 3, 'nand_3_K', latency) + Joint(self, 'jt_Q') + Joint(self, 'jt_nQ') + Joint(self, 'jt_clk') + + Pin(self, 'CLK', 'L').conn = self.jt_clk.new_pin() + + Pin(self, 'J', 'L').conn = self.nand_3_J.inp_1 + self.jt_clk.new_pin().conn = self.nand_3_J.inp_2 + self.nand_3_J.out.conn = self.rsff.R + + Pin(self, 'K', 'L').conn = self.nand_3_K.inp_1 + self.jt_clk.new_pin().conn = self.nand_3_K.inp_2 + self.nand_3_K.out.conn = self.rsff.S + + self.rsff.Q.conn = self.jt_Q.new_pin() + self.jt_Q.new_pin().conn = Pin(self, 'Q') + self.jt_Q.new_pin().conn = self.nand_3_K.inp_0 + + self.rsff.nQ.conn = self.jt_nQ.new_pin() + self.jt_nQ.new_pin().conn = Pin(self, 'nQ') + self.jt_nQ.new_pin().conn = self.nand_3_J.inp_0 + class CLK(Obj): def __init__(self, parent, hz=1.0, name='clk'): Obj.__init__(self, parent, name)