24.8. Flip-flop Toggle
24.8. Flip-flop Toggle
Flip-flop-urile Toggle sunt circuite logice secvențiale utilizate frecvent ca elemente de stocare bistabile pe un singur bit în contoare, dispozitive de memorie sau ca divizoare de frecvență ca răspuns la un impuls de tact.
Toggle Flip-flop este un alt tip de circuit logic secvențial bistabil bazat în jurul circuitul flip-flop JK tactat precedent. Flip-flop-ul toggle poate fi folosit ca element digital de bază pentru stocarea unui bit de informații, ca divizor de divide-cu-doi sau ca un contor. Flip-flop-urile toggle au o singură intrare și una sau două ieșiri complementare de Q și Ǭ care schimbă starea pe frontul pozitiv (frontul ascendent) sau frontul negativ (frontul descendent) al unui semnal de ceas de intrare sau al unui impuls.
Toggle flip-flops, TFF sau pur și simplu „T-type flip-flops” nu sunt disponibile comercial ca un cip logic dedicat TTL sau CMOS, pot fi construite cu ușurință conectând împreună intrările J și K ale unui flip-flop JK de bază unde intrarea J se comportă ca o comandă Set (S), și intrarea K se comportă ca o comandă Reset (R). Ne amintim din tutorialul nostru anterior că flip-flop-ul JK este un flip-flop asincron, în care starea sa de intrare (HIGH sau LOW) și starea sa stabilă curentă, determină ambele următoarea sa stare de comutare.
Flip-flop-ul JK poate fi clasificat ca un flip-flop „universal” deoarece poate fi configurat și utilizat pentru a reproduce acțiunea de comutare a altor tipuri de flip-flop în funcție de stările logice aplicate intrărilor sale J și K. Dar, înainte de a ne uita la flip-flop-urile de tip T mai detaliat, să ne reamintim mai întâi circuitul de bază al flip-flop-ului JK și acțiunea de comutare.
Circuit de bază Flip-flop JK folosind porți NAND
Circuitul de mai sus arată configurația de bază a unui flip-flop JK folosind patru porți NAND, dar acesta ar putea fi construit și folosind porți NOR. Flip-flop-ul JK are trei intrări etichetate J, K și ceasul (CLK). Intrarea de date J, (care corespunde la Set) se aplică împreună cu feedback-ul de la Ǭ la poarta NAND superioară cu 3 intrări, în timp ce cealaltă intrare de date K, (care corespunde lui Reset) și conexiunea de feedback Q sunt aplicate la poarta NAND inferioară cu 3 intrări.
Dacă intrările J și K sunt ambele LOW, (J = K = 0), atunci nu va exista nicio modificare în Q, indiferent de câte ori este aplicat pulsul de ceas. Dacă J = 0 (LOW) și K = 1 (HIGH) următorul front de tact resetează ieșirea Q LOW (Q = 0). Dacă J = 1 și K = 0, atunci următorul front de tact setează ieșirea Q HIGH (Q = 1).
Tabel de caracteristici pentru funcția JK
unde: X înseamnă „nu-mi pasă”, un „0” sau un „1”, iar _↑¯ este frontul ascendent pozitiv al impulsului de tact.
Atunci putem defini această acțiune de comutare în formă booleană ca fiind:
Unde: Q reprezintă starea de echilibru actuală a flip-flop-ului și Q+1 este următoarea stare de comutare.
Problema aici este că, dacă ambele intrări de date J și K sunt la „1” logic, HIGH în același timp (J = K = 1), când intrarea de ceas (CLK) merge HIGH, ieșirile sale comută și schimbă starea complementând reciproc. Dar, deoarece ieșirile sunt trimise înapoi, ieșirile se vor schimba continuu după ce vor fi complementate o dată, determinând ieșirea de la Q să oscileze între setare și resetare. Deci, flip-flop-urile JK nu sunt construite folosind configurațiile de bază NAND sau NOR, așa cum se arată, ci sunt construite pentru a forma flip-flop-uri master-slave mai avansate (declanșate de front), care sunt mai stabile.
Flip-flop Toggle
În timp ce flip-flop-ul Data (D) este o variație a unui flip-flop SR cu ceas, construit folosind fie porți NAND, fie NOR, flip-flop-ul Toggle (T) este o variație a flip-flop-ului JK cu ceas. Flip-flopul de tip T sau toggle își are numele din faptul că cele două ieșiri Q și Ǭ se inversează de la starea lor anterioară, deoarece comută înainte și înapoi de fiecare dată când este declanșat (T = 1).
Adică, ieșirile Q și Ǭ se schimbă la un „1“ dacă au fost „0“, și „0“ în cazul în care au fost anterior un „1“ , dar numai atunci când intrarea „T“se schimbă HIGH, în caz contrar nu se schimbă, și această acțiune de comutare asincronă ne interesează aici.
JK este redenumit T pentru flip-flop tip-T sau Toggle și este în general reprezentat de simbolul logic sau grafic prezentat. Simbolul schematic Toggle are două intrări disponibile, una reprezintă intrarea „comutare” (T) și cealaltă intrarea „ceas” (CLK).
De asemenea, la fel ca și flip-flop-ul JK 74LS73, tipul T poate fi configurat și pentru a avea o intrare de activare numită EN (enable) sau CE (clock enable = activare cu ceas) care îi permite să păstreze ultima stare de date stocată pe ieșirile sale la nesfârșit. Astfel, cu setarea de intrare clock enable, aplicarea oricăror impulsuri de ceas noi previne comutarea ieșirilor. Dar această caracteristică „enable”, dacă este necesară, trebuie implementată folosind porți logice suplimentare.
Triunghiul simbolului de pe intrarea oricărui tip de flip-flop de tip T indică faptul că este un dispozitiv declanșat de front. Dacă există o mică bulă sau cerc la intrare, atunci aceasta indică faptul că flip-flopul comută pe frontul descendent negativ (HIGH-to-LOW) al fiecărui impuls, în caz contrar, schimbă starea pe frontul de tranziție pozitivă sau crescător (LOW-to-HIGH) pentru fiecare impuls de intrare.
Atunci, putem crea circuitul logic al unui flip-flop de comutare pe un singur bit utilizând flip-flop-ul de bază JK prin conectarea intrărilor de date J și K împreună, unde punctul comun de la conexiunea celor două intrări este desemnat T, așa cum se arată.
Toggle Flip-flop
Să presupunem că inițial CLK și intrarea T sunt ambele LOW (CLK = T = 0) și că ieșirea Q este HIGH (Q = 1). La frontul ascendent sau descendent al unui impuls CLK, condiția „0” logic prezentă la T împiedică ieșirea la Q să schimbe starea. Astfel, ieșirea rămâne neschimbată când T = 0.
Acum să presupunem că intrarea T este HIGH (T = 1) și CLK este LOW (CLK = 0). La frontul ascendent (presupunând tranziție pozitivă) al unui impuls CLK la momentul t1, ieșirea la Q schimbă starea și devine LOW, făcând Ǭ HIGH. Tranziția negativă a impulsului de ceas de la HIGH la LOW la timpul t2 nu are niciun efect asupra ieșirii la Q, deoarece flip-flop-ul este resetat într-o stare stabilă.
La următorul front ascendent al semnalului de ceas la timpul t3 ,„1” logic la T trece la Q, schimbându-și starea, făcând din nou ieșirea Q HIGH. Tranziția negativă a impulsului CLK la momentul t4 de la HIGH la LOW nu are niciun efect asupra ieșirii. Astfel, ieșirea Q a flip-flop-ului „comută” la fiecare front pozitiv (pentru acest exemplu) al impulsului CLK.
Tabel de caracteristici pentru funcția de comutare (toggle)
Atunci putem defini acțiunea de comutare a flip-flop-ului în formă booleană ca fiind:
Unde: Q reprezintă starea de echilibru actuală a flip-flop-ului și Q+1 este următoarea stare de comutare.
Este posibil să fi observat că ecuația caracteristică dată în formă booleană pentru flip-flop-ul toggle de mai sus va produce o ieșire HIGH pentru următoarea stare (Q+1) dacă cele două intrări ale lui T și Q sunt diferite și o ieșire LOW dacă aceste intrări sunt aceleași.
Această idee de Q+1 este HIGH doar atunci când oricare dintre intrări este HIGH, dar nu și atunci când ambele intrări sunt HIGH, adică fiecare intrare, dar nu ambele, reprezintă aceeași expresie de algebră booleană a unei funcții Exclusive-OR care este dată ca:
Atunci putem reprezenta acțiunea de comutare a unui flip-flop de comutare utilizând o poartă Exclusive-OR (Ex-OR) cu 2 intrări.
Conversia flip-flop-ului JK în flip-flop de tip D.
Pe lângă flip-flop-ul JK bistabil, putem produce și o acțiune de comutare folosind flip-flop-ul de tip-D sau Delay construit dintr-o simplă modificare a unui circuit JK cu ceas. Flip-flopul de tip-D are două intrări, D (date) și CLK (ceas) și schimbă starea ca răspuns la o tranziție de front pozitivă sau negativă pe intrarea ceasului. Flip-flopul de tip-D poate fi, de asemenea, utilizat pentru a furniza stocarea temporară a unui bit de informații, la fel ca și flip-flop-ul toggle.
Adăugarea unui inversor (poartă NOT) între terminalele J și K și înlocuirea acestora cu o singură intrare D (pentru date), înseamnă că nu pot avea niciodată aceeași valoare digitală, deoarece dacă intrarea J = 0, atunci K = 1, la fel dacă J = 1, atunci K = 0. Avantajul este că includerea inversorului între J și K are ca rezultat valoarea de ieșire la Q ce urmărește valoarea de intrare D (0 sau 1) ori de câte ori ceasul (Clk) este HIGH, „1” logic și o putem arăta în tabelul de comutare de mai jos.
Tabel de caracteristici pentru funcția de tip D.
unde Q este starea actuală și Q + 1 este următoarea stare, după aplicarea unui singur impuls de ceas. Atunci putem defini acțiunea de comutare a flip-flop-ului de tip D în formă booleană ca fiind:
Q + 1 = D
Astfel, starea de echilibru a ieșirii sale comută doar HIGH sau LOW de fiecare dată când intrarea sa de ceas este pulsată, dacă și numai dacă există o modificare a intrării de date (D). Aceasta este configurația flip-flop de tip-D care permite ieșirii de la Q să aibă aceeași stare de staționare ca și intrarea D atunci când este tactată HIGH. Dezavantajul aici este că avem nevoie de două intrări separate, D și Clk pentru a-l comuta. Atunci, avem nevoie de o modalitate de a face ca ieșirea sa Q să se schimbe în starea opusă, adică comutarea, cu aplicarea fiecărui impuls de ceas.
Conversia flip-flopului de tip D în Toggle Flip-flop
Am văzut mai sus că expresia boolean dată pentru acțiunea de comutare a unui flip-flop toggle poate reprezenta cea a unui porți OR exclusiv deoarece Q+1 = Q⊕T. Atunci putem adăuga o poartă logică OR exclusiv pentru a converti flip-flopul de tip-D într-un flip-flop de tip-T așa cum se arată.
Tabel de caracteristici pentru flip-flopul Toggle
Aici, „T” devine una dintre intrările unei porți exclusive-OR cu 2 intrări, în timp ce ieșirea Q este trimisă înapoi pentru a deveni cealaltă. Astfel T și Q sunt ambele intrări la poarta Ex-OR pentru a produce expresia booleană necesară pentru a comanda intrarea D. Dacă T = 0, ieșirea porții exclusive-OR care este Q⊕T va fi și LOW (0), astfel încât flip-flop-ul tip-D rămâne fixat într-o stare stabilă.
Dar, când T = 1, OR-exclusiv produce o schimbare de stare la D de fiecare dată când flip-flop-ul de tip-D este tactat deoarece ieșirea Q, care este trimisă înapoi la poartă, comută între HIGH și LOW la fiecare impuls de ceas, făcându-l foarte util ca element bistabil atunci când urmează să fie stocat un singur bit de date.
Deoarece această configurație poate păstra doar starea sa neschimbată sau complementul stării sale, nu există nicio modalitate de a stabili o stare de ieșire inițială fie HIGH, fie LOW atunci când puterea este aplicată pentru prima dată, fără a adăuga intrări Preset (Pre) sau Clear (Clr) suplimentare sau circuite externe, pentru a inițializa sau seta ieșirea Q la o stare cunoscută.
De asemenea, deoarece ieșirea la Q schimbă starea pe frontul ascendent al fiecărui impuls de ceas, perioada de timp a ieșirii la Q va fi egală cu jumătate din frecvența impulsului de ceas. Aceasta este acțiunea de comutare a flip-flop-ului de tip-T ce creează un circuit divide-la-doi, care are o ieșire cu un raport Mark-to-Space 1:1 (50%), deoarece perioada LOW și perioada HIGH a ieșirii Q sunt egale ca lungime. Aceasta înseamnă că flip-flop-urile toggle sunt foarte utile ca contoare binare simple sau contoare ripple pentru divizarea frecvenței (reducerea frecvenței unei forme de undă periodice) în care „n” etaje de flip-flop toggle sunt conectate împreună în serie.