Documente Academic
Documente Profesional
Documente Cultură
Rezistorul reprezintă o componentă electrică pasivă de tip dipol care se opune trecerii
curentului electric, conform legii lui Ohm (sursă imagini: Wikipedia):
Marcare
Tipuri de rezistoare
Condensator
Marcare
▪ 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
▪ 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
▪ Inductanța
▪ Rezistența totală de pierdere
▪ Capacitatea parazită
▪ Se opune variației curentului ce o străbate
Marcare
▪ 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
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
Dioda redresoare
Dioda Zener
LED
Fotodiodă
Dioda Schottky
Dioda tunel
Dioda Varicap
Utilizări
Punte redresoare:
Punte H:
Tranzistor
Caracteristici
▪ 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.
Utilizări
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
▪
Utilizări:
▪ Tensiune de referință
▪ Sursă de tensiune (Not a good idea :) see here why)
Transformator
P = puterea
Avantaje:
▪ 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
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ță
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
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ă.
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:
▪ 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
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.
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:
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
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.
AND
OR
NOT
NAND
NOR
XOR
XNOR
RTL
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.
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).
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.
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.
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.
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:
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 :
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ă
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):
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:
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:
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
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.
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:
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:
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:
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:
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ă
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…;
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.
▪ 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.
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.
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.
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
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.
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:
▪ 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:
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:
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)
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.
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:
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.
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