8.4 Circuite logice combinaționale

8.4.1 Porți logice

8.4.2 Familii IC logice

8.4.3 Proiectarea circuitelor logice

8.4.4 Realizare minimală

Un circuit digital convertește intrările digitale în ieșiri digitale. Există două tipuri de dispozitive logice, clasificate fie în logică combinațională, fie în logică secvențială. Dispozitivele logice combinaționale sunt statice, în care intrările prezente determină complet (și în mod unic) ieșirile prezente fără a utiliza informații anterioare (istoric) sau memorie. În schimb, ieșirea unui dispozitiv logic secvențial depinde de valorile anterioare ale intrărilor, precum și de valorile prezente. Cu alte cuvinte, acestea depind de secvența de timp a datelor de intrare și, prin urmare, ar fi nevoie de o formă de memorie. Prezenta secțiune tratează realizarea circuitelor logice combinaționale. Realizările logice secvențiale vor fi discutate într-o secțiune ulterioară.

8.4.1 Porți logice

Porțile logice sunt elementele de bază de circuit găsite în circuitele integrare (IC) care sunt utilizate în sistemele digitale. O poartă logică are una sau mai multe intrări logice și o singură ieșire logică. Fiecare linie de intrare sau linie de ieșire a porții poate avea una dintre cele două stări: adevărată (reprezentată de cifra binară 1) și falsă (reprezentată de cifra binară 0). Este ușor de observat cum o combinație de întrerupătoare poate fi utilizată pentru a forma o poartă logică. De exemplu, două comutatoare conectate în serie pot servi ca o poartă AND, deoarece curentul trece prin circuit numai atunci când ambele întrerupătoare sunt închise. Ieșirea porții este starea circuitului. Prin urmare, notând starea circuitului-închis ca adevărată (bit 1) și starea circuitului-deschis ca falsă (bit 0), putem obține un tabel de adevăr pentru poarta AND, așa cum se arată în figura 8.2a. Rețineți că poarta are două intrări, care sunt stările celor două întrerupătoare. Similar, o poartă OR poate fi formată prin conectarea a două întrerupătoare în paralel, așa cum se arată în figura 8.2b. În această poartă OR, starea de ieșire este considerată adevărată (bitul 1) atunci când ambele intrări sunt adevărate simultan. Alternativ, într-un XOR, starea de ieșire este considerată falsă (bit 0) atunci când ambele intrări sunt adevărate, iar ieșirea este adevărată atunci când numai una dintre intrări este adevărată. Întrerupătoarele mecanice și releele nu sunt potrivite pentru porțile logice din circuitele digitale. Comutatoarele solid-state sunt varietatea preferată. Elemente semiconductoare, cum ar fi diode și tranzistoare, pot funcționa ca comutatoare solid-state. În sistemele digitale, aceste elemente sunt prezente în forma IC și nu în forma lor de componentă discretă.

FIGURA 8.2 Exemple de porți logice de bază, formate folosind comutatoare:
(a) poarta
AND și tabelul său de adevăr și (b) poarta OR și tabelul său de adevăr

Cele trei porți logice de bază sunt AND, OR și NOT. Cele trei porți NAND, XOR și NOR pot fi construite din primele trei porți, dar toate aceste șase pot fi considerate de bază. Simbolurile Institutului Național de Standarde Americane (ANSI) pentru aceste șase porți logice sunt prezentate în figura 8.3. Un cerc la capătul unei linii de semnal logic reprezintă un inversor (negație). Aceasta este o simplificare a simbolului complet al unei porți NOT (un triunghi și un cerc, așa cum se arată în figura 8.3d). Tabelele de adevăr oferă starea de ieșire a fiecărei porți pentru diferite stări ale intrărilor.

Exemplul 8.5

O poartă OR se supune operației booleane a + b. Pentru un XOR, notat cu a ⊕ b, aceeași relație este valabilă, cu excepția cazului în care ambele a = 1 și b = 1, caz în care ieșirea devine 0. Rezultă că XOR se supune relației booleane

Aceasta rezultă din faptul că termenul

atunci când ambele a = 1 și b = 1, și este egal cu 1 altminteri. Obțineți o relație booleană pentru XOR folosind tabelul de adevăr din figura 8.3c și arătați că aceasta este echivalentă cu rezultatul de mai sus. Oferiți un circuit digital folosind porți AND, OR și NOT doar pentru a realiza XOR.

Soluţie

Din tabelul de adevăr al XOR, așa cum este prezentat în figura 8.3c, avem

Expresia dată în exemplu poate fi extinsă după cum urmează:

FIGURA 8.3 Simboluri ANSI și tabele de adevăr pentru cele șase porți logice de bază:
(a) AND, (b) OR (c) XOR, (d) NOT, (e) NAND, (f) NOR

Acest rezultat este identic cu ceea ce am obținut din tabelul de adevăr.

Realizarea porții XOR se face urmând relația booleană de guvernare, așa cum se arată în figura 8.4. Se poate arăta că poarta NAND este completă funcțională. Adică, cele trei porți de bază AND, OR și NOT pot fi implementate doar cu porți NAND. De exemplu, figura 8.5 arată o realizare a OR folosind doar porți NAND. Similar, se poate arăta că poarta NOR este completă funcțională.

Un simbol de poartă poate avea multe (mai mult de două) linii de intrare. Atunci, combinația logică care produce ieșirea ar trebui să fie interpretată în consecință. De exemplu, dacă o poartă AND are trei intrări, atunci ieșirea este adevărată numai atunci când toate cele trei intrări sunt adevărate.

FIGURA 8.4 O realizare a XOR folosind porți AND, OR și NOT

FIGURA 8.5 O realizare a OR folosind numai porți NAND

8.4.2 Familii IC logice

O familie logică este identificată prin natura elementelor solid-state (rezistoare, diode, tranzistoare bipolare, MOSFETS etc.) și nivele de putere utilizate în circuitul integrat (IC). Exemplele includ logica rezistor-tranzistor (RTL), logica diodă-tranzistor (DTL), logica emitor-cuplat (ECL), logica tranzistor-tranzistor (TTL), și logica complementary-symmetry metal-oxide semiconductor (CMOS). În prezent, TTL și CMOS sunt cele mai populare familii logice. Dispozitivele CMOS sunt deosebit de atractive pentru disiparea lor de putere mai mică (utilă în special în aplicațiile alimentate cu baterii), dimensiuni mai mici (densitate mai mare a circuitelor pe cip) și proprietăți mai bune de imunitate la zgomot. Dar sunt mai puțin robuste și mai ușor deteriorate de câmpuri electrice decât cele TTL. Fiecare familie logică folosește porțile logice ca elemente de bază. În figura 8.6 sunt prezentate două exemple. O poartă TTL NAND este prezentată în figura 8.6a. În acest caz, A și B sunt intrările și C este ieșirea. Se poate arăta că acest element de circuit satisface tabelul de adevăr dat în figura 8.3. Specific, ieșirea va fi la un nivel de tensiune low (0-logic sau FALSE-logic) numai când ambele intrări sunt simultan la nivel de tensiune high (1-logic sau TRUE-logic).

Pentru un semnal de ieșire al unui dispozitiv TTL, valoarea low corespunde unei tensiuni în intervalul 0–0,4 V, iar valoarea high corespunde unei tensiuni în intervalul 2,4–5 V. Pentru un semnal de intrare al unui dispozitiv TTL, valoarea low corespunde unei tensiuni în intervalul 0–0,8 V, iar valoarea high corespunde unei tensiuni mai mari de 2 V. Aceste intervale de tensiune oferă un grad ridicat de imunitate la zgomot, deoarece 0-logic și 1-logic sunt separate de cca. 2 V.

Mai mult, chiar dacă la o ieșire a unui dispozitiv logic se adaugă un nivel de zgomot de 0,4 V, starea logică a acestuia va rămâne aceeași la intrarea unui alt dispozitiv logic. Figura 8.6a prezintă doar două linii de intrare, dar mai mult de două intrări ar putea fi conectate la emitorul tranzistorului de intrare, dacă se dorește acest lucru. Tensiunea de alimentare este de obicei limitată la gama 4,75–5,25 V într-un circuit TTL. În figura 8.6a este prezentată o sursă de alimentare de 5 V.

O poartă NAND din familia logică C-MOS este prezentată în figura 8.6b. Mai multe avantaje ale CMOS față de TTL au fost menționate anterior. Un avantaj suplimentar al circuitelor logice CMOS este faptul că pot utiliza orice sursă de alimentare în gama de tensiune de 3–15 V. De exemplu, un circuit CMOS poate funcționa cu o baterie auto de 12 V, fără a fi nevoie să folosească circuite speciale pentru a reduce tensiunea de alimentare, cum este cazul unui circuit TTL. Nivelele logice ale circuitelor CMOS se modifică odată cu tensiunea de alimentare.

Uneori, două sau mai multe familii logice sunt utilizate în același dispozitiv digital (de exemplu, computer). Când conectați două unități IC care aparțin unor familii logice diferite (de exemplu, una este CMOS și cealaltă TTL), este necesar să vă asigurați, ca la interconectarea oricărui două dispozitive, cele două unități sunt compatibile. În special, tensiunile de operare ale celor două unități trebuie să fie compatibile și curenții de operare ale celor două unități trebuie să fie, de asemenea, compatibili. Pe scurt, cele două unități ar trebui să aibă impedanțe adaptate. În caz contrar, circuitele de interfață (de exemplu, adaptoare de nivel pentru compatibilitatea de tensiune și buffere pentru compatibilitatea de curent) trebuie utilizate între cele două unități IC care sunt interconectate.

FIGURA 8.6 Porți logice tipice din familiile logice TTL și CMOS:
(a) o poartă NAND TTL și (b) o poartă NAND CMOS

8.4.3 Proiectarea circuitelor logice

Atunci când se dezvoltă o soluție logică digitală pentru o aplicație mecatronică, este nevoie de muncă preliminare pentru a defini mai întâi funcția specifică a hardware-ului, specificațiile de performanță, dacă o soluție este disponibilă comercial (gata de folosit) la un cost acceptabil ș.a. Dacă un dispozitiv digital trebuie să fie dezvoltat personalizat, atunci cerințele logice ale implementării necesare trebuie să fie înțelese pe deplin. Etapele principale ulterioare în realizarea circuitului logic pentru aplicația particulară sunt prezentate mai jos:

1. Identificați intrările și ieșirile circuitului pentru aplicația particulară.

2. Afirmați logica care conectează intrările și ieșirile și exprimați-o ca o relație booleană.

3. Minimizați/optimizați relația.

4. Folosind porți logice de bază, schițați realizarea care va satisface relația booleană minimă.

Într-o realizare practică, este important să se minimizeze costurile și complexitatea. În consecință, ar fi de preferat o realizare minimală care utilizează cel mai mic număr de porți de bază. Acest subiect va fi abordat în cadrul hărților Karnaugh (K-maps). De asemenea, este de dorit să se utilizeze un număr minim de tipuri de porți logice (de exemplu, toate NOR, toate NAND). Acum ilustrăm proiectarea/realizarea circuitelor logice combinaționale pentru câteva aplicații practice.

8.4.3.1 Circuitul multiplexor

Un multiplexor digital selectează un canal de intrare digital dintr-un grup și îl conectează la canalul de ieșire (adică citește canalul de intrare). Considerați cazul unui multiplexor cu două intrări. Intrările sunt notate cu x și y. Ieșirea este a. Semnalul de control pentru selectarea intrării este c. Funcția logică a circuitului poate fi exprimată după cum urmează:

Această logică poate fi tradusă în următoarea relație booleană:

Realizarea acesteia este prezentată în figura 8.7.

FIGURA 8.7 Un multiplexor digital cu două intrări.

8.4.3.2 Circuite de adunare Adder

Porțile logice sunt utilizate în unitatea aritmetică și logică (ALU) a unui microprocesor pentru a efectua diverse operații de procesare. O operație aritmetică de bază care este efectuată de ALU este adunarea. În figura 8.8a este prezentat un circuit logic simplu, care realizează adunarea a două cifre binare (biți). Acesta se numește half adder. Acest circuit conține două porți OR, o poartă AND și o poartă NOT. Cele două cifre adunate sunt notate cu A și B (intrările la circuitul logic). Suma celor două cifre este notată cu S, iar transportul către următorul loc superior este notat cu C. În mod clar, tabelul de adevăr dat în figura 8.8b este de acord cu regulile de adunare binară a doi biți. Rețineți că Ā este complementul lui A. Un circuit full adder efectuează adunarea binară a trei biți.

FIGURA 8.8 Half-adder: (a) circuitul logic și (b) tabelul de adevăr

Exemplul 8.6

Un comutator electronic care folosește logica digitală trebuie să fie dezvoltat pentru aprinderea și oprirea luminilor într-o galerie de artă. Comutatorul trebuie să fie pornit la ora 19:00 și oprit la 6:00. De asemenea, dacă există oameni în galerie, iar lumina care intră în galerie din afară este inadecvată, luminile trebuie să fie aprinse indiferent de ora din zi. Presupuneți că un senzor detectează prezența oamenilor în galerie și produce o stare logică high (1). De asemenea, există un senzor care detectează nivelul luminii care intră în galerie din exterior și generează o stare logică high (1) atunci când nivelul luminii este inadecvat. Mai mult, un ceas digital produce o stare logică high când timpul este între 6:00 a.m. și 19:00. Proiectați un circuit logic care utilizează porți NAND doar pentru a acționa comutatorul.

Soluţie

Starea logică a senzorului de prezență oameni este notată cu p, cea a senzorului de lumină este notată cu l, iar cea a senzorului de timp este notată cu t. Ieșirea circuitului logic este notată cu s, care este high (1) atunci când întrerupătorul trebuie să fie pornit. Logica funcționării: comutatorul trebuie să fie ON atunci când există oameni în galerie „și” lumina care intră din exterior nu este adecvată, „sau” dacă timpul nu este între 6:00 a.m. 19:00 Această afirmație se traduce în relația booleană

Acum, pentru a determina realizarea numai cu porțile NAND, procedăm după cum urmează:

(prin dubla negație și aplicarea legii De Morgan)

Se vede că această relație poate fi realizată folosind două porți NAND, așa cum se arată în figura 8.9.

FIGURA 8.9 Un circuit logic care operează luminile într-o galerie de artă

8.4.3.3 Semnalele active-low

Dispozitivele logice folosesc adesea tranzistoare npn (sau tranzistoare cu canal-n) la terminalele lor de ieșire. Aceasta se datorează faptului că aceste tranzistoare pot gestiona curenți mai mari și pot funcționa la viteze de comutare mai mari decât tranzistoarele pnp (sau tranzistoarele cu canal-p). Sunt necesare nivele de curent destul de ridicate pentru a acționa dispozitive ca motoare și solenoizi și, prin urmare, dispozitivele de comutare bazate pe tranzistoare npn sunt de dorit în astfel de aplicații. Un dispozitiv logic bazat pe acest principiu este prezentat în figura 8.10. Aici, baza B este intrarea la tranzistor și colectorul C reprezintă ieșirea. Emitorul E este împământat. Colectorul trebuie să fie conectat intern la un rezistor adecvat și la o alimentare vcc (de obicei, 5 V). Dacă colectorul nu este conectat intern în acest mod, avem o ieșire de colector-deschis, ceea ce nu este de dorit. În acest caz, colectorul trebuie să fie conectat extern printr-un rezistor de extragere (pull-up) la sursa de alimentare vcc. Această rezistență trebuie să fie suficient de mare (de exemplu, 2 kΩ). În caz contrar, curenții mari rezultați vor crește disiparea de putere și, în plus, tensiunea de ieșire (care trebuie să fie mică pentru starea logică-0) va crește.

FIGURA 8.10 Un dispozitiv logic cu ieșire activă-low

Tranzistorul npn din figura 8.10 funcționează ca un comutator semiconductor. Acest lucru poate fi explicat după cum urmează. Atunci când tensiunea de intrare la tranzistor (adică tensiunea de bază în raport cu emitorul, vbe) este mică (<0,7 V), nu va exista curent prin colector (și prin urmare prin Rc). Atunci tranzistorul este în starea lui oprită, iar ieșirea vo va fi aproape de vcc. Aceasta este o stare de tensiune-high pentru ieșire. Impedanța de ieșire a tranzistorului este mare (câțiva kΩ) în această stare. Când intrarea la tranzistor este mai mare de 0,7 V, va fi polarizat direct și este deschis. Un curent finit va conduce prin colector, saturând astfel tranzistorul, rezultând o cădere semnificativă de tensiune pe Rc. Drept urmare, tensiunea de ieșire vo va fi aproape de zero (în jur de 0,2 V). Aceasta este o stare de tensiune-low pentru ieșire. Impedanța de ieșire a tranzistorului este scăzută în această stare.

În rezumat: când tranzistorul este oprit (0-logic), semnalul de ieșire este high; când tranzistorul este pornit (1-logic), tranzistorul este saturat și semnalul de ieșire este low (cu o cantitate rezonabilă de curent pentru a acționa un dispozitiv). Cu alte cuvinte, dispozitivul logic are o ieșire low-activă.

Un dispozitiv logic TTL (așa cum se arată în figura 8.10, de exemplu) prezintă unele dezavantaje față de un dispozitiv logic CMOS, având în vedere viteza de comutare mai rapidă, capacitatea mai mare de fan-out (adică numărul de dispozitive pe care le poate acționa la ieșire), și o imunitate crescută la zgomot, a celui din urmă. Pentru a realiza aceste avantaje, porțile logice ar trebui să aibă impedanțe mici de ieșire, indiferent dacă ieșirea este la 0-logic sau la 1-logic. Acest lucru este esențial pentru ca la viteze rapide de comutare tranzistorul de ieșire să fie capabil să furnizeze și să absoarbă curenți mari. Nu este cazul circuitului din figura 8.10. Aici, când tensiunea de intrare (la bază) este mică (0-logică), tranzistorul nu va conduce (oprit), așa cum s-a indicat anterior, iar ieșirea va fi la o tensiune high (1-logic). În această stare, impedanța de ieșire va fi mare (de exemplu, 1,4 kΩ). Când tensiunea de intrare (bază) este suficient de mare (1-logic), tranzistorul va fi pornit și tensiunea la colector va scădea la o valoare mică (0-logic). Atunci impedanța de ieșire (rezistența dintre colectorul tranzistorului saturat și masă) va fi mică.

În dezvoltările secțiunilor anterioare, am presupus semnale high-active, unde nivelul de tensiune high reprezintă 1-logic (TRUE logic), iar nivelul de tensiune low reprezintă 0-logic (FALSE logic). Acesta este cazul implicit. Cu alte cuvinte, dacă nu este specificat low-active (notat cu semnal L), presupunem semnale high-active (notate prin semnal H). Prin urmare, un semnal notat cu A este identic cu A.H. Dar, așa cum s-a indicat mai înainte, utilizarea semnalului low-active este adecvată în unele aplicații practice. Rețineți că semnal L poate fi convertit în semnal H și invers, prin simpla adăugare a unui invertor (poartă NOT). De exemplu, dacă A este un semnal high-active, A = A.H;

Exemplul 8.7

Folosind doar porți NAND și porți NOT (inversoare), dezvoltați un circuit logic pentru a realiza C = A ⊕ B presupunând că ambele semnale de intrare (A, B) sunt disponibile în forma high-activă și ieșirea C este, de asemenea, necesară în forma high-activă. Semnalele A.L., B.L. sunt disponibile, iar ieșirea dorită din circuit este C.L.

Soluţie

Deoarece avem

(negare dublă și De Morgan)

Aceasta este implementată în forma activ-high în figura 8.11a și în forma activ-low în figura 8.11b.

FIGURA 8.11 Implementarea XOR cu porți NAND folosind:
(a) semnale active-
high și (b) semnale active-low

Comparați aceste implementări cu ceea ce este prezentat în figura 8.4.

8.4.4 Realizare minimală

Expresiile booleene ale funcțiilor logice pot conține o redundanță (un surplus). Implementarea lor într-o astfel de formă va necesita un număr crescut de porți logice și nu va fi de dorit (privind costurile, complexitatea, fiabilitatea, consumul de energie etc.). Sunt disponibile proceduri pentru a reduce (și a minimiza) funcțiile logice înainte de a fi implementate. În particular, pot fi utilizate diferite operații de reducere/simplificare a algebrei booleene, așa cum este prezentat în tabelul 8.2 și ilustrat în diferite exemple din secțiunile anterioare. Utilizarea hărților K este o procedură populară și convenabilă pentru determinarea realizării minime a unei funcții logice, care este explicată în continuare.

8.4.4.1 Metoda hărții Karnaugh

Minimizarea funcțiilor logice cu ajutorul hărților K se bazează pe proprietatea A + Ā = 1 și extensiile sale, cum ar fi și

Am văzut că orice funcție booleană (logică) poate fi exprimată ca un tabel de adevăr în raport cu variabilele sale, într-un tablou unidimensional. O hartă K este o versiune convenabilă a unui tabel de adevăr unde se folosește o hartă tip matrice, care este mai convenabilă atunci când numărul variabilelor este mare. Fiecare rând sau coloană a matricei reprezintă un grup de variabile (de obicei, o pereche). Grupurile de variabile sunt aranjate astfel încât doar una dintre variabile să fie completată de la un grup la grupul adiacent (adică se păstrează adiacența, doar o comutare de un bit între două grupuri adiacente). Procedura de reducere este rezumată mai jos:

1. Separați variabilele funcției logice în două grupuri, unul reprezentând rândurile unei matrice și celălalt reprezentând coloanele matricei, după cum urmează: Dacă există doar două variabile, fiecare grup va conține o variabilă; dacă există trei variabile, un grup va avea două variabile, iar celălalt va avea cea rămasă; dacă există patru variabile, fiecare grup va avea două variabile, etc.

2. Marcați rândurile și coloanele matricei cu diferite combinații de stări logice pentru cele două grupuri, astfel încât rândurile adiacente sau coloanele adiacente să corespundă unei comutări de un singur bit (adică complementarea unei singure variabile).

3. Marcați celulele matricei cu 1-uri corespunzând termenilor funcției logice (celulele nemarcate au 0-uri).

4. Identificați toate blocurile dreptunghiulare care sunt umplute (adică fără 0), începând de la blocurile cu cel mai mare număr de celule și terminând la celulele singure rămase, după cum urmează: Blocuri cu un număr par de rânduri și coloane, blocuri cu un rând și un număr par de coloane, blocuri cu o singură coloană și un număr par de rânduri, celule singure. În această procedură, permiteți înconjurarea (adică, primul și ultimul rând sunt legate, și prima și ultima coloană sunt legate, într-un mod cilindric). Notă: Un subset de uniune de blocuri deja marcate nu trebuie marcat ca un bloc nou.

5. Reduceți fiecare bloc într-o formă minimă utilizând formulele de reducere a algebrei booleane.

Exemplul 8.8

Considerați funcția logică

Utilizând o hartă K, reduceți această funcție și exprimați-o în

(i) Forma sumă de produse
(ii) Forma Produs de sume

Soluţie

Expresia dată poate fi extinsă ca:

Harta sa K este prezentată mai jos.

Y:

(i) În primul rând, împărțim harta K, după cum se arată mai jos, pentru a forma patru blocuri cu 4 elemente:

În consecință, scriem forma redusă:

Aceasta este, în minimal, suma formelor de produs. Notă: La ajungerea acestei expresii, harta K a fost partiționată în patru blocuri având fiecare patru elemente. Primul termen corespunde rândului de jos 1×4. Al doilea termen corespunde blocului 2×2 din colțul stânga jos. Al treilea termen corespunde blocului 2×2 înconjurat format din ultimele două elemente din rândul de jos și ultimele două elemente ale rândului de sus. Ultimul termen corespunde blocului 2×2 înconjurat format din ultimele două elemente ale primei coloane și ultimele două elemente ale ultimei coloane.

(ii) Celulele 0 din harta K de mai sus oferă termenii valorii de adevăr pentru Ȳ. Prin urmare, putem forma harta K pentru așa cum este prezentată mai jos.

Ȳ

Această hartă K poate fi împărțită în două blocuri de 4 celule și un bloc de 2 celule, oferind expresie minimă:

Acum negați (complementați) expresia pentru a obține

Aceasta este funcția minimă în produsul formelor de sumă.

8.5 Dispozitive logice secvențiale