Sunteți pe pagina 1din 181

CIRCUITE INTEGRATE DIGITALE

Calin Bira
A422
calin.bira@upb.ro

1
Activități
Curs (3h/săptămână)
 Concepte generale despre circuite integrate digitale
 Tehnici de proiectare, analiză și optimizare
 Max. 2h/sapt teorie, min. 1h/sapt aplicații
Aplicatii (2h/săptămână)
 Descrierea circuitelor digitale în Verilog
 Simularea circuitelor digitale descrise
 Implementarea circuitelor digitale pe suport FPGA

2
Notare
Examen Final: 40p
Aplicatii: 50p (20p sapt 5-7, 30p sapt 13-14)
Teste la curs: 10p (eg. 1p/test)
Bonificație pentru Q&A: 10p + 10p
Total: 120p
Condiții de promovare: 25p la aplicatii, 20p puncte la
examenul final, 50 de p in total. Bonificatiile sunt in
totalitate la latitudinea cadrului didactic.

3
Cunoștințe necesare

Sintaxa de baza C, pentru aplicatii


Logică elementară
Dispozitive electronice (tranzistorul MOS)

4
Bibliografie

G. Ștefan: Loops and Complexity in Digital Systems


M. Morris Mano, Michael Ciletti: Digital Design

Acolo unde există alte surse, vor fi indicate în materialul


de curs

5
Contact

Material de curs, info notare pe Moodle


Telefon, e-mail, birou pe dcae.pub.ro/ro/membri/
Notele actualizate în Moodle pe parcursul semestrului

6
Sisteme Digitale

Parcurg toata gama de complexitate de la porți logice la


procesoare
Doua cerințe fundamentale pentru orice sistem util
 Procesarea informației (e.g. calculul unei sume)
 Transferul informației între componentele sistemului

7
Sisteme Digitale
 Scopul nostru: Procesor simplu RISC

8
Sisteme Digitale
De ce digitale?
 Lucrăm cu digits: reprezentare discretizată a
informației
 e.g. alfabetul, sistemul zecimal, etc.
 Dezavantaj: necesită conversie – ADC/DAC
– si cuantizare – proces “lossy”

9
Sisteme Digitale
De ce digitale?
 Lucrăm cu digits: reprezentare discretizată a informației
 e.g. alfabetul, sistemul zecimal, etc.
 Dezavantaj: necesită conversie - ADC/DAC – si cuantizare – proces “lossy”
 Forma cea mai simplă: reprezentarea binară (0/1)
 Interpretare facilă ca adevărat/fals, tranziție către domeniul informațional (și logica
Booleană)
 Dar si forma cea mai putin compactă de reprezentare

10
Sisteme Digitale
 Reprezentarea electrică a simbolurilor digitale:

 Ca valori discrete de tensiune între 0 si VCC


 In orice circuit există zgomot ce poate produce interpretarea greșită a unui simbol
 Pentru orice bază de numerație, rezistența la zgomot e maximă atunci când simbolurile sunt
egal distanțate în gama de tensiune
 Distanța cea mai mare pentru baza 2, deci și rezistența cea mai mare la zgomot
 În baza 2, procesarea informației se face prin operațiile algebrei Boolene

11
Sisteme Digitale
Numere binare
 Forma generală: an-1an-2...a3a2a1a0

 Valoarea zecimală exprimată de ecuația:


 Diferite moduri de reprezentare:


 Zecimală
 Hexazecimală
 ASCII, etc.

12
Sisteme Digitale
Numere binare
 Exerciții:

 Convertiți în zecimal numerele binare


 110

 11011

 10001110

13
Sisteme Digitale
Numere binare
 Exerciții:

 Convertiți în binar numerele zecimale


 47

 75

 256

14
Sisteme Digitale
Numere binare
 Exerciții:

 De câți biți e nevoie pentru a reprezenta


numărul zecimal
 31

 89

 100

15
Algebra Booleană
 Definește operații matematice pe valori binare
 Definiție axiomatică:
1. Se definesc operatorii + (SAU logic) și · (ȘI
logic) care au proprietatea de închidere în
spațiul numerelor binare

16
Algebra Booleană
 Definiție axiomatică:
1. Se definesc operatorii + (SAU logic) și · (ȘI
logic) care au proprietatea de închidere în
spațiul numerelor binare
2.Numărul 0 este elementul neutru al
operatorului SAU, iar numărul 1 este
elementul neutru al ȘI

17
Algebra Booleană
 Definiție axiomatică:
1. Se definesc operatorii + (SAU logic) și · (ȘI
logic) care au proprietatea de închidere în
spațiul numerelor binare
2.Numărul 0 este elementul neutru al
operatorului SAU, iar numărul 1 este
elementul neutru al ȘI
3. Operatorii ȘI, SAU sunt comutativi

18
Algebra Booleană
 Definiție axiomatică (continuare):
4. Operatorii ȘI, SAU sunt distributivi:
x(y+z) = xy + xz
x+(yz) = (x + y)(x + z)

19
Algebra Booleană
 Definiție axiomatică (continuare):
4. Operatorii ȘI, SAU sunt distributivi:
x(y+z) = xy + xz
x+(yz) = (x + y)(x + z)
5. Se definește complementul unui număr x,
notat x', astfel încât xx' = 0 și x + x' = 1

20
Algebra Booleană
Definiție axiomatică (continuare):

4. Operatorii ȘI, SAU sunt distributivi:


x(y+z) = xy + xz
x+(yz) = (x + y)(x + z)
5. Se definește complementul unui număr x, notat x', astfel
încât xx' = 0 și x + x' = 1
6. Operatorii ȘI, SAU sunt asociativi:
x+(y+z) = (x + y) + z
x(yz) = (xy)z

21
Algebra Booleană (Teoreme)
 Teoreme (de demonstrat):
1. x+x=x, xx = x

22
Algebra Booleană (Teoreme)
 Teoreme (de demonstrat):
1. x+x=x, xx = x
2. X+1=1, x0=0

23
Algebra Booleană (Teoreme)
 Teoreme (de demonstrat):
1. x+x=x, xx = x
2. X+1=1, x0=0
3. x+xy=x, x(x+y)=x

24
Algebra Booleană (Teoreme)
 Teoreme (de demonstrat):
1. x+x=x, xx = x
2. X+1=1, x0=0
3. x+xy=x, x(x+y)=x
4. (x+y)'=x'y', (xy)'=x'+y' (DeMorgan)

25
Logica Binară

Putem interpreta valorile binare de tensiune ca


adevărat/fals
Putem aplica operatorii fundamentali din algebra
Booleană: ȘI, SAU, NU
A B A' (!A) A+B (A|B) A*B (A&B) A^B

0 0 1 0 0 0
0 1 1 1 0 1
1 0 0 1 0 1
1 1 0 1 1 0

26
Logica Binară

Exprimați A^B (SAU exclusiv) cu ajutorul


operatorilor fundamentali

27
Logica Binară

Exprimați A^B (SAU exclusiv) cu ajutorul


operatorilor fundamentali
 Suma a 2 numere de 1 bit

28
Logica Binară

Exprimați A^B (SAU exclusiv) cu ajutorul


operatorilor fundamentali
 Suma a 2 numere de 1 bit
Porți logice – circuite electronice care
implementează operatori logici
NU SAU ȘI XOR SAU-NU ȘI-NU

29
CIRCUITE INTEGRATE DIGITALE

CURS 2:
PORȚI LOGICE CMOS
CIRCUITE LOGICE COMBINAȚIONALE
Comutatoare CMOS
Inversorul CMOS
Porți logice NAND și NOR
Timpul de Propagare
 Cauzat de capacitatea de poartă a tranzistorului
MOS – timpul de încărcare și descărcare a
sarcinii din poartă
 Timpul de propagare crește cu numărul de
tranzistoare al porții
 Dincolo de 3 intrări, e mai rentabil să folosim porți
cascadate
Circuite Combinaționale (CLC)
 Definiție: circuitele formate din fire și porți logice ale căror
valori de ieșire depind exclusiv de valorile intrărilor, la orice
moment de timp
 CLC nu pot conține bucle de reacție sau elemente de
memorie
 Forma generală: circuit cu M intrări și N ieșiri
Circuite Combinaționale (CLC)
 CLC cu un singur semnal de ieșire, echivalente
cu o funcție logică
 Operații cu CLC:
 Analiză
 A funcției
 A performanței
 Definirea criteriilor de performanță
 Proiectare
 Optimizare a performanței
Analiza CLC
 Procedura de analiză a funcției logice:
 Se denumesc ieșirile porților, pornind dinspre
intrare către ieșire
 Se notează toate semnalele denumite în tabelul de
adevăr
 Se completează tabelul de adevăr, pe coloane
Analiza CLC
 Exemplu: analizarea funcției următorului circuit
Analiza CLC
 Exercițiu:
Analiza Performanței CLC
 Criterii de performanță?
Analiza Performanței CLC
 Adâncimea circuitului – numărul maxim de porți traversate de semnal, pe
oricare cale de la intrare către ieșire
 Timpul de propagare prin circuit – durata de timp necesară pentru ca o
schimbare a valorilor de intrare să producă efecte la ieșire
 Calea critică – calea de semnal, intre intrarea și ieșirea circuitului, care are
timpul de propagare cel mai mare
 Aproximare bună: calea care traverseaza numărul maxim de porți
 Determină viteza de procesare a circuitului
Analiza Performanței CLC
 Dimensiunea circuitului – aria de siliciu
ocupată de circuit
 Aproximare bună: numărul de porți elementare
 Afectează costul unui circuit
 Puterea consumată
 Afectează costul și performanța unui circuit
Analiza Performanței CLC
 Exercițiu: comparați dimensiunea și timpii de
propagare pentru circuitele discutate anterior, și
indicați calea critică pentru fiecare.

Proiectarea CLC
 Procedura de proiectare:
 Exprimarea funcției dorite prin tabele de adevăr sau
funcții algebrice pentru fiecare ieșire
 Exprimarea grafică a funcției sub formă de circuit
pentru fiecare ieșire în parte
 Identificarea subcircuitelor comune
Proiectarea CLC

 Exemplu practic: circuit de pornire a motorului


 Verificarea unor parametri ai mașinii:
 Cheia în contact
 Centurile cuplate pentru pasagerii prezenți
Optimizarea CLC
 Minimizarea funcției logice
 O funcție logică poate fi implementată în multiple
moduri cu porți logice, scopul e de a găsi forma cu
performanță optimă
 Conversie la logică NAND/NOR
 Exprimarea funcției circuitului folosind exclusiv porți
de dimensiune minimă: NAND, NOR, NOT
Logică NAND/NOR
 Porțile NAND/NOR sunt porți universale (pot fi
folosite pentru a implementa orice funcție
logică)
 Metodologie:
 Obținerea formei NOT/AND/OR prin algebra sau
diagrama K
 Transformarea in logică NAND/NOR prin DeMorgan
CIRCUITE INTEGRATE DIGITALE

CLC ARITMETICO-LOGICE:
COMPARATORUL
MULTIPLEXORUL
CLC Regulate
●CLC construite prin asamblarea repetitivă a unor
circuite simple
N biți de intrare, M biți la ieșire

Urmărim să analizăm, în funcție de N și M


– Dimensiunea circuitului
– Adâncimea circuitului
Structura unui procesor

Circuite combinaționale:

●Decodorul de instrucțiuni
●Decodorul de adrese al memoriei de reg

●Unitatea Aritmetico-Logică (Sumare, S

●Selecția rezultatului pentru scriere în re


Comparatorul
●Nivel porti NXOR (pentru a determina egalitatea intre
fiecare din biti)
●Arbore de SI pentru a identifica o diferenta in oricare
din biti
●Dimensiunea variaza liniar cu nr de biti ai operanzilor
(N) pentru nivelul de porti NXOR si pentru arborele SI
– O(N)
●Adancimea nu variaza cu N pentru nivelul NXOR si
variaza logaritmic pentru arborele SI - O(logN)
Multiplexorul
Circuit de selecție între două sau mai multe semnale

S A B Q
A
0 0 0 0
S
0 0 1 1
0 1 0 0 Q
0 1 1 1
1 0 0 0
1 0 1 0
B
1 1 0 1
1 1 1 1
Multiplexorul
Circuit de selecție între 3 semnale de 1 bit

Multiplexorul
Circuit de selecție între 4 semnale de 1 bit

Multiplexorul
Circuit de selecție între 2 semnale de 4 biti

Multiplexorul
Determinati Dimensiune / Adâncime pentru

– Selecția între 2 semnale de 1 bit


– Selecția între 3 semnale de 1 bit
– Selecția între N semnale de 1 bit
● Dimensiune O(N)
● Adâncime O(logN)
– Selecția între 2 semnale de 2 biți
– Selecția între N semnale de M biți (cazul general)
● Dimensiune O(NM)
● Adâncume O(logN)
CIRCUITE INTEGRATE DIGITALE

CLC ARITMETICO-LOGICE:
SUMATORUL
DECODORUL
Semi-Sumatorul (Half-Adder)

Semi-sumatorul (Half-adder)

Permite calcularea sumei a două


numere de 1 bit (S)

Generează semnal de Carry (C)



Sumatorul Elementar (Full Adder)
Sumatorul Elementar (Full Adder)
● Exerciții:
– Săse construiască un sumator elementar din
semi-sumatoare
Sumatorul Elementar (Full Adder)
● Exerciții:
– Săse construiască un sumator elementar din
semi-sumatoare
Sumatoare Multi-Bit
Un sumator de N biți se poate forma printr-o cascadă de N sumatoare ele

●Aria ocupată crește cu O(N)


●Timpul de propagare crește cu O(N)

●Complexitate constantă (descriere recursivă)


Circuitul de scădere
Scădere == adunare în complement față de 2:
Decodorul
● Transformă din binar în reprezentare one-hot
– e.g., 010 => 00000100
– Utilitate: selecția (unui cuvânt dintr-o memorie
etc)
– Decodorul elementar: EDCD
Decodorul
Decodorul
Decodorul
● Timp de propagare: teoretic O(logN)
● Arie: O(N2N)
● Fan-out mare pentru EDCD (2N)
● Se poate optimiza aria?
Decodorul (Construcție Recursivă)
Decodorul (Construcție Recursivă)
● Timp de propagare: teoretic O(logN)
● Arie: 2N+2N/2+... posibil O(2N)
● Fan-out maxim O(2N/2)
Decodorul
● Prezintă pe intrări toți minterms ai intrărilor
– Orice funcție = DCD + arbore de OR
– Exemple: multiplexorul
Definiția generală: orice circuit care transformă

dintr-un cod în altul


– Exemplu: decodorul de instrucțiuni
– Exemplu: transcodorul binar – BCD
CIRCUITE INTEGRATE DIGITALE

CIRCUITE SECVENȚIALE ELEMENTARE:


LATCH
FLIP-FLOP
NUMĂRĂTOR
Dilemă!

Ați fost angajat ca junior digital design engineer
de compania Schindler's Lift

Compania produce lifturi de marfă și persoane,
care necesită liftier pentru operarea liftului

Compania dorește să înlocuiască liftierul cu un
sistem digital care să comande liftul
Starea proiectului

Inginerii SL au instalat un panou cu patru butoane:
sus/jos și pornire/oprire

La apăsarea unuia din butoane, se generează 1 logic pe
un semnal asociat și liftul este comandat în consecință

Butonul neapăsat generează 0 logic și liftul este
comandat în consecință


Sarcina voastră: Proiectați un circuit care permite
deplasarea liftului fără a ține butonul apăsat
Circuite de Memorare

Circuitele combinaționale nu au

memorie
– Ieșirea depinde exclusiv de
valorile curente ale
intrărilor
– Am putea lega ieșirea la
intrare, pentru a incerca
să memorăm?
Circuite de Memorare

Putem “forța” o buclă
combinațională la o
valoare logică...

Circuite de Memorare

Putem “forța” o buclă
combinațională la o
valoare logică

Necesită două
comutatoare către GND

Se pot folosi și
comutatoare către VCC?

Latch RS
Folosim porți AND pentru a forța Q/Q' în zero

Latch RS
Folosim porți AND pentru a forța Q/Q' în zero

Intrările S1/S0 denumite canonic R(eset)/S(et)



Latch cu Enable

Semnalul Enable
permite modificarea
ieșirii latch-ului

Latch D
Eliminăm posibilitatea ca S, R să fie 0 simultan

Starea proiectului

Circuitul Latch rezolvă problema deplasării liftului fără apăsarea
continuă a unui buton. Sunteți promovat la senior digital design
engineer.
SL își dublează afacerile și se extinde în Belgravistan, unde

montează primul său lift într-o clădire de 100 de etaje



Datorită nivelului slab de educație în matematică din Belgravistan,
clienții nu reușesc să numere până la 100 și ajung aleatoriu la
diverse alte etaje decât cele dorite.

Compania este amenințată cu acționarea în justiție dacă problema
nu este rezolvată. Sarcina voastră: proiectați un circuit care
oprește automat liftul când ajunge la etajul destinație.

Starea proiectului

Inginerii SL au instalat un panou cu butoane ce
reprezintă etaje destinație

Au reușit să proiecteze circuitele combinaționale
care determină etajul destinație dorit (în binar) la
apăsarea unui buton

Au implementat un sistem electromecanic care
generează un puls de 1 logic timp de 500ms
atunci când se trece de un etaj

Latch D


Problema: Latch-ul
este transparent
pentru semnalul D
dacă En este 1

Care sunt condițiile
în care numărătorul
funcționează?
Latch D

Timpul de propagare prin circuitele
combinaționale constrânge forma semnalului En
Circuitul este dificil de proiectat și analizat


Avem nevoie de un circuit de memorare ne-
transparent
Bistabilul D (Flip-Flop D)

Combinație de 2 latch-uri D, în următoarea
configurație:
Bistabilul D (Flip-Flop D)

Ce valoare a semnalului Clock propagă valoarea
intrării D la ieșirea Q?
Bistabilul D (Flip-Flop D)

Frontul semnalului Clock (în cazul de mai jos frontul
negativ) permite propagarea valorii D la ieșirea Q
Bistabilul D (Flip-Flop D)
Parametrii DFF

– Timpul de set-up TSU – perioada de timp, înainte de


frontul activ al ceasului, când valoarea D trebuie să
rămână constantă

Egal cu timpul de propagare prin latch-ul master
Bistabilul D (Flip-Flop D)
Parametrii DFF

– Timpul clock-to-out TCO – perioada de timp necesară


pentru ca valoarea Q să se actualizeze după frontul
activ al ceasului

Egal cu timpul de propagare prin latch-ul slave
Bistabilul D (Flip-Flop D)
Parametrii DFF

– Timpul de hold TH – perioada de timp, după frontul


activ al ceasului, când valoarea D trebuie să
rămână constantă

Cauzat de propagarea ceasului către latch-uri
Latch vs FF
Latch-ul are timp de propagare mai mic (nu exista TSU,

TCO)
Latch-ul ocupa arie mai mica

– Se poate implementa cu mai puțin de 12 tranzistoare


Latch-ul disipă mai puțină putere

FF e mai ușor de analizat



FF izolează secțiunile de circuit de modificări tranzitorii ale
valorilor semnalelor (glitch)
Terminologie

Registru = colecție de FF care stochează biți diferiți
ai aceluiași semnal

Reset – semnal care forțează ieșirea FF la o
valoare cunoscută
– Sincron (pe frontul ceasului)
– Asincron (indiferent de ceas)

Circuit secvențial = orice circuit care include FF și
(opțional) logică combinațională
Circuite Secvențiale

Circuite care conțin bistabile și logică
combinațională (CLC)

Circuite Secvențiale
Durata de timp între fronturi active consecutive:

–T = TCO + TCLC + TSU (perioada minimă a ceasului)


CLK
Analiza Propagării

Circuitele secvențiale sunt caracterizate de 3
timpi de propagare:
– Timpulin-to-clock – timpul necesar pentru
ca valorile de la intrările circuitului să se
propage prin circuitele combinaționale din
structura pana la intrarea FF, plus timpii
de set-up ai acestora
– Timpul clock-to-out – timpul necesar după
frontul activ al ceasului pentru ca ieșirile
să se actualizeze
– Perioada minimă a ceasului – doar în cazul
circuitelor secvențiale care conțin căi între
două FF
CIRCUITE INTEGRATE DIGITALE

CURS 6:
TIPARE DE CIRCUITE SECVENȚIALE

DIVIZOR DE FRECVENȚĂ
LINIE DE ÎNTÂRZIERE (DELAYLINE)
CONVERSIE SERIAL-PARALEL
TIPURI DE BISTABIL

Bistabil D

Bistabil D cu Reset/Set Sincron/Asincron

Bistabil D cu Enable

Bistabil D cu Enable și Set/Reset
Sincron/Asincron
TIPURI DE BISTABIL
TIPURI DE NUMĂRĂTOR

Simplu (numără continuu)
– Realizat exclusiv din bistabile D

Cu Enable (numără sau nu în funcție de Enable)
– Realizat exclusiv din bistabile D cu Enable

Cu Preset (se poate aduce la o valoare initiala)
– Realizat dintr-un amestec de bistabile cu Set/Reset

UpDown (numără în ambele direcții)
– Realizat folosind un sumator/scăzător

… și toate combinațiile dintre cele 3 de mai sus!
DIVIZOR DE FRECVENȚĂ

Numărătorul poate acționa ca un divizor de
frecvență:
LINII DE ÎNTÂRZIERE

Reminder: Fiecare bistabil D copiază valoarea
logică de la intrarea D la ieșirea Q pe frontul
activ al CLK

După cât timp se propagă valoarea lui D la
ieșirea Q a acestui circuit:
LINII DE ÎNTÂRZIERE

Valoarea logică ajunge întotdeauna la ieșire
după un număr de fronturi active ale semnalului
de ceas egal cu numărul de FF din linia de
întârziere:
CONVERTOR SERIAL-PARALEL

Avem un circuit cu intrare de semnal de ceas CLK
și intrare de date de 1 bit D. Dorim să obținem un
semnal de N biți în care:
– Bitul 0 are aceeași valoare cu D la frontul anterior de
ceas
– Bitul 1 are aceeași valoare cu D acum 2 fronturi de ceas
– …
– Bitul N-1 are aceeași valoare cu D acum N fronturi de
ceas
CONVERTOR SERIAL-PARALEL
CONVERTOR SERIAL-PARALEL

Folosit în mod uzual pentru a transforma o
serie de W*N valori consecutive de 1 bit (D)
într-o serie de W valori consecutive de N biți
(Q)
– Exemplu: transmiterea serială a biților unui pixel, și
reconstrucția valorii pixelului
– Semnal suplimentar de Valid care ne spune când Q
este complet. Cum îl generăm?
CONVERTOR SERIAL-PARALEL
CONVERTOR SERIAL-PARALEL
CIRCUITE INTEGRATE DIGITALE

CURS 7:
TIPARE DE CIRCUITE SECVENȚIALE

CONVERSIE PARALEL-SERIAL
ANALIZA ȘI OPTIMIZAREA FMAX
SPI

Serial Peripheral Interface – interfață de
comunicație de viteză medie, serială, cu 3 fire
Convertor Paralel-Serial

Necesar pentru transmiterea unui cuvânt de
date prin SPI

Exemplu: convertor S2P de 4 biți
Convertor Paralel-Serial

Forma de undă:


Care este timpul minim între frontul lui DVALID și
frontul pozitiv al CLK?

Dar între schimbarea lui D și frontul pozitiv al CLK?
Convertor Paralel-Serial

Forma de undă:


Timpul minim între frontul oricărui semnal de intrare și
frontul pozitiv al CLK (timpul in-to-clock) este egal cu
timpul de setup al FD, plus timpul maxim de propagare
de la semnalul de intrare la ieșirea fiecărui multiplexor
Convertor Paralel-Serial

Exemplu practic:
– Timp de propagare prin porți ȘI/SAU – 2ns
– Timp de propagare prin inversoare – 1ns
– Timpul de set-up al FD – 0.5ns
– Timpul de clock-to-output al FD – 0.5ns

Calculați frecvența maximă Fmax, timpii in-to-clock și clock-
to-out. Depind aceștia de numărul de biți ai lui D?
Pipeline - Optimizarea Fmax

Se cere caracterizarea Fmax pentru circuitul
corector de pixeli defecți:
Pipeline - Optimizarea Fmax

Timpii de propagare
prin orice poartă – 1ns

Timpii set-up si clock-
to-out 0.5ns

Evaluăm pentru
– Pixeli de 4b
– Pixeli de 6b
– Pixeli de 8b

Câte FPS la FullHD?
Pipeline - Optimizarea Fmax

Dorim să dublăm FPS

Tehnica Pipeline
– Segmentarea
circuitului în nivele
– Separarea nivelelor
prin bistabile
Pipeline - Optimizarea Fmax

Pipeline de 3 nivele

Ce câștig de frecvență?
– Dacă nivelele sunt
echilibrate, pentru N
nivele de pipeline,
frecvența crește de
aproximativ N ori
CIRCUITE INTEGRATE DIGITALE

CURS 10:
MEMORII SRAM
FIFO/LIFO
MEMORII DRAM
Memorii Random Access (SRAM)
Diagrama unei memorii de 2k cuvinte a câte n biți

Exemplu: memorie de 210 cuvin


Stocare SRAM cu Latch RS
Decodarea adresei
Decodarea adresei

Aria decodoarelor depinde de numărul n de biți la
intrare cu O(n2n)
Decodoarele devin foarte mari pentru capacități

mari ale memoriei


Se poate folosi o arhitectură rând-coloană

Decodarea adresei
Celula elementară de stocare
SRAM (6T)
Clasificarea memoriilor
Capabile de scriere sau nu (Random-Access vs

Read-Only)

Sincrone sau asincrone (datele devin disponibile la
ieșire imediat sau la următorul front de ceas)
Comportamentul ieșirii în timpul scrierii

– Read-first: datele anterioare apar la ieșire


– Write-first: datele scrise apar la ieșire
– No-change: ieșirea nu se modifică
Exemplu: Cache Write-Back și
Write-Through

Cache – memorie buffer ce stochează datele cele
mai des utilizate din memoria principală a unui
procesor
– Write-through- procesorul scrie simultan
datele și în cache, și în memoria principală
– Write-back – procesorul scrie datele doar în
cache; datele sunt scrise inapoi în memoria
principală doar atunci când sunt înlocuite
din cache
Memorii Multi-Port

Definim ca port al memoriei acel set de semnale care
permit scrierea sau citirea în/din memorie
– Conține obligatoriu semnal de adresă

nr. porturi == nr semnale de adresă
– Opțional
semnale de scriere (dacă portul nu este
read-only) și citire (dacă portul nu este write-only)

Implementarea Verilog folosește întotdeauna un singur
array ce este scris/citit din mai multe blocuri assign /
always
Aplicații SRAM: FIFO (Coadă)

Memorie-tampon care permite introducerea consecutivă a multiple
cuvinte de date, și citirea lor în aceeași ordine
– RD_EN / WR_EN semnale de comandă de citire / scriere
– EMPTY / FULL indică dacă se poate scrie sau citi în FIFO
Aplicații SRAM: LIFO (Stivă)

Memorie-tampon care permite introducerea consecutivă a
multiple cuvinte de date, și citirea lor în ordinea inversă a
scrierii
– PUSH / POP semnale de comandă de citire/scriere
– EMPTY / FULL indică dacă se poate scrie sau citi în
LIFO
Aplicații SRAM: Delayline adânc

Delayline cu bistabile devine costisitor (dpdv. Al
ariei) atunci când trebuie să producem întârzieri
mari
Aceeași funcționalitate, cu SRAM dual-port:

Aplicații SRAM: Delayline adânc

Avantaj de arie: 6 tranzistoare (1 celula SRAM)
în loc de 1 bistabil, pentru fiecare ceas de
întârziere
Adâncime configurabilă prin intrarea DEPTH

Memorii DRAM
Avantaje SRAM

– Stocare stabilă
Dezavantaje SRAM

– Dimensiune mare a celulei (6 tranzistoare)


– Arie ocupată mare

– DRAM – sacrificăm stabilitatea valorii stocate


pentru a scădea dimensiunea celulei elementare!
Celula elementară de stocare
DRAM (FET + Condensator)
Scriere și citire DRAM
Scriere

– Setarea tensiunii liniei de bit


– Activarea selecției de cuvânt
– Condensatorul este încărcat sau descărcat
în funcție de tensiunea liniei de bit
Scriere și citire DRAM
Citire

– Linia de bit se încarcă la Vdd/2


– Activarea selecției de cuvânt
– Sarcina stocată în condensator modifică sarcina
liniei de bit
– Un amplificator detectează modificarea sarcinii
și indică direcția de modificare (spre 0 sau Vdd)
– Se re-scrie valoarea citită (citirea e distructivă)
Refresh DRAM

Rezistențe parazite provoacă descărcarea în
timp a condensatorului
– Aprox. 10ms la temperatura camerei

DRAM necesită reîmprospătarea periodică a
valorilor din fiecare bit
Realizat prin citiri forțate periodice

DRAM vs SRAM
DRAM

– Capacitate mare (folosit pentru memori de GB)


– Necesită refresh
– Mecanism complicat de citire, rezultă viteză mică
SRAM

– Capacitate mică
– Vitezămare (folosit pentru memorii de KB -
cache)
CIRCUITE INTEGRATE DIGITALE

AUTOMATE FINITE
Definiție

Circuit a cărui stare internă poate lua un număr
finit de valori (Finite State Machine - FSM)

Starea internă este recalculată la fiecare front activ
de ceas, folosind starea internă curentă și valorile
intrărilor

Starea internă (și opțional valorile intrărilor)
determină valorile ieșirilor
– Moore – valorile ieșirilor calculate doar din stare
– Mealy – calculate din stare și intrări
Structură

FSM Moore

FSM Mealy
Diagrama de stări

Reprezentare grafică a
– Tuturor tranzițiilor posibile între stări
– Condițiilor necesare pentru fiecare tranziție
Bistabilul T

Un bit de intrare

Două stări 0/1

Starea se schimbă
doar dacă T = 1
Numărătorul
Acumulatorul
Controlul unui Semafor

Dorim să controlăm un semafor pentru o
trecere de pietoni

Trecerea este echipată cu un buton pe fiecare
parte, care trece semaforul în culoarea galben

Culoarea galben durează 3 secunde, cea roșu
durează 10 secunde, cea verde rămâne
aprinsă până la următoarea apăsare a
butonului de traversare
Controlul unui Semafor

Diagrama de stări ilustrată mai jos

Avem nevoie de un circuit suplimentar pentru
măsurarea timpului
Controlul unui Semafor

Măsurarea timpului se poate face folosind un numărător

Vom considera că perioada ceasului este 10 ns (același
ceas pentru numărător și automat)

Vom considera că starea 00 corespunde luminii galbene,
01 corespunde luminii roșii, 11 corespunde luminii verzi
Controlul unui Semafor
Două posibile implementări, în funcție de condițiile de tranziție
Controlul unui Semafor

Logica de tranziție definită de regulile din
diagrama de stări

Logica de ieșire:
– Y = ~STATE[0] & ~STATE[1]
– G = STATE[0] & ~STATE[1]
– R = STATE[0] & STATE[1]

Putem coda stările altfel pentru a reduce logica
de ieșire?
Controlul unui Semafor

Recodăm stările astfel încât 10 corespunde
galben, 01 corespunde roșu, 00 corespunde
verde
– Y = STATE[1]
– G = ~STATE[0] & ~STATE[1]
– R = STATE[0]

Am economisit tranzistoare dar timpul clock-to-
out al circuitului e la fel, determinat de G
Controlul unui Semafor

Recodăm stările astfel încât 001 corespunde
galben, 010 corespunde roșu, 100 corespunde
verde (codare one-hot)
– Y = STATE[0]
– G = STATE[2]
– R = STATE[1]

Logica de ieșire este eliminată complet
– Am economisit tranzistoare doar dacă logica de
tranziție nu a crescut semnificativ, compensând
dispariția logicii de ieșire
CIRCUITE INTEGRATE DIGITALE

SEMNALE ASINCRONE ÎN CIRCUITE


SECVENȚIALE
Sumar

Metastabilitate

Sincronizatoare

FIFO Asincron

Reset Asincron
Semnale Asincrone

Semnale a căror tranziție nu este controlată în
interiorul circuitului
– Exemplu: un semnal conectat la un buton, apăsat de
utilizator

Semnale a căror tranziție nu este controlată de
semnalul de ceas al circuitului secvențial
– Exemplu: ieșirea unui bistabil conectat la alt semnal de
ceas (frecvent în ierarhii de memorii, sisteme pe cip)

Semnalele asincrone pot produce conditii de eroare
Metastabilitate

Metastabilitate – stare de echilibru instabil a
unui sistem

Circuitele sincrone (bistabilele) au două stări
stabile (iesirea 0/1) și o stare metastabilă
Metastabilitate

Se manifesta prin valoare electrică a ieșirii FF
la mijlocul distanței între V0 și V1 la t > TCO față
de frontul activ

Se produce datorită tranziției semnalului de
date D în interiorul ferestrei de set-up, hold
Metastabilitate

PM(t) ~ 1/et
MTBF ~ 1/FCLKPM(t)
Sincronizatoare

Circuite care transformă un semnal asincron în
sincron
– Bistabilul, dar e vulnerabil la metastabilitate, MTBF
definit de FCLK, parametrii de proces
– Dorim să putem ajusta MTBF la valori arbitrar de mari
– Probabilitatea Q2 metastabil: PM(t)=PM(TCLK)PM(t)
Sincronizatoare
Sincronizatoare

MTBF crește cu numărul de FF din
sincronizator

Pentru a funcționa, trebuie ca valoarea
semnalului asincron să se păstreze minim o
perioadă de ceas
– Valabil daca semnalul asincron provide e.g., dintr-
un domeniu de ceas mai lent
– Dacă nu se poate garanta această condiție, este
necesar un sistem de handshake
Sincronizatoare
Sincronizatoare
FIFO Asincron

Soluție universală de traversare între domenii de ceas

Full, empty se realizează comparând pointerii
sincronizați

Pentru a minimiza erorile: pointeri în cod Gray
Erori cauzate de Reset

Stiluri de reset
– Sincron: acționează la frontul activ al ceasului și
este generat în interiorul aceluiași domeniulu de
ceas
– Asincron: acționează imediat, nu are relație definită
cu semnalul de ceas
Reset Asincron

Avantaje:
– Funcționează și când ceasul e inactiv
– Nu introduce porți suplimentare pe calea de date
(reset sincron se implementează cu poartă ȘI pe
intrarea unui bistabil fără reset)

Dezavantaje:
– Poate produce metastabilitate

dacă este activat aproape de frontul ceasului (?)

dacă este dezactivat aproape de frontul ceasului (?)
Reset Asincron
CIRCUITE INTEGRATE DIGITALE

CURS 3:
PORȚI ȘI CIRCUITE LOGICE CMOS
Recapitulare

Algebra booleană
– Minimizare algebrică
– Minimizare cu diagrame K

Circuite combinaționale
– Izolarea funcțiilor ieșirilor
– Identificarea subfuncțiilor comune

Forma NAND/NOR a circuitelor
Astăzi

Comutatoare CMOS
– Principiu de funcționare

Porți logice CMOS
– Structură
– Timp de propagare
– Putere disipată
Comutatoare CMOS
Inversorul CMOS
NAND și NOR
Regimul Dinamic
(Circuit Echivalent)

RONn = Rn(L/W) RONp = Rp(L/W)


CGSp = COXLpWp CGSp = COXLpWp
Regimul Dinamic
(Circuit Echivalent)

Observații:
– În majoritatea cazurilor, porțile au sarcină capacitivă
– Capacitatea de intrare crește direct proporțional cu
W (lățimea tranzistorului)
– Rezistența de ieșire crește invers proporțional cu W
Timpul de Propagare
Timpul de Propagare
● CL = CW + CG + CO
● CW = CthoxWWLW (crește cu lungimea și lățimea)
● CG = CGp + CGn (capacități în paralel)
● CO capacitatea parazită a ieșirii

tpHL = knRONnCL
tpLH = kpRONpCL

Reducerea timpului de propagare prin W↑ sau L↓


Timpul de Propagare


Timp de propagare NAND/NOR ?

Optimizarea timpului de propagare prin
inversoare:
Timpul de Propagare

Porți multi-input vs. arbori de porți cu 2 intrări
Puterea Consumată

Psw = CLVDD2

Porțile CMOS consumă putere majoritar atunci când comută


Puterea Consumată (Glitching)
Glitch – modificare tranzitorie a ieșirii unui circuit, datorată timpilor
de propagare

Efectul de glitch crește


numărul de comutări în
circuit, prin urmare
crește puterea
consumată !
Data viitoare

CLC-uri comune
– Sumatorul binar
– Decodorul
– Encodorul

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