The above circuit is a master slave flip flop. Edge triggered. The working should be:
- During positive cycle, master is enabled by clock, storing data.
- At the negative edge (transition), slave takes the input and propagates it to Q.
- Even if any changes in D occur during the negative half, nothing is reflected in Q.
If D changes during the positive half, after the edge, won't that be stored in the first flip flop, and then propagated to the next flip flop, during negative half? Assuming the clock to Q time is considerably less than the positive cycle of the clock?
Suppose the nomenclature is D1,Q1 for first latch and D0,Q0 for second latch. Initial values: Q0=0, Q1=1
In positive half, at the edge, D1=1 occurs (assuming we want to store Q0=1), and thus Q1=1. If halfway through, D1 becomes 0 (say), then Q1=0 (within positive half). Then in the negative half, Q0 = 0. But the intention was to store 1 in Q0.
However, in edge triggering, we need to store only the value which is appears at the edge (positive in this case). Doesn't this change (D: 1->0 ) during the positive half contradict the whole concept of edge triggering? I am very confused.
The only thing I noticed here is that the propagation in second flip flop occurs at the negative edge, and any changes during the negative cycle is not propagated immediately.