
Flip-flop ya da iki durumlu devre (İngilizce: flip-flop), iki kararlı durumdan birinde kalabilen ve besleme gerilimi sürdükçe bu durumu koruyarak bir bit bilgi saklayan sayısal devredir. Kısaca FF diye gösterilir. Kimi terim sözlüklerinde yazboz karşılığı da verilir. Mantık kapılarından kurulan flip-floplar sıralı mantık devrelerinin temel bellek öğeleridir; yazmaçlar, sayaçlar ve sonlu durum makineleri flip-floplardan oluşur.
Flip-flopun durumu saat işaretiyle değişir. Saat işaretinin 0'dan 1'e geçtiği anda tetiklenen devreye yükselen kenar tetiklemeli, 1'den 0'a geçtiği anda tetiklenen devreye düşen kenar tetiklemeli denir. Saat belli bir düzeyde kaldığı sürece çıkışı girişi izleyen devreye ise düzey tetiklemeli denir; mandallar bu türdendir. Başlıca flip-flop türleri D, JK ve T flip-floplarıdır.
Tarihsel olarak flip-flop terimi, bir bitlik veriyi mantık kapılarıyla saklayan düzey tetiklemeli ve kenar tetiklemeli devrelerin tümü için kullanılmıştır. Çağdaş yazarlar flip-flop terimini yalnız kenar tetiklemeli bellek öğeleri için, latch (mandal) terimini ise düzey tetiklemeli olanlar için kullanır. "Kenar tetiklemeli" ve "düzey tetiklemeli" terimleri belirsizliği önlemek için kullanılabilir. Türkçe kaynaklarda düzey tetiklemeli öğeye mandal (İngilizce: latch), kimi kaynaklarda tutucu denir. Kenar tetiklemeli flip-flopun en yaygın yapısı, biri ötekini izleyen iki mandaldan oluşan ana-uydu flip-floptur (İngilizce: master-slave flip-flop).
Flip-floplar ve mandallar çoğunlukla bir kılıfta birden çok öğe taşıyan tümleşik devreler olarak üretilir. Örneğin 7400 serisindeki 74HC75 yongası dört saydam mandal taşır.


| S | R | Q | İşlem |
|---|---|---|---|
| 0 | 0 | Qönceki | koru |
| 0 | 1 | 0 | sıfırla |
| 1 | 0 | 1 | birle |
| 1 | 1 | 0 | geçersiz |
En yalın bellek devresi, çıkışları çapraz olarak birbirinin girişine bağlanan iki VEYA DEĞİL kapısından kurulan SR mandalıdır. S (İngilizce: set) girişi 1 yapıldığında Q çıkışı 1 olur ve mandal birlenir; R (İngilizce: reset) girişi 1 yapıldığında Q çıkışı 0 olur ve mandal sıfırlanır. İki giriş de 0 iken devre önceki durumunu korur; mandalı bir bellek öğesi yapan bu durumdur. S ve R birlikte 1 yapılırsa iki çıkış da 0 olur ve Q ile Q̄ birbirinin tümleyeni olmaktan çıkar; bu giriş birleşimi bu yüzden geçersiz sayılır. SR mandalının davranışı Qn+1 = S + R̄·Qn karakteristik denklemiyle özetlenir.
Aynı mandal iki VE DEĞİL kapısıyla da kurulur. Bu biçimde girişler etkin düşüktür: girişler normalde 1'de tutulur, S̄ girişi kısa süre 0 yapıldığında Q çıkışı 1 olur, R̄ girişi 0 yapıldığında 0 olur. Texas Instruments'ın SN74LS279A yongası tek bir kılıfta dört S̄R̄ mandalı taşır; veri sayfasına göre iki giriş birlikte 0 yapılmamalıdır, yoksa Q çıkışı öngörülemez olur. Veri sayfası bu devreleri "S-R flip-flop mandalları" diye anar; ad karışıklığının yongaların belgelerine de yansıdığını gösterir.

| E | D | Q |
|---|---|---|
| 0 | – | Qönceki |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
SR mandalının geçersiz durumunu önlemenin bir yolu, iki girişi tek bir veri girişinden türetmektir. D mandalında bir D (veri) girişi ile bir etkinleştirme (E) ya da saat girişi vardır. E = 1 iken mandal saydamdır: D girişi doğrudan Q çıkışına geçer. E = 0 olunca mandal kapanır ve son değerini tutar. D mandalı bir SR mandalından kurulur: iki VE kapısı S = D·E ve R = D̄·E girişlerini üretir, böylece S ile R hiçbir zaman birlikte 1 olamaz. D mandalının karakteristik denklemi, etkinleştirme girişi 1 iken Qn+1 = D olur.

| Saat | D | Q |
|---|---|---|
| ↑ | 0 | 0 |
| ↑ | 1 | 1 |
| 0 ya da 1 | – | Qönceki |
D flip-flop, saat işaretinin yükselen kenarında D girişindeki değeri Q çıkışına aktarır ve bu değeri bir sonraki yükselen kenara dek tutar. Kenarlar arasında D ne kadar değişirse değişsin Q değişmez. Karakteristik denklemi Qn+1 = D olur. Aynı saate bağlanan birden çok D flip-flop bir yazmaç oluşturur. Devre şemalarında saat girişi küçük bir üçgenle gösterilir; üçgen, girişin saatin kenarında etkin olduğunu belirtir.
Kenar tetiklemeli D flip-flop, birbirinin tümleyeni olan saatlerle sürülen iki D mandalının art arda bağlanmasıyla kurulur. Saat 0 iken ana mandal saydamdır ve D'yi izler, uydu mandal kapalıdır. Saat 1'e geçtiğinde ana mandal kapanır, uydu mandal saydam olur ve ana mandalın o anda tuttuğu değeri çıkışa aktarır. Böylece çıkış yalnız saatin yükselen kenarında değişir.

Aynı D ve saat işaretleri verildiğinde D mandalının çıkışı saat 1 kaldığı sürece girişi izler; D flip-flopun çıkışı ise yalnız yükselen kenarlardaki değeri alır.
Yongalardaki D flip-floplar çoğunlukla saatten bağımsız çalışan eşzamansız birleme ve sıfırlama girişleri de taşır. Eşzamanlı sıfırlamada flip-flop yalnız saat kenarında sıfırlanır, eşzamansız sıfırlamada ise sıfırlama girişi etkin olur olmaz sıfırlanır. Texas Instruments'ın SN74HC74 yongasındaki iki D flip-flopta bu girişler etkin düşüktür: birleme girişi 0 yapıldığında Q saati beklemeden 1 olur, sıfırlama girişi 0 yapıldığında 0 olur. İki giriş birlikte 0 yapılırsa iki çıkış da 1 olur; veri sayfasına göre bu durum kalıcı değildir ve girişler yeniden 1 yapıldığında sürmez.
| J | K | Qn+1 | İşlem |
|---|---|---|---|
| 0 | 0 | Qn | koru |
| 0 | 1 | 0 | sıfırla |
| 1 | 0 | 1 | birle |
| 1 | 1 | Q̄n | tersle |
JK flip-flop iki girişlidir ve SR mandalına benzer: J girişi birleme, K girişi sıfırlama işi görür. SR mandalından farkı, iki girişin birlikte 1 yapılmasının geçersiz sayılmamasıdır; J = K = 1 iken flip-flopun durumu her etkin saat kenarında terslenir. Bu davranış, SR mandalının girişlerine Q ve Q̄ çıkışlarından geri besleme verilerek elde edilir. Karakteristik denklemi Qn+1 = J·Q̄n + K̄·Qn olur. Texas Instruments'ın SN74HC112 yongası, saatin düşen kenarında tetiklenen ve eşzamansız birleme ile sıfırlama girişleri taşıyan iki JK flip-flop içerir.
T flip-flop tek bir T girişi taşır. T = 1 iken durumu her etkin saat kenarında terslenir, T = 0 iken durumunu korur; karakteristik denklemi Qn+1 = T ⊕ Qn olur. Bir JK flip-flopun J ve K girişleri birbirine bağlanarak T flip-flop elde edilir. T girişi sürekli 1 tutulan flip-flopun çıkışı saat sıklığının yarısında salınır; devre bu yüzden ikiye bölen sayaç olarak kullanılır.

Bir flip-flopun girişini doğru yakalaması için D girişi saatin etkin kenarından önce ve sonra belli bir süre değişmemelidir. Kenardan önceki bu süreye kurulum süresi (tkurulum), kenardan sonraki süreye tutma süresi (ttutma) denir. Saat kenarından sonra çıkışın yeni değerinde kararlı hâle gelmesi için geçen en uzun süre ise yayılma gecikmesidir (tyayılma).
| Büyüklük | En az | Tipik | En çok |
|---|---|---|---|
| kurulum süresi | 20 ns | – | – |
| tutma süresi | 0 ns | – | – |
| yayılma gecikmesi | – | 20 ns | 35 ns |
| saat sıklığı | 31 MHz | 50 MHz | – |
Bir flip-flopun çıkışı birleşik mantıktan geçip başka bir flip-flopun girişine varıyorsa, saat çevrimi Tc ≥ tyayılma + tmantık + tkurulum koşulunu sağlamalıdır; burada tmantık aradaki mantığın en uzun gecikmesidir. Bu koşul devrenin çalışabileceği en yüksek saat sıklığını belirler. Tutma süresi ise yolun en kısa gecikmesine bir alt sınır koyar: çıkışın saat kenarından sonra değişmeye başlayabileceği en kısa süre ile mantığın en kısa gecikmesinin toplamı tutma süresinden büyük olmalıdır. Bu ikinci koşul sağlanmazsa devre hiçbir saat sıklığında güvenilir çalışmaz.
Örneğin yayılma gecikmesi 50 ps, kurulum süresi 60 ps olan iki flip-flop arasında gecikmesi 105 ps olan bir mantık yolu varsa saat çevrimi en az 215 ps, saat sıklığı en çok 4,65 GHz olur. Aynı devrede çıkışın değişmeye başlayabileceği en kısa süre 30 ps, mantığın en kısa gecikmesi 25 ps ve tutma süresi 70 ps ise toplam 55 ps tutma süresinin altında kalır ve devre saat sıklığı ne olursa olsun güvenilir çalışmaz. Yongaların veri sayfaları bu değerleri besleme gerilimine ve sıcaklığa göre verir; SN74HC74 yongasında gerilim 4,5 V'tan 2 V'a indiğinde kurulum süresi 20 ns'den 100 ns'ye çıkar.

Bir flip-flopun iki kararlı durumunun (0 ve 1) arasında bir de yarı kararlı durum vardır. Giriş, kurulum ve tutma sürelerinin oluşturduğu aralıkta değişirse flip-flop bu duruma düşebilir: çıkış 0 ile 1 arasında bir düzeyde kalır ve kararlı değerlerden birine ne zaman döneceği önceden bilinemez. Kullanıcı düğmeleri ya da ayrı saatlerle çalışan sistemler arasında taşınan işaretler gibi saatten bağımsız girişler kaçınılmaz olduğu için bu durum tasarımda göz önüne alınmak zorundadır.
Thomas Chaney ve Charles Molnar 1973'te flip-flopların tanımsız giriş koşullarında salındığını ve yarı kararlı durumda kaldığını gösteren gözlemler yayımladı. Makaleye göre 1972'de Washington Üniversitesi'nde düzenlenen bir çalıştayda, birkaç üreticinin bilgisayar sistemlerinde birbirinden bağımsız saatlerle çalışan alt sistemler arasındaki güvenilmez etkileşim yüzünden önemli oranda arıza görüldüğü ortaya çıkmıştı. Yazarlar bu sorunun temelde kaçınılmaz olduğunu ve tasarımcılarca yeterince bilinmediğini vurguladı.
Flip-flopun yarı kararlı durumda kalma olasılığı beklenen süreyle üstel olarak azalır. Giriş rastgele bir anda değişiyorsa çıkışın t süre sonra hâlâ kararsız olma olasılığı P = (T0/Tc)·e−t/τ olur; burada Tc saat çevrimi, τ devrenin yarı kararlı durumdan ne hızla uzaklaştığını belirleyen zaman sabiti, T0 da devreye özgü bir sabittir. Bu yüzden saatten bağımsız bir giriş çoğunlukla art arda bağlanmış iki flip-floptan oluşan bir eşzamanlama devresinden geçirilir. İlk flip-flop girişi örnekler; ikincisi ilk flip-flopun çıkışını bir çevrim sonra örnekler. Böylece ilk flip-flopun çıkışına kararlı hâle gelmesi için neredeyse bir tam çevrim tanınmış olur. Eşzamanlama devresi arıza olasılığını düşürür ama sıfıra indiremez.
Bir eşzamanlama devresinin güvenilirliği ortalama arızalar arası süreyle ölçülür. Örneğin 500 MHz saatle çalışan, τ = 200 ps ve T0 = 150 ps olan bir devreye saniyede 10 kez değişen bir giriş gelirse ortalama arızalar arası süre yaklaşık 5 saattir. Texas Instruments'ın bir uygulama notunda, ortalama 10 kHz sıklıkta gelen kesme isteklerini tek bir SN74ALS74 flip-flopuyla eşzamanlayan bir devre için bu süre 54 dakika hesaplanmış, ikinci bir flip-flop eklendiğinde yaklaşık 2 milyon yıla çıktığı gösterilmiştir.

CMOS tümleşik devrelerde mandallar çoğunlukla geçiş kapılarıyla kurulur. Geçiş kapısı, birbirinin tümleyeni olan iki saat işaretiyle sürülen bir anahtardır: saatin bir düzeyinde iki ucunu birbirine bağlar, öteki düzeyinde ayırır. Tek bir transistörden oluşan anahtarın tersine iletirken eşik gerilimi kadar gerilim kaybettirmez; karşılığında saatin tümleyenine de gerek duyar. 1970'lerde mandallar tek bir transistörle kuruluyordu. Bu mandallar küçüktü ve saate az yük bindiriyordu, ama eşik gerilimi kadar kayıp yaşatıyor, değeri güçlendirmiyor ve tuttuğu değeri ancak kısa bir süre koruyabiliyordu.
Geçiş kapısının ardına bir evirici eklenmesi değeri güçlendirir. Saat kapalıyken değerin kaybolmaması için çıkıştan girişe, saatin öteki düzeyinde açılan ikinci bir yol üzerinden geri besleme verilir; böyle mandallar değerlerini saat durduğunda da korudukları için durağandır. Sızıntı akımları arttıkça durağan mandallar zorunlu hâle gelmiştir. Bir flip-flop, arka arkaya bağlanmış bu türden iki mandaldan kurulur. Etkinleştirme girişi ya mandalın önüne bir çoklayıcı konarak ya da saat durdurularak eklenir; ilki mandalın gecikmesini, ikincisi etkinleştirme girişinin kurulum süresini artırır. Sıfırlama girişi eşzamanlı ya da eşzamansız olarak eklenebilir.
Aynı çapraz bağlı evirici çifti durağan rastgele erişimli belleğin (SRAM) de temelidir: SRAM her biti çapraz bağlanmış iki eviricide saklar, DRAM ise bir kapasitörde.
Flip-floplar eşzamanlı ardışıl devrelerin yapı taşıdır. Böyle bir devrede her döngüsel yol en az bir yazmaçtan geçer, bütün yazmaçlar aynı saati alır ve sistemin durumu saat kenarında değişir. Eşzamanlı ardışıl devrelerin en yaygın iki örneği sonlu durum makineleri ve boru hatlarıdır. Bir sonlu durum makinesi, o anki durumu tutan bir durum yazmacı ile bir sonraki durumu ve çıkışları hesaplayan birleşik mantıktan oluşur; durum yazmacı yeni durumu saat kenarında yükler. İşlemcilerin boru hattında aşamaları birbirinden ayıran boru hattı yazmaçları da flip-floplardan kurulur.
Flip-floplardan kurulan başka yapı taşları da vardır. Bir sayaç her saat kenarında değerini bir artırır; sayısal saat göstergeleri ve işlemcinin o anda yürüttüğü buyruğu izleyen program sayacı bunun örnekleridir. Bir kaydırmalı yazmaç ise her saat kenarında içeri bir bit alıp dışarı bir bit verir ve seri gelen veriyi koşut veriye çevirebilir. Tek bir flip-flop da iş görür: SN74HC74 yongasının veri sayfası, yonganın uygulamaları arasında bir saat işaretini ikiye ya da dörde bölmeyi ve basılı tutulduğu sürece çalışan bir düğmeyi bir basışta açılıp ikinci basışta kapanan bir düğmeye çevirmeyi sayar.
| Yonga | İçerik | Tetikleme |
|---|---|---|
| 74HC74 | iki D flip-flop, eşzamansız birleme ve sıfırlama | yükselen kenar |
| 74HC574 | sekiz D flip-flop, üç durumlu çıkışlar | yükselen kenar |
| 74HC112 | iki JK flip-flop, eşzamansız birleme ve sıfırlama | düşen kenar |
| 74HC73 | iki JK flip-flop, eşzamansız sıfırlama | düşen kenar |
| 74HC573A | sekiz D mandalı, üç durumlu çıkışlar | düzey |
| 7475 | dört bitlik mandal | düzey |
Flip-floplar ve mandallar, 7400 ailesi gibi mantık ailelerinde bir kılıfta birkaç öğe taşıyan yongalar olarak da üretilir. 74HC573A ile 74HC574 benzer işler için kullanılır ama davranışları ayrıdır: 74HC573A'daki mandallarda çıkış, mandal etkinleştirme girişi 1 kaldığı sürece D girişini izler; 74HC574'teki flip-floplar ise D'yi yalnız saatin yükselen kenarında alır. Veri sayfalarına göre iki yonga da üç durumlu çıkışları sayesinde yol hatlarını doğrudan sürebilir ve ara bellek yazmaçları, giriş/çıkış kapıları ve çalışma yazmaçları kurmaya uygundur. 7475 yongası bir kılıfta dört bitlik iki durumlu mandal taşır. 74HC112 ve 74HC73 yongalarındaki JK flip-floplar saatin düşen kenarında tetiklenir.
İngiliz fizikçiler William Eccles ve Frank Wilfred Jordan, iki vakum tüplü bir tetikleme rölesi için 21 Haziran 1918'de İngiltere'de patent başvurusunda bulundu; Improvements in ionic relays başlıklı patent 5 Ağustos 1920'de yayımlandı. İkili devreyi 1919'da British Association'ın Bournemouth toplantısında sundu ve aynı yıl The Electrician ile The Radio Review dergilerinde yayımladı. Makalede devre, küçük bir elektriksel tetikleme darbesiyle elektriksel dengesinde büyük bir değişiklik geçiren ve yeniden kurulana dek bu yeni durumda kalan "tek vuruşlu bir röle" olarak tanımlanır. Rölede her birinin anot devresinde bir direnç bulunan iki tüp dirençlerle birbirine bağlanır; birinci tüpün ızgarasına verilen uyarı onun anot akımını artırırken ikinci tüpün akımını azaltır.
1950'de yayımlanan bir hesap makineleri el kitabına göre flip-flop ilkesi 1919'dan beri biliniyordu, ancak tam ölçekli bir sayısal hesap makinesinde kullanılması yaklaşık yirmi yıl sonra gerçekleşti. Flip-flop, İkinci Dünya Savaşı'nda Alman şifrelerini çözmek için kullanılan Colossus'a ve ABD'de ENIAC'a girdi. Herman ve Adele Goldstine'in 1946'daki tanıtım yazısına göre ENIAC'ın temel elektronik bellek aygıtı flip-floptu. Her flip-flop, aynı anda yalnızca biri iletimde olan bir çift triyottan oluşuyordu. ENIAC'ın sayaçlarının her aşaması bir flip-floptu ve bütün sayaçlar, son aşaması ilk aşamaya bağlı halka sayaçlardı.
Hughes Aircraft adına 8 Eylül 1953'te başvurulan ve 2 Eylül 1958'de verilen, Eldred C. Nelson'ın buluşu olan bir ABD patenti, girişleri j ve k diye adlandırılan bir flip-flop tanımlar: iki girişe ayrı ayrı uygulanan işaretler flip-flopu 1 ya da 0 durumuna getirir, ikisine birlikte uygulanan işaret ise durumunu değiştirir. Texas Instruments, Jack Kilby'nin tümleşik devre kavramını Mart 1959'da duyurdu ve Mart 1960'ta ilk ticari ürünü olarak Type 502 ikili flip-flopu tanesi 450 dolara piyasaya sürdü.