A flip-flop or latch is a circuit that has two stable states and can be used to store state information.

The JK flip-flop augments the behavior of the SR flip-flop (J=Set, K=Reset) by interpreting the J = K = 1 condition as a "flip" or toggle command. Specifically, the combination J = 1, K = 0 is a command to set the flip-flop; the combination J = 0, K = 1 is a command to reset the flip-flop; and the combination J = K = 1 is a command to toggle the flip-flop, i.e., change its output to the logical complement of its current value. Setting J = K = 0 maintains the current state. To synthesize a D flip-flop, simply set K equal to the complement of J. Similarly, to synthesize a T flip-flop, set K equal to J. The JK flip-flop is therefore a universal flip-flop, because it can be configured to work as an SR flip-flop, a D flip-flop, or a T flip-flop.

JK flip-flop operation
Characteristic table Excitation table
J K Comment Qnext Q Qnext Comment J K
0 0 hold state Q 0 0 No Change 0 X
0 1 reset 0 0 1 Set 1 X
1 0 set 1 1 0 Reset X 1
1 1 toggle Q 1 1 No Change X 0

Truth Table

Symbol