Sunteți pe pagina 1din 84

Laboratorul 01 - Componente de baza

Componentele de bază ale unui circuit se împart în două categorii:


▪ componente pasive - sunt acele elemente de circuit care nu pot executa
funcţii de amplificare asupra semnalelor aplicate
▪ componente active - sunt elemente de circuit care pot controla
deplasarea electronilor (curentul) pe cale electrica si pot executa funcţii de
amplificare/atenuare asupra semnalelor aplicate
Diferența între cele două clase este faptul că în cazul componentelor pasive, acestea nu pot
genera energie.

Componentele pasive cel mai des întâlnite sunt:


▪ rezistorul
condensatorul

▪ bobina
▪ conectori
Componentele active de bază sunt:
▪ dioda
▪ tranzistorul
▪ circuitele integrate
Componente pasive
Componentele pasive sunt realizate în scopul obținerii unei anumite impedanțe cu o
comportare cât mai apropiată de cea ideală într-o bandă de frecvență cât mai mare și
concentrată într-un volum cât mai mic. Ele reprezintă elementele de circuit care nu au
amplificare sau direcționalitate.
Caracteristicile specifice componentelor pasive sunt, în general, specificate în fișa tehnică de
prezentare a componentelor. Caracteristicile de bază sunt:
1. Valoare nominală: valoarea care se dorește a fi obținută în procesul de
fabricație, măsurată în unitatea de măsură specifică componentei: Ohm pentru
Rezistor, Farad pentru condensator etc.
2. Toleranță de fabricație: abaterea maximă a valorii reale față de
valoarea nominală.
▪ E.g. O rezistență cu valoarea nominală de 100Ω și toleranță 5% va avea
valori între 95Ω și 105Ω. Din felul în care sunt separate, o rezistență cu
toleranță 10% nu va devia niciodată de la rezistență nominală cu mai puțin
de 5% (cu alte cuvinte, rezistența de 100Ω cu 10% toleranță va avea valori
între 90-95Ω și 105-110Ω).
▪ În funcție de toleranța dorită, există o clasificare pe serii (e.g. E12 cu 10%
toleranță, E24 cu 5%, E96 cu 1%).
3. Coeficientul de variație cu temperatura (%/°C): abaterea valorii
reale la variația temperaturii corpului său cu 1°C.
4. Puterea nominală activă: puterea maximă pe care poate să o disipe
componenta la o funcționare continuă într-un mediu ambiant cu temperatura
egală cu cea nominală.
5. Temperatura nominală: temperatura la care se definește puterea
nominală.
6. Tensiunea nominală este valoarea maximă a tensiunii ce poate fi
aplicată la bornele unei componente pentru o funcționare îndelungată.
7. Rezistența de izolație este definită ca raportul dintre tensiunea aplicată
unei componente și curentul continuu care se măsoară între terminale după un
minut de la aplicarea tensiunii.
Rezistor

Rezistorul reprezintă o componentă electrică pasivă de tip dipol care se opune trecerii
curentului electric, conform legii lui Ohm (sursă imagini: Wikipedia):
Marcare

▪ Cod alfa-numeric: 2R2, 200, 2K2, 1M.


▪ Codul culorilor:
▪ este folosit pe rezistori cilindrici
▪ valoarea nominală este dată de codificarea a 4,5,6 inele concentrice
de diferite culori
▪ primele inele (2 sau 3 - depinde de variantă) reprezintă cifrele
semnificative ale numărului
▪ penultimul inel reprezintă ordinul de mărime
▪ ultimulul inel este toleranța (variația în care se încadrează
rezistența față de valoarea nominală)
▪ citirea se începe de la partea opusă bandei argintii/aurii

Tipuri de rezistoare

▪ Rezistoarele fixe se împart în mai multe categorii (în funcție de


modul de construcție), câteva dintre cele mai uzuale fiind: rezistoarele
bobinate, rezistoarele cu peliculă de carbon, rezistoarele cu peliculă din
oxizi metalici, rezistoare peliculare chip (SMD).
▪ Rețelele de rezistori sunt capsule ce conțin mai multe rezistențe, care
prin procesul de producție au valori aproape identice (diferente de sub
0,01%). Pe lângă aceasta, toate rezistențele au aceeași temperatură (a
capsulei), astfel că variația valorilor la un moment de timp se modifică
asemănător pentru toate.
▪ Potențiometrul este un rezistor cu 3 contacte, unul din ele fiind la
mijloc. Se comportă ca un divizor de tensiune de raport variabil, cursorul
din mijloc putând fi mișcat. Dacă are doar două contacte (unul fiind
mobil), atunci este numit reostat.
▪ Rezistorul semi-reglabil (trimmer) este un tip de
potenționetru ce poate fi ajustat cu o șurubelniță, se consideră că
numărul de schimbări ale poziției sunt reduse (fie după fabricare, fie la
service).
Utilizări principale ale rezistorului

▪ Limitare a curentului. Exemplu:


▪ Un LED are o rezistență internă foarte mică, așa că el permite
trecerea unui curent foarte mare ceea ce duce la arderea LEDului.
Pentru a nu se întampla aceste lucru, se folosește o rezistență în serie
cu LEDul pentru a limita curentul. Dacă avem un LED ce rezistă la
10mA iar tensiunea este 5V atunci, pentru a calcula valoarea
rezistenței, folosim legea lui Ohm: R=V/I ⇒ R = 5V/0.01A = 500Ω.
▪ Pull-up. O rezistentă de pull-up asigură o valoare default intr-un
circuit. Daca nu am avea rezistența și legătura la Vcc atunci:
▪ Dacă switchul este închis atunci starea este bine definită
▪ Dacă switchul este deschis atunci starea este nedefinită și poate
fluctua.
▪ Dacă am pune doar legatura la Vcc atunci am avea scurt când
switchul e închis.

▪ Pull-down. Același comportament ca rezistența de pull-up.

Condensator

Condensatorul este un dispozitiv format


din două plăci conductoare paralele separate de un material dielectric ce
poate stoca energie pe acestea. Principala caracteristică a unui condensator
este capacitatea. Cu cât aceasta este mai mare cu atat condensatorul poate să stocheze
mai multă energie. Capacitatea se masoara in Farazi (F). Un farad reprezintă o capacitate
destul de mare așa că de obicei sunt folosiți submultipli ai săi, precum μF sau pF.
Caracteristici speciale

Din cauza neidealităților procesului de producție, condensatorul nu este o capacitate ideală.


Condensatorul real prezintă pe lângă capacitate și o rezistență parazită între terminale.
Această rezistență parazită generează curenți de scurgere care descarcă capacitatea. Odată
cu îmbătrânirea condesatorului (sau la defect), această rezistență scade foarte mult, cauzând
apariția unor curenți foarte mari absorbiți de condensator, mai ales în regim dinamic. Din
punct de vedere practic, condensatorul deși pare în regulă dacă este măsurat cu un
capacimetru (sau multimetru), în circuit el se comportă ca un scurtcircuit și afectează
funcționalitatea ansamblului electronic. Cel mai des acest fenomen apare în sursele de
alimentare ale calculatoarelor și pe plăcile de bază în subansamblul de alimentare al
procesorului.
Un alt fenomen este pierderea capacității (se comportă ca un gol). Condensatoarele au
specificată o temperatura de lucru (nominală) la care pot fi folosite timp îndelungat fără a-și
pierde proprietatea de a acumula și menține sarcina electrică. În special pentru
condensatoarele electrolitice, utilizarea condensatorului într-o gamă de temperaturi mai mare
decât cea nominală duce la pierderea capacității de acumulare a sarcinii, și implicit de filtrare
(utilizate la ieșirea surselor de tensiune) sau de transmisie a semnalului (folosite la comanda
tranzistoarelor din sursele în comutație).

Marcare

▪ Pe cele suficient de mari este inscripționată direct valoarea: 22μF,


100pF etc.
▪ Cod alfa numeric:
▪ primele două cifre reprezintă valoarea (exprimată în pF)
▪ a treia este multiplicatorul (10x)
▪ poate fi inscripționată și o literă care reprezintă toleranța (J=±5%,
K=±10%, M=±20%)
▪ Exemplu: 101 (10*101pF = 100pF).
Tipuri de condensatoare

▪ Condensator electrolitic
▪ Condensator variabil.
▪ este un condensator căruia i se poate modifica capacitatea
▪ acest lucru se poate realiza:
▪ în mod mecanic, prin modificarea suprafeței de suprapunere a
plăcilor
▪ prin modificarea distanței dintre plăci
▪ Supercondensator
▪ Condensator styroflex
▪ Condensator ceramic
▪ Condensator cu tantal
Unele tipuri de condensatoare pot fi polarizate.
Utilizări principale ale condensatorului

▪ Condensator de filtrare: folosit pentru elimiarea variației semnalului


continuu.
▪ Folosit pentru înmagazinare de energie (similar cu o baterie).
▪ Condensator de decuplare: folosit la eliminarea zgomotului pe pinii
de alimentare pentru circuitele integrate.
▪ Condensator de cuplare: folosit pentru eliminarea componentei
continue.
▪ Banc de condensatoare pentru corecția puterii reactive: folosit
pentru corecția factorului de putere pentru centrale electrice.

Exemple de folosire în interiorul circuitelor integrate

▪ Memorie DRAM
▪ Starea celulei de memorie este ținută în condensatorul C.
▪ Tranzistorul M funcționează ca un switch ce protejează accesul la bit.
▪ Pentru a citi din memorie se ridică linia AL, iar pe linia de date
(DL) va apărea un curent în funcție de starea condensatorului.
▪ Pentru a scrie date se setează DL cu 1 sau 0 logic si se ridică AL
încărcând sau descărcând condensatorul.

Bobina

Bobina este un element pasiv de circuit ce poate acumula energie


magnetică. În momentul în care un curent trece printr-un conductor el generează un câmp
magnetic, însă efectul acestui câmp este neglijabil. Pentru a genera un câmp magnetic util se
înfășoară conductorul în jurul unui miez. Acesta poate fi aer, material feromagnetic etc.
Caracteristici speciale

▪ Inductanța
▪ Rezistența totală de pierdere
▪ Capacitatea parazită
▪ Se opune variației curentului ce o străbate
Marcare

▪ Cod alfa numeric:


▪ Primele două cifre reprezintă valoare exprimată în μH
▪ A treia cifră reprezintă multiplicatorul (10x)
▪ Exemplu: 101 (10*10μH = 100μH)
▪ Dacă exista un R atunci multiplicatorul este -1. Exemplu: 4R7 4.7μH
▪ Codul culorilor: similar cu rezistoarele (vezi Figura de mai jos)
Tipuri de bobine

▪ Bobină toroidală
▪ O bobină toroidală se obține înfășurând spirele pe un miez toroidal.
▪ Astfel câmpul magnetic este conținut în bobină, obținându-se valori
mai mari pentru câmpul magnetic și inductanță.
▪ Câmpul magnetic formeaza bucle închise în miezul bobinei.
▪ Utilizat in special ca bobina de filtrare pentru circuite de curent
continuu și pentru surse in comutație de joasă frecvență.
▪ Bobine cilindrice cu miez închis
▪ Utilizate în sursele în comutație de frecvență mare(MHz).
▪ Bobine cuplate
▪ Inductanța mutuală apare atunci când o variație a curentului într-o
bobina induce o tensiune într-o alta bobină apropiată.
▪ Sunt folosite în transformatoare.
▪ Bobină variabilă
▪ Se poate realiza o bobină variabilă făcând unul din contacte mobil
(numit priză mediană), putând astfel mări sau micșora numărul de
spire.
▪ Un exemplu este autotransformatorul a cărui ieșire poate fi
modificată prin variația poziției prizei mediane.
▪ Bobină cu miez variabil
▪ Se poate modifica cat de mult intră miezul magnetic în interiorul
bobinei fără a modifica numărul de spire.
▪ Utilizate în special în radiouri și televizoare.
Utilizari

▪ Filtre pasive (trece sus / jos / bandă, rejecție bandă).


▪ În transformatoare
▪ Transformatorul este un dispozitiv ce transferă energie electrică
dintr-un circuit în altul folosind inducția electromagnetică.

▪ Dispozitive electromecanice(relee) care utilizeaza un solenoid pentru a


acționa un dispozitiv mecanic.
▪ Încuietori mecanice.

Componente Active
Componentele active au capabilitatea de a fi comandate și de a controla semnalul electric
(amplifica, atenua).

Dioda
Caracteristici
▪ O diodă este formată dintr-o joncțiune P-N.
▪ Cea mai cunoscută utilizare a diodei este să permită trecerea
curentului într-o direcție și să blocheze trecerea în
cealaltă direcție.
▪ În funcție de caracteristicile joncțiunii P-N pot avea diverse utilizări.
Tipuri de diode

Nume diodă Simbol Imagine

Dioda redresoare

Dioda Zener

LED

Fotodiodă

Dioda Schottky

Dioda tunel

Dioda Varicap

Utilizări

▪ transformarea curentului alternativ în curent continuu (diode


redresoare)
▪ reglarea tensiunii (diode Zener)
▪ reglarea receptoarelor TV sau radio (diode varicap)
▪ generarea de oscilații în frecvențe radio sau microunde (diode tunel)
▪ iluminare (LED-uri)
▪ demodulare radio
▪ convertoare Analog-Digitale
▪ protejare ciruitelor față de tensiuni mai mari decât cele suportate
▪ porți logice (AND și OR) - Mickey Mouse logic (Diode Resistor
Logic)
▪ punte H - folosite în general pentru a controla motoare în curent
alternativ (diodă de tip flyback)
Dioda Varicap:

Punte redresoare:

AND implementat cu diode:


OR implementat cu diode:

Punte H:

Tranzistor
Caracteristici

▪ Sunt elementele de bază din toate circuitele integrate.


▪ Văzute într-un mod simplist operațiile pe care le realizează un tranzistor
sunt de amplificare și de comutare.
▪ Au înlocuit lămpile (tuburile electronice) și au permis dezvoltarea unor
dispozitive electronice mult mai mici.
Marcare

▪ Pro-electron
▪ Prima literă din marcaj indică materialul din care este facut
tranzistorul:
▪ A - germaniu
▪ B - silicon
▪ A doua literă indică domeniul de aplicare:
▪ N - optocuplor
▪ P - fototranzistor
▪ S - tranzistor switch
▪ U - high voltage
▪ Mai poate exista o a treia litera care indică daca tranzistorul este
pentru uz industrial sau comerical ( X,Y,W,Z )
▪ Numarul de serie ( 100 - 9999 )
▪ JIS
▪ O cifră egala cu numărul de picioare minus unu
▪ Două litere ce indică domeniul de aplicare
▪ SA - PNP HF transistor
▪ SB - PNP AF transistor
▪ SC - NPN HF transistor
▪ SD - PNP AF transistor
▪ Numar de serie ( 100 - 9999 )
▪ JEDEC
▪ O cifră egala cu numărul de picioare minus unu
▪ O literă ce este mereu N
▪ Numar de serie ( 100 - 9999 )
Tipuri de tranzistoare

▪ Tranzistor bipolar.
▪ Tranzistorul bipolar constă în două joncțiuni PN, joncțiunea
bază-emitor si cea bază-colector, separate de o bază subțire
din material semiconductor.
▪ În funcție de tipul joncțiunilor, tranzistoarele bipolare se împart în
doua tipuri:
▪ NPN este format dintr-un strat de semiconductor dopat pozitiv
între două straturi dopate negativ. Sunt cele mai folosite datorită
mobilității sporite a electronilor.
▪ PNP este format dintr-un strat de semiconductor dopat negativ
între două straturi dopate pozitiv.
▪ Tranzistor cu efect de câmp.
▪ Funcționarea sa se bazează pe modificarea conductibilităţii unui canal
realizat dintr-un material semiconductor prin aplicarea unui cîmp
electric.
▪ Modificarea dimensiunii canalului se realizează prin aplicarea unei
tensiuni între poarta( terminalul notat G(Gate)) și substratul
dispozitivului.
▪ În funcție de modul de construcție, tranzistoarele cu efect de câmp
se împart în: tranzistoare cu canal P sau cu canal N.

Tranzistor bipolar (BJT)

Tranzistor cu efect de camp (FET)

Utilizări

▪ Poate acționa ca un comuntator controlat electric.

▪ Poate fi folosit ca un amplificator.

▪ Porți logice (schema bloc în stânga, implementare în siliciu în


dreapta).
▪ Amplificatoare pentru audio, radio și prelucrare de
semnal.

Laboratorul 02 - Simularea circuitelor analogice


Falstad Circuit Simulator

Pentru simularea circuitelor vom folosim Falstad, un simulator online, care poate fi gasit
la http://www.falstad.com/circuit. Daca este necesar, instalați plug-in-ul de java folosind
comanda sudo apt-get install sun-java6-plugin . falstad.zip
Mod de folosire

Indicatori grafici:
▪ Tensiunea pozitivă este reprezentată prin culoarea verde.
▪ Tensiunea negativă este reprezentată prin culoarea roșie.
▪ Groundul este reprezentat print culoarea gri.
Fiecare element de circuit are un meniu de editare accesibil prin click dreapta pe
componenta si selectare Edit. De aici se pot modifica diferite caracterisitici ale componentei(
ex. rezistența unui rezistor).
Pentru a obține informații realtime despre o componenta: click dreapta pe componentă și
selectare View in Scope, având ca efect apariția unui ecran în partea de jos a ferestrei cu
informații despre componenta( tensiune, curent).

Din meniul Circuits pot fi selectate diferite circuite; o partea dintre acestea sunt prezentate în
continuare.

Circuite Simple
Legea lui Ohm
Intensitatea curentului dintr-un circuit este direct proporțională cu tensiunea aplicată și invers
proporțională cu rezistența din circuit.

Elemente simple
Incarcați în falstad circuitul

▪ Basics→Resistors
▪ Basics→Capacitor
▪ Basics→Inductor
Divizor de tensiune

Divizorul de tensiune este circuit ce produce la ieșire o tensiune ce


reprezintă o fracție din tensiunea de intrare. Un exemplu de un astfel de circuit ar putea fi
două rezistențe în serie sau un potentiometru.
Curentul este același prin ambele rezistențe, , iar tensiunea pe a doua
este ; de aici rezultă:


Utilizări:
▪ Tensiune de referință
▪ Sursă de tensiune (Not a good idea :) see here why)
Transformator

Transformatorul este un dispozitiv electric ce permite


transferul energiei dintr-un circuit primar în altul, secundar. Daca un curent alternativ străbate
circuitul primar, el produce un flux magnetic variabil în miezul transformatorului; acest flux
produce o tensiune variabilă în circuitul secundar.
Tensiunea generată în circuitul secundar depinde de numărul de spire ale bobinelor și de
tensiunea din primul circuit după formula:

N = numarul de spire V = tensiunea

Randamentul transformatorului se defineşte ca fiind raportul dintre puterea activă P2 furnizată


de circuitul secundar şi puterea activă P1 primită de către circuitul primar. Randamentul unui
transformator poate ajunge la valori destul de mari, chiar și 99%.

P = puterea

k = raportul dintre N2 si N1 (N secundar si N primar) Dacă k>1 atunci avem un transformator


de ridicare; tensiunea de la circuitul secundar va fi mai mare decât cea de la cel primar. Dacă
k<1 atunci avem un transformator de coborare; tensiunea de la circuitul secundar va fi mai
mica decât cea de la cel primar.

Transportul curentului electric

▪ Transportul curentului electric pe distante lungi(zeci de km sau sute de km) ridica


problema pierderii puterii electrice pe linia de transport.
▪ Sa presupunem ca dorim sa transportam o putere electrica P intre punctele A si B.
Dorim ca puterea pierduta pe linia de transport sa fie minima. Privind intr-un mod
simplificat, intre punctele A si B, linia de transport are o rezistenta R_ab. Puterea
pierduta pe linia de transport este Pc= I ^2 *R, adica depinde foarte mult de curentul
ce trece prin fir. Pentru a micsora cat putem puterea pierduta pe linie, trebuie
micsorat curentul electric ce trece prin linia de transport.
▪ Intrucat P=U * I, daca dorim sa micsoram curentul(I), trebuie sa crestem tensiunea.
In functie de distante si de consumatori, se folosesc diferite valori ale tensiunii
utilizate pe liniile de transport. Pentru consumatorii casnici standardul este de
0.4kV(faza la faza), iar liniile de transport se numesc linii de joasa tensiune. Liniile
de transport de 20kV sunt linii de medie tensiune, iar liniile de 110kV, 200kV, 400kV
si 750kV sunt linii de inalta tensiune. Cu cat tensiunea este mai mare, cu atat
pierderea de putere pe linia de transport este mai mica.
▪ Pentru ridicarea sau coborarea tensiunii pentru liniile de transport se folosesc statii de
transformare ale caror componente esentiale sunt transformatoarele de tensiune.
▪ Transformator 220kV/20kV, 360MVA

▪ Transformator 20kV/0.4kV de mica putere


Relee
Releu este un switch controlat electric. Este format dintr-un electromagnet(bobină), un braț
mobil și unul sau mai multe contacte. Când nu circulă curent prin releu, brațul mobil este ținut
la unul dintre contacte de un arc; în momentul în care prin bobină începe sa circule curent,
se creează un câmp magnetic și brațul se mută la celălalt contact.

Avantaje:

▪ Separarea completă a circuitelor


Dezavantaje:

▪ Se pot uza părțile mecanice


▪ Viteză relativ scăzută
Funcții logice cu relee

▪ AND. Funcția ȘI se poate realiza legând releele în serie. Fiecare intrare este un releu;
contactul closed e legat în gol, iar contactul open este legat la intrarea urmatorului
releu. Când toate releele sunt deschise avem “1” la iesire, altfel avem “0”.
▪ OR. Funcția OR se poate realiza legând releele în paralel. Fiecare intrare este un releu;
contactul closed e legat în gol, iar contactul open este legat la ieșire. Când oricare
dintre relee este deschis avem “1” la ieșire.
▪ XOR. Funcția XOR se poate realiza legând punctele de contact a doua relee invers
(open la closed).
Flip-Flop cu relee

▪ Un flip-flop este un circuit electronic care simulează un bit de memorie.


▪ Se folosesc în general două intrări Set si Reset.
Dioda
Dioda Zener

Dioda Zener este o diodă ce conduce în ambele direcții.


Când este polarizată direct se comportă ca o diodă normală, însă permite trecerea curentului
și când este polarizată invers dacă tensiunea este suficient de mare (> tensiunea Zener a
diodei).
O diodă normală nu suportă o tensiune de polarizare prea mare; dacă este aplicată o tensiune
inversă prea mare, ea se străpunge. Această tensiune se numeste tensiune de străpungere si
se notează Vs.

Dioda Zener permite o străpungere controlată. Are o tensiune de străpungere redusă


(denumită tensiune Zener); daca este atinsă aceasta tensiune, ea va permite trecerea
curentului, însă va limita tensiunea la tensiunea Zener.

Circuite cu diode
Redresor monoalternanță
Diodele pot fi folosite pentru a transforma curentul
alternativ în curent continuu. Un redresor parțial permite trecerea doar a parții negative sau
doar a parții pozitive. Sunt foarte ineficiente din punctul de vedere al transferului de putere,
pentru ca jumatate din forma de undă este pierdută. Se pot realiza cu o singura diodă:
▪ dacă tensiunea este mai mare ca 0.6V, ea va putea trece la ieșire
▪ dacă tensiuena este sub 0.6V, ea este blocată
Redresor bialternanță

Redresorul total permite tranformarea întregii forme de unde într-una


polarizată pozitiv. Pentru a realiza acest lucru este folosită o punte de diode. Doua diode
dintre cele 4 vor fi mereu polarizate pozitiv, deci vor permite trecerea curentului, iar celalalte
două vor fi polarizate invers.
Atât redresorul monoalternanță, cât și redresorul bialternanța produc variații în tensiunea de
la ieșire. Pentru a netezi forma de undă se utilizeaza un condensator.

Voltage reference with follower

După cum am spus mai sus, dacă o diodă Zener este strapunsă, ea permite trecerea curentului
și ține o tensiune egală cu tensiunea zener. Se poate profita de acest lucru pentru a realiza o
sursă de tensiune stabilă sau o referință.

Tranzistoare bipolare
Circuite cu tranzistoare
Switch

Switchul cu tranzistoare bipolare permite controlul unui curent mare


folosind un curent mic. Mod de operare:
▪ Când switchul mecanic este deschis, nu avem curent în bază. Cum Ic depinde Ib(
Ic=βIb ), nu avem curent nici în colector, deci becul este stins
▪ Când switchul mecanic este închis, tensiunea în bază ajunge la 0.6V. Tensiunea pe
rezistorul din bază va fi 5.4V, deci Ib=5.4mA. Teoretic Ic=βIb; presupunând β=100,
am avem Ic=540mA. Însă tranzistorul este saturat, deci Ic=Vcc/Rc.
Flip Flop

▪ Un flip-flop este un circuit electronic care simulează un bit de memorie.


▪ Se folosesc în general două intrări Set si Reset.
Sursă de curent

Curentul din colector este independent de tensiunea din

colector.
Tensiunea în bază poate fi produsă prin:

▪ divizor de tensiune
▪ dioda Zener
▪ mai multe diode în serie
O astfel de sursă de curent poate produce curent constant doar pentru o anumita plajă de
valori ale tensiunii pe sarcină.

Tranzistoare cu efect de câmp


Tranzistoarele cu efect de câmp sunt componente active în care conductibilitatea dintre două
borne (numite sursă și drenă) este controlată de un câmp electric aplicat asupra materialului
semiconductor dintre ele. Câmpul este controlat printr-o a treia bornă (Gate). Aceste trei
borne sunt similare ca funcție cu cele 3 borne ale tranzistorului bipolar. Gate-ul permite
trecerea electronilor între sursă și drenă. O a patra bornă o reprezintă Baza (sau Body), care
de obicei este legată la cea mai mare/mică tensiune din circuit. Body-ul este suportul fizic pe
care sunt puse Sursa, Drena și Gate-ul în circuitele integrate.

Dintre tranzistoarele cu effect de câmp (FET), cele mai folosite sunt MOSFET-urile (Metal
Oxide Semiconductor Field Effect Transistor). În acestea Gate-ul este separat de canalul pe
care îl controlează print-un strat izolator de oxid. După tipul dopajului canalului, MOSFET-urile
sunt pMOSFET sau nMOSFET.

nMOS-urile au un canal de tip n, Body de tip p și Sursa cu Drena n+ (dopate puternic). Atunci
când tensiunea între Gate și Sursă este peste o valoare de prag, purtătorii de sarcină (în cazul
acesta electronii) se deplasează în regiunea dintre Sursă și Drenă (venind în principal dinspre
Sursă), formând un canal de conductibilitate. Astfel tranzistorul devine deschis. Comportarea
pMOS este exact opusă, purtătorii de sarcină sunt golurile, venite într-o zonă a Bazei dopată
n.
Avantajele MOSFET-urilor față de tranzistoarele bipolare sunt următoarele:

▪ Impedanță mare de intrare –> Dispozitiv controlat în tensiune (ușor de controlat):


Tranzistoarele bipolare au nevoie să se mențină un curent în bază de 10-100 de ori
mai mic decât în colector, ceea ce face circuitul ce le controlează mai complicate.
MOSFET-urile pe de altă parte sunt controlate de o tensiune în poartă (Gate), izolată
de suprafața semiconductorului. Curentul fiind mic în poartă în toate situațiile,
circuitul de control este mai simplu și mai ieftin de fabricat.
▪ Dispozitiv unipolar: Tranzistoarele bipolare folosesc ambele tipuri de purtători pentru
conducție. Mai mult, tranzistoarele bipolare folosesc purtătorii în minoritate pentru
conducție (electroni în zone P și goluri în zone N). FET-urile folosesc un singur tip de
purtători, fie electroni, fie goluri și în plus curentul este dat de purtători majoritari
(electroni în zone N și goluri în zone P). Aceste caracteristici fac MOSFET-urile să
poată schimba starea la o frecvență mult mai mare decât TBIP (cu câteva ordine de
mărime).
▪ Au limite de funcționare mult mai mare (suportă mai bine curenți/tensiuni mari)
Circuite cu tranzistoare
Switch

▪ Dacă switchul este deschis, tensiunea în poartă va fi 0V, deci tranzistorul va fi închis.
▪ Dacă switchul este închis, tensiunea din poartă va fi mai mare ca 0, iar cea din sursa
va fi 0. Vg > Vs, deci tranzistorul conduce.
Transmission gate

Poarta de transmisie este un element electronic ce se comportă ca un releu non-mecanic.


Este format din punerea în paralel a unui tranzistor nMOS cu unul pMOS cu intrarea pe poarta
unuia fiind complementară intrării celuilalt.

Numite și porți analogice, ele permit trecerea curentului în oricare direcție cu cădere de
tensiune minimă. * Când intrarea tranzistorului nMOS este 0 și intrarea tranzistorului pMOS
este 1, amândouă sunt oprite. * Când intrarea tranzistorului nMOS este 1 și intrarea
tranzistorului pMOS este 0, cele două tranzistoare sunt deschise.
Porțile de transmisie sunt folosite pentru a simplifica logica CMOS, cât și în construirea
multiplexoarelor.

Amplificatoare Operationale
Un amplificator operational (op-amp) este un amplificator de voltaj cu input diferențial (nu
contează atât de mult voltajul de pe intrări, ci diferența de voltaj dintre intrări). Amplificarea
poate să fie cu 2-3 ordine de mărime mai mare ca diferența de la intrare.
Original folosite în calculatoare analogice, în rezolvarea de probleme matematice, acum este
folosit în principal pentru a amplifica semnale.

Laboratorul 03 - Simularea circuitelor digitale


Simularea circuitelor digitale
Pentru simularea circuitelor vom folosim tot simulatorul din laboratorul 1 și
2, http://www.falstad.com/circuit.
Stări logice

Prin circuite digitale înțelegem circuite în care sunt numai două stări posibile (de exemplu: un
tranzistor poate fi în staturație, sau nu conduce). Numim aceste stari nivele logice si le notam
prin HIGH sau LOW. Ele pot însemna mai multe lucruri:

▪ Dacă un switch este deschis sau închis


▪ Dacă un semnal este prezent sau absent
▪ Dacă un nivel analog este sub sau peste o anumită limită prestabilită
HIGH și LOW

Stările HIGH și LOW reprezintă stările TRUE și FALSE din logica booleană. Dacă într-un anumit
punct HIGH este definit ca TRUE, atunci avem logică pozitivă. Dacă HIGH este definit ca
FALSE, atunci avem logică negativă. De exemplu faptul că un switch este închis este adevarat
când outputul sau este LOW.

În circuitele digitale, nivelele logice HIGH și LOW reprezintă anumite intervale (ex: HIGH:3.5-
5V, LOW:0-2.5V; între 2.5V si 3.5V nivelul fiind nedefinit).

Imunitatea la zgomot

Imunitatea la zgomot reprezintă nivelul maxim de zgomot ce poate fi adăugat la nivelele


logice fară ca poarta logică să funcționeze greșit.

Porți Logice

Scopul unui circuit digital este de a prelucra intrări digitale pentru a produce ieșiri digitale.
Pentru a realiza acest lucru, se folosesc porți logice. Folosind aceste porți, se pot crea circuite
mai complexe.

Tip Simbol Funcție

AND

OR

NOT

NAND

NOR
XOR

XNOR

RTL

▪ folosesc pe post de rețea de intrare rezistențe și pentru logica de


comutare folosesc tranzistori.
▪ este prima familie de circuite logice digitale cu tranzistori.
▪ erau foarte utile în perioada în care s-au inventat pentru că foloseau un
număr minim de tranzistoare, iar în acea perioadă erau cele mai scumpe
componente de produs
▪ necesită mai mult curent la intrare
▪ disipă multă căldură
DTL

▪ folosește diodele pentru a simula funcția logică și folosește tranzistoare


pentru amplificare.
▪ este tehnologia ce precedează TTL.
▪ are ca dezavantaj principal timpul de propagare.
TTL

▪ folosește tranzistoare atât pentru implementare funcției logice, cât și


pentru amplificare.
▪ etajul de ieșire poate avea și un “totem-pole” în loc de un simplu
tranzistor.
▪ subtipuri:
▪ LPTTL - Low-power TTL
▪ HSTTL - High-speed TTL
▪ STTL - Schottky TTL
▪ LPSTTL - Low-power Schottky TTL
▪ LVTTL - Low Voltage TTL
CMOS

CMOS(complementary MOS) este o familie de porți logice ce folosește atat tranzistoare nMOS,
cât și tranzistoare pMOS pentru a realiza circuite logice ce necesită foarte puțin curent.

▪ Poarta NOT. Este realizată din doua tranzistoare, unul pMOS și unul
nMOS. Cel pMOS are sursa legată la Vcc, iar cel nMOS are sursa legată
la ground. Gateurile sunt legate amandouă la intrare, iar drenele sunt
legate la ieșire.
▪ Când A = “0”:
▪ tranzistorul nMOS este închis, deci ieșirea este deconectată de la
ground
▪ tranzistorul pMOS este deschis, deci se face legatura între sursă și
iesire
▪ Când A = “1”
▪ tranzistorul pMOS este închis.
▪ tranzistorul nMOS este deschis, deci leagă ieșirea la ground
Celalalte porți logice se pot realiza pornind de la inversorul CMOS. Tranzițiile între High și Low
se fac rapid.

Logica Combinationala
http://www.falstad.com/circuit.
In teoria circuitelor digitale, logica combinatională este domeniul logicii numerice care este
implementat de circuite booleene, în care iesirea circuitului depinde numai de stările intrarilor
circuitului respectiv. Acest comportament este diferit de cel al logicii secvențiale, unde starea
ieșirii depinde nu numai de starea prezentă a intrărilor ci și de stările anterioare. În alte
cuvinte, logica secvențială are “memorie” iar logica combinațională nu.

Logica combinațională este folosită în circuite de calcul pentru implementarea algebrei


booleene pe semnalele de intrare sau pe datele stocate în memorie. Circuitele digitale conțin
de obicei o mixtură de circuite secvențiale și combinaționale. De exemplu, partea UAL-ului
care se ocupă numai cu calculele matematice este construită numai cu circuite
combinaționale, pe când registrele UAL-ului sunt implementate în logică secvențială. Alte
circuite care sunt implementate în logică combinațională: half adder, full adder, sumator carry
look-ahead, scăzătoare, multiplexoare, demultiplexoare, encodere și decodere.

Encodere/Decodere
Un encoder este un circuit combinațional care comprimă mai multe intrări binare intr-un
număr mai mic de ieșiri. De cele mai multe ori este folosit pentru a controla cererile de
întrerupere către un procesor, pentru că are proprietatea să reacționeze la intrări în funcție
de prioritatea lor și să pună întotdeauna pe ieșire codul intrării cu prioritatea cea mai mare.
Drept exemplu aveți în tabelul mai jos modul de funcționare al unui encoder 4 la 2:

I1 I2 I3 I4 O1 O2
0 0 0 x 0 0
0 0 1 x 0 1
0 1 x x 1 0
1 x x x 1 1
Dacă două sau mai multe intrări sunt active la un moment dat, cea cu prioritate mai mare va
avea precedentă. În exemplul de mai sus, “x” reprezintă fie un 0 sau un 1 (nu contează ce
valoare are intrarea de prioritate mai mică în momentul în care este concomitentă cu una de
prioritate mai mare).

Un exemplu de implementare a unui encoder este dat în figura de mai jos:

Funcția inversă unui encoder este implementată de un decoder. Acesta primește “n” intrări și
furnizează “2^n” ieșiri . Decodificarea este utilă în aplicații care folosesc multiplexara a
datelor, display- uri 7-segment sau decodificarea adreselor de memorie. De exemplu, mai jos
aveți un decoder 2 la 4:

Multiplexoare/Demultiplexoare
Un multiplexor sau mux este un dispozitiv care implementează multiplexarea unor semnale;
acesta selectează o intrare analogică sau digitală din “2^n” intrări și o rutează la ieșirea
circuitului. Selecția intrărilor se face cu ajutorul a “n” semnale de comandă. Multiplexoarele
fac posibilă partajarea unei singure resurse sau mediu de transmisie de către mai multe
semnale, de exemplu un convertor Analog-Digital sau o linie de comunicație pot transmite
sau măsură mai multe semnale, fără a fi nevoie să se replice structura de măsurare sau
transmisie. Un multiplexor poate fi asemanat cu un intrerupator cu un singur contact si mai
multe pozitii care este comandat de catre liniile de selectie:
Un multiplexor 2 la 1 este cea mai simplă structură de acest gen. El are urmatoarea ecuație
de funcționare:

unde si sunt cele două intrări, este intrarea de selecție iar este ieșirea.

Tabela de adevăr pentru intrările și ieșirile multiplexorului 2 la 1 este următoarea:

S A B Z
0 0 0 0
0 0 1 0
0 1 0 1
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 0
1 1 1 1
Adică ieșirea are valoarea lui A atunci cand S = 0 și valoarea lui B atunci când S = 1.

Folsind aceeași logică se pot construi multiplexoare cu mai mult de două intrări. Cele mai
comune sunt 4 la 1, 8 la 1 și 16 la 1:
Un demultiplexor realizează funcția inversă multiplexorului, preia datele de pe o intrare și le
ruteaza pe una din cele 2^n iesiri în funcție de starea logică a celor n linii de selecție.

Un exemplu de circuit demultiplexor 1 la 4 este dat în figura de mai jos:

Sumatoare
Un sumator este un circuit digital care realizează operația de adunare a numerelor. În
calculatoarele moderne, sumatoarele fac parte din Unitatea Aritmetică Logică (UAL) din cadrul
procesorului.

Half Adder
Un 'half adder' este un circuit digital care realizeaza suma a doi operanzi de un singur bit
notați și . Un circuit half adder furnizează la ieșire două semnale: și ,
unde . Mai jos este inclusă tabela de adevăr pentru un half adder:
A B C S
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0
Un Half Adder este implementat cu două porți logice: un XOR si un

AND:
Full Adder

Un sumator complet este un circuit digital care realizează suma a trei operanzi de un bit,
notați ca , , și . Sumatorul complet are două ieșiri reprezentate de obicei de către
semnalele și unde . Tabela de adevăr a circuitului este dată mai
jos:

A B Ci Co S
0 0 0 0 0
0 1 0 0 1
1 0 0 0 1
1 1 0 1 0
0 0 1 0 1
0 1 1 1 0
1 0 1 1 0
1 1 1 1 1
Un exemplu de implementare a sumatorului complet folosește
formulele .
În această implementare poartă SAU finală înainte de ieșirea de carry poate fi înlocuită de o
poartă XOR fără să se modifice funcționarea corectă. Acest lucru poate fi avantajos atunci
când circuitul este implementat folosindu-se circuite integrate care conț în un singur tip de
poartă logică in capsulă lor.

Sumatorul Carry Look-ahead

Pentru a reduce timpul necesar unui calcul, determinat în special de propagarea semnalului
de carry pe rangurile superioare, proiectanții folosesc sumatorul carry look-ahead. Ele
funcționează prin generarea a două noi semnale (P și G) pentru fiecare rang binar în funcție
de starea intrărilor : dacă un carry este propagat la rangurile superioare (cel puțin o intrare
este '1'), dacă un carry este generat la nivelul acelui rang (ambele intrări sunt '1') sau dacă
un carry este oprit la acel rang (ambele intrări sunt '0'). În cele mai multe cazuri, P este
ieșirea de suma a unui half adder și G este ieșirea de carry a aceluiași sumator. După ce
termenii P și G sunt generati sunt creați biții de carry pentru fiecare rang in parte . Alte
arhitecturi pot folosi carry look ahead la un nivel mai avansat cum ar fi Manchester carry
chain, sumatorul Brent-Kung sau sumatorul Kogge-Stone.

În cazul adunării binare, se generează carry dacă și numai dacă ambele intrări A și B
sunt 1. Dacă scriem că predicatul logic care este adevărat atunci
când generează, avem:

Adunarea a două intrări de un bit și va “propaga” dacă în urmă ei va rezultă un carry


către rangul superior datorită faptului că avem un carry de la un rang inferior. De exemplu,
dacă adunăm 37 + 62 suma cifrelor zecilor (3 și 6) va “propagă” orice carry venit de la rangul
inferior (în cazul de față nu se va propagă nimic, dar acest lucru se schimbă dacă adunăm 38
+ 62, de exemplu). În cazul adunării binare, propagă dacă și numai dacă cel
puțin sau au valoarea 1. Dacă definim că predicatul binar care este adevărat
dacă și numai dacă propagă, avem:

Uneori se folosește și o altă definiție a propagării. Conform acesteia, va propagă dacă


suma generaza carry dacă avem carry de la rang inferior și nu propagă dacă nu avem carry
inferior. Orice definiție am folosi, modul în care sunt generați și propagati biții într-un sumator
carry look-ahead este același. În cazul adunării binare, definiția de mai sus este exprimată
prin:

Pentru aritmetica binară, or este mult mai rapid față de xor și necesită mai puțini tranzistori
pentru a fi și implementat. Cu toate acestea, pentru un sumator carry look-ahead pe mai
multe nivele este mai avantajos să folosim .
Date fiind conceptele de generare si propagare, când va exista carry în urma unei adunări
binare? Acesta va avea loc în momentul în care adunarea generează “sau” rangul mai puțin
semnificativ de carry și suma propagată. Daca scriem în algebra booleană, cu drept bitul
de carry pentru rangul i și și biții de generare și propagare pentru rangul i, vom avea
următoarea relație:

Detalii de implementare

Pentru fiecare rang dintr-o secvență binară, sumatorul va determina dacă perechea de biți
care trebuie adunată poate genera sau propaga carry. Acest lucru permite circuitului să “pre-
proceseze” cei doi termeni ai adunării pentru a determina transportul înainte de a efectua
adunarea propriu-zisă. Apoi, când această are loc, nu va există nici o întârziere de propagare
a carry-ului, ca în cazul unui Ripple Adder. Mai jos aveți un exemplu de calcul al termenilor
de propagare și generare pentru un sumator de 4 biți :

Înlocuind în expresia lui , apoi pentru , apoi pentru obținem următoarele


ecuații:

Circuite Integrate
In seria 7400 de circuite integrate exista mai multe tipuri de sumatoare, multiplexoare,
demultiplexoare si encodere:
S.No. IC No. Function Output State
1 74157 Quad 2:1 mux. Ieșirea are aceeasi stare ca si intrarea
2 74158 Quad 2:1 mux. Ieșirea este intrarea inversată
3 74153 Dual 4:1 mux. Ieșirea are aceeasi stare precum intrarea
4 74352 Dual 4:1 mux. Ieșirea este intrarea inversată
5 74151A 8:1 mux. Ambele tipuri de Ieșiri sunt disponibile (Ieșiri complementare)
6 74151 8:1 mux. Ieșirea este intrarea inversată
7 74150 16:1 mux. Ieșirea este intrarea inversată
8 74139 Dual 1:4 demux. Ieșirea este intrarea inversată
9 74156 Dual 1:4 demux. Ieșirea este open collector
10 74138 1:8 demux. Ieșirea este intrarea inversată
11 74154 1:16 demux. Ieșirea este intrarea inversată
12 74159 1:16 demux. Ieșirea este open collector
13 74147 10:4 Priority Encoder
14 74148 8:3 Priority Encoder
15 74348 8:3 Priority Encoder Ieșiri three-state
16 74155 Dual 2:4 Decoder/Demultiplexer
17 74237 1:8 Decoder/Demultiplexer Address latch, Ieșiri active pe 1
18 74238 1:8 Decoder/Demultiplexer Ieșiri active pe 1
19 74239 Dual 2:4 Decoder/Demultiplexer Ieșiri active pe 1
20 74248 BCD to 7-segment Decoder/Driver Ieșiri cu pull-up intern
21 74249 BCD to 7-segment Decoder/Driver Ieșiri open-collector
22 74537 BCD to Decimal Decoder Ieșiri three-state
23 74538 1:8 Decoder Ieșiri three-state
24 74539 Dual 1:4 Decoder Ieșiri three-state
Lista completă o aveți
aici: http://en.wikipedia.org/wiki/List_of_7400_series_integrated_circuits
Laboratorul 04 - Logică secvențială
Logică secvențială

Pentru simularea circuitelor vom folosim tot simulatorul din primele


laboratoare, http://www.falstad.com/circuit.

Toate circuitele studiate până acum au fost circuite combinaționale, adică outputul lor este
determinat doar de starea intrărilor. Ele nu au memorie. Având funcția booleană
implementată și starea intrărilor vom putea întotdeauna deduce starea ieșirilor.

În circuitele secvențiale însă output-urile nu mai depind exclusiv de starea curentă a intrărilor,
ci și de stările anterioare ale intrărilor. Cunoscând funcția booleană a unui circuit secvențiale,
nu mai putem deduce output-ul fără să știm și o istorie a stării interne, care la rândul ei
depinde de istoria intrărilor.

Folosind circuite cu memorie, se pot construi circuite ce îndeplinesc o funcție utilă precum
numărătoare, acumulatoare aritmetice, etc…

Flip Flop
Flip-flopul este un circuit digital capabil să funcționeze ca un bit de memorie. Pini:

▪ semnal de clock
▪ una sau două intrări
▪ un semnal de ieșire
▪ complementul ieșirii( opțional )
▪ semnal de clear
▪ Vcc si ground
Diferența dintre Latch și Flip-Flop este aceea că un flip-flop, față de latch, primește la
intrare și un semnal de ceas, deci flip-flop-ul este un circuit sincron. Totuși in literatura, acești
termeni sunt adesea folosiți interschimbabil. In continuare, vom utiliza doar termenul de Flip-
Flop si vom nota cu Q starea inițială a flip-flop-ului și cu Q' starea viitoare, după aplicarea
semnalelor de intrare.
Tipuri de flip-flopuri:

▪ flip-flop SR
▪ flip-flop T
▪ flip-flop JK
▪ flip-flop D
Flip-flop SR

S R Q Q'
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 0
1 0 0 1
1 0 1 1
1 1 0 X
1 1 1 X
Flip-flopul SR are doua inputuri S(set) si R(reset):

▪ Nici R, nici S nu e activ, outputul rămâne neschimbat


▪ Când R este activ, outputul este 0
▪ Când S este activ, outputul este 1
▪ Când sunt amândouă active starea este nedeterminată
Observatie: Pentru flip-flop-ul S-R există atât o implementare cu porți NAND (ca mai sus)
unde intrările sunt active LOW (o intrare S sau R se consideră activă când are valoarea 0
logic), precum si o implementare cu porți NOR, cu intrări active HIGH.
Flip-flop T
T Q Q'
0 0 0
0 1 1
1 0 1
1 1 0
Are un singur pin de intrare:

▪ Când T este activ ieșirea se schimbă la fiecare puls al ceasului.


▪ Când T nu este activ ieșirea rămâne neschimbată
Flip-flop JK

J K Q Q'
0 0 0 0
0 0 1 1
0 1 X 0
1 0 X 1
1 1 0 1
1 1 1 0
Flip-flopul JK are două intrări J și K:

▪ Când J==K==1, outputul se schimbă


▪ Când J!=K, outputul este J
▪ Când J==K==0, outputul rămâne la fel.
Acesta este un flip-flop universal, putând fi configurat ca orice alt tip de flip flop.

Flip-flop D

Acest tip de circuit basculant bistabil are o intrare de tip D (date) şi o intrare de ceas C (Clk).
Pe lângă acestea, el mai poate avea şi două intrări asincrone R şi S care sunt prioritare.
Valoarea de la intrare, la momentul tn, apare la ieşire la momenul tn+1, aşa cum se observă
şi din tabelul de adevăr de mai jos.

tn tn+1
D Q Q'
0 X 0
1 X 1
Conform tabelului se observă că Qn+1=Dn. Deci CBB tip D întârzie starea, adică ieşirea la
momentul tn+1 este aceeaşi cu intrarea la momentul tn (celulă de întârziere sau de
memorare). Acest gen de circuit este folosit la realizarea memoriilor RAM statice, a regiştrilor,
dar şi la realizarea numărătoarelor.

Numărătoare
Un numărător este un circuit digital care reține numărul de apariții al unui eveniment.

Tipuri de numărătoare:

▪ asincrone(ripple) - bistabilii sunt conectați în cascadă.


▪ sincrone - fiecare bistabil are intrarea sa de ceas, se folosesc porți logice pentru
a furniza intrările pentru următoarele circuite.
▪ Johnson - este o configurație de tip inel care transmite ultima ieșire inversată
ca intrare în primul bistabil, astfel se realizează un inel de lungime 2 * numărul
de bistabile.
▪ zecimale - este un numărător care folosește o codare binară pentru a
reprezenta cifre zecimale, se va reseta după ce se trece peste 9.
Divizoare de ceas
Un divizor de ceas, numit și prescaler este un circuit care primește o frecvență de ceas f la
intrare, iar la ieșire ne dă aceeași frecvență, divizată cu n. Un divizor de ceas ce împarte
frecvența la doi se poate realiza ușor folosind un flip-flop

D.
Putem generaliza ușor implementarea, astfel că pentru a face un divizor f/2^n vom
cascada n flip-flop-uri.
Bit de SRAM

In general, un bit de memorie SRAM se implementează folosind


două porți de negare (NOT),necesitând în total 6 tranzistori MOS (2 pentru fiecare poarta NOT
și 2 pentru selecție). Pentru simplitate, in cadrul acestui laborator vom folosi câte un flip-flop
D pentru fiecare bit de memorie.
Memorite SRAM
In continuare vom considera că vrem să selectăm din memorie biți individuali, dar conceptul
se poate extinde ușor la linii (grupari de biți, cum sunt octeții). De asemenea, biții individuali
vor fi reținuți folosind flip-flop-uri
D.
O memorie trebuie să ne ofere posibilitatea de a selecta un bit pentru a putea efectua operații
de scriere și citire. Selecția se realizează cu un decodor care primește o adresă din memorie
și selectează un singur bit (exemplu). Un bit selectat este singurul a cărei ieșire ajunge pe
linia de data out (singurul pe care îl citim), dar și singurul la care poate ajunge un semnal de
scriere (write enable). Datele vor fi trimise la toți flip-flopii simultan. Acest lucru nu ne
deranjează, deoarece scrierea efectivă a unui bit se face doar la apariția semnalului de write
care va fi primit doar de bitul selectat. Scrierea este declanșată de un edge pozitiv al
semnalului write enable. După cum se poate observa în figură, acest semnal aunge doar la
bitul selectat. Cititrea necesită doar selectarea unui anumit bit. Acest lucru permite stării
acestuia să ajungă pe linia de data out. Observatie: In implementarea noastră, nu vom folosi
semnalele Chip select și Output Enable. Practic le vom considera mereu 1 logic. De
asemenea, vom inlocui portile tri-state din figură (simbol) cu poți AND sau OR dupa caz,
astfel: Vrem ca doar ieșirea bitului selectat să ajungă pe linia data out, deci vom realiza
un AND logic intre ieșirea fiecărui bit și semnalul corespunzștor de selectie. Iesirea acestor
porți pot fi apoi trimise într-o poartă OR. Astfel, logica de output va fi urmaroarea: data_out
= sel_0*out_0 + sel_1*out_1 + .. + sel_n*out_n, unde sel_i este linia de selecție a
bitului i, iar out_i este ieșirea corespunzătoare.
Mai multi biti pe linie
Până în acest punct am selectat un singur bit odată. Dacă ne dorim să realizăm o memorie
care selectează, de exemplu, un octet la un moment dat, trebuie să realizăm urmatoarele
schimbări:
Un semnal de selecție sel_i, în loc să ajugă la un singur bit (atât pentru write enable ,cât și
pentru data out), va ajunge la o grupare de 8 biti.
Linia de data out va fi alcatuită din 8 fire.
Memorie DRAM
Un dezavantaj al memorie SRAM este faptul că aceasta ocupă mult spatiu datorită numarului
mare de tranzistori. Astfel, nu este avantajos să producem memorii de dimensiuni mari in
aceasta tehnologie. Ca un inlocuitor scalabil a aparut memoria DRAM ce necesită un tranzistor
si un condensator pentru fiecare bit de

memorie.
Exista totusi un dezavantaj al acestei abordări. Condensatorul care retine bitul de memorie îți
poate schimba starea atât cu trecerea timpului (materialele, fiind imperfecte, permit trecerea
unor curenți prin dielectricul condensatorului), cat și atunci când este citită starea acestuia.
Drept urmare, starea condensatorului trebuie reîmprospătată la intervale regulate de timp.

Un circuit de refresh
Pentru a reîmprospăta starea unui bit este necesar să citim această stare și apoi să o scriem
din nou. pentru aceasta, putem folosi un amplificator opertational

astfel:
Tensiunea de pe condensatorul bitului selectat (aceasta fiind fie aproape de 0V fie aproape de
5V) este comparată cu tensiunea de 2.5V. Diferența dintre cele doua, tensiune_bit - 2.5V va
fi aplificată cu mai multe ordine de marime iar rezultatul va fi limitat intre tensiunile de
alimenatre ale amplificatorului operațional(0V-5V). Deci pentru o tensiune mică (aproape de
0V) pe condensator, vom avea ieșirea max(0V, (0V - 2.5V) * N) = 0V, unde N este un
număr foarte mare. Iar pentru o tensiune de aproape 5V pe condensator vom avea min(5V,
(5V - 2.5V) * N) = 5V.
Exerciții
În cadrul exercitiilor cu memorii, acestea trebuie să conțină linii de write, data input, data
output, selecție pentru linie și pentru coloană. Memoria DRAM va cuprinde de asemenea un
semnal de refresh ce permite reîmprospătarea stării bitului selectat (inchide circuitul între bit
line si intrarea neinversoare a amplificatorului operațional).
1. (4p) Realizaţi un divizor de ceas 1 la 8.
2. (4p) Realizaţi o memorie SRAM cu cuvânt de 2 biţi având dimensiunea de 4
biţi (2 linii) folosind flip-flop-uri.
3. (2p) Realizaţi o memorie DRAM pe 2 linii si 2 coloane.

Laboratorul 05 - Eagle 101


În laboratoarele anterioare, ați învățat modul de funcționare al unor circuite electronice de
bază. Următoarele laboratoare se vor concentra pe proiectarea acestor circuite, folosind
EAGLE (Easily Applicable Graphical Layout Editor), pentru a pregăti realizarea lor fizică.
EAGLE este o aplicație software realizată de către Autodesk. Cu ajutorul său, vom putea
proiecta circuite electronice, precum și realiza traseele folosite la cablajul imprimat. EAGLE
necesită o licență pentru utilizare, dar poate fi folosit gratuit cu anumite restricții, cum ar fi
dimensiunea maximă a board-ului și numărul de layere. Unul dintre marile avantaje pe care
le oferă este faptul că există numeroase biblioteci cu piese predefinite. O parte dintre aceste
biblioteci sunt realizate chiar de către comunitate, printre cele mai notabile fiind bibliotecile
puse la dispoziție de: SparkFun, Adafruit, Element14 etc.
Instalare și folosire
Pentru a instala EAGLE, trebuie să descărcați installer-ul potrivit pentru sistemul vostru de
operare de pe pagina de downloads.

Pe Ubuntu este disponibil şi prin intermediul apt:

sudo apt-get install eagle


Pentru a utiliza EAGLE aveți nevoie de un cont pe situ-ul Autodesk. La prima rulare EAGLE
veți fi nevoiți să vă autentificați.

După instalare, deschiderea aplicației vă va da acces la un Control Panel (vezi figura de mai
jos), de unde puteți crea proiecte și încărca biblioteci.
Ce se poate face cu EAGLE?
▪ Puteți crea schematicul aplicației (similar cu ceea ce făceați in Falstad).
Fișierele salvate vor avea extensia .sch.
▪ Din schematic puteți genera Board-ul PCB-ului. Board-ul este legat de
Schematic; la nevoie poate fi re-generat. Fișierele salvate vor avea extensia
.brd.
▪ EAGLE poate face verificarea schematicului și a boardului pentru diferite tipuri
de erori (fire lăsate în aer etc.) care sunt foarte utile înainte de realizarea
plăcuței fizice.
▪ Puteți crea piese custom pe care să le folosiți în noile proiecte (Schematic și
Board).
După ce creați board-ul pentru o schemă electronică, puteți să printați cablajul imprimat
pentru a-l folosi la realizarea plăcuțelor voastre. Astfel, se poate observa că un proiect EAGLE
complet se realizează din 2 pași: schematic și board, ca în figura de mai jos:

De ce am nevoie să încarc biblioteci? Pentru că atunci când faceți proiectarea


cunoașteți deja piesele pe care le folosiți (cele cumpărate din comerț), care au anumite
dimensiuni („footprint”) de care trebuie să țineți cont la generarea board-ului.
De ce am nevoie să fac piese customizate? Pentru că este posibil ca pentru
unele piese pe care doriți să le folosiți / le-ați cumpărat deja să nu găsiți bibliotecile
corespunzătoare. Astfel, EAGLE permite realizare propriilor biblioteci și încurajează upload-ul
acestora pe site-ul lor.
Folosirea editorului schematic
Pentru a crea o noua schema :
▪ File→New→Schematic
Adăugarea pieselor în schemă

Pentru a adăuga piese în schemă este folosit butonul Add ( ). Va apărea o fereastră ce
afișează listele de biblioteci din sistem, de unde puteți să selectați piesa dorită. Vor fi afișate
informații despre piesă, cum va arăta piesa în schema și cum va arăta pe PCB. De asemenea,
se pot căuta
piese:

Pentru a adăuga piesa apoi în schemă, se face click în locul unde vrem să punem piesa. Înainte
de a poziționa piesa, puteți folosi click-dreapta pentru a o roti. De asemenea, după adăugare
piesa rămâne selectată astfel încât se pot adăuga cu ușurință mai multe piese de acelasi tip.

Inițial ele vor avea nume generice, însa acestea pot fi redenumite. Acest lucru se face prin
Click-dreapta pe piesă → Name. Pentru a fi reprezentată și o valoare legată de piesă, se
face Click-dreapta pe piesă → Value și este introdusă valoarea dorită.
Selectarea unei componente se face cu click stânga!
Daca schema devine prea aglomerată, pot fi folosite uneltele zoom: .
Acestea pot fi folosite pentru a face zoom in, zoom out, pentru a încadra toata schema în
ecran sau pentru a încadra o anumita zona în ecran.
Așezare piese în schematic
În partea de sus a toolbar-ului din stânga sunt unelte ce pot fi folosite pentru a muta și așeza
piese în scenă.

▪ Group
▪ Move
▪ Mirror
▪ Rotate
▪ Copy
▪ Paste
▪ Delete
▪ Change
Legături între piese
După ce ați adăugat piesele în scheme, trebuie făcute legăturile între ele. Pentru a vedea mai
ușor pinii pieselor, poate fi activat layer-ul Pins:

▪ Click pe butonul Layer settings( )


▪ Selectarea/deselectarea layerului prin click pe numarul lui( 93 în cazul ăsta).
▪ Click Apply
Pentru a crea o legatură:

▪ Click pe butonul Net( ). Doar NET are semnificație


electrică, nu și WIRE.
▪ Se pozitionează crosshair-ul pe pinul primei piesei și se face click
▪ Se poziționează crosshair-ul pe pinul piesei destinație și se face click
▪ Pot fi adăugate oricâte puncte intermediare
▪ Poate fi legat la o conexiune deja existentă.
Etichete

Dacă vom avea multe legături între piese, schema ar putea deveni foarte aglomerată. Pentru
a elimina confuziile putem eticheta legăturile. Se poate face acest lucru folosind butonul Label
( ). Pentru a adăuga o eticheta se apasă click-stânga pe conexiunea dorita și se
poziționează după preferințe. Eticheta va avea numele implicit al conexiunii. Pentru a o
redenumi se apasă click-dreapta pe legatură → Name.
Toate legăturile conectate între ele vor avea aceeași etichetă. De asemenea, putem atașa mai
multe etichete aceleiași legături sau unor legături care sunt conectate între ele. Toate aceste
etichete vor avea același nume în mod automat.

Magistrala

Magistrala este un tip special de conexiune, ce reprezintă un set de fire legate logic între ele.
Un exemplu ar fi o magistrală de date pe 16 biți: DATA[0:15]. Pentru a reprezenta o astfel

de legatură în Eagle, se foloseste butonul Bus ( ). Se pot lega apoi conexiune normale
la el.
Pentru a specifica conexiunile care pot face parte din magistrală, aceasta trebuie denumită în
următoarele moduri:

▪ NUME[0..x] - pentru conexiuni denumite NUME0, NUME1 etc.


▪ AAA,BBB - pentru conexiuni numite AAA sau BBB.
Electrical Rule Check
După ce am terminat schema, comanda ERC ne poate testa circuitul pentru erori. Aceste lucru

se poate face folosind butonul ERC( ):

Board Layout
Fișierul board poate fi generat automat din fișierul schematic sau poate fi construit de la zero.
Avantajul generării din schematic constă în faptul că piesele vor fi deja adăugate, împreună
cu semnalele dintre ele. Componentele unui fișier .brd sunt:

▪ Componente. Sunt piesele ce compun circuitul.


▪ Semnale. Reprezintă legăturile logice din circuit. Ex. Pinul PD7 de la atmega
este legat la pinul A de la o poartă logică.
▪ Rute. Reprezintă traseul fizic de placa ce face legatura între pinii legați printr-
un semnal.
Pentru a trece de la schematic la board folosiți:

File → Switch to board


Pentru a lucra cu mai multe componente deodată folosiți unealta Group ( ) după care
selectați modificarea pe care o vreți efectuată (Ex: Move) și din meniul de context accesat
dând click dreapta pe grup alegeți acțiunea per grup (Ex: Move: Group).
Schematicul și board-ul generat fac parte din același proiect. De multe
ori este nevoie să ne dăm seama ce reprezintă un fir din board sau
care e traseul din board corespunzător unei conexiuni din schematic.
Pentru a face acest lucru, putem să folosim opțiunea „Show” din
tool box, care permite ca la selectarea unei componente în schematic
să facă highlight la componenta corespondentă din board și invers.
Opțiunea „Show” se selectează separat pentru schematic, respectiv
pentru board. În plus, având opțiunea activă, selectarea unui pin în
schematic va face highlight la toți pinii care sunt conectați pe acea
rută (similar pentru board).
Ca o alternativă la opțiunea „Show”, pentru a vedea dacă un pin este conectat la o
componentă, puteți încerca mutarea piesei. Spre deosebire de cum era în cazul simulatorului
Falstad, EAGLE permite mutarea conexiunilor odată cu piesele.

Rutare
Puteți observa faptul că la generarea board-ului piesele sunt conectate prin niște fire galbene,
subțiri, numite airwires. Acestea nu reprezintă decât faptul că există o conexiune între acele
piese în schematic, dar nu reprezintă traseele de care avem nevoie. Ne vor ajuta, însă, la
crearea rutelor între componente.

Autoroute

Rutarea este facuta automat de catre eagle pe baza unui algoritm. Acest algoritm poate fi
parametrizat prin asignarea unor costuri unor elemente. Rutarea automata poate esua uneori
sau poate produce rezultate proaste.

Pentru a face autorutare din eagle dați click pe butonul Autorouter ( ). Din meniul
lansat puteți alege diversele proprietăți pe care să le aibă în vedere rutarea, una din cele mai
importante este cum să trateze trasarea pe suprafața de sus și cea de jos a plăcii.
Rutare manuala

De multe ori autorutarea poate să genereze rezultate în parte ineficiente. Astfel, este indicat
să folosiți o combinație de autorutare cu rutare manuală pentru a obține cele mai bune efecte.

Se ruteaza fiecare semnal manual folosind unealta Route ( ) . Pentru a elimina o rută

folosiți unealta Ripup ( ).


Ratsnest
Pentru a verifica faptul că toate Net-urile sunt rutate din schematic, folosiți opțiunea

RATSNEST . Dacă totul a mers bine și ați rutat toate airwire-urile, veți vedea mesajul
următor în status box-ul din stânga-jos: „Ratsnest: Nothing to do!”.
Design Rule Check

Similar cu ERC-ul (Electrical Rule Check), există DRC (Design Rule Check ) care este o
unealtă ce face verificări asupra circuitului conform anumitor parametri. De aici se pot seta
verificări pentru a vedea dacă două linii sunt prea aproape, se poate mări dimensiunea găurilor
de burghiu, cât și cea a pad-urilor. În principiu de aici se pot face diverse modificări pentru a
ne asigură că circuitul reprezentat poate fi implementat folosind uneltele avute la dispoziție.
Pe lângă asta, puteți încărca și un set de reguli predefinite.
Cele mai comune probleme care pot apărea sunt: suprapunerea a două sau mai multe rute
(numită overlap), trecerea unei rute prea aproape de un pad / via, trecerea unei rute prea
aproape de marginea board-ului etc.
Exerciții
1. (1p) Instalați biblioteca Adafruit din repository-ul GitHub de aici, într-un folder
care conține numele vostru. Folosiți una dintre piesele din această bibliotecă
(adăugați-o într-un schematic nou).
2. Deschideți Falstad, la circuitul Circuits → Logic Families → DTL → DTL NAND.
a. (4p) Realizați schematicul pentru acest circuit.
b. (4p) Generați board-ul PCB folosind pașii descriși la secțiunea aferentă.
Aranjați componentele în zona delimitată board-ului. Realizați rutarea între
componente folosind doar layer-ul „bottom”.
c. (0.5p) Realizați verificarea ERC.
d. (0.5p) Realizați verificarea DRC folosind opțiunile:
▪ verificarea pentru distanțe dintre trasee să fie minim 10 mil între oricare
două componente.
▪ verificarea pentru găuri de burghiu să fie tot de 10 mil.
▪ verificarea pentru dimensiunea pad-urilor să fie cu 50% mai mare decât
este setată implicit.
3. (2p) Realizați un schematic în care folosiți un
microcontroller ATMEGA328P care va primi pe pinii un număr PC0-3 de la un
switch(SWITCH-4PDTCNK_LOCK, se găsește în biblioteca de la SparkFun) și va
transmite folosind o magistrală de pe pinii PD0-7 către un afișor 7-segmente
(7-SEGMENT-DISPLAYPTH), tot din biblioteca SparkFun). Generați board-ul și
realizați rutarea.
▪ Hint: Biblioteca de la SparkFun se poate adăuga pentru utilizare prin
meniul Library → Use (daca nu gasiti, descarcati bibliotecile de
la https://github.com/sparkfun/SparkFun-Eagle-Libraries).
▪ Hint: La magistrală trebuie etichetați identic liniile de la pinii PD0-7 și A-
DP.
Laboratorul 06 - Eagle 102 - Piese Custom
Eagle vine cu multe biblioteci, fiecare cu foarte multe piese, dar e posibil să nu găsiți piesa de
care aveți nevoie în bibliotecile standard. În acest caz aveți două opțiuni:

▪ Căutați o bibliotecă ce conține piesa de care aveți nevoie (ex. biblioteca SparkFun, ce
conține piese ce pot fi găsite pe site-ul www.sparkfun.com)
▪ Creați piesa în Eagle
Atenție la bibliotecile găsite; verificați-le înainte să le folosiți. Ele trebuie să coincidă cu
datasheet-ul piesei pe care vreți să o folosiți.

Puteți pune o piesa nouă în bibliotecile deja existente în EAGLE, dar este recomandat să le
organizați în biblioteci noi. Pentru a crea o nouă bibliotecă:

▪ File→New→Library
O bibliotecă este compusă din Device-uri, iar Device-ul este compus din urmatoarele părți:
▪ Symbol: Simbolul ce va fi folosit în schemă - definește forma în schemă și pinii device-
ului;
▪ Package: Dimensiunile fizice ale device-ului - trebuie să coincidă cu cele din datasheet;
▪ 3D Package: Reprezentarea 3D a device-ului - utilă pentru observarea dimensiunilor
plăcuței proiectate (nu este obligatoriu).
Pentru a adăuga o piesă nouă într-o bibliotecă avem mai multe variante. Indiferent de varianta
aleasă, trebuie ca mai întâi să deschidem biblioteca și vom observa Table of contents:

Adăugarea unei componente trebuie să se facă prin crearea unui Symbol, a unui Package și
apoi a unui Device ce le va lega pe celelalte două.
Posibilități de adăugare symbol/package/device:
1. Ordered List ItemDin Table of Contents: se pot observa în imaginea de mai sus, în
partea de jos, Add Device…, Add Package… și Add Symbol…;

2. Din bara de opțiuni din partea de sus:

3. Din meniul Library:

O altă facilitate importantă a fost introdusă recent în ultimele versiuni de Eagle: importarea
device-urilor, a package-urilor sau symbol-urilor din alte biblioteci deja existente:
Symbol
Aici este definit modul în care va arăta piesa în schematic. De obicei, este prezentat în
datasheet un simbol recomandat, dar nu este obligatoriu ca simbolul definit în eagle să arate
ca cel din datasheet. Pentru desenarea simbolului se vor folosi primitive grafice precum linii
și arce de cerc și este obligatoriu să utilizăm layer-ul 94 Symbols - selectat by default.

Unelte disponibile:

▪ 1 (Pin). Adaugă un pin pe device. Este util să fie definite asemănător cu datasheet-
ul, dar nu este necesar. Legatură dintre ele și punctul de contact va fi făcut la Device.
Inițial îi este dat un nume nedescriptiv; pentru a redenumi pinul, click dreapta pe el
și Name.
▪ 2 (Line): Desenează una sau mai multe linii; pentru a termina o linie se face Dublu-
click sau se apasă Esc;
▪ 3 (Text): Adaugă text în simbol;
▪ 4 (Arc): Deseneaza un arc. Mai întâi este definit cercul din care face parte arcul și
punctul de început al arclui, apoi este selectat și celălalt capăt;
▪ 5 (Polygon): Desenează un poligon cu o forma arbitrară;
▪ 6 (Circle): Desenează un cerc;
▪ 7 (Rect): Desenează un dreptunghi;
Căteva exemple de capsule:

După ce avem forma de bază a componentei, e necesar să definim și pinii piesei. Este
recomandat ca aceștia să fie numiți așa cum îi găsim în datasheet. De asemenea, symbol-ul
trebuie gândit astfel încât originiea componentei („+” prezent în figura de mai jos) să fie în
centrul piesei. Chiar dacă din desenul pe care îl faceți se pot observa conexiunile
componentei, trebuie utilizați și pini.
După finalizarea desenului, putem adăuga directivele >NAME și >VALUE (ca text) pe layer-
ele “95 Names”, respectiv “96 Values” pentru a ni se afișa automat în schema pe care o
desenăm un nume și o valoare pentru componentă (ex: rezistenta: valoarea si numele R,
condensator: valoarea si numele C).
Nu schimbați dimensiunea gridului! Altfel nu veți mai putea să conectați firele la pini în
modul de editare al schematicului. Pasul standard pentru un grid este de 0.1 inch.

Package
După ce avem simbolul gata, trebuie să creăm și modul în care va apărea piesa pe board,
acesta fiind rolul package-ului. Pentru acest lucru, este necesar să știm dimensiunea și forma
pinilor, precum și amplasamentul lor pe placă (distanța dintre ei). Toate aceste date formează
ceea ce se numește „footprint-ul” piesei și poate fi regăsit, de obicei, în datasheetul piesei
respective (vezi un exemplu în figura de mai jos).
Veți observa că pentru fiecare dimensiune apar câte două valori: cea de sus reprezintă
valoarea în milimetri, iar cea de jos e în inch. De asemenea, in unele datasheet-uri, vom
observa ca putem avea doua valori (ex: valori pentru capsula) sau de forma valoare +-
eroare. Acestea reprezinta dimensiunea intre care se poate incadra respectiva capsula, avand
in vedere eroare de fabricatie.

Vor exista cazuri când va fi nevoie să modificați dimensiunea gridului pentru a putea plasa
pad-urile conform cu dimensiunile footprint-ului. Puteți face acest lucru din tool-ul Grid, după
cum am învățat în laboratorul trecut.

Componentele pe care le putem adăuga în modul Package sunt:

▪ Pad-uri:
▪ SMD;
▪ DIL;
▪ Hole;
▪ Restul componentelor fac parte din silkscreen.
Silkscreen reprezinta stratul de vopsea ce se regaseste pe suprafata PCB-ului, utilizat pentru
a identifica componente, puncte de testare, părți ale PCB-ului, simboluri de avertizare, logo-
uri etc.

Înainte de a adăuga pad-urile, trebuie să ne asigurăm că au dimensiunea potrivită. După ce


vedem în datasheet dimensiunea recomandată, o putem selecta din bara de sus de opțiuni
(de asemenea, și forma):

Daca totuși trebuie modificate apoi, puteți oricând schimba diferite opțiuni din sidebar,
folosind tool-ul „Change” ca în figura de mai jos:

Orice meniu de selecție a dimensiunilor are și o opțiune „…” care vă permite să adăugați
dimensiuni custom, în cazul în care nu ați găsit dimensiunea care vă trebuie printre exemplele
date.

După adăugarea tuturor pad-urilor și plasarea pad-urilor pe pozițiile corespunzătoare,


asigurați-vă că aveți piesa centrată (similar cum am făcut pentru schematic,re-poziționarea
tuturor elementelor pentru a încadra „+”-ul). Apoi trebuie să numiți pad-urile conform cu
datasheet-ul.

Piesa este aproape gata! Trebuie acum să îi adăugăm și dimensiunile fizice ale capsulei. Aceste
dimensiuni se adaugă pentru referință, pentru a nu face greșeala de a pune pe placă două
piese care sunt prea apropiate, lucru care ar face lipirea lor aproape imposibilă (vezi figura
de mai jos, liniile galbene reprezintă capsulele pieselor. Acestea se afla in layerul 20
Dimension).

Pentru a desena și capsula, puteți selecta tool-ul Wire, folosind Layer-ul 51 tDocu. Folosiți
dimensiunile din datasheet!

Opțional, pe lângă capsulă, puteți realiza și silkscreen-ul pe Layer-ul 21 tPlace, care reprezintă
liniile ajutătoare pentru plasarea piesei pe PCB.

Device
Acum că avem Symbol-ul și Package-ul, trebuie să îi spunem lui Eagle ce pini din Symbol
trebuie asociati cu ce pini din Package. Pentru început, treceți în modul de editare Device,
folosind butoanele din toolbar-ul din partea de sus.

Apoi, folosiți butonul „Add” pentru a adăuga simbolul nou-creat:


Simbolul va apărea centrat, iar din partea dreaptă a ferestrei veți putea adăuga Package-ul,
folosind butonul New (dreapta jos) → Add local Package:
În figura de mai sus, semnul de exclamare din partea dreapta jos indică faptul că pinii nu au
fost asignați încă. Apăsați butonul Connect pentru a deschide fereastra de asignare a pinilor
între Symbol și Package. Folosiți butonul Connect pentru a conecta un Pin din Symbol cu un
Pad din Package sau Append pentru a conecta mai multe Pad-uri la un Pin (ex: unele circuite
integrate pot avea mai multe Pad-uri de Ground):

Asignați pinii conform cu datasheetul.

Exerciții
1. Realizați componenta LM741 într-o bibliotecă nouă. Trebuie să implementați:
a. (4p) Symbol-ul
b. (4p) Package-ul (inclusiv: dimensiunea capsulei!)
c. (2p) Și să le conectați într-un Device.
▪ Hint: aveți grijă ca toți pinii să aibă un pad asociat conectat.
2. (2p) Realizați rezistența în capsula SMD 1206 disponibilă aici, respectând pașii de la
exercițiul anterior.
Laboratorul 07 - Eagle continuare
Tips and tricks
Cautare componente

Pentru a cauta o componenta in Eagle se pot folosi urmatoarele metode:

▪ 1. Cautarea componentei dupa numele ei exact (ex: HCMS230X).

▪ 2. Folosirea caracterului “*” inainte sau dupa o portiune de nume. Acesta


are rolul de a inocui una sau mai multe litere (ex: *MS200X sau
HCMS2*).
▪ 3. Folosirea caracterului ”?”. Acesta are rolul de a inlocui o litera (ex:
HCMS200?)
Selectare componente concurente

In laboratoarele trecute am intampinat situatii in care existau mai multe elemente ce aveau
originea in acelasi punct. Acest lucru face dificila selectarea componentei dorite. In continuare
vom lua exemplul in care dorim sa stergem un element ce se afla intr-un punct. Vom selecta
unealta de stergere si apoi vom apasa click stanga pe punctul de concurenta. Utilizand click
dreapta putem naviga prin toate elementele ce se afla in acel punct. In momentul in care
avem selectat elementul dorim putem efectua actiunea dorita folosind click dreapta. In cazul
de faza ne va sterge elementul selectat.

▪ Pas1: Selectarea uneltei de stergere.


▪ Pas2: Navigarea prin elemente.

▪ Pas3: Stergerea elementului selectat.

Selectarea modului de rutare a firelor

Dupa selectarea uneltei de rutare, in meniul de optiuni, avem tipurile pe care le putem alege.
Prin acest meniu putem naviga si folosind “click dreapta”, atunci cand avem selectat utilitarul
de rutare.
Cautarea unei componente si a capsulei corespunzatoare

Pentru a diferentia intre SMD si THT putem sa privim footprintul componentei. Daca observam
pad-uri atunci este THT, altfel este SMD. O alta metoda este sa citim descrierea componentei.
Vom putea observa pachetul ori in coloana description ori in descrierea detaliata a acesteia.

Exerciții
Folosind schema de aici, realizați schematicul în EAGLE si apoi PCB-ul(design-ul placii fizice).
Puteti folosi atat componente in capsule THT(Through-Hole Technology), cât și SMD(Surface
Mount Device).
▪ Hint: Folosiți Wire (Style: longdash) pe layer-ul 92 Busses pentru delimitarea
între diferite părți ale PCB-ului;
▪ Hint: Firele denumite la fel sunt unite la nivel electronic, chiar dacă nu apar
conectate în schematic;
▪ Pentru design-ul unor părți ale PCB-ului, puteti folosi si functia de autorouter
(NU traseele de semnal și putere).
Recomandări realizare schemă:
▪ Instalare biblioteci necesare: Sparkfun-IC-Microcontroller, SparkFun-
DiscreteSemi, SparkFun-Resistors, SparkFun-Capacitors, SparkFun-Switches
▪ Microcontroller-ul poate fi găsit în biblioteca Sparkfun-IC-Microcontroller;
▪ Tranzistorii pot fi găsiți în bibliotecile SparkFun/SparkFun-DiscreteSemi,
căutând *npn*, *nmos* sau *mosfet*;
▪ Diodele pot fi găsite în biblioteca SparkFun-DiscreteSemi, căutând *diode*;
▪ Potențiometrul poate fi găsit în biblioteca SparkFun-Resistors, căutând
*trimpot*;
▪ Switch-ul S1 îl puteți găsi în biblioteca SparkFun-Switches, căutând *tactile*;
▪ JP1 și JP2 reprezintă câte un pinheader și pot fi găsiți căutând *pinh*;
▪ Cristalul de quartz poate fi găsit in biblioteca adafruit, câutând *crystal*.
▪ Respectarea valorilor componentelor (ex: rezistente, condensatoare)
▪ De obicei numele capsulei apare scris in dreptul coloanei description
Exemplu:

Name Description
MOSFET TO220V
Constrângeri capsule:
▪ Tranzistorii Q5 și Q6 trebuie să fie în capsulă SOT23-3;
▪ Tranzistorii MOSFET de putere (Q2, Q3, Q4 și Q8) trebuie să fie în capsulă
TO220;
▪ Quartz-ul Q1 trebuie să fie în capsulă HC49/S;
▪ Condensatorii C1, C2, C3, C4 și C5 trebuie să fie SMD, în capsulă 0805;
▪ Condensatorii C6 și C7 trebuie să fie polarizați, în capsulă THT;
▪ Microcontroller-ul trebuie să fie în varianta THT;
▪ Diodele D1, D2, D3 și D4 trebuie să fie diode Schottky, în capsulă SMA.
Reguli de good practice în realizarea PCB:
▪ Traseele de putere (cele pentru alimentarea punții H și cele pentru alimentarea
motorului de la puntea H) este recomandat să fie cât mai scurte și destul de
groase (minim 2.54 mm grosime);
▪ Traseele de semnal (PWM_1 și PWM_2) trebuie să fie cât mai scurte și să nu
fie plasate în zona traseelor de putere;
▪ Condensatorii de decuplare (C3, C4 și C5) trebuie plasați cât mai aproape de
pinii microcontroller-ului (fiecare condensator la câte un pin de
alimentare/referință);
▪ Traseele nu trebuie să aibă unghiuri drepte;
▪ Cristalul de quartz trebuie pus foarte apropiat de microcontroller, la fel și
cei doi condensatori;
▪ Dacă placa este realizată dublu strat, se vor evita vias-uri la traseele de putere.
Se poate folosi parțial și Autorouter dacă se îndeplinesc regulile de good practice; daca
este nevoie, placa poate fi realizată pe două straturi.

=Notare=
▪ [1p] Instalare biblioteci necesare
▪ [4p] Realizare schemă
▪ [4p] Realizare board fără respectarea regulilor de good practice
▪ [+2p] Realizare board, respectând toate constrângerile și regulile de good
practice
Laboratorul 08 - Semnale diferentiale
Pana acum circuitele pe care le-am proiectat au transmis semnale care aveau ca punct de
referință masa circuitului (single-ended signaling).

Daca dorim sa transmitem semnale cu viteza mare, atunci zgomotul va fi un factor important
de luat in considerare:

▪ In primul rând zgomotul electro-magnetic afectează toate traseele de pe un


PCB
▪ In al doilea rând zgomotul din masa; Deoarece masa este comuna cu
întreaga logica de pe PCB, zgomotul poate fi indus de oricare dintre
componente. Astfel valoarea de referință poate fi ridicată sau coborâtă,
ducând la citiri eronate.
In acest laborator ne vom ocupa de semnale diferențiale. Spre deosebire de transmiterea
datelor printr-un semnal single-ended in cazul semnalelor diferențiale datele sunt transmise
prin doua semnale complementare. Circuitul care va interpreta datele nu va mai citi diferența
de tensiune intre intrare și masa, ci va reacționa la diferența dintre cele doua semnale.

Datorita faptului ca in circuitul diferențial impedanțele de transmitere si recepție sunt egale,


interferentele electromagnetice tind sa afecteze in mod similar ambele fire, inducand acelasi
zgomot pe ambele fire. Deoarece Informatia relevanta este obtinuta prin diferenta celor doua
semnale, zgomotul va fi redus si astfel efectul lui asupra circuitului va fi minim.
Protocoale care implementează transmisia datelor folosind semnale diferentiale:

▪ SATA
▪ HDMI
▪ USB
▪ PCI Express
▪ Ethernet over twisted pairs
Rutarea semnalelor diferențiale
Pentru a putea ruta o pereche de semnale diferențiale este necesar ca semnalele sa fie
denumite corespunzător. Primul semnal trebuie sa aibă numele de forma nume_P, iar al doilea
difera doar prin sufix: _N. In exemplul de mai jos am notat cu DIFF_P si DIFF_N cele doua
semnale diferențiale.
O constrangere importanta este faptul ca cele doua fire trebuie sa aiba lungime egala, pentru
acest lucru se foloseste rutarea in serpentine pentru a aduce lungimea traseelor sa fie cat mai
apropiata.
Functia din eagle se numeste Meander si o puteti gasi astfel:
Constrangeri si Recomandari

Constrangeri de lungime

Dupa cum am am menționat anterior, lungimea ambelor fire trebuie sa fie cat mai apropiata.
Este “good-practice” ca serpentinele sa fie cat mai apropiate de capatul in care pad-urile/via-
urile nu sunt aliniate corespunzător.
Situarea fata de planul de referință

Firele pe care circula semnale de mare viteza trebuie sa fie rutate mereu pe un plan de GND.
Rutarea peste un plan vid poate cauza:

▪ Întârzieri in propagarea semnalelor


▪ Interferente
▪ Degradarea integrității semnalelor
Exemplu:

Daca nu se poate evita trecerea peste un plan vid, înseamnă ca avem doua planuri de masa
distincte. Este recomandat ca acestea sa fie conectate prin doua condensatoare de capacitate
1 microF sau mai puțin, plasate cat mai aproape de firele de semnal.
Distanta intre fire Este recomandat ca distanta intre perechile de fire sa fie de 5xW, unde W
este latimea firului. Este recomandat ca semnalele periodice sa fie izolate folosind o distanta
de cel putin 8xW.

Diverse reguli:

▪ Este recomandat sa nu se ruteze fire pe care circula semnale de inalta


frecventa pe sub sau langa cristale de quartz, generatoare de ceas, gauri
pentru montare, dispozitive magnetice, regulatoare de tensiune sau IC-uri care
folosesc semnalul de ceas.
▪ Este recomandat ca firele pe care circula semnale diferentiale sa fie rutate la
cel putini 90mil de marginea planului de referinta,
▪ Este recomandat sa se maximizeze distanta intre perechile de fire de
transmisie atunci cand este posibil.
▪ Perechile de fire trebuie trasate paralel, singurul punct in care este permisa
spargerea simetriei este inainte de a se conecta la capsula de siliciu a unui
circuit integrat. Distanta recomandata pentru spargere este cu 0.25inch inainte
de capsula acesteia.
Planul de masa
Planul de masa de pe un PCB este o zona larga acoperita cu un strat de cupru care este
conectata la punctele de masa ale circuitului. Acesta este realizat de regula cat mai mare,
acoperind aproape intreaga suprafata a PCB-ului care exceptand zonele pe unde circula
treseele.

Planul de masa are urmatoarele avantaje:

▪ In primul rand aranjarea componentelor pe PCB devine mult mai usoara


deoarece accesul pinilor la un punct de masa este relativ facil
▪ Reduce zgomotul si interferentele cauzate de buclele de masa.
Cum se poate realiza un plan de masa in Eagle?

▪ Se selecteaza functia Polygon

▪ Se delimiteaza zona in care dorim sa fie planul de masa


▪ Se redenumeste poligonul folosind numele GND
▪ Se foloseste functia Ratsnests

Exerciții
▪ Realizati schema de aici. (1p)
▪ Convertorul USB-UART FT232RL poate fi gasit in biblioteca Sparkfun-IC-
Comms
▪ Portul USB poate fi gasit in biblioteca OPL_Connector si cautand *DIP-USB*
▪ Condensatorii C1 si C4 trebuie să fie SMD, în capsulă 0805;
▪ Condensatorii C2 și C3 trebuie să fie polarizați, în capsulă THT
▪ Ferrite bead-ul il gasiti in biblioteca Sparkfun-Coils sau cautand
*ferrite_bead*
▪ Realizati PCB-ul (6p)
(Se cere respectarea constrangerilor si recomandarilor facute in acest laborator; Nu este
permisa folosirea functie Autorouter)
▪ Realizati planul de masa (3p)

Laboratorul 09 - Comunicare I2C si SPI


Orice sistem embedded presupune interconectarea mai multor circuite care, împreuna, sa
contribuie la realizarea (de obicei) a unui singur scop. Sa luam spre exemplu un sistem a carui
funcție este sa monitorizeze confortul ambiental (o stație meteo simplificata). Pentru a crea
acest sistem avem nevoie de un microcontroller si mai mulți senzori: de temperatura, de
umiditate, de presiune, de calitate a aerului, etc.

Microcontrollerul este „creierul” care colecteaza și proceseaza datele, iar senzorii sunt
furnizorii datelor. Cum ajung datele de la senzori la microcontroller? Avem nevoie de o
schema/un protocol pe care sa îl cunoasca atât uC cât și senzorii pentru a putea interschimba
date. În prezent, exista numeroase astfel de standarde care descriu modalitati de transmisie
de date, dar, în principiu, le putem grupa în 2 mari categorii: paralele sau seriale. Doua
protocoale foarte populare ce se incadreaza în cea de-a 2 categorie sunt SPI si I2C.

I2C
Interfata I2C este un standard sincron multi-master, multi-slave pentru transmisia de date
dezvoltat de Philips Semiconductor (NXP Semiconductors). Un master este componenta care
initiaza transferul de date și genereaza semnalul de ceas necesar pentru sincronizare. I2C
folosește doar 2 linii de comunicatie, una pentru semnalul de ceas (SCL) și alta pentru date
(SDA), deci comunicatia este half-duplex, functionand cu pana la 400Kbps.
SDA și SCL sunt 2 linii
bidirectionale, open-drain, conectate la o sursa pozitiva de tensiune, prin intermediul unor
rezistente de pull-up.
Modul de functionare al I2C
Cum începem o tranzactie de date în I2C? Când magistrala este libera, și SDA și SCL sunt în
starea HIGH. Pentru a initia o tranzactie, trebuie sa trimitem conditia de START: SCL rămâne
în starea HIGH, iar SDA trece din HIGH în LOW. Similar, dacă dorim sa încheiem o tranzactie,
conditia de STOP corespunzatoare este reprezentata de trecerea SDA din LOW în HIGH, iar
SCL rămâne HIGH. După trimiterea conditiei de START, magistrala este considerată a fi
ocupata. Revenind la exemplul cu stația meteo, avem 3 senzori conectați la aceeași magistrala
I2C a microcontrolerului, care are rolul de master. Dacă uC vrea sa citească date de la
senzorul de presiune, bmp180, atunci va initia o tranzactie pe magistrala trimitand START.

Magistrala este aceeași pentru toți senzorii, deci cum îl alegem pe cel cu care vrem sa
comunicam la un moment dat ? In I2C, fiecare „slave device” este referit printr-o adresa.
Astfel, dacă avem mai multe circuite slave conectate pe magistrala, masterul alege cu care
dintre ele dorește sa initieze comunicatia, precizand adresa specificata în datasheetul
senzorului. Cel mai adesea, se folosesc adrese reprezentate pe 7 biti, iar cel mai
nesemnificativ bit din octetul adresei ne arata daca urmeaza o operatie de scriere sau citire.
După stabilirea device-ului cu care se comunica, se poate începe transimiterea datelor.

Clock stretching
Uneori “slave” device-ul are nevoie de mai mult timp pentru a trimite datele. Dupa cum am
spus, masterul controleaza linia de ceas si asteapta ca slave-ul sa trimita datele, tinand cont
de ciclii sai de ceas. Daca datele nu sunt gata, slave-ul trebuie sa mai “traga de timp” si face
acest lucru aducand linia SCL in starea LOW, imediat dupa ce masterul a eliberat-o.

Exemplu de comunicare prin I2C


Sa consideram unul dintre senzorii din exemplul cu statia meteo: senzorul de umiditate si
temperatura si7020 si sa-l conectam la MCU pentru a realiza citirea umiditatii.

Primul pas este conectarea fizica a liniilor de date si ceas la MCU, ce are rolul de master. In
datasheet-ul senzorului gasim o descriere elaborata despre cum se realizeaza o masuratoare:

In figura de mai sus sunt realizate urmatoarele codificari: * S - conditia de START * P -


conditia de STOP * R - Read (=1) * W - Write (=0)

Prin urmare, pentru citirea umiditatii masurate de senzor se procedeaza in felul urmator:
1. Masterul trimite conditia de START (S) 2. Masterul trimite un octet ai carui cei mai
semnificativi 7 biti reprezinta adresa senzorului (0x40) (Slave Address), iar ultimul bit este 0
pentru a marca faptul ca urmeaza o operatie de scriere (W). Urmatorul bit este bitul
ACK/NACK. Acest bit urmeaza intotdeauna, dupa orice frame, fie el de date sau adresa. Dupa
ce adresa + bitul R/W au fost trimisi, controlul SDA-ului revine senzorului. Acesta trebuie sa
aduca linia de date in starea LOW, pentru a marca ca a primit datele de la master si acestea
sunt corecte (ACK) Daca SDA-ul nu este dus in starea LOW (NACK), transmisia se opreste,
iar masterul decide ce se intampla in continuare. 3. Masterul trimite un octet ce reprezinta
masuratoarea pe care vrea sa o citeasca de la senzor. Uitandu-ne in datasheet, in tabelul ce
descrie comenzile pe care le poate primi si7020 observam ca pentru a citi umiditatea comanda
corespunzatoare este: `0xE5 : Measure Relative Humidity`. Prin urmare trimite 0xE5 si
asteptam din nou ACK. (Measure Cmd) 4. Masterul trimite din nou octetul ce contine adresa
slave-ului (Slave Address), de data aceasta cu bitul R/W setat pe 1, marcand faptul ca
operatia dorita este de citire. 5. Senzorul aduce SCL in starea LOW, pentru a avea timp sa
pregateasca datele (Clock stretch) 6. Senzorul trimite primul byte (MS) din valoarea umiditatii
(este reprezentata pe 2 octeti) si asteapta ACK. 7. Senzorul trimite al 2-lea byte (LS) fara a
mai fi nevoie de confirmare (NACK). 8. Masterul trimite conditia de STOP.

SPI
SPI se incadreaza tot în categoria standardelor seriale sincrone, conectand un master și mai
multe device-uri „slave”. Spre deosebire de I2C nu sunt suportate mai multe dispozitive
master, însă comunicatia este full-duplex. Folosește 4 legături pentru comunicare:

* SCK — Serial Clock (output de la master către slave) * MOSI — Master Output, Slave Input
(output de la master către slave) * MISO — Master Input, Slave Output (output de la slave
către master) * SS — Slave Select (activ pe 0; output de la master către slave)

Pentru fiecare dispozitiv slave este necesar câte un semnal de slave select separat, iar pentru
selectarea slave-ului se pune linia SS corespunzatoare pe 0.

Modul de funcționare SPI


Mai întâi masterul pune pe 0 linia SS corespunzatoare slave-ului cu care dorește sa comunice.
Apoi, transmisiunea fiind full-duplex, masterul va trimite biti pe linia MOSI, ce vor fi citiți de
slave iar slave-ul va trimite, în același timp pe linia MISO, biti care vor fi interpretati de
master. Acest lucru este posibil datorită unor registrii de shiftare, conectați circular.

Deși SPI-ul are numeroase avantaje, exista situații când avem nevoie sa conectam foarte
multe dispozitive „slave”. Acest lucru se traduce în foarte multe linii de slave select. Atunci
când nu avem suficiente linii disponibile, se pot folosi decodoare care sa permita referirea mai
multor dispozitive slave decât linii SS disponibile.

Exerciții
▪ Hint: aveți nevoie de bibliotecile SparkFun-Sensors și SparkFun-IC-Microcontrollers.
▪ Pentru acest laborator este recomandat ca bibliotecile folosite să fie luate de pe GitHub
(link).
1. (4p) Realizați schema si pcb-ul pentru statia meteo descrisa in acest laborator.
▪ Pentru microcontroller puteti folosi ATMEGA328P
2. (6p) Realizati schema si pcb-ul pentru un sistem cu microcontroller care are
atasati mai multi senzori SPI:
▪ Pentru presiune puteti folosi senzorul T5403
▪ Pentru umiditate folositi senzorul BME280.
▪ Conectati senzorul LSM9DS1.
▪ Conectati senzorul L3G4200D.
Resurse
▪ https://www.nxp.com/docs/en/user-guide/UM10204.pdf
▪ https://www.silabs.com/documents/public/data-sheets/Si7020-
A20.pdf
▪ https://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus

S-ar putea să vă placă și