10.2. Contor asincron
10.2. Contor asincron
Contoarele asincrone utilizează flip-flop-uri care sunt conectate în serie, astfel încât impulsul ceasului de intrare trece ca o undă prin contor, dându-le numele de contor ripple.
Un contor asincron poate avea 2n-1 posibile stări de numărare, de ex. MOD-16 pentru un contor de 4 biți (0-15), ceea ce îl face ideal pentru utilizarea în aplicațiile de divizare a frecvenței. Dar, este posibil să se folosească și contorul de configurație asincron de bază pentru a construi contoare speciale, cu stări de numărare mai puține decât numărul lor maxim de ieșire. De exemplu, contoare modulo sau MOD.
Acest lucru se obține prin forțarea contorului de a se reseta la zero la o valoare prestabilită, producând un tip de contor asincron care are secvențe trunchiate. Atunci, un numărător de n-biți care numără până la modulul său maxim (2n) se numește un numărător complet de secvențe și un numărător de n-biți a cărui valoare este mai mică decât maximul posibil se numește un contor trunchiat.
Dar de ce am dori să creăm un contor asincron trunchiat, care nu este un MOD-4, MOD-8 sau alt modul care este egal cu puterea lui doi. Răspunsul este că putem folosi logica combinațională pentru a profita de intrările asincrone de pe flip-flop.
Dacă luăm contorul asincron modulo-16 și îl modificăm cu porți logice suplimentare, poate fi făcut să dea o ieșire de contor decadic (divide-cu-10) pentru a fi utilizat în circuitele numerice zecimale standard și circuite aritmetice.
Astfel de contoare sunt în general numite contoare Decadice. Un contor decadic necesită resetarea la zero când numărul de ieșire atinge valoarea zecimală de 10, adică, când DCBA = 1010 și pentru a face acest lucru trebuie să trimitem această condiție înapoi la intrarea de reset. Un numărător cu o secvență de numărare de la binar "0000" (BCD = "0") până la "1001" (BCD = "9") este denumit, în general, un numărător zecimal codat binar BCD, deoarece secvența sa de zece stări este cea a unui cod BCD, dar contoarele binare decadice sunt mai frecvente.
Contor decadic asincron
Acest tip de contor asincron numără în sus pe fiecare front posterioar al semnalului de ceas de intrare pornind de la 0000 până când ajunge la o ieșire 1001 (zecimal 9). Ambele ieșiri QA și QD sunt acum egale cu logic "1". La aplicarea următorului impuls de ceas, ieșirea de la poarta NAND 74LS10 se schimbă de la logic "1" la un nivel logic "0".
Deoarece ieșirea porții NAND este conectată la intrările CLEAR (CLR) ale tuturor flip-flop-urilor 74LS73 JK, acest semnal determină resetarea tuturor ieșirilor Q la binar 0000 pe contor de 10. Deoarece ieșirile QA și QD sunt acum ambele egale la logic "0" și flip-flop-urile au fost tocmai resetate, ieșirea porții NAND revine la un nivel logic "1" iar contorul repornește din nou de la 0000. Acum avem o decadă sau contor-up Modulo-10.
Tabelul de adevăr al contorului decadic
Diagrama de contorizare a contorului decadic
Prin utilizarea aceleiași idei de trunchiere a secvențelor de ieșire a contorului, circuitul de mai sus poate fi adaptat ușor la alte cicluri de numărare prin schimbarea pur și simplu a conexiunilor la intrările porții NAND sau prin utilizarea altor combinații de porți logice.
De exemplu, o scală-de-douăsprezece (modulo-12) poate fi ușor realizată prin simpla luare a intrărilor la poarta NAND de la ieșirile la QC și QD, observând că echivalentul binar al lui 12 este 1100 și ieșirea "QA" este cel mai puțin semnificativ bit (LSB).
Deoarece modulul maxim care poate fi implementat cu n flip-flop-uri este 2n, aceasta înseamnă că atunci când proiectați contoare asincrone trunchiate, trebuie să determinați puterea cea mai mică a lui doi care este mai mare sau egală cu modulul dorit.
Să zicem că dorim să numărăm între 0 și 39 sau mod-40 și repetăm. Atunci, cel mai mare număr de flip-flop-uri necesare ar fi șase, n = 6 dând un MOD maxim de 64, deoarece cinci flip-flop-uri nu ar fi suficiente, dând numai MOD-32.
Acum, presupunem că am vrut să construim un contor "divide-cu-128" pentru divizare de frecvență, am avea nevoie să legăm în cascadă șapte flip-flop-uri, de la 128 = 27. Folosind flip-flop-uri dual, cum ar fi 74LS74, am avea nevoie de patru IC pentru a completa circuitul.
O metodă alternativă ușoară ar fi folosirea a două TTL 7493 ca contor/ divizoare ripple pe 4 biți. Din moment ce 128 = 16 x 8, un 7493 ar putea fi configurat ca un contor "divide-cu-16" și celălalt ca un contor "divide-cu-8". Cele două IC vor fi legate în cascadă pentru a forma un divizor de frecvență "divide-cu-128", așa cum este arătat.
Desigur, sunt disponibile contoare asincrone standard IC, cum ar fi contorul/divizorul ripple programabil TTL 74LS90, care poate fi configurat ca divide-cu-2, divide-cu-5 sau orice combinație a celor două. 74LS390 este un IC driver decadic, foarte flexibil, cu un număr mare de combinații "divide-cu" disponibile, variind de la divide-cu-2 la 4, 5, 10, 20, 25, 50 și 100.
Divizoare de frecvență
Această capacitate a contorului ripple pentru a trunchia secvențele pentru a produce o ieșire "divide-cu-n" înseamnă că contoarele și în special contoarele ripple pot fi utilizate ca divizoare de frecvență pentru a reduce o frecvență înaltă de ceas până la o valoare mai utilizabilă pentru utilizarea în ceasuri digitale și aplicații de sincronizare. De exemplu, să presupunem că avem nevoie de un semnal exact de timp de 1Hz pentru a opera un ceas digital.
Am reușit să producem cu ușurință un semnal de undă pătrată de 1 Hz folosind un cip standard 555 Timer configurat ca un multivibrator astabil, însă fișa tehnică a producătorului ne arată că timerul 555 are o eroare tipică de 1-2% în funcție de producător și la frecvențe scăzute de 1Hz, această eroare de sincronizare de 2% nu este bună.
Dar, fișa tehnică ne indică și faptul că frecvența maximă de operare a timerului 555 este de aproximativ 300 kHz, iar o eroare de 2% la această frecvență înaltă, în timp ce este încă mare la maximum 6 kHz, ar fi acceptabilă. Prin alegerea unei frecvențe mai mari de sincronizare, să zicem 262,144 kHz și a unui contor ripple de 18 biți (Modulo-18), putem face cu ușurință un semnal de sincronizare 1Hz de precizie, după cum se arată mai jos.
Semnal de sincronizare de 1Hz de la un contor ripple asincron de 18 biți.
Acesta este, desigur, un exemplu foarte simplist al modului de a produce frecvențe precise de sincronizare, dar prin utilizarea oscilatoarelor cu cristal de înaltă frecvență și a divizoarelor de frecvențe multi-bit, pot fi produse generatoare de frecvență precisă pentru o gamă completă de aplicații variind de la ceasuri sau sincronizări de evenimente și chiar aplicații tip muzică sau pentru pian/sintetizator electronice.
Din nefericire, unul dintre principalele dezavantaje cu contoare asincrone este acela că există o mică întârziere între sosirea impulsului de ceas la intrarea lui și când acesta este prezent la ieșirea lui, datorită circuitelor interne ale porții.
În circuitele asincrone, această întârziere este denumită întârziere de propagare, dând contorului ripple asincron porecla "contor de propagare", iar în unele cazuri de frecvență înaltă această întârziere poate produce numărătoare falsă la ieșire.
În circuitele de contor ripple cu un număr mare de biți, dacă întârzierea etajelor separate sunt adunate împreună pentru a da o întârziere sumă la capătul lanțului de contor, diferența de timp între semnalul de intrare și semnalul de ieșire numărat poate fi foarte mare. De aceea, contorul asincron nu este utilizat în general în circuitele de numărare de înaltă frecvență, unde sunt implicați un număr mare de biți.
De asemenea, ieșirile de pe contor nu au o relație de timp fixă una cu cealaltă și nu apar în același moment de timp datorită secvenței lor de ceas. Cu alte cuvinte, frecvențele de ieșire devin disponibile una câte una, un fel de efect de domino. Atunci, cu cât mai multe flip-flop-uri sunt adăugate la un lanț de contor asincron, cu atât frecvența maximă de operare devine mai mică pentru a asigura numărarea corectă. Pentru a depăși problema întârzierii de propagare s-au dezvoltat contoarele sincrone.
Deci, pentru a rezuma câteva dintre avantajele contoarelor asincrone:
Contoarele asincrone pot fi realizate cu ușurință din flip-flop-uri Toggle sau D-type.
Ele se numesc "contoare asincrone", deoarece intrarea de ceas a flip-flop-urilor nu sunt toate comandate de același semnal de ceas.
Fiecare ieșire din lanț depinde de schimbarea stării de ieșire din flip flop-urile anterioare.
Contoarele asincrone sunt uneori numite contoare ripple, deoarece datele par să "treacă ca o undă" de la ieșirea unui flip-flop la intrarea următorului.
Acestea pot fi implementate cu ajutorul circuitelor contor "divide-cu-n".
Contoarele trunchiate pot produce orice numărare de mod număr.
Dezavantaje ale contoarelor asincrone:
Poate fi necesar un flip-flop extra de ieșire "re-sincronizare".
Pentru a număra o secvență trunchiată care nu este egală cu 2n, este necesară o logică suplimentară de feedback.
Numărând un număr mare de biți, întârzierea de propagare prin etaje succesive poate deveni nedorit de mare.
Această întârziere le dă porecla de "contoare de propagare".
Erori de numărare apar la frecvențe înalte de ceas.
Contoarele sincrone sunt mai rapide și mai fiabile, deoarece folosesc același semnal de ceas pentru toate flip-flop-urile.
În următorul tutorial despre contoare, ne vom uita la contorul sincron și vom vedea că principala caracteristică a unui contor sincron este că intrarea de ceas a fiecărui flip-flop din lanț este conectată la toate flip-flop-urile, astfel încât acestea să fie tactate simultan.