24.1. Circuite logice secvențiale
24.1. Circuite logice secvențiale
Circuitele de logică secvențială utilizează flip-flop-uri ca elemente de memorie și în care ieșirea lor depinde de starea de intrare.
Spre deosebire de circuitele de logică combinațională care schimbă starea în funcție de semnalele efective aplicate la intrările lor la acel moment, circuitele logice secvențiale au o formă de "memorie" inerentă, încorporată.
Aceasta înseamnă că circuitele logice secvențiale sunt capabile să țină seama de starea lor de intrare anterioară, precum și de cele prezente efectiv, un fel de efect "înainte" și "după" este implicat cu circuite secvențiale.
Cu alte cuvinte, starea de ieșire a unui "circuit logic secvențial" este o funcție de următoarele trei stări, "intrarea prezentă", "intrarea trecută" și/sau "ieșirea trecută". Circuitele logice secvențiale își amintesc aceste condiții și rămân fixe în starea lor actuală până când semnalul ceasului următor schimbă una dintre stări, oferind circuitelor logice secvențiale "Memorie".
Circuitele logice secvențiale sunt denumite în general ca dispozitive cu două stări sau bistabile care pot avea ieșirea sau ieșirile lor setate într-una din cele două stări de bază, un nivel logic "1" sau un nivel logic "0" și vor rămâne "latched" (blocate) pe termen nedefinit în această stare sau condiție actuală, până când se aplică un alt impuls sau semnal de declanșare pe intrare, ceea ce va determina bistabilul să-și schimbe starea încă o dată.
Reprezentarea logicii secvențiale
Cuvântul "secvențial" înseamnă că lucrurile se întâmplă într-o "secvență", una după alta și în circuitele logice secvențiale, semnalul real al ceasului determină când se vor întâmpla lucruri în continuare. Circuitele logice secvențiale simple pot fi construite din circuite bistabile standard, cum ar fi: Flip-flop, Latche și Counter și care, la rândul lor, pot fi realizate prin simpla conectare a porților universale NAND și/sau porți NOR într-un mod combinațional special pentru a produce circuitul secvențial necesar.
Flip-flop - circuit basculant bistabil sensibil la front
Latche - circuit basculant bistabil sensibil la nivel
Clasificarea logicii secvențiale
Deoarece porțile logice standard sunt blocuri de construcție a circuitelor combinaționale, Latche și Flip-flop sunt blocuri de bază ale circuitelor logice secvențiale. Circuitele logice secvențiale pot fi construite astfel încât să producă fie flip-flop-uri simple declanșate de front, fie circuite secvențiale mai complexe, cum ar fi registre de stocare, registre de deplasare, dispozitive de memorie sau contoare. În orice caz, circuitele logice secvențiale pot fi împărțite în următoarele trei categorii principale:
1. Event Driven - circuit asincron care schimbă starea imediat când este activat.
2. Clock Driven - circuit sincron care este sincronizat cu un anumit semnal de ceas.
3. Pulse Driven - care este o combinație a celor două și răspunde la impulsuri de declanșare.
Pe lângă cele două stări logice menționate mai sus, nivel logic "1" și nivel logic "0", este introdus un al treilea element care separă circuitele logice secvențiale de omoloagele lor logice combinaționale, și anume TIMPUL. Circuitele logice secvențiale revin la starea lor staționară inițială după resetare, iar circuitele secvențiale cu bucle sau căi de feedback sunt considerate a fi "ciclice" în natură.
Știm acum că, în circuitele secvențiale, modificările apar doar la aplicarea unui semnal de tact care îl face sincron, altfel circuitul este asincron și depinde de o intrare externă. Pentru a-și păstra starea lor actuală, circuitele secvențiale se bazează pe feedback și acest lucru are loc atunci când o fracțiune din ieșire este trimisă înapoi la intrare:
Buclă de feedback secvențial
Cele două inversoare sau porți NOT sunt conectate în serie cu ieșirea la Q, introdusă înapoi la intrare. Din păcate, această configurație nu modifică starea, deoarece ieșirea va fi întotdeauna aceeași, fie "1", fie "0", ea este setată permanent. Dar, putem vedea cum funcționează feedback-ul prin examinarea celor mai elementare componente logice secvențiale, numite flip-flop SR.
Flip-Flop SR
Flip-flop-ul SR, cunoscut și ca SR Latch, poate fi considerat ca fiind unul dintre cele mai de bază circuit logic secvențial posibil. Acest simplu flip-flop este în principiu un dispozitiv bistabil cu memorie pe un singur bit care are două intrări, una "SET" care va seta dispozitivul (adică ieșirea = "1") și este etichetată S și una "RESET" care va reseta dispozitivul (ceea ce înseamnă ieșire = „0“), etichetată R.
Atunci, descrierea SR înseamnă "Set-Reset". Intrarea de resetare readuce flip-flop-ul înapoi la starea inițială cu o ieșire Q care va fi la un nivel logic "1", sau logic "0" depinzând de această condiție de setare/resetare.
Un circuit flip-flop SR de bază cu porți NAND realizează feedback de la ambele sale ieșiri înapoi la intrările sale opuse și este utilizat în mod obișnuit în circuitele de memorie pentru a stoca un singur bit de date. Deci, flip-flop-ul SR are de fapt trei intrări Set, Reset și valoarea curentă de ieșire Q, referitoare la starea curentă sau istoricul său. Termenul "Flip-flop" se referă la funcționarea reală a dispozitivului, deoarece poate fi "flipped" într-o stare logică Set sau "flopped" înapoi în starea logică opusă Reset.
Flip-Flop SR cu porți NAND
Cea mai simplă modalitate de a realiza un flip-flop SR set-reset de 1 bit este să conectați împreună o pereche de porți NAND cu 2 intrări cuplate încrucișat, așa cum se arată, pentru a forma un Bistabil set-reset, cunoscut și ca un active LOW SR NAND Gate Latch, astfel încât să existe feedback de la fiecare ieșire către una dintre celelalte intrări de poartă NAND. Acest dispozitiv este format din două intrări, una numită Set, S și cealaltă numită Reset, R cu două ieșiri corespunzătoare: Q și inversul sau complementul lui Q (not-Q) după cum se arată mai jos.
Flip-flop SR de bază
Starea Set
Luați în considerare circuitul prezentat mai sus. Dacă intrarea R este la nivel logic „0“ (R = 0) și intrarea S este la nivel logic „1“ (S = 1), poarta NAND Y are cel puțin una dintre intrările sale la „0“ logic, prin urmare, ieșirea sa Ǭ trebuie să fie la un nivel logic "1" (principiile porții NAND). De asemenea, ieșirea Ǭ este trimisă înapoi la intrarea "A" și deci ambele intrări la poarta NAND X sunt la nivelul logic "1" și, prin urmare, ieșirea Q trebuie să fie la nivelul logic "0".
Din nou, principiile porții NAND. Dacă intrarea de reset R schimbă starea și merge HIGH la logic "1" cu S rămânând HIGH la nivel logic "1", intrările porții NAND Y sunt acum R = "1" și B = "0". Deoarece una din intrările sale este încă la nivel logic "0", ieșirea la Ǭ rămâne încă HIGH la nivel logic "1" și nu există nicio schimbare de stare. Prin urmare, circuitul de tip flip-flop este considerat a fi "blocat" sau "setat" cu Ǭ = "1" și Q = "0".
Starea Reset
În această a doua stare stabilă, Ǭ este la nivel logic "0", (not Q = "0") ieșirea la Q este la nivel logic "1", (Q = "1") și este dată de R = "1" și S = "0". Cum poarta X are una din intrările sale la logic "0", ieșirea sa Q trebuie să fie nivel logic "1" (din nou principiile porții NAND). Ieșirea Q este trimisă înapoi la intrarea „B“, astfel încât ambele intrări pentru poarta NAND Y sunt la „1“ logic, prin urmare, Ǭ = „0“.
Dacă intrarea set, S se schimbă acum la logic "1" cu intrarea R rămasă la logic "1", ieșirea Ǭ rămâne încă LOW la nivel logic "0" și nu există nicio schimbare de stare. De aceea, starea "Reset" a circuitelor flip-flop a fost de asemenea blocată și putem defini această acțiune "set/reset" în următorul tabel de adevăr.
Tabel de adevăr
Se poate observa că atunci când ambele intrări S = "1" și R = "1" ieșirile Q și Ǭ pot fi la nivel logic "1" sau "0", în funcție de starea intrărilor S sau R, ÎNAINTE de aceasta a existat o condiție de intrare. Prin urmare, starea S = R = „1“ nu schimbă starea ieșirilor Q și Ǭ.
Dar, starea de intrare S = "0" și R = "0" este o condiție nedorită sau nevalidă și trebuie evitată. Condiția S = R = „0“ determină ambele ieșiri Q și Ǭ să fie HIGH împreună la nivel logic „1“, atunci când în mod normal, ne-am dori Ǭ să fie inversul lui Q. Rezultatul este că flip-flop-ul pierde controlul lui Q și Ǭ, iar dacă cele două intrări sunt acum comutate "HIGH" din nou după această condiție la "1" logic, flip-flop-ul devine instabil și comută la o stare de date necunoscută bazată pe dezechilibru, prezentat în următoarea diagramă de comutare.
Diagrama de comutare Flip-flop S-R
Acest dezechilibru poate determina una dintre ieșiri să comute mai repede decât cealaltă, ducând la trecerea la o stare sau alta, ceea ce ar putea să nu fie starea necesară, iar coruperea datelor va exista. Această stare instabilă este în general cunoscută ca starea Meta-stabilă.
Deci, un simplu flip-flop SR cu porți NAND sau latch SR cu porți NAND poate fi setat prin aplicarea unei „0“ logic, stare (LOW) pentru intrarea sa Set și resetat din nou prin aplicarea unei „0“ logic la intrarea sa Reset. Flip-flop-ul SR se spune că se află într-o stare "invalidă" (Meta-stabil) dacă ambele intrări set și reset sunt activate simultan.
După cum am văzut mai sus, flip-flop-ul SR de bază cu porți NAND necesită "0" logic pentru a răsturna sau a schimba starea de la Q la Ǭ și invers. Dar, putem schimba acest circuit flip-flop, de bază, la unul care modifică starea prin aplicarea semnalelor de intrare pozitive, cu adăugarea a două porți suplimentare NAND conectate ca inversoare la intrările S și R, așa cum se arată.
Flip-flop SR cu porți NAND pozitive
Pe lângă utilizarea porților NAND, este posibilă și construirea unor flip-flop-uri SR cu un singur bit folosind două porți NOR conectate încrucișat în aceeași configurație. Circuitul va funcționa în mod similar cu circuitul de porți NAND de mai sus, cu excepția faptului că intrările sunt active HIGH și condiția nevalidă există atunci când ambele intrări sunt la nivel logic "1", iar acest lucru este prezentat mai jos.
Flip-flop SR cu porți NOR
Circuite de debounce pentru comutatoare
Flip-flop-urile declanșate de front necesită o tranziție a semnalului frumoasă, curată și o utilizare practică a acestui tip de circuit set-reset este ca o zăvorâre folosită pentru a ajuta la eliminarea comutatorului mecanic săritor "bounce". După cum sugerează și numele, oscilațiile comutatorul apar când contactele oricărui comutator, buton sau tastatură sunt acționate mecanic, iar contactele interne ale întrerupătorului nu se închid complet, dar oscilează (sărind) înainte de a închide (sau deschide) când comutatorul este apăsat.
Acest lucru dă naștere unei serii de impulsuri individuale care pot fi de zeci de milisecunde încât un sistem sau un circuit electronic cum ar fi un contor digital poate vedea ca o serie de impulsuri logice în loc de un singur puls lung și să se comporte incorect. De exemplu, în timpul acestei perioade de oscilare, tensiunea de ieșire poate fluctua sălbatic și poate înregistra mai multe numere de intrare în loc de un singur număr. Atunci se pot utiliza circuite flip-flop SR set-reset sau Latch Bistabile pentru a elimina acest tip de problemă și acest lucru este demonstrat mai jos.
În funcție de starea curentă a ieșirii, dacă butoanele set sau reset sunt apăsate, ieșirea se va schimba în modul descris mai sus, iar eventualele intrări nedorite (oscilații) de la acțiunea mecanică a comutatorului nu vor avea efect asupra ieșirii la Q.
Când celălalt buton este apăsat, primul contact va determina blocarea schimbării stării, dar orice oscilații suplimentare de comutare mecanică nu vor mai avea efect. Flip-flop-ul SR poate fi RESETAT automat după o perioadă scurtă de timp, de exemplu 0,5 secunde, astfel încât să înregistreze orice intrare repetitivă adițională și intenționată de la aceleași contacte de comutare, cum ar fi intrări multiple de pe tastatura "RETURN".
Dispozitivele IC (debounce) disponibile în mod obișnuit pentru a depăși problema de oscilare a comutatorului sunt MAX6816, o singură intrare, MAX6817, dublă intrare și MAX6818 intrare octală. Aceste cipuri conțin circuitele de tip flip-flop necesare pentru a asigura o interfață curată a comutatoarelor mecanice cu sistemele digitale.
Latch bistabil Set-Reset poate fi utilizat și ca generator de impuls monostabil pentru a genera un singur impuls de ieșire, High sau LOW, de o anumită lățime sau perioadă de timp pentru scop de temporizare sau control. 74LS279 este un Quad SR Bistable Latch IC, care conține patru bistabile individuale de tip NAND într-un singur chip permițând protejarea comutatorului sau circuitelor de ceas monostabile/astabile ce pot fi construite cu ușurință.
Quad SR Bistabil Latch 74LS279
Flip-flop SR dependent sau sincronizat
Este uneori de dorit ca circuitele logice secvențiale să aibă un flip-flop SR bistabil care schimbă starea numai atunci când sunt îndeplinite anumite condiții, indiferent de starea intrărilor Set sau Reset. Prin conectarea unei porți AND cu 2 intrări în serie cu fiecare terminal de intrare al Flip-flop-ului SR poate fi creat un Gated Flip-flop SR. Această intrare condițională suplimentară este denumită intrare "Activare" și este notată cu "EN". Adăugarea acestei intrări înseamnă că ieșirea la Q se schimbă numai atunci când este HIGH și poate fi folosită ca intrare de tact (CLK), făcând-o sensibilă la nivel, după cum se arată mai jos.
Flip-flop SR dependent
Când intrarea Enable "EN" este la nivel logic "0", ieșirile celor două porți AND sunt de asemenea la nivel logic "0", (principiile porții AND) indiferent de starea celor două intrări S și R, blocând cele două ieșiri Q și Ǭ în ultima lor stare cunoscută. Atunci când intrarea de activare "EN" se schimbă la nivel logic "1", circuitul răspunde ca un flip-flop bistabil SR normal cu cele două porți AND devenind transparente pentru semnalele Set și Reset.
Această intrare suplimentară de activare poate fi conectată la un semnal de sincronizare a ceasului (CLK) adăugând sincronizarea ceasului la flip-flop creând ceea ce uneori este numit "Flip-flop SR clocked". Deci, un Flip-flop SR bistabil dependent acționează ca un zăvor bistabil standard, dar ieșirile sunt activate numai când un "1" logic este aplicat intrării sale EN și dezactivate printr-un "0" logic.
În următorul tutorial despre circuitele logice secvențiale, vom examina un alt tip de flip-flop simplu, declanșat de front, care este foarte asemănător cu flip-flop-ul RS numit Flip-flop JK, numit după inventatorul său, Jack Kilby. Flip-flopul JK este cel mai utilizat pe scară largă din toate schemele de flip-flop, deoarece este considerat un dispozitiv universal.