2/4
🔌 Hardware

Electronica digitala

Lecția 2 ⏱ 80

Curs de Electronică Digitală


Cuprins

  1. Introducere în electronica digitală
  2. Sisteme de numerație și coduri
  3. Algebra booleană și funcții logice
  4. Porți logice fundamentale
  5. Circuite logice combinaționale
  6. Circuite logice secvențiale — Bistabile (Flip-Flops)
  7. Registre și contoare
  8. Memorii semiconductoare
  9. Convertoare analog-digitale (ADC) și digital-analogice (DAC)
  10. Familii logice și caracteristici electrice
  11. Circuite logice programabile (PLD, CPLD, FPGA)
  12. Microcontrolere — noțiuni introductive
  13. Proiectare practică și interfațare

1. Introducere în electronica digitală

1.1 Semnale digitale vs. analogice

Semnalele digitale au doar două stări distincte, reprezentate convențional prin 0 logic (LOW) și 1 logic (HIGH). Această discretizare conferă circuitelor digitale imunitate ridicată la zgomot, reproductibilitate perfectă și posibilitatea de a efectua operații logice și aritmetice complexe.

Caracteristică Semnal analogic Semnal digital
Valori Continue (infinit de multe) Discrete (0 și 1)
Imunitate la zgomot Scăzută Ridicată
Precizie Limitată de zgomot Limitată de nr. de biți
Procesare Circuite analogice Porți logice, procesoare
Stocare Dificilă, degradabilă Perfectă, nelimitată

1.2 Niveluri logice

Într-un sistem digital, tensiunile sunt interpretate ca 0 sau 1 conform unor praguri:

Logică pozitivă (convenția standard):

  • HIGH (1): tensiune apropiată de V_CC (ex. 3.3V sau 5V)
  • LOW (0): tensiune apropiată de GND (0V)

Praguri pentru familia CMOS (alimentare 5V):

V_OH(min) = 4.4V    (ieșire HIGH minimă)
V_OL(max) = 0.5V    (ieșire LOW maximă)
V_IH(min) = 3.5V    (intrare interpretată ca HIGH)
V_IL(max) = 1.5V    (intrare interpretată ca LOW)

Marginea de zgomot:

NM_H = V_OH(min) - V_IH(min) = 0.9V
NM_L = V_IL(max) - V_OL(max) = 1.0V

1.3 Cronograme

Cronograma este reprezentarea grafică a semnalelor digitale în funcție de timp. Pe axa orizontală se află timpul, iar pe axa verticală nivelul logic (0 sau 1). Fronturile semnalului sunt:

  • Front crescător (rising edge): tranziția 0 → 1
  • Front descrescător (falling edge): tranziția 1 → 0

Parametri temporali importanți: timpul de propagare (t_pd), timpul de setup (t_su), timpul de hold (t_h), timpul de creștere (t_r) și timpul de coborâre (t_f).


2. Sisteme de numerație și coduri

2.1 Sisteme de numerație

Binar (baza 2):
Cifrele sunt 0 și 1 (biți). Bitul cel mai semnificativ se numește MSB (Most Significant Bit), iar cel mai puțin semnificativ LSB (Least Significant Bit).

Exemplu: 1101₂ = 1·2³ + 1·2² + 0·2¹ + 1·2⁰ = 8 + 4 + 0 + 1 = 13₁₀

Octal (baza 8):
Cifrele sunt 0–7. Fiecare cifră octală corespunde la 3 biți.

Exemplu: 17₈ = 1·8¹ + 7·8⁰ = 15₁₀ = 001 111₂

Hexazecimal (baza 16):
Cifrele sunt 0–9, A–F. Fiecare cifră hex corespunde la 4 biți (un nibble).

Exemplu: 2F₁₆ = 2·16¹ + 15·16⁰ = 47₁₀ = 0010 1111₂

Tabel de conversie rapidă:

Decimal Binar Octal Hex
0 0000 0 0
1 0001 1 1
2 0010 2 2
3 0011 3 3
4 0100 4 4
5 0101 5 5
6 0110 6 6
7 0111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F

2.2 Conversii între baze

Zecimal → Binar: se împarte succesiv la 2, resturile citite invers formează numărul binar.

Exemplu: 25₁₀ → 25/2=12 r1, 12/2=6 r0, 6/2=3 r0, 3/2=1 r1, 1/2=0 r1
Rezultat: 11001₂

Binar → Hex: se grupează câte 4 biți de la dreapta.

Exemplu: 1101 0110₂ → D6₁₆

Hex → Binar: fiecare cifră hex se înlocuiește cu 4 biți.

Exemplu: A3₁₆ → 1010 0011₂

2.3 Reprezentarea numerelor cu semn

Mărime și semn (Sign-Magnitude):
Bitul MSB indică semnul (0 = pozitiv, 1 = negativ), restul biților indică magnitudinea.

  • Dezavantaj: două reprezentări pentru zero (+0 și -0)

Complement față de 1 (One’s Complement):
Negativul se obține inversând toți biții.

  • Dezavantaj: tot două zerouri

Complement față de 2 (Two’s Complement) — standard:
Negativul se obține inversând toți biții și adunând 1.

Exemplu pe 8 biți:
+5  = 0000 0101
-5  = 1111 1011   (inversare: 1111 1010, +1 = 1111 1011)

Intervalul pe n biți: de la -2^(n-1) la +2^(n-1) - 1.
Pe 8 biți: -128 … +127.

Avantaj: un singur zero, adunarea și scăderea folosesc același circuit.

2.4 Aritmetică binară

Adunarea:

  0 + 0 = 0
  0 + 1 = 1
  1 + 0 = 1
  1 + 1 = 10  (0 cu transport 1)

Scăderea: se realizează prin adunare cu complementul față de 2 al scăzătorului.

Înmulțirea: similar cu înmulțirea zecimală, prin sume parțiale deplasate.

Depășirea (overflow): apare când rezultatul depășește intervalul de reprezentare. Se detectează comparând transportul care intră și cel care iese din bitul de semn.

2.5 Coduri binare importante

BCD (Binary Coded Decimal): fiecare cifră zecimală e codificată pe 4 biți.

Exemplu: 92₁₀ = 1001 0010(BCD)

Codul Gray: între două valori consecutive diferă un singur bit. Folosit în encodere rotative și diagrame Karnaugh.

Binar:  000 001 010 011 100 101 110 111
Gray:   000 001 011 010 110 111 101 100

Conversie: G(i) = B(i) ⊕ B(i+1), unde G(MSB) = B(MSB).

ASCII: cod de 7 biți (128 caractere) pentru reprezentarea textului.

Unicode / UTF-8: extensie modernă care acoperă toate sistemele de scriere.

2.6 Detectarea și corectarea erorilor

Bit de paritate: un bit suplimentar adăugat pentru ca numărul total de biți 1 să fie par (paritate pară) sau impar. Detectează erori singulare, nu le corectează.

Codul Hamming: adaugă mai mulți biți de control, poate detecta erori duble și corecta erori singulare (SECDED — Single Error Correction, Double Error Detection).

CRC (Cyclic Redundancy Check): polinom de verificare, detectează erori multiple. Folosit în Ethernet, USB, stocare.


3. Algebra booleană și funcții logice

3.1 Operațiile fundamentale

Operație Simbol Notație Descriere
ȘI (AND) · A · B 1 doar dacă ambele intrări sunt 1
SAU (OR) + A + B 1 dacă cel puțin o intrare este 1
NU (NOT) Ā Inversează valoarea logică

Operații derivate:

Operație Simbol Descriere
NAND (A·B)̄ NOT AND — 0 doar dacă ambele sunt 1
NOR (A+B)̄ NOT OR — 1 doar dacă ambele sunt 0
XOR A ⊕ B SAU exclusiv — 1 dacă intrările diferă
XNOR (A⊕B)̄ Echivalență — 1 dacă intrările sunt egale

3.2 Axiome și teoreme ale algebrei booleene

Axiome de bază:

A · 0 = 0          A + 0 = A
A · 1 = A          A + 1 = 1
A · A = A          A + A = A
A · Ā = 0          A + Ā = 1
Ā̄ = A             (dubla negație)

Proprietăți (comutativitate, asociativitate, distributivitate):

A · B = B · A                          (comutativitate)
A + B = B + A
(A · B) · C = A · (B · C)             (asociativitate)
(A + B) + C = A + (B + C)
A · (B + C) = A·B + A·C               (distributivitate ȘI față de SAU)
A + B·C = (A+B) · (A+C)               (distributivitate SAU față de ȘI)

Teoremele absorbției:

A + A·B = A
A · (A + B) = A
A + Ā·B = A + B

Teoremele lui De Morgan:

(A · B)̄ = Ā + B̄     (complementul produsului = suma complementelor)
(A + B)̄ = Ā · B̄     (complementul sumei = produsul complementelor)

Teoremele lui De Morgan sunt fundamentale pentru conversia între porți NAND/NOR și AND/OR.

Generalizare De Morgan (n variabile):

(A₁ · A₂ · ... · Aₙ)̄ = Ā₁ + Ā₂ + ... + Āₙ
(A₁ + A₂ + ... + Aₙ)̄ = Ā₁ · Ā₂ · ... · Āₙ

3.3 Forme canonice

Orice funcție logică poate fi exprimată în două forme standard:

Forma canonică disjunctivă (SOP — Sum of Products):
Sumă de mintermi. Fiecare mintermen este un produs al tuturor variabilelor (complementate sau nu).

F(A,B,C) = Σm(1,3,5,7) = Ā·B̄·C + Ā·B·C + A·B̄·C + A·B·C

Forma canonică conjunctivă (POS — Product of Sums):
Produs de maxtermi. Fiecare maxtermen este o sumă a tuturor variabilelor.

F(A,B,C) = ΠM(0,2,4,6) = (A+B+C)·(A+B̄+C)·(Ā+B+C)·(Ā+B̄+C)

3.4 Minimizarea funcțiilor logice

Metoda algebrică:
Se aplică teoremele algebrei booleene pentru a reduce expresia.

Exemplu: F = A·B + A·B̄ = A·(B + B̄) = A·1 = A

Diagrama Karnaugh (K-map):
Metodă grafică de minimizare. Variabilele sunt aranjate în cod Gray pe rânduri și coloane, astfel încât celulele adiacente diferă prin un singur bit.

Pași:

  1. Se completează tabelul K-map cu valorile funcției
  2. Se grupează celulele cu valoare 1 în grupuri de 1, 2, 4, 8, 16… (puteri ale lui 2)
  3. Grupurile trebuie să fie dreptunghiulare și cât mai mari
  4. Se extrage expresia minimizată — fiecare grup devine un termen produs

K-map pentru 2 variabile:

        B=0  B=1
A=0  |  m0 | m1 |
A=1  |  m2 | m3 |

K-map pentru 3 variabile:

         BC=00  BC=01  BC=11  BC=10
A=0   |  m0  |  m1  |  m3  |  m2  |
A=1   |  m4  |  m5  |  m7  |  m6  |

K-map pentru 4 variabile:

          CD=00  CD=01  CD=11  CD=10
AB=00  |  m0  |  m1  |  m3  |  m2  |
AB=01  |  m4  |  m5  |  m7  |  m6  |
AB=11  |  m12 |  m13 |  m15 |  m14 |
AB=10  |  m8  |  m9  |  m11 |  m10 |

Condiții indiferente (Don’t Care — X):
Combinații de intrare care nu apar niciodată sau al căror rezultat nu contează. Pot fi incluse în grupuri pentru a mări dimensiunea acestora și a simplifica funcția.

Metoda Quine-McCluskey:
Algoritm sistematic de minimizare, echivalent cu K-map dar aplicabil pentru orice număr de variabile (implementabil pe calculator).


4. Porți logice fundamentale

4.1 Tabelele de adevăr

AND (ȘI):

A B Y = A·B
0 0 0
0 1 0
1 0 0
1 1 1

OR (SAU):

A B Y = A+B
0 0 0
0 1 1
1 0 1
1 1 1

NOT (NU / Inversor):

A Y = Ā
0 1
1 0

NAND:

A B Y = (A·B)̄
0 0 1
0 1 1
1 0 1
1 1 0

NOR:

A B Y = (A+B)̄
0 0 1
0 1 0
1 0 0
1 1 0

XOR (SAU Exclusiv):

A B Y = A⊕B
0 0 0
0 1 1
1 0 1
1 1 0

XNOR (Echivalență):

A B Y = (A⊕B)̄
0 0 1
0 1 0
1 0 0
1 1 1

4.2 Universalitatea porților NAND și NOR

Orice funcție logică poate fi implementată folosind exclusiv porți NAND sau exclusiv porți NOR. De aceea, NAND și NOR sunt numite porți universale.

Realizarea funcțiilor de bază cu NAND:

NOT:   Ā = (A · A)̄ = NAND(A, A)
AND:   A·B = ((A·B)̄)̄ = NAND(NAND(A,B), NAND(A,B))
OR:    A+B = (Ā · B̄)̄ = NAND(NAND(A,A), NAND(B,B))

Realizarea funcțiilor de bază cu NOR:

NOT:   Ā = (A + A)̄ = NOR(A, A)
OR:    A+B = ((A+B)̄)̄ = NOR(NOR(A,B), NOR(A,B))
AND:   A·B = (Ā + B̄)̄ = NOR(NOR(A,A), NOR(B,B))

4.3 Porți cu trei stări (Tri-State)

O poartă tri-state are o intrare de control (Enable). Când Enable este activ, ieșirea funcționează normal (0 sau 1). Când Enable este inactiv, ieșirea trece în stare de înaltă impedanță (Hi-Z), echivalent cu o deconectare electrică.

Esențiale pentru magistrale (bus) unde mai multe dispozitive partajează aceleași fire.

4.4 Porți cu colector/drenă deschisă (Open-Drain/Open-Collector)

Ieșirea poate trage doar spre LOW; pentru HIGH se folosește un rezistor de pull-up extern. Permite conectarea mai multor ieșiri pe același fir (wired-AND).


5. Circuite logice combinaționale

Într-un circuit combinațional, ieșirile depind exclusiv de starea curentă a intrărilor — nu există memorie sau feedback.

5.1 Sumatorul (Adder)

Semi-sumatorul (Half Adder):
Adună 2 biți, produce suma (S) și transportul (C_out).

S = A ⊕ B
C_out = A · B

Sumatorul complet (Full Adder):
Adună 2 biți plus un transport de intrare (C_in).

S = A ⊕ B ⊕ C_in
C_out = A·B + C_in·(A ⊕ B)

Sumatorul cu transport propagat (Ripple Carry Adder):
n sumatoare complete înlănțuite. Simplu, dar lent — transportul se propagă prin toate etajele.
Întârziere: t_total = n · t_FA.

Sumatorul cu transport anticipat (Carry Look-Ahead Adder — CLA):
Calculează transportul simultan pentru toate pozițiile, folosind funcțiile de generare (G) și propagare (P):

G_i = A_i · B_i
P_i = A_i ⊕ B_i
C_i = G_i + P_i · C_{i-1}

Întârziere mult redusă: O(log n) în loc de O(n).

5.2 Scăzătorul (Subtractor)

Se realizează prin adunare cu complementul față de 2: A - B = A + (not B) + 1.

Un sumator cu un XOR pe fiecare bit al lui B și C_in = 1 devine scăzător. Cu un semnal de control (ADD/SUB), aceleași componente realizează ambele operații.

5.3 Comparatorul

Compară două numere binare de n biți și produce trei ieșiri: A > B, A = B, A < B.

Comparatorul pe 1 bit:

A > B: A · B̄
A = B: A ⊙ B = (A ⊕ B)̄
A < B: Ā · B

Comparatoarele multi-bit se cascadează sau se construiesc ierarhic.

Circuit integrat clasic: 74HC85 (comparator pe 4 biți, cascadabil).

5.4 Decodificatorul (Decoder)

Convertește un cod binar de n biți în 2ⁿ ieșiri, dintre care exact una este activă.

Decodificatorul 2-la-4:

Intrări: A₁, A₀
Ieșiri: Y₀ = Ā₁·Ā₀, Y₁ = Ā₁·A₀, Y₂ = A₁·Ā₀, Y₃ = A₁·A₀

Decodificatorul 3-la-8 (ex. 74HC138):
Folosit pentru selecția adreselor de memorie, decodificarea instrucțiunilor, activarea dispozitivelor.

Decodificatorul BCD-la-7-segmente (ex. 74HC47):
Convertește o cifră BCD (4 biți) în cele 7 segmente necesare afișajului.

5.5 Codificatorul (Encoder)

Operația inversă decodificatorului: 2ⁿ intrări → cod binar de n biți.

Codificatorul cu prioritate (Priority Encoder):
Când mai multe intrări sunt active simultan, codifică doar intrarea cu prioritatea cea mai mare. Circuitul integrat 74HC148 este un codificator cu prioritate 8-la-3.

5.6 Multiplexorul (MUX)

Selectează una dintre cele 2ⁿ intrări de date și o transmite la ieșire, pe baza unui cod de selecție de n biți.

MUX 4-la-1:

Y = Ā₁·Ā₀·D₀ + Ā₁·A₀·D₁ + A₁·Ā₀·D₂ + A₁·A₀·D₃

Aplicații: selectarea surselor de date, rutarea semnalelor, implementarea funcțiilor logice (un MUX 2ⁿ-la-1 poate implementa orice funcție de n variabile).

Circuite integrate: 74HC151 (MUX 8:1), 74HC153 (2× MUX 4:1).

5.7 Demultiplexorul (DEMUX)

Operația inversă: distribuie o singură intrare de date către una din cele 2ⁿ ieșiri, pe baza codului de selecție.

Un decodificator cu intrare de enable funcționează ca DEMUX.

5.8 Generatoare și verificatoare de paritate

Circuitul generator calculează bitul de paritate (par/impar) pentru un cuvânt de date. Verificatorul confirmă la recepție dacă paritatea e corectă.

Implementare: lanț de porți XOR (XOR este funcția de paritate prin natură).

5.9 Unitatea aritmetică-logică (ALU)

ALU-ul combină mai multe funcții (adunare, scădere, AND, OR, XOR, comparare, deplasare) controlate prin coduri de operație.

Exemplul clasic: 74HC181 — ALU pe 4 biți cu 16 operații aritmetice și 16 operații logice.

ALU-ul este blocul central al oricărui procesor.


6. Circuite logice secvențiale — Bistabile (Flip-Flops)

Circuitele secvențiale au memorie — ieșirea depinde nu doar de intrările curente, ci și de starea anterioară.

6.1 Latch-ul SR (Set-Reset)

Cel mai simplu element de memorie, construit din două porți NOR sau NAND interconectate.

Latch SR cu porți NOR:

S R Q(t+1) Observație
0 0 Q(t) Păstrează starea
0 1 0 Reset
1 0 1 Set
1 1 ? Interzis

Combinația S=R=1 este interzisă deoarece produce o stare nedeterminată.

6.2 Latch-ul D (Data)

Elimină starea interzisă a latch-ului SR adăugând un inversor:

S = D,  R = D̄

Când Enable (E) = 1, ieșirea Q urmărește intrarea D. Când E = 0, Q se menține.

Transparent latch: Q este „transparent” cât timp E=1 (Q = D). Aceasta poate cauza probleme de sincronizare.

6.3 Flip-Flop D (Edge-Triggered)

Captează valoarea intrării D doar pe frontul activ al ceasului (de regulă frontul crescător). Între fronturi, ieșirea rămâne constantă, indiferent de schimbările lui D.

La ↑CLK: Q(t+1) = D

Parametri temporali critici:

  • t_su (setup time): D trebuie să fie stabil cu t_su înainte de front
  • t_h (hold time): D trebuie să rămână stabil t_h după front
  • t_pd (propagation delay): întârziere de la CLK la schimbarea lui Q

Violarea setup/hold duce la metastabilitate — o stare intermediară periculoasă în care Q nu este nici 0, nici 1.

Circuite integrate: 74HC74 (dual D flip-flop).

6.4 Flip-Flop JK

Rezolvă starea interzisă a SR-ului: când J=K=1, ieșirea se complementează (toggle).

J K Q(t+1) Observație
0 0 Q(t) Păstrează starea
0 1 0 Reset
1 0 1 Set
1 1 Q̄(t) Toggle

Circuite integrate: 74HC76, 74HC112.

6.5 Flip-Flop T (Toggle)

Caz particular al JK cu J=K=T:

T=0: Q(t+1) = Q(t)      (menține)
T=1: Q(t+1) = Q̄(t)     (comută)

Folosit în numărătoare binare: fiecare etaj T împarte frecvența la 2.

6.6 Tabelul excitației flip-flop-urilor

Folosit la proiectarea circuitelor secvențiale — arată ce intrări sunt necesare pentru a obține tranziția dorită.

Tabelul excitației D:

Q(t) Q(t+1) D
0 0 0
0 1 1
1 0 0
1 1 1

Tabelul excitației JK:

Q(t) Q(t+1) J K
0 0 0 X
0 1 1 X
1 0 X 1
1 1 X 0

Tabelul excitației T:

Q(t) Q(t+1) T
0 0 0
0 1 1
1 0 1
1 1 0

7. Registre și contoare

7.1 Registre

Un registru este un grup de flip-flop-uri D care stochează un cuvânt binar de n biți, toate controlate de același ceas.

Registru cu încărcare paralelă:
Toate cele n biți sunt încărcate simultan pe frontul de ceas când semnalul LOAD este activ.

Registru de deplasare (Shift Register):
Datele se deplasează cu o poziție la fiecare ciclu de ceas.

Tipuri de deplasare:

  • SISO (Serial In, Serial Out): date serial la intrare și ieșire
  • SIPO (Serial In, Parallel Out): conversie serial → paralel
  • PISO (Parallel In, Serial Out): conversie paralel → serial
  • PIPO (Parallel In, Parallel Out): registru cu încărcare paralelă

Registru de deplasare cu feedback liniar (LFSR):
Ieșirea anumitor flip-flop-uri se combină prin XOR și se reintroduce la intrare. Generează secvențe pseudoaleatoare de lungime maximă 2ⁿ - 1. Aplicații: generare de zgomot, CRC, criptare.

Circuite integrate clasice: 74HC164 (SIPO), 74HC165 (PISO), 74HC595 (SIPO cu latch de ieșire — extrem de popular pentru extinderea ieșirilor pe microcontrolere).

7.2 Contoare (numărătoare)

Un contor este un registru care trece printr-o secvență predefinită de stări la fiecare impuls de ceas.

Contorul asincron (ripple counter):
Flip-flop-uri T înlănțuite, fiecare divizând frecvența la 2. Ieșirea unui etaj este ceasul etajului următor.

  • Avantaj: simplu
  • Dezavantaj: întârziere cumulativă, glitch-uri temporare

Contorul sincron:
Toate flip-flop-urile au același ceas. Logica combinațională determină tranzițiile.

  • Avantaj: funcționare corectă la frecvențe mari
  • Dezavantaj: complexitate logică mai mare

Contorul binar de n biți: numără de la 0 la 2ⁿ-1 și revine la 0 (modulo 2ⁿ).

Contorul modulo-N (cu resetare):
Numără de la 0 la N-1 folosind logica de detectare a stării N pentru resetare.

Exemplu: Contor modulo-10 (decadă): numără 0–9 (4 flip-flop-uri + detectare 1010).

Contorul sus/jos (Up/Down Counter):
Un semnal de control determină direcția de numărare.

Contorul Johnson (twisted ring counter):
Registru de deplasare cu ieșirea Q̄ conectată la intrare. n flip-flop-uri → 2n stări distincte.

n=3: 000 → 100 → 110 → 111 → 011 → 001 → 000

Contorul inel (Ring Counter):
Registru de deplasare cu un singur bit 1 care circulă. n flip-flop-uri → n stări (one-hot encoding).

n=4: 0001 → 0010 → 0100 → 1000 → 0001

Circuite integrate clasice: 74HC93 (contor binar 4 biți), 74HC390 (contor decadă dual), 74HC163 (contor sincron 4 biți cu încărcare paralelă, cascadabil).


8. Memorii semiconductoare

8.1 Clasificarea memoriilor

Memorii
├── Volatile (pierd datele la oprirea alimentării)
│   ├── SRAM (Static RAM) — bistabile
│   └── DRAM (Dynamic RAM) — condensatoare
│
└── Nevolatile (păstrează datele)
    ├── ROM (Read Only Memory) — programat la fabricare
    ├── PROM — programabil o singură dată
    ├── EPROM — ștersibil cu UV
    ├── EEPROM — ștersibil electric, byte cu byte
    └── Flash — ștersibil electric, pe blocuri/sectoare

8.2 SRAM (Static RAM)

Fiecare celulă folosește 6 tranzistoare CMOS (two-inverter latch). Nu necesită refresh.

Caracteristici: acces rapid (ns), consum mai mare, densitate mai mică, cost mai ridicat. Folosită pentru cache (L1, L2, L3) în procesoare.

8.3 DRAM (Dynamic RAM)

Fiecare celulă folosește 1 tranzistor + 1 condensator. Condensatorul stochează bitul ca sarcină electrică. Necesită refresh periodic (la câteva milisecunde) deoarece sarcina se pierde prin scurgeri.

Caracteristici: densitate foarte mare, cost redus, acces mai lent decât SRAM. Variante moderne: DDR4, DDR5, LPDDR5 (cu rate de transfer de zeci de GB/s).

8.4 Memoria Flash

Folosește tranzistoare cu poartă flotantă (floating gate) care rețin sarcina electric și fără alimentare.

NOR Flash: acces aleator rapid la citire, programare lentă. Folosită pentru cod (firmware, BIOS).

NAND Flash: acces secvențial, densitate mare, cost redus. Folosită pentru stocare de masă (SSD, USB, carduri SD).

Limitări: număr finit de cicluri de scriere/ștergere (tipic 10³–10⁵), necesită algoritmi de wear-leveling.

8.5 Organizarea memoriei

O memorie de capacitate 2ⁿ × m are:

  • n linii de adresă (A₀…A_{n-1})
  • m linii de date (D₀…D_{m-1})
  • Semnale de control: CE (Chip Enable), OE (Output Enable), WE (Write Enable)

Exemplu: o memorie de 64K × 8 are 16 linii de adresă (2¹⁶ = 65536 locații) și 8 linii de date (1 byte per locație), capacitate totală = 64 KB.

8.6 Decodificarea adreselor

Când sistemul are mai multe chip-uri de memorie, un decodificator de adrese selectează chip-ul corect pe baza biților de adresă superiori. Biții inferiori selectează locația din interiorul chip-ului.


9. Convertoare analog-digitale (ADC) și digital-analogice (DAC)

9.1 Conversia analog-digitală — principii

Conversia AD implică trei etape: eșantionare (sampling), cuantizare (quantization) și codificare (encoding).

Teorema eșantionării (Nyquist-Shannon):

f_s ≥ 2 · f_max

Frecvența de eșantionare trebuie să fie cel puțin dublul frecvenței maxime din semnal, altfel apare aliasing (repliere spectrală).

Rezoluția:
Un ADC de n biți împarte intervalul de tensiune de intrare în 2ⁿ niveluri.

Rezoluția (LSB) = V_ref / 2ⁿ

Exemplu: ADC de 10 biți cu V_ref = 5V → rezoluție = 5V/1024 ≈ 4.88 mV.

Eroarea de cuantizare: maxim ±½ LSB.

SNR teoretic:

SNR(dB) ≈ 6.02·n + 1.76

Fiecare bit suplimentar adaugă ~6 dB de SNR.

9.2 Arhitecturi ADC

ADC cu aproximații succesive (SAR):
Folosește un DAC intern, un comparator și un registru SAR. La fiecare ciclu de ceas, determină câte un bit, de la MSB la LSB, prin comparare succesivă.

  • Rezoluție: 8–18 biți
  • Viteză: 10 kSPS – 10 MSPS
  • Consum redus, raport calitate-preț excelent
  • Cel mai utilizat tip de ADC

ADC Flash (paralel):
Folosește 2ⁿ-1 comparatoare simultan. Cel mai rapid, dar exponențial de complex.

  • Rezoluție: 4–8 biți
  • Viteză: > 1 GSPS
  • Consum și cost ridicate

ADC Sigma-Delta (ΣΔ):
Supreeșantionare + modulator de 1 bit + filtru digital decimator. Rezoluție foarte mare.

  • Rezoluție: 16–32 biți
  • Viteză: până la câteva kSPS (audio) sau MSPS (modernele)
  • Ideal pentru măsurători de precizie, audio, senzori

ADC cu integrare (dual-slope):
Integrează tensiunea de intrare pe un interval fix, apoi integrează o referință până la zero. Timpul de descărcare este proporțional cu tensiunea de intrare.

  • Rezoluție: 12–22 biți
  • Foarte lent, dar excelent pentru rejecția zgomotului de 50/60 Hz
  • Folosit în multimetre digitale

9.3 Conversia digital-analogică (DAC)

DAC cu rezistențe ponderate:
Fiecare bit controlează un comutator conectat la o rezistență ponderată binar (R, 2R, 4R, 8R…).

  • Simplu conceptual, dar necesită rezistențe cu precizie ridicată pe un interval larg

DAC cu rețea R-2R:
Folosește doar două valori de rezistență (R și 2R) într-o rețea tip scară.

  • Practic, popular, ușor de fabricat cu precizie bună
  • Fiecare treaptă contribuie cu un curent ponderat binar

DAC Sigma-Delta:
Flux de biți de 1 bit la rată mare + filtru analogic trece-jos. Folosit în audio (CD player, DAC USB).

Parametri DAC:

  • Rezoluție (n biți): numărul de niveluri discrete = 2ⁿ
  • INL (Integral Nonlinearity): deviația de la linia dreaptă ideală
  • DNL (Differential Nonlinearity): variația dimensiunii unui pas față de idealul de 1 LSB
  • Settling time: timpul până la stabilizarea ieșirii
  • Glitch energy: impulsuri parazite la tranziții

10. Familii logice și caracteristici electrice

10.1 Familia TTL (Transistor-Transistor Logic)

Bazată pe tranzistoare bipolare (BJT). Alimentare standard: 5V.

Subfamilia Prefix t_pd (ns) Putere/poartă (mW) f_max (MHz)
Standard TTL 74 10 10 35
Low-Power (L) 74L 33 1 3
High-Speed (H) 74H 6 22 50
Schottky (S) 74S 3 19 125
Low-Power Sch. 74LS 9 2 45
Advanced LS 74ALS 4 1.2 70
Fast (F) 74F 3 4 100

10.2 Familia CMOS (Complementary MOS)

Bazată pe perechi complementare NMOS + PMOS. Consum static aproape nul.

Subfamilia Prefix V_DD (V) t_pd (ns) Consum static
4000 (originală) CD4000 3–18 50–100 ~nW
74HC 74HC 2–6 8–15 ~nW
74HCT 74HCT 5 8–15 ~nW, intrări TTL
74AC 74AC 2–6 3–5 ~nW
74ACT 74ACT 5 3–5 ~nW, intrări TTL
74LVC 74LVC 1.65–3.6 2–4 ~nW
74AUC 74AUC 0.8–2.7 1–2 ~nW

Consum dinamic CMOS:

P_dyn = C_L · V_DD² · f

Puterea crește cu frecvența — aceasta este provocarea principală la frecvențe GHz.

10.3 Comparație TTL vs. CMOS

Parametru TTL (74LS) CMOS (74HC)
Alimentare 5V (strict) 2–6V (flexibil)
Consum static ~2 mW/poartă ~nW/poartă
Consum dinamic Relativ constant Proporțional cu f
Fan-out 10 (porți LS) 50+ (sarcini CMOS)
Imunitate la zgomot Moderată Excelentă (30% V_DD)
Intrări neconectate Văzute ca HIGH INTERZISE (floating!)

Regulă importantă CMOS: intrările neconectate captează zgomot și pot cauza oscilații, consum excesiv sau distrugerea circuitului. Toate intrările CMOS neutilizate trebuie legate la V_DD sau GND.

10.4 Interfațarea între familii logice

Când se conectează ieșiri TTL la intrări CMOS (sau invers), trebuie verificată compatibilitatea nivelurilor logice. Soluții uzuale: rezistoare de pull-up, buffere de nivel (level shifters), circuite 74HCT (intrări compatibile TTL, tehnologie CMOS).


11. Circuite logice programabile (PLD, CPLD, FPGA)

11.1 Evoluția circuitelor programabile

Porți discrete → SSI/MSI/LSI → PLA → PAL → GAL → CPLD → FPGA → SoC FPGA

Circuitele programabile permit implementarea funcțiilor logice personalizate fără a fabrica un ASIC dedicat.

11.2 PLA și PAL

PLA (Programmable Logic Array):
Matrice AND programabilă + matrice OR programabilă. Flexibilitate maximă, dar acces mai lent.

PAL (Programmable Array Logic):
Matrice AND programabilă + matrice OR fixă. Mai rapid și mai simplu decât PLA.

GAL (Generic Array Logic):
PAL reprogramabil (EEPROM). Poate emula diverse configurații PAL. Exemplu: GAL16V8, GAL22V10.

11.3 CPLD (Complex Programmable Logic Device)

Arhitectura: mai multe blocuri logice de tip PAL/GAL conectate printr-o matrice de interconectare programabilă.

Caracteristici: timing predictibil, nevolatil (păstrează configurația), boot instant, complexitate medie (sute — mii de porți echivalente).

Producători și serii: Xilinx CoolRunner, Intel (Altera) MAX.

11.4 FPGA (Field-Programmable Gate Array)

Arhitectura FPGA:

  • CLB (Configurable Logic Block): conțin LUT-uri (Look-Up Tables), flip-flop-uri și logică de transport. Un LUT de k intrări implementează orice funcție logică de k variabile (tipic k=4 sau k=6).
  • IOB (I/O Block): interfațare cu pinii externi, suportă diverse standarde I/O (LVCMOS, LVDS, LVTTL etc.)
  • Rețea de interconectare programabilă: conectează CLB-urile și IOB-urile
  • Resurse dedicate: multiplicatoare DSP, blocuri de memorie RAM (BRAM), PLL/MMCM (generare de ceas), transceivere de mare viteză

Fluxul de proiectare FPGA:

  1. Specificare — definirea funcționalității
  2. Descriere HDL — scrierea codului în VHDL sau Verilog
  3. Simulare funcțională — verificare logică (pre-sinteză)
  4. Sinteză — conversia HDL în rețea de porți (netlist)
  5. Implementare — plasare (Place) și rutare (Route) pe resurse fizice
  6. Simulare temporală — verificare cu întârzieri reale
  7. Generare bitstream — fișierul de configurare
  8. Programare — încărcarea pe FPGA

Producători și serii:

  • AMD (Xilinx): Spartan (low-cost), Artix (eficient energetic), Kintex (mid-range), Virtex (high-end), Versal (SoC adaptiv)
  • Intel (Altera): MAX 10 (low-cost), Cyclone (mid-range), Arria/Stratix (high-end), Agilex
  • Lattice: iCE40 (ultra-low-power), ECP5, Certus
  • Microchip: PolarFire (rad-tolerant, low-power), SmartFusion2

11.5 Limbaje de descriere hardware (HDL)

VHDL (VHSIC Hardware Description Language):
Puternic tipizat, verbose, popular în Europa și aplicații militare/aerospațiale.

-- Exemplu: poartă AND
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity and_gate is
    Port ( A, B : in  STD_LOGIC;
           Y    : out STD_LOGIC);
end and_gate;

architecture Behavioral of and_gate is
begin
    Y <= A and B;
end Behavioral;

Verilog / SystemVerilog:
Sintaxă similară cu C, concis, popular în SUA și Asia, standard industrial dominant.

// Exemplu: poartă AND
module and_gate (
    input  wire A, B,
    output wire Y
);
    assign Y = A & B;
endmodule

Diferențe conceptuale față de software:

  • HDL descrie hardware paralel, nu instrucțiuni secvențiale
  • Toate atribuirile assign în Verilog se execută simultan
  • Blocurile always descriu logică secvențială (flip-flop-uri) sau combinațională
  • Gândirea trebuie să fie în termeni de circuite, nu de algoritmi

12. Microcontrolere — noțiuni introductive

12.1 Ce este un microcontroler?

Un microcontroler (MCU) este un sistem pe cip (SoC) care integrează:

  • Procesor (CPU): execută instrucțiuni (arhitecturi: ARM Cortex-M, AVR, RISC-V, PIC, 8051)
  • Memorie Flash: stochează programul (nevolatilă)
  • Memorie RAM: date temporare (volatilă)
  • Periferice: GPIO, timere, ADC, DAC, UART, SPI, I²C, PWM, USB, CAN etc.
  • Ceas intern: oscilator RC sau cristal extern

12.2 Arhitecturi

Von Neumann: magistrală unică partajată pentru instrucțiuni și date (ex. 8051, ARM Cortex-M). Simplitate, dar potențial bottleneck.

Harvard: magistrale separate pentru instrucțiuni și date (ex. AVR, PIC). Permite citirea simultană a instrucțiunii și datelor.

RISC vs. CISC:

  • RISC (Reduced Instruction Set): instrucțiuni simple, executate într-un ciclu, pipeline eficient (ARM, RISC-V, AVR)
  • CISC (Complex Instruction Set): instrucțiuni complexe, mai puține instrucțiuni per program (x86, 8051)

12.3 Periferice digitale fundamentale

GPIO (General Purpose Input/Output):
Pinii configurabili ca intrare sau ieșire digitală. Moduri: push-pull, open-drain, pull-up/pull-down intern.

Timer/Counter:
Numărătoare hardware programabile. Funcții: generare PWM, măsurare de frecvență/perioadă, întârzieri precise, watchdog timer.

PWM (Pulse Width Modulation):
Semnal dreptunghiular cu factor de umplere variabil (duty cycle). Folosit pentru controlul motoarelor, dimming LED, generare de tensiune analogică medie.

V_mediu = V_DD · D

Unde D = t_ON / T este factorul de umplere (0–100%).

12.4 Interfețe de comunicație

UART (Universal Asynchronous Receiver-Transmitter):
Comunicație serială asincronă (fără ceas comun). Format: Start bit + 8 biți date + (paritate opțional) + Stop bit(s).
Baud rate-uri standard: 9600, 115200 etc.

SPI (Serial Peripheral Interface):
Comunicație serială sincronă full-duplex pe 4 fire: SCLK, MOSI, MISO, CS. Viteză ridicată (zeci de MHz). Master-slave, nu are adresare — selectare prin CS dedicat.

I²C (Inter-Integrated Circuit):
Comunicație serială sincronă pe 2 fire: SDA (date) și SCL (ceas). Multi-master, multi-slave cu adresare pe 7 sau 10 biți. Viteze: 100 kHz (standard), 400 kHz (fast), 3.4 MHz (high-speed).

Parametru UART SPI I²C
Fire 2 (TX, RX) 4 (+ CS per slave) 2 (SDA, SCL)
Sincronizare Asincronă Sincronă Sincronă
Viteză tipică ~1 Mbps 1–50 MHz 100k–3.4 MHz
Direcție Full-duplex Full-duplex Half-duplex
Nr. dispozitive 1-la-1 1 master, n slave Multi-master
Complexitate Simplă Simplă Moderată

12.5 Familii populare de microcontrolere

Familie Arhitectură Biți Utilizare tipică
ATmega (AVR) Harvard AVR 8 Arduino, hobby, educație
PIC Harvard PIC 8/16/32 Industrial, automotive
STM32 ARM Cortex-M 32 IoT, industrial, medical, audio
ESP32 Xtensa/RISC-V 32 WiFi/BLE, IoT
nRF52 ARM Cortex-M 32 Bluetooth Low Energy, wearables
RP2040 ARM Cortex-M0+ 32 Educație, maker, Raspberry Pi Pico
MSP430 RISC propriu 16 Ultra-low-power, senzori
RISC-V (diverse) RISC-V 32 Open-source, emergent

13. Proiectare practică și interfațare

13.1 Circuite de debounce

Butoanele mecanice produc oscilații la apăsare și la eliberare (bouncing), care pot fi interpretate ca multiple apăsări.

Debounce hardware:

  • Filtru RC + trigger Schmitt (ex. 74HC14): τ = RC aleasă pentru a depăși durata bouncing-ului (tipic 5–20 ms)
  • Latch SR cu două contacte

Debounce software:

// Principiu: se citește butonul, se așteaptă un delay, se recitește
if (button_pressed()) {
    delay_ms(20);          // așteaptă stabilizarea
    if (button_pressed()) {
        // confirmat: buton apăsat
    }
}

13.2 Interfațarea cu LED-uri

LED simplu cu rezistor de limitare:

R = (V_DD - V_LED) / I_LED

Exemplu: LED roșu (V_LED = 1.8V, I_LED = 10 mA) la 3.3V:

R = (3.3 - 1.8) / 0.01 = 150 Ω

LED-uri multiple cu registru de deplasare 74HC595:
Necesită doar 3 pini MCU (DATA, CLOCK, LATCH) pentru a controla 8+ LED-uri. Se pot cascada mai multe 74HC595.

13.3 Afișaje pe 7 segmente

Fiecare cifră are 7 segmente (a–g) plus punct zecimal (dp). Tipuri: anod comun (segmentele se activează cu LOW) sau catod comun (se activează cu HIGH).

Multiplexare: pentru mai multe cifre, se activează câte o cifră pe rând la viteză mare (>100 Hz), creând iluzia afișării simultane. Reduce drastic numărul de pini necesari.

13.4 Interfațarea cu LCD-uri

LCD alfanumeric (HD44780):
Interfață paralelă pe 4 sau 8 biți + RS, RW, EN. Poate afișa caractere alfanumerice pe 1–4 rânduri × 16–20 coloane.

LCD grafic / OLED (SSD1306 etc.):
Interfață SPI sau I²C. Permite afișare grafică (pixeli individuali, fonturi, imagini).

13.5 Motoare DC și servomotoare

Motor DC cu tranzistor MOSFET:
Un GPIO + PWM controlează viteza. O diodă de protecție (freewheeling) protejează MOSFET-ul de tensiunea indusă de bobina motorului.

Punte H (H-Bridge):
4 tranzistoare care permit controlul direcției motorului. Circuite integrate: L293D, DRV8833, TB6612.

Servomotor:
Controlat prin PWM cu perioadă de 20 ms. Lățimea pulsului determină unghiul: 1 ms → 0°, 1.5 ms → 90°, 2 ms → 180°.

13.6 Recomandări de proiectare PCB digital

  • Condensatoare de decuplare: 100 nF ceramic lângă fiecare circuit integrat + 10 μF electrolitic la alimentarea generală
  • Plan de masă (ground plane): strat continuu de cupru conectat la GND pe un întreg layer al PCB-ului
  • Semnale de ceas: trasee scurte, evitarea rutării paralele cu semnale sensibile
  • Terminare: rezistoare de terminare serie sau paralel pe linii lungi de mare viteză
  • Separare analogic-digital: planuri de masă separate, unite într-un singur punct
  • ESD protection: diode TVS pe liniile expuse la exterior (USB, Ethernet, conectori)
  • Pull-up/pull-down: pe toate intrările critice, pentru stare definită la power-up

Anexe

A. Tabele de circuite integrate logice clasice din seria 74xx

Circuit Funcție Nr. porți/funcții
74HC00 Quad NAND cu 2 intrări 4 porți
74HC02 Quad NOR cu 2 intrări 4 porți
74HC04 Hex Inversor (NOT) 6 inversoare
74HC08 Quad AND cu 2 intrări 4 porți
74HC14 Hex Inversor Schmitt Trigger 6 inversoare
74HC32 Quad OR cu 2 intrări 4 porți
74HC74 Dual D Flip-Flop 2 FF
74HC86 Quad XOR cu 2 intrări 4 porți
74HC138 Decodificator 3-la-8 1 decodificator
74HC151 Multiplexor 8-la-1 1 MUX
74HC163 Contor sincron 4 biți cu load 1 contor
74HC164 Registru de deplasare SIPO 8 biți 1 registru
74HC165 Registru de deplasare PISO 8 biți 1 registru
74HC245 Buffer bidirecțional octal 1 buffer
74HC273 Octal D Flip-Flop cu clear 8 FF
74HC573 Octal D Latch transparent 8 latch-uri
74HC595 Registru deplasare SIPO cu latch ieșire 1 registru

B. Formule esențiale de referință rapidă

Combinațional:

Număr de funcții posibile cu n intrări: 2^(2^n)
Decodificator n-la-2ⁿ: selectează 1 din 2ⁿ ieșiri
MUX 2ⁿ-la-1: implementează orice funcție de n variabile

Secvențial:

Contor modulo-N: necesită ⌈log₂(N)⌉ flip-flop-uri
Frecvența de ieșire contor: f_out = f_clk / N
LFSR de n biți: secvență de lungime maximă = 2ⁿ - 1

Conversie:

Rezoluție ADC: LSB = V_ref / 2ⁿ
SNR ADC ideal: SNR(dB) = 6.02n + 1.76
Frecvență Nyquist: f_N = f_s / 2

Putere CMOS:

P_static ≈ 0 (idealizat)
P_dinamic = C_L · V_DD² · f · N   (N = nr. de porți active)
P_scurtcircuit = proporțională cu timpul de tranziție

C. Glosar de termeni și abrevieri

Abreviere Semnificație
ADC Analog-to-Digital Converter
ALU Arithmetic Logic Unit
ASIC Application-Specific Integrated Circuit
BCD Binary Coded Decimal
BRAM Block RAM (în FPGA)
CLB Configurable Logic Block
CMOS Complementary Metal-Oxide Semiconductor
CPLD Complex Programmable Logic Device
CRC Cyclic Redundancy Check
DAC Digital-to-Analog Converter
DDR Double Data Rate
DEMUX Demultiplexer
DRAM Dynamic Random Access Memory
EEPROM Electrically Erasable Programmable ROM
EMI Electromagnetic Interference
ESD Electrostatic Discharge
FF Flip-Flop
FPGA Field-Programmable Gate Array
GPIO General Purpose Input/Output
HDL Hardware Description Language
I²C Inter-Integrated Circuit
IOB I/O Block (în FPGA)
LFSR Linear Feedback Shift Register
LUT Look-Up Table
MCU Microcontroller Unit
MSB/LSB Most/Least Significant Bit
MUX Multiplexer
PAL Programmable Array Logic
PLA Programmable Logic Array
PLD Programmable Logic Device
PLL Phase-Locked Loop
PWM Pulse Width Modulation
SAR Successive Approximation Register
SoC System on Chip
SPI Serial Peripheral Interface
SRAM Static Random Access Memory
TTL Transistor-Transistor Logic
UART Universal Asynchronous Receiver-Transmitter
VHDL VHSIC Hardware Description Language

Curs realizat ca material de referință pentru studenții de electronică, automatică și calculatoare.

Pe această pagină