Skip to main content

Sequence detector 001 using JK flip-flops

Short answer

Mealy machine with 2 JK flip-flops; states A(00), B(01), C(10); unused 11 don't care. J1 = Q0 x', K1 = x; J0 = Q1' x', K0 = 1; z = Q1 x. Power-on reset required.

Design a sequential machine that has a single input 'x' and single output 'z'. The machine is required to give high output when it detects the serial sequence of 001 message. Use JK flip-flops only.

The machine has a single input x and a single output z; z = 1 when the last three bits received are 0, 0, 1. Only JK flip-flops are used.

A Mealy machine is used (output depends on the present state and the present input), and overlapping sequences are detected. Since the sequence has 3 bits, 3 states are needed, so 2 JK flip-flops (Q1Q0Q_1Q_0) are used, clocked on the positive edge. (A Moore machine would need 4 states.)

Step 1: States

Present stateMeaningNext (x=0)Next (x=1)z (x=0)z (x=1)
Areset / no useful bitsBA00
B"0" receivedCA00
C"00" receivedCA01

Step 2: State diagram

 Main path (label = x/z):
 A -0/0-> B -0/0-> C -1/1-> A
 Other transitions:
 A -1/0-> A    B -1/0-> A
 C -0/0-> C

Step 3: State assignment

StateABC
Q1 Q00 00 11 0

Code 11 is unused and is treated as a don't care.

Step 4: Excitation table

JK excitation: 0→0: J=0, K=X; 0→1: J=1, K=X; 1→0: J=X, K=1; 1→1: J=X, K=0.

Q1 Q0xQ1+ Q0+J1K1J0K0z
0 000 10X1X0
0 010 00X0X0
0 101 01XX10
0 110 00XX10
1 001 0X00X0
1 010 0X10X1

Step 5: K-maps (rows Q1Q_1, columns Q0xQ_0x)

J1: Q1 / Q0x00011110
00001
1XXXX
K1: Q1 / Q0x00011110
0XXXX
101XX
J0: Q1 / Q0x00011110
010XX
100XX
K0: Q1 / Q0x00011110
0XX11
1XXXX
z: Q1 / Q0x00011110
00000
101XX

Step 6: Equations

J1=Q0x‾,K1=xJ0=Q1‾x‾,K0=1z=Q1x\begin{aligned} &J_1 = Q_0\overline{x},\quad K_1 = x \\ &J_0 = \overline{Q_1}\overline{x},\quad K_0 = 1 \\ &z = Q_1x \end{aligned}

Step 7: Logic diagram

   +-----+       +-----+
J0>|J   Q|-Q0 J1>|J   Q|-Q1
   | FF0 |       | FF1 |
K0>|K    |    K1>|K    |
   +--^--+       +--^--+
      |             |
CLK---+-------------+
x = serial input, common to the gates
J1 = Q0.x'   K1 = x
J0 = Q1'.x'   K0 = 1
z = Q1.x

The gates for each flip-flop input are built from the equations; the output gate gives z directly (Mealy output).

Unused state 11: with the equations above, from 11 the machine goes to 10 when x = 0 and to 00 when x = 1, so it enters the valid states after one clock. Since z can be 1 from state 11 for one clock, the flip-flops should be cleared to 00 at power-on (reset).

Check with an input stream

x0010010001
StateABCABCABCC
z0010010001

z = 1 appears exactly on the clock in which the last bit of 001 arrives; overlapping sequences are also detected.

✓ Answer checked by Claude Opus 5.5 (high effort)

All Digital Logic chapter 9 questions →