8.5 Dispozitive logice secvențiale

8.5.1 Flip-Flop RS

8.5.2 Latch (zăvor)

8.5.3 Flip-Flop JK

8.5.4 Flip-Flop D

8.5.5 Flip-flop și contoare

8.5.6 Trigger-Schmitt

Circuitele logice considerate în secțiunea anterioară nu au căi de feedback. Prin urmare, atunci când intrările sunt eliminate, dispar și ieșirile. Astfel de circuite logice (numite circuite logice combinaționale) au o natură statică (adică, algebrică). Dacă o ieșire a unui circuit logic este trimisă înapoi, este posibilă menținerea unei stări logice de ieșire chiar și după ce intrările sunt eliminate. Mai mult, atunci ieșirea circuitului va depinde de intrările care au fost aplicate anterior și, în consecință, de secvența de timp a intrărilor/ ieșirilor anterioare. Astfel de circuite logice cu feedback se numesc circuite logice secvențiale. Sunt dispozitive dinamice. Ieșirea lor prezentă depinde de istoricul trecut și de calendarul intrărilor.

Un semnal de tact (clock) este disponibil ca referință de timp pentru funcționarea unui circuit logic secvențial. Dacă operarea este sincronizată cu semnalul de tact și acțiunile sunt declanșate de acesta, avem o operare sincronă. Dacă acțiunile sunt declanșate de intrări (neperiodice) și nu de semnale de tact, avem o operare asincronă. Dispozitivele declanșate pe front utilizează tranzițiile în impulsuri de tact pentru declanșare. Dispozitivele declanșate de front pozitiv utilizează frontul în creștere (adică tranziția de la 0 la 1) a impulsului de tact pentru declanșare. Dispozitivele declanșate de front negativ utilizează frontul care scade (adică tranziția de la 1 la 0) a impulsului de tact pentru declanșare. Această nomenclatură este ilustrată în figura 8.12. Declanșarea pe front este necesară în funcționare sincronă. Pentru funcționare asincronă, este utilizată declanșarea de nivel, unde declanșarea nu apare în manieră periodică ci mai curând depinde de nivelul semnalului de declanșare.

FIGURA 8.12 Semnal de tact pentru funcționarea sincronă,
declanșată de front, a unui dispozitiv logic

Exemplele de dispozitive logice secvențiale includ flip-flop, zăvoare, registre de deplasare, contoare și dispozitive de declanșare cu memorie. De fapt, proprietatea de „memorie” este o considerație importantă în dispozitivele logice secvențiale. Mai mult, sisteme digitale complexe precum microcontrollere/microprocesoare și mașini de stare sunt formate folosind circuite secvențiale de bază, cum ar fi flip-flop ca blocuri de construcție hardware. Flip-flop-urile sunt numite dispozitive bistabile, deoarece au două și doar două stări de ieșire stabile (0 sau 1). Există multe tipuri de flip-flop. Un zăvor (latch) este un flip-flop care este capabil să se blocheze pe o stare binară. Contoarele ascendente (up-counter) generează o secvență de numere binare în care fiecare număr este generat prin incrementarea numărului anterior cu 1. Similar, contoarele descendente (down-counter) generează o secvență de numere binare în ordine descendentă consecutivă. IC-urile sunt utilizate pentru a îndeplini funcții importante, cum ar fi stocarea de date (memorie) și procesare (ALU) într-un microcontroller (computer digital în miniatură cu un microprocesor). Dispozitivele de memorie solid-state (de exemplu, buffere, registre) și elementele logice care efectuează procesarea datelor (de exemplu, împărțirea) în microcontrollere folosesc CI logice secvențiale. Mai multe dispozitive de bază care intră în categoria circuitelor logice secvențiale sunt discutate în continuare.

8.5.1 Flip-Flop RS

FIGURA 8.13 Flip-flop RS format prin utilizarea porților NAND:
(a) circuit logic, (b) tabel de adevăr, (c) simbol ANSI

În figura 8.13a este prezentat un flip-flop RS (sau, reset-set-flip-flop). Acest circuit folosește două porți NAND cuplate încrucișat. Alternativ, se pot utiliza două porți NOR cuplate încrucișat. Tabelul de adevăr (tabel de funcții) pentru un flip-flop RS, așa cum este prezentat în figura 8.13b, este obținut din tabelul de adevăr al unei porți NAND. În condiții normale de funcționare, Q și NOT Q sunt ieșiri duble, cea din urmă ieșire este complementul primei. Se vede, însă, din figura 8.13b, că atunci când ambele intrări sunt 0, ambele ieșiri devin 1. Această condiție încalcă cerința și este inacceptabilă. În plus, din tabelul de adevăr se vede că atunci când o intrare este complementul celeilalte intrări, starea de ieșire devine egală cu starea de intrare, indiferent de starea anterioară. Cu alte cuvinte, datele de intrare sunt transferate direct la ieșire („transfer de date”). În acest mod, când ieșirea devine 0 (adică, atunci când intrarea este 0), ea se numește operație de „reset”, iar când ieșirea devine 1 (adică, când intrarea este 1), se numește operație de „set". Când ambele intrări la RS flip-flop sunt 1, starea de ieșire rezultată devine identică cu starea de ieșire anterioară (notată cu Qo). Prin urmare, dispozitivul are memorie. Ieșirea rezultată, așa cum este prezentată în figura 8.13b, este ieșirea finală „stabilită” în cazurile în care este diferită de ieșirea anterioară. Simbolul ANSI pentru un flip-flop RS este dat în figura 8.13c. Proprietatea conform căreia ieșirea actuală a unui flip-flop depinde de ieșirea anterioară implică faptul că unitatea are memorie (poate aminti istoricul stării). Prin urmare, un flip-flop este utilizat ca element de bază în unitățile de memorie cu semiconductor. Deoarece RS flip-flop poate presupune două stări stabile (01 și 10), acesta este un dispozitiv bistabil. Un dispozitiv, ca un oscilator care nu are o stare stabilă, este cunoscut sub numele de dispozitiv astabil.

8.5.2 Zăvorul (Latch)

Un circuit de blocare este capabil să păstreze starea de ieșire anterioară atunci când este declanșat. Declanșarea se poate face folosind fie un semnal de activare (funcționare asincronă), fie un semnal de tact (operare sincronă). Figura 8.14a prezintă un circuit de blocare format cu ajutorul unui flip-flop RS. Tabelul său de adevăr este prezentat în figura 8.14b, care poate fi verificată cu ușurință folosind tabelele de adevăr ale flip-flop-ului RS (figura 8.13b), poarta NAND și poarta NOT. Simbolul zăvorului este prezentat în figura 8.14c.

FIGURA 8.14 Un circuit latch format cu ajutorul unui flip-flop RS și porți NAND:
(a) circuit logic, (b) tabel de adevăr, (c) simbol

8.5.3 Flip-Flop JK

Într-un JK flip-flop, J și K (similare cu R și S într-un RS flip-flop) sunt datele de intrare. Dar, spre deosebire de un flip-flop RS, un JK flip-flop nu are o stare inacceptabilă a datelor de intrare. Mai mult, un JK flip-flop poate oferi o acțiune de „comutare” unde ieșirea este complementul ieșirii anterioare. O acțiune de comutare este importantă în operațiile de „numărare”. (O comutare va schimba numărul cu 1. Este posibil atât numărarea în sus, cât și în jos.) Notă: Un flip-flop RS nu oferă o acțiune de comutare.

FIGURA 8.15 Simbolul unui flip-flop JK

Ca mai sus, Q este ieșirea care rezultă datorită datelor de intrare J și K. Din nou, Q¯ este complementul lui Q și este disponibil ca o ieșire. Acțiunea unui JK flip-flop poate fi declanșată fie prin semnale externe (în special, un semnal „Preset” P și un semnal „Clear” C) sau prin semnalul de tact CK. Primul este operare asincronă, iar ultimul este operare sincronă. De obicei, semnale low-active sunt necesare pentru P și C (adică, 0-logic activează operarea) și frontul de cădere al unui impuls de tact este utilizat pentru declanșarea dispozitivului în funcționarea sincronă. Tabelul de adevăr pentru operare asincronă a unui flip-flop JK este prezentat în tabelul 8.3.

TABEL 8.3 Tabelul de adevăr pentru funcționare asincronă a unui Flip-Flop JK

Notă: Valorile semnalelor complementare P¯ și C¯ sunt listate pentru a sublinia operația low-activă. Cercurile care încheie aceste linii de semnal din figura 8.15, care numesc operațiuni „NOT”, indică în continuare utilizarea semnalelor low-active.

Starea P¯=1, C¯=1 nu este utilizată într-un flip-flop JK. Când P¯=0, C¯ =1, ieșirea Q este „setată” la 1 (care este valoarea lui P). În mod similar, atunci când P¯=1, C¯=0, ieșirea Q este „ștearsă” (adică devine 0, care este valoarea lui C¯).

Când P¯=1, C¯=1, flip-flop-ul JK intră în operare sincronă, unde declanșarea se face prin semnalul de tact CK. Cercul care încheie linia semnalului de tact din figura 8.15 indică faptul că dispozitivul este declanșat de frontul în cădere al impulsului de tact.

TABEL 8.4 Tabelul de adevăr al unui Flip-Flop JK

Explicaţie

Reține starea (aceeași ca ieșirea anterioară; memorie)
Transfer de date independent de ieșirea anterioară (
clear, set)
Stare de comutare (complement al ieșirii anterioare; adică, numărare)

Tabelul de lucru (tabel de adevăr) pentru un flip-flop JK în operare sincronă este prezentat în tabelul 8.4. Notă: Se utilizează declanșarea pe frontul de scădere (notată cu ↓). Ca de obicei, Qo este ieșirea anterioară (adică ieșirea înainte de declanșare).

Deoarece un flip-flop JK are capacitățile de memorie și de comutare, acesta are multe aplicații (de exemplu, contoare și alte tipuri de flip-flop-uri cum ar fi flip-flop D și flip-flop T). La proiectarea unui circuit pentru o anumită aplicație, se poate începe cu secvența de ieșire dorită din circuit și continuați înapoi pentru a dezvolta un circuit adecvat care va realiza această ieșire. În această abordare a proiectării, ceea ce este deosebit de util este „Tabelul de excitație” al flip-flop-ului. Acest tabel oferă intrarea (datele) necesară pentru o combinație dată de ieșire anterioară (înainte de declanșare) și ieșire nouă (după declanșare). Tabelul de excitație pentru un flip-flop JK este prezentat în tabelul 8.5.

TABELUL 8.5 Tabelul de excitație al unui Flip-Flop JK

8.5.4 D Flip-Flop D

Un flip-flop D (sau, data flip-flop) are o singură intrare (sau, date) D. Ieșirea sa Q este egală cu valoarea datelor de intrare. Un flip-flop D poate fi interpretat ca un caz special al unui flip-flop JK cu J = D și K = D¯ (Prin urmare, nu este necesar să aveți intrarea K.) Simbolul unui flip-flop D este afișat în Figura 8.16. Semnalul de tact este utilizat în funcționare sincronă. De obicei, se folosește declanșarea pe frontul în creștere, așa cum se arată în figura 8.16. (Notă: Nu există niciun cerc la capătul liniei CK care intră în flip-flop). Funcționarea asincronă este posibilă cu semnalul „Clear” C.

În figura 8.16, un semnal low-activ este utilizat pentru C, ca de obicei. Mai exact, când C = 0, ieșirea este ștearsă (adică Q = 0) indiferent de datele de intrare. Tabelul de lucru (tabelul de adevăr) al unui flip-flop D sincronizat este prezentat în tabelul 8.6. Tabelul de excitație este prezentat în tabelul 8.7.

FIGURA 8.16 Simbolul unui flip-flop D

TABEL 8.6 Tabelul de lucru (Tabelul de adevăr) unui Flip-Flop D

TABEL 8.7 Tabelul de excitație al unui Flip-Flop D

8.5.4.1 Shift Register (registru de deplasare)

Un registru de deplasare mută datele stocate într-un cuvânt, un bit la un moment dat la dreapta, așa cum este declanșat de impulsurile de tact primite. Un set de flip-flop-uri D conectate în serie, cu primul flip-flop care primește un 0 ca date de intrare, iar flip-flop-urile ulterioare care primesc ieșirea flip-flop-ului anterior ca date de intrare, pot servi drept registru de deplasare. Declanșarea pe front folosind un semnal de tact va determina datele (de ieșire) stocare inițial de flip-flop-uri să se deplaseze la dreapta, pe rând. La sfârșitul secvenței de deplasare, toți biții vor fi 0 (adică datele vor fi șterse).

8.5.5 Flip-flop T și contoare

Un flip-flop T (sau, toggle flip-flop) este un flip-flop JK cu J = 1 și K = 1. De asemenea, se presupune că P¯ = 1. Prin urmare, liniile de semnal pentru J, K și P nu sunt marcate pe simbolul flip-flop T, așa cum se arată în figura 8.17a. Semnalul de tact este de fapt semnalul de date al unui flip-flop T și este notat cu T. Când C¯ = 1 ar trebui să fie clar din tabelul de lucru pentru un flip-flop JK (Tabelele 8.3 și 8.4) că operația sincronă de comutare (adică, în tact) are loc în flip-flop-ul T. Ieșirea poate fi ștersă (Q = 0) pur și simplu setând C¯ = 0 (modul asincron).

În dispozitivul prezentat în figura 8.17a, frontul în cădere (adică tranziția de la 1 la 0) a lui T duce la o comutare (adică, schimbarea de la 0 la 1 sau 1 la 0) a ieșirii Q. Această proprietate permite unui grup de flip-flop-uri T ca să funcționeze ca un contor binar sau divizor de frecvență (cu multipli de 2). Un contor binar de 3 biți folosind flip-flop-ul T este prezentat în figura 8.17b. Diagrama de timp corespunzătoare este prezentată în Figura 8.17c. Ieșirile Q0, Q1 și Q2 formează cuvântul de 3 biți [Q2Q1Q0]2. Schimbarea bitului are loc la fiecare perioadă de tact, declanșată de frontul în scădere al impulsului de tact. Din diagrama de timp, este clar că ieșirea pe 3 biți se schimbă în secvența 000, 001, 010, 011, 100, 101, 110 și 111 la frecvența de tact. Prin urmare, avem un contor ascedent de 3 biți. De asemenea, din diagrama de timp este clar că frecvența lui Q0 este 1/2 din frecvența de tact, frecvența Q1 este 1/4 frecvența de tact, iar frecvența Q2 este 1/8 frecvența de tact. Prin urmare, aceste ieșiri pot servi și ca semnale de divizare a frecvenței.

Într-un contor care utilizează codul binar direct (ca în figura 8.17b), se poate comuta mai mult de 1 bit simultan. De exemplu, când se avansează de la 001 la 010, vor exista comutatoare de 2 biți, iar la avansarea de la 011 la 100, vor exista comutatoare pe 3 biți. Din cauza întârzierilor de semnal din hardware, aceste comutatoare nu vor acționa simultan. Drept urmare, va rezulta o valoare intermediară, care va fi diferită de valoarea corectă. De exemplu, atunci când se avansează de la 011 la 100, dacă bitul din mijloc este comutat mai întâi, rezultatul intermediar va fi 1, care este diferit de rezultatul corect (4 zecimal). O astfel de afecțiune este numită hazard. Poate fi evitată prin utilizarea unui alt cod decât codul binar direct, în special, un cod gray, după cum am menționat anterior în capitol.

FIGURA 8.17 (a) Simbolul unui flip-flop T,
(b) un contor binar în sus de 3 biți folosind flip-flop T,
(c) diagrama de sincronizare a contorului în sus

Exemplul 8.9

Un contor binar de 3 biți este proiectat folosind trei flip-flop-uri D și porți logice de bază. Pentru a evita pericolele, se utilizează o scală gray, unde secvența necesară este 000, 001, 011, 010, 110, 111, 101 și 100. Notă: În această secvență, doar un bit va comuta pentru fiecare increment din număr. Dezvoltați un circuit adecvat pentru acest contor.

Soluţie

Ieșirea de la cele trei flip-flop-uri este notată cu [Q2Q1Q0]. Secvența de ieșire necesară poate fi reprezentată fie printr-o diagramă de timp, fie ca un tabel. Intrările de date la cele trei flip-flop-uri sunt notate cu [D2D1D0]. Valorile datelor de intrare, care sunt necesare pentru a realiza modificările necesare în cei trei biți la fiecare declanșare de tact, pot fi convenabil determinate utilizând excitația pentru un flip-flop D (tabelul 8.7). Aceste informații sunt prezentate în tabelul 8.8.

Din tabelul 8.8 (tabelul de adevăr) putem exprima datele de intrare necesare la declanșarea tactului în termenii de ieșire care trebuie să fie prezenți la (sau, chiar înainte) declanșatorul de tact pentru a obține rezultatele dorite. În mod specific, avem:

Ceea ce este asociat aici este ieșirea Q care este prezentă „înainte de” un declanșator de tact și datele de intrare necesare D care vor genera ieșirea necesară după declanșarea tactului. Cu alte cuvinte, cele trei relații de mai sus oferă căile de feedback necesare în circuit. Simplificăm (minimizăm) aceste expresii folosind K-maps, după cum urmează:

TABEL 8.8 Valori de intrare-ieșire pentru contorul de cod-Gray

Do:

D1:

D2:

FIGURA 8.18 Un contor de coduri Gray folosind flip-flop-uri D

Expresiile minimizate sunt:

Circuitul prezentat în figura 8.18 trebuie dezvoltat acum folosind aceste expresii minime.

8.5.6 Trigger-Schmitt

Elementele de comutare sau declanșare sunt utile atât în ​​circuitele analogice cât și în cele digitale. Dacă comutarea este ideală, atunci cel mai mic zgomot dintr-un semnal poate crea o oscilație nedorită în apropierea regiunii de comutare, producând rezultate eronate. Prin urmare, este de dorit să existe un anumit histerezis în elementul de comutare, astfel încât nivelul de semnal „comutat-on” să fie puțin mai mare decât nivelul de semnal „comutat-off”, făcând astfel comutatorul insensibil la zgomot. (Declanșatorul) Trigger-Schmitt este un comutator solid-state care are acest tip de histerezis dorit. În figura 8.19a este prezentat un circuit cu tranzistoare bipolare pentru trigger-Schmitt. Caracteristica intrare/ieșire a circuitul în condiții cvasistatice (adică presupunând că intrarea variază foarte lent) este prezentată în figura 8.19b. De obicei, șase trigger-Schmitt sunt incluse într-un singur pachet IC. Simbolul pentru o poartă logică cu histerezis este simbolul său obișnuit ANSI, cu o curbă de histerezis marcată în interiorul simbolului.

FIGURA 8.19 Trigger-Schmitt: (a) un circuit care folosește tranzistoare bipolare
și (b) curba caracteristică cvasistatică