# Flipflop

De flipflop of bistabiele multivibrator of 'geheugenelement met dubbele excitatie' is een digitale elektronische schakeling. Het element fungeert als een sluis voor data. De logische toestand van de uitgangen kan uitsluitend veranderen tijdens een actieve flank op de klokingang. Het element heet daarom ook wel 'flankgevoelig data-element'.
De schakeling bestaat uit twee na elkaar geschakelde transparante latches ofwel elementen met enkele excitatie. Hiervan zijn de stuuringangen zodanig gekoppeld, dat steeds een van de elementen dicht is; tijdens een flank zijn beide kortstondig dicht. De term dubbele excitatie verwijst naar de twee toestanden die het element hierbij na elkaar doorloopt. De gecombineerde stuuringangen heten samen de klokingang. Het eerste element werd wel 'meester' genoemd, de tweede 'slaaf'. De flipflop heette daarom ook wel 'meester-slaaf-element'. In meer politiek correcte taal wordt dat liever als primair-secundair geduid.
Een flipflop heeft een klokingang C, een, twee of geen synchrone gegevensingangen (data-ingangen) en minimaal één uitgang. Een tweede uitgang is vaak het tegengestelde van de eerste.

## Typen

Er zijn diverse typen flipflops, afhankelijk van hoe de data-ingangen intern met de rest van de schakeling verbonden zijn. In de volgende schakelformules en waarheidstabellen is Q de uitgang, n de oude toestand en n+1 de nieuwe.
T-flipflop :
| Huidige toestand | Volgende toestand | Functie |
| Q$_n$ | Q$_{n+1}$ | Functie |
| 0 | 1 | Wissel |
| 1 | 0 | Wissel |
* De T-flipflop of Toggle-flipflop heeft geen data-ingang. Hij wordt gebruikt in binaire tellers, omdat hij de klokfrequentie door 2 deelt.
    $Q_{n+1}={\overline {Q}}_{n}$
Gestuurde T-flipflop :
| Huidige toestand | Huidige toestand | Volgende toestand | Functie |
| T | Q$_n$ | Q$_{n+1}$ | Functie |
| 0 | 0 | 0 | Verander niet |
| 0 | 1 | 1 | Verander niet |
| 1 | 0 | 1 | Wissel |
| 1 | 1 | 0 | Wissel |
* Gestuurde T-flipflop of Gestuurde Toggle-flipflop. Er is één data-ingang T. Alleen als de T=1, verandert de uitgang bij elke actieve flank. $Q_{n+1}=[T{\overline {Q}}+{\overline {T}}Q]_{n}$
D-flipflop :
| Huidige toestand | Volgende toestand | Functie |
| D | Q$_{n+1}$ | Functie |
| 0 | 0 | Data doorlaten |
| 1 | 1 | Data doorlaten |
* De D-flipflop of Dataflipflop heeft één data-ingang D. De toestand van D wordt bij iedere actieve flank overgenomen door de uitgang.
    ${\begin{matrix}Q_{n+1}=D_{n}\end{matrix}}$
JK-flipflop :
| Huidige toestand | Huidige toestand | Huidige toestand | Volgende toestand | Functie |
| J | K | Q$_n$ | Q$_{n+1}$ | Functie |
| 0 | 0 | 0 | 0 | Verander niet |
| 0 | 0 | 1 | 1 | Verander niet |
| 0 | 1 | 0 | 0 | Reset |
| 0 | 1 | 1 | 0 | Reset |
| 1 | 0 | 0 | 1 | Set |
| 1 | 0 | 1 | 1 | Set |
| 1 | 1 | 0 | 1 | Wissel |
| 1 | 1 | 1 | 0 | Wissel |
* De JK-flipflop heeft data-ingangen J en K.
    $Q_{n+1}=[J{\overline {Q}}+{\overline {K}}Q]_{n}$
SR-flipflopmet overheersende reset :
| Huidige toestand | Huidige toestand | Huidige toestand | Volgende toestand | Functie |
| S | R | Q$_n$ | Q$_{n+1}$ | Functie |
| 0 | 0 | 0 | 0 | Verander niet |
| 0 | 0 | 1 | 1 | Verander niet |
| 0 | 1 | 0 | 0 | Reset |
| 0 | 1 | 1 | 0 | Reset |
| 1 | 0 | 0 | 1 | Set |
| 1 | 0 | 1 | 1 | Set |
| 1 | 1 | 0 | 0 | Reset (verboden toestand) |
| 1 | 1 | 1 | 0 | Reset (verboden toestand) |
* SR-flipflop: Deze flipflop heeft data-ingangen Set (S) en Reset (R) met overheersende reset.
    $Q_{n+1}=[{\overline {R}}(S+Q)]_{n}$
    Deze flipflop is niet als losse component in de handel. Indien de ongebruikelijke toestand S=R=1 wordt vermeden, kan hiervoor de JK-flipflop worden gebruikt. Set en Reset samen actief is echter een verboden toestand.
SR-flipflop met overheersende set :
| Huidige toestand | Huidige toestand | Huidige toestand | Volgende toestand | Functie |
| S | R | Q$_n$ | Q$_{n+1}$ | Functie |
| 0 | 0 | 0 | 0 | Verander niet |
| 0 | 0 | 1 | 1 | Verander niet |
| 0 | 1 | 0 | 0 | Reset |
| 0 | 1 | 1 | 0 | Reset |
| 1 | 0 | 0 | 1 | Set |
| 1 | 0 | 1 | 1 | Set |
| 1 | 1 | 0 | 1 | Set |
| 1 | 1 | 1 | 1 | Set |
* of een variant met overheersende set:
    $Q_{n+1}=[S+{\overline {R}}Q]_{n}$
Alle data-ingangen kunnen ook in geïnverteerde vorm voorkomen. Als bijkomstigheid kunnen alle typen asynchrone ingangen bezitten. Deze grijpen direct in op de uitgangen, dus onafhankelijk van de klokingang. Zo'n schakeling is een combinatie van een flipflop en een set-reset-element.

## Flank

Bij het aansturen van de klokingang C is het van belang bij welke logische toestand de slaaf openstaat en de meester niet. Er zijn twee mogelijkheden:
* De uitgang kan veranderen tijdens een C-transitie van 0 naar 1 (positieve actieve flank);
* Een negatieve actieve flank betekent dat de uitgang kan veranderen tijdens een C-transitie van 1 naar 0.

## Elektronische implementatie

Flipflops worden, meestal in groepen en in combinatie met andere logische schakelingen, als geïntegreerde schakeling, uitgevoerd. Meestal is het positieve logica; een logische 1 correspondeert met een hoge spanning. Het type 7474 uit de TTL-serie 74xx is een voorbeeld van een dubbele D-flipflop.

## Verwarring

Het woord flipflop wordt soms als verzamelnaam voor alle bistabiele elementen (bistabiele multivibratoren) gebruikt. Het gaat hierbij om asynchrone geheugens, (transparante) latches en flipflops in de zin van dit artikel. Databladen noemen doorgaans alleen de flankgevoelige elementen flipflops.