37 0 598KB
Limbaje de descriere hardware
Proiect: Tema_nr_16 TITLU : ,,CIRCUITUL DFFNS’’
TEHNOLOGIE: CMOS_TSMC_018_T49P.txt
Anul: III Student: Popa Ciprian Grupa: 5313
Tema de proiect nr. 16
Partea I – Proiectarea şi analiza dinamică în SPICE a circuitului DFFNS 1. Să se dimensioneze tranzistoarele MOS corespunzător tehnologiei date şi să se scrie netlist-ul SPICE al circuitului. (Netlist-ul se va scrie ierarhic folosind subcircuite). 2. Să se efectueze analiza tranzitorie a circuitului pentru a pune în evidenţă funcţionarea sa. La fiecare ieşire a circuitului se va considera cîte o capacitate de sarcină. Valorile pentru tensiunea de alimentare VDD, timpii de tranziţie TR ai formelor de undă de la intrări şi, respectiv, capacităţile de sarcină CL se vor adopta în funcţie de tehnologia impusă conform tabelului următor:
Tehnologie CMOS
0.13 µm
VDD
1.2V
1.8V
2.5V
3.3V
5V
TR
0.1ns
0.15ns
0.2ns
0.3ns
0.4n
CL
0.06pF
0.07pF
0.08pF
0.09pF
0.1pF
0.18µm 0.25µm 0.35µm 0.50µm
3. Determinaţi prin simulare parametrică şi folosind funcţii ţintă în Probe dependenţa timpilor de propagare a circuitului (de la intrarea de clock la ieşiri) în funcţie de capacitatea de sarcină (CL), respectiv în funcţie de timpul de tranziţie (TR) al formei de undă al intrării de clock. În ambele analize parametrice variaţia parametrilor se va face în intervalul (0.5 ... 1.5)* val. adoptată conform tehnologiei. Determinaţi şi notaţi pe graficele obţinute valorile întârzierilor de propagare corespunzătoare valorilor adoptate pentru CL şi TR. Considerând că dependenţa timpilor de propagare în funcţie de CL este de forma: tp
total
= tp
intrinsec
+K *CL load
determinaţi pe baza graficelor obţinute valorile pentru tp un tabel de felul următor (tp
intrinsec
şi K şi completaţi intrinsec load corespunde valorii CL=0pF):
4. Determinaţi prin simulare parametrii de constrângere SETUP_TIME, HOLD_TIME şi durata minimă a pulsului MINPW pentru pinii de intrare specificaţi în tabelul următor:
Pentru simulările efectuate la fiecare din punctele 2, 3 şi 4 se vor prezenta schema de test, fişierul SPICE (.cir) şi formele de undă sau caracteristicile reprezentative pe baza cărora s-au determinat parametrii ceruţi în tabele. Mai jos sunt prezentate descrierea, schema bloc şi tabelul de funcţionare al circuitului. Partea II – VHDL
A. i) Să se implementeze în VHDL un model comportamental pentru circuitul proiectat şi analizat dinamic în Partea I. În cadrul modelului se vor defini si utiliza constante generice pentru parametrii dinamici determinaţi prin simulare (timpi de propagare clock→ieşire, setup_time şi hold_time). ii) Să se implementeze o entitate de test şi să se simuleze modelul de la punctul i) B.
Denumirea circuitului: decodor binar
Descriere: Decodorul identifică un cod de intrare de width biţi de la portul de intrare A, width activând o ieşire din cele 2 ale portului de ieşire B, în conformitate cu valoarea cuvântului de la intrare.
În plus, circuitul va mai conţine următoarele porturi: – un port de intrare EN (enable), activ pe ‘1’ logic care are rol de activare a circuitului. Dacă EN=’0’, atunci circuitul nu decodează iar pinii ieşirii sunt în starea de ‘0’ logic. – un port de intrare CLK (clock). Circuitul va efectua decodarea intrării A existentă la apariţia unui front pozitiv al semnalului de clock.
Cerinţe: • modelarea comportamentală în VHDL a circuitului, considerând width ca parametru generic. • în cadrul modelului se va lua în consideraţie şi un parametru generic de constrângere clk_pmin referitor la intrarea CLK. Astfel, dacă durata palierului semnalului de clock din faţa sau după frontul pozitiv este mai mică decât clk_pmin, atunci circuitul rămâne în starea anterioară. • realizarea unui program de test pentru width=4 şi clk_pmin = 5 ns.
Partea I Proiectarea şi analiza dinamică în SPICE a circuitului DFFNS 1. Dimensionarea tranzistoarelor MOS corespunzător tehnologiei date şi netlist-ul SPICE al circuitului. Inversor Structura la nivel de tranzistor a portii inversoare:
Q 1
2
in
3
1
VDD O UT
Q 2
0
R =R
d u . Cunoscând formulele de calcul Pentru dimensionare se pleaca de la relatia : pentru rezistenţele tranzistoarelor în funcţie de parametrii tehnologici şi înlocuind în relaţia de egalitate atunci se obtine :
¿ R P=R N LP LP LN K N LN W P ¿ RP = WP⋅KP ⇒ W ⋅K =W ⋅K ⇔ K = L ⋅ W P P N N P P N LN ¿ RN = W N ⋅ KN
}
Raportul coeficienţilor k este dat de relatia cunoscuti din fisierul tehnologic deci
k n n C ox n k p p C ox p
in care
μn si μ p
sunt
k n 270,971 = ≅ 2.60 . Se face convenţia ca parametrii k p 103,995
L sa fie egali între ei şi de valoarea tehnologiei în care se lucrează :
LN W P ⋅ ≅ 2. 60 ⇒W P=2.60 ⋅W N LP W N ¿ LN =LP =0. 18 μm ¿
}
Lăţimea minima a tranzistoarelor se va adopta la alegere din intervalul (1.5 ... 4)*L :
W N =2⋅ L N ⇒W N =0.36 μm ⇒W P=0.93 μm Implementarea in Spice a inversorului simplu este: *Inversor .subckt inversor 1 2 3 MN1 2 1 0 0 CMOSN L=0.18u W=0.36u MP1 2 1 3 3 CMOSP L=0.18u W=0.93u .ends Implementarea in Spice a inversorului comandat este : *Inversor comandat .subckt invcom 1 2 3 7 6 MN1 7 1 4 0 CMOSN L=0.18u W=0.36u MN2 4 2 0 0 CMOSN L=0.18u W=0.36u MP1 5 3 6 6 CMOSP L=0.18u W=0.93u MP2 7 1 5 6 CMOSP L=0.18u W=0.93u .ends
NAND2 Structura la nivel de tranzistor a porţii NAND2:
4
Q 3
Q 4
3
in 2
Q 1
2 5
in 1
O UT
Q 2
1
0
VDD
R =R
d u . Cunoscând formulele de calcul Pentru dimensionare se pleaca de la relatia : pentru rezistenţele tranzistoarelor în funcţie de parametrii tehnologici şi înlocuind în relaţia de egalitate atunci se obtine :
1 ¿ RP= RN 2 2 LP LN K L WP LP ⇒ = ⇔ N= N ⋅ ¿ RP = WP⋅KP W P ⋅ KP W N ⋅ KN KP LP 2 W N LN ¿ RN = W N ⋅ KN
}
LN W P ⋅ ≅1.30 ⇒ W P=1.44 W N ; W N =0. 36 μm⇒ W P=0.46 μm L P 2 ⋅W N ¿ LN =LP =0. 18 μm ¿
}
Implementarea in Spice a subcircuitului pentru poarta NAND2 este: *poarta NAND2 .subckt pnand2 1 2 5 4 MN1 4 2 3 0 CMOSN L=0.18u W=0.36u MN2 3 1 0 0 CMOSN L=0.18u W=0.36u MP1 4 1 5 5 CMOSP L=0.18u W=0.46u MP2 4 2 5 5 CMOSP L=0.18u W=0.46u .ends Structura bistabilului DFFNS: .subckt bistabil 1 2 3 4 5 6 *porti inversoare simple X1 10 11 6 INV X2 11 4 6 INV X3 10 5 6 INV X4 3 16 6 INV X5 16 17 6 INV *inversoare comandate X6 1 17 16 7 6 INVC X7 8 16 17 9 6 INVC X8 8 16 17 7 6 INVC X 10 17 16 9 6 INVC *porti nand2 X10 7 2 8 6 NAND
X11 9 2 10 6 NAND .ends
2. Analiza tranzitorie a circuitului. Din tabel observăm că pentru tehnologia 0.18u avem: VDD = 1.8V TR=0.15ns CL=0.07pF Astfel avem următoarea analiză tranzitorie: .param tr=0.15n .param Vdd=1.8 .param CL=0.07p Vdd 6 0 {VDD} .lib C:\orcad\CMOS_TSMC_018_T49P.txt .inc C:\orcad\subcircuite.cir V_data 1 0 PULSE(0 {VDD} 0 {tr} {tr} 8n 20n) V_set 2 0 PULSE(0 {VDD} 2n {tr} {tr} 15n 25n) V_clock 3 0 PULSE(0 {VDD} 0 {tr} {tr} 3n 6n) C1 4 0 {CL} C2 5 0 {CL} X1 1 2 3 4 5 6 bistabil .tran 0.1n 20n 0n 0.1n .probe V(1) V(2) V(3) V(4) V(5) .end
figura.1 Semnalele de interes pe care le-am luat în considerare sunt: V(1) – semnalul D (Data) V(2) – semnalul SN (Set) V(3) – semnalul CLK V(4) – semnalul Q
V(5) – semnalul QN
3. Determinaţi prin simulare parametrică şi folosind funcţii ţintă în Probe dependenţa timpilor de propagare a circuitului (de la intrarea de clock la ieşiri) în funcţie de capacitatea de sarcină (CL), respectiv în funcţie de timpul de tranziţie (TR) al formei de undă al intrării de clock. În ambele analize parametrice variaţia parametrilor se va face în intervalul (0.5 ... 1.5)* val. adoptată conform tehnologiei. Mai întâi vom verifica dependența de timp în funcție de timpul de tranziție (TR): D,SN,CKN: .param tr=0.15n .param Vdd=1.8 .param CL=0.07p Vdd 6 0 {VDD} .inc CMOS_TSMC_018_T49P.TXT .inc subcircuite.cir V_data 1 0 PULSE(0 {VDD} 0 {tr} {tr} 8n 20n) V_set 2 0 PULSE(0 {VDD} 2n {tr} {tr} 15n 25n) V_clock 3 0 PULSE(0 {VDD} 0 {tr} {tr} 3n 6n) C1 4 0 {CL} C2 5 0 {CL} X1 1 2 3 4 5 6 bistabil .tran 0.1n 20n 0n 0.1n .step param tr 0.1n 0.3n 0.03n .probe V(1) V(2) V(3) .end
Figura.2
Dependența de timp în funcție de capacitatea de sarcină (CL): .param tr=0.15n .param Vdd=1.8 .param CL=0.07p Vdd 6 0 {VDD} .inc CMOS_TSMC_018_T49P.TXT .inc subcircuite.cir V_data 1 0 PULSE(0 {VDD} 0 {tr} {tr} 8n 20n) V_set 2 0 PULSE(0 {VDD} 2n {tr} {tr} 15n 25n) V_clock 3 0 PULSE(0 {VDD} 0 {tr} {tr} 3n 6n) C1 4 0 {CL} C2 5 0 {CL} X1 1 2 3 4 5 6 bistabil .tran 0.1n 20n 0n 0.1n .step param CL 0.04p 0.12p 0.01p .probe V(1) V(2) V(3) .end
Figura.3
Timpul de propagare (tp) reprezintă diferenţa dintre momentele de timp când formele de undă de la intrare şi ieşire traversează nivelul de tensiune situat la jumătatea gamei dinamice. Uzual acest nivel este situat la jumătatea tensiunii de alimentare (VDD/2). În general, timpul de propagare se defineşte separat în funcţie de sensul tranziţiei formei de undă de la ieşire. Astfel, se definesc 2 timpi de propagare:
- tpLH - timpul de propagare cînd ieşirea trece din starea “low” în starea “high”; - tpHL - timpul de propagare cînd ieşirea trece din starea “high” în starea “low”; În proiectarea porţilor logice este de dorit ca să nu existe diferenţe mari între cei doi timpi. Acest lucru poate fi obţinut prin dimensionarea adecvată a tranzistoarelor NMOS şi PMOS. Pentru simplitate, de multe ori, pentru timpul de propagare se consideră o singură valoare, ca medie între tpLH şi tpHL: tp = (tpLH + tpHL)/2. Principalii parametri externi care influenţează timpii de propagare ai unei porţi logice sunt capacitatea de sarcină şi timpul de tranziţie al formei de undă de la intrare. Pentru calcularea tpLH și tpHL se utilizează: tpHL(1, 2) = x2-x1 { 1| search forward leve(50%,p) !1; 2| search forward leve(50%,n) !2; } tpLH(1,2) =x2-x1 { 1| Search forward level (50%,n) !1; 2| Search forward level (50%,p) !2; } Obținem următoarele grafice: a) Pentru variația lui TR:
Dependența tpHL(CLK,Q) în funcție de TR:
Dependența tpLH(CLK,Q) în funcție de TR:
Dependența tpHL(CLK,QN) în funcție de TR:
Dependența tpLH(CLK,QN) în funcție de TR:
a) Pentru variația lui CL: Dependența tpHL(CLK,Q) în funcție de CL:
Dependența tpLH(CLK,Q) în funcție de CL:
Dependența tpHL(CLK,QN) în funcție de CL:
Dependența tpLH(CLK,QN) în funcție de CL:
Din figurile de mai sus ne putem da seama că atât timpul de propagare tpLH, cât și tpHL variază liniar cu abscisa, adică cu CL. Timpii totali de propagare îi vom determina de pe urmatoarele grafice :
tpHLtotal(CK,Q)= 9.12n-6.00n=3.12n tpLHtotal(CK,Q)= 6.16n-3.30n=2.85n
tpHLtotal(CK,QN)=9.14n-6.00n=3.14n
tpLHtotal(CK,QN)=6.17n-3.31n=2.85n Pentru determinarea timpilor intrinseci vom folosi urmatoarele grafice :
tpHLintrinsec(CK,Q)=9.62n-6.84n=2.78 tpLHintrinsec(CK,Q)=6.84n-5.12n=1.71
tpHLintrinsec(CK,QN)=9.63n-6.88n=2.75n tpLHintrinsec(CK,QN)=6.77n-5.18n=1.59n
Se completează tabelul de mai jos folosind formula:
tp total =tp int rin sec + K load⋅C L ⇔ K load= Descriere
tp total−tp int rin sec CL
tpLH tpLHintrinse
tpHL Kload
tpHLintrinse
c CKN → Q CKN → QN
1.71 1.59
Kload
c 1628.5 1800
2.78 2.75n
485.7 557.1
4. Determinarea HOLD_TIME_LH->CKN și HOLD_TIME_HL->CKN Timpul minim de după frontul activ de ceas în care este obligatoriu ca semnalul de intrare să fie stabil se numeste hold_time. Pentru determinarea acestui timp se va face o analiza parametrică tot asupra componentei td a semnalului pulse de pe intrarea D. Valorile lui td vor fi momente de timp de dupa frontul activ, apropiate de acesta. Circuitul care descrie aceasta analiza este : *Circuitul de test al bistabilului DFFNS .param tr=0.15n .param VDD=1.8 .param CL=0.07p .param td=5n Vdd 6 0 {VDD} .inc CMOS_TSMC_018_T49P.txt .inc subcircuite.cir V_data 1 0 PULSE(0 {VDD} 0 {tr} {tr} 2.5n 8.5n) V_set 2 0 {VDD} V_clock 3 0 PULSE(0 {VDD} 0 {tr} {tr} 1n 2n) C1 4 0 {CL}
C2 5 0 {CL}
X1 1 2 3 4 5 6 bistabil .step param td 5.9n 6n 0.01n .tran 1n 25n 7n *.tran 1n 12n 5n .probe V(1) V(4) V(3) .end
Măsurăm timpul corespunzator frontului de ceas la jumătatea frontului pozitiv. Timpii HOLD_TIME_LHCKN și HOLD_TIME_HLCKN se obțin ca diferență dintre cei doi timpi.
Q (V(4)), Data (V(1)) și CKN (V(3))funcție de parametrul td pentru calculul HOLD_TIME_LH. HOLD_TIME_LH=11.312ns-11.310ns=2.04p
Q (V(4)), Data (V(1)) și CKN (V(3)) funcție de parametrul td pentru calculul HOLD_TIME_HL. HOLD_TIME_HL= 11.304-11.302=1.47p