2022-12-12 07:00:05 +00:00
|
|
|
---
|
|
|
|
categories:
|
|
|
|
- Electronics
|
|
|
|
- Hardware
|
|
|
|
tags: [logic-gates, binary, memory, clock]
|
|
|
|
---
|
|
|
|
|
|
|
|
# Flip-Flops
|
|
|
|
|
2024-02-02 15:58:13 +00:00
|
|
|
A flip-flop is a type of
|
|
|
|
[latch](/Electronics_and_Hardware/Digital_circuits/Latches.md) that is connected
|
|
|
|
to a [clock signal](/Electronics_and_Hardware/Digital_circuits/Clock_signals.md)
|
|
|
|
and which executes in time with the clock's pulse. (Sometimes "latch" and
|
|
|
|
"flip-flop" are used interchangeably but technically a latch is flip-flop
|
|
|
|
without a clock connection.)
|
2022-12-12 07:00:05 +00:00
|
|
|
|
2022-12-12 07:30:05 +00:00
|
|
|
## JK Flip-Flop
|
2022-12-12 07:00:05 +00:00
|
|
|
|
2024-02-02 15:58:13 +00:00
|
|
|
The JK Flip-Flop (the letters are meaningless) is basically an SR latch in
|
|
|
|
functionality. It has a "set" input (_J_) and a "reset" input (_K_) and _Q_ and
|
|
|
|
inverted-_Q_ outputs.
|
2022-12-12 07:30:05 +00:00
|
|
|
|
2024-02-02 15:58:13 +00:00
|
|
|
Where it differs from the SR is that it the SR will change state just if the
|
|
|
|
voltage is high (this, afterall, is all that a bit is) whereas for the JK to set
|
|
|
|
it **must receive a clock pulse** and it will only set on the pulse. Hence in
|
|
|
|
addition to _J_ and _K_ inputs it has a _CLK_ input for "clock".
|
2022-12-12 07:30:05 +00:00
|
|
|
|
2024-02-02 15:58:13 +00:00
|
|
|
In addition the JK Flip-Flop has a **toggle** function. When this is executed,
|
|
|
|
whatever _Q_ currently is will be flipped to its opposite value:
|
|
|
|
$1 \rightarrow 0$, $0 \rightarrow 1$. The toggle executes when both _J_ and _K_
|
|
|
|
are set to high.
|
2022-12-12 07:30:05 +00:00
|
|
|
|
|
|
|
The possible state changes for the JK Flip-Flop are detailed below:
|
|
|
|
|
2023-06-27 08:31:36 +01:00
|
|
|
| J | K | Clock | Q state | Operation |
|
|
|
|
| --- | --- | ----- | ------------------------- | --------- |
|
|
|
|
| 0 | 0 | Pulse | Maintain previous value | Hold |
|
|
|
|
| 0 | 1 | Pulse | 0 | Reset |
|
|
|
|
| 1 | 0 | Pulse | 1 | Set |
|
|
|
|
| 1 | 1 | Pulse | Inverse of previous value | Toggle |
|
2022-12-12 07:30:05 +00:00
|
|
|
|
2024-02-02 15:58:13 +00:00
|
|
|
A JK Flip-Flop can execute on either the positive or negative pulse. Below are
|
|
|
|
the diagrams for a rising and falling pulse respectively:
|
2022-12-13 19:08:20 +00:00
|
|
|
|
2022-12-29 20:22:34 +00:00
|
|
|

|
2022-12-13 19:08:20 +00:00
|
|
|
|
2022-12-12 07:53:34 +00:00
|
|
|
## T Flip-Flops
|
|
|
|
|
2024-02-02 15:58:13 +00:00
|
|
|
Another type of Flip-Flop can be created by connecting the _J_ and _K_ inputs of
|
|
|
|
a JK Flip-Flop to each other. This reduces the possible states to two: toggle
|
|
|
|
current state or maintain current state. Its overall logic is therefore reduced
|
|
|
|
to just two lines of the previous state table: the state that obtains when _J_
|
|
|
|
and _K_ are $0 0$ or $1 1$.
|
2022-12-12 07:53:34 +00:00
|
|
|
|
|
|
|
Thus the state table for the T Flip-Flop is:
|
|
|
|
|
2023-06-27 08:31:36 +01:00
|
|
|
| T | Clock | Q state | Operation |
|
|
|
|
| --- | ----- | ------------------------- | --------- |
|
|
|
|
| 0 | Pulse | Maintain previous value | Hold |
|
|
|
|
| 0 | Pulse | Inverse of previous value | Toggle |
|
2022-12-12 07:53:34 +00:00
|
|
|
|
2022-12-29 20:22:34 +00:00
|
|
|

|