Sunteți pe pagina 1din 16

Proiect PACSAD

Tema nr. 4
Partea I –Proiectarea şi analiza dinamică în Spice a circuitului DFFNSR;
Partea II – Modelarea comportamentală şi testarea circuitului DFFNSR;
Implementarea unui numărător GRAY utilizând modelarea
comportamentală.

(tehnologia CMOS_TSMC_035_T42U)

Horia Iulian
5303A
Partea I – Proiectarea si analiza dinamicã în SPICE a circuitului DFFNSR
1. Sã se dimensioneze tranzistoarele MOS corespunzãtor tehnologiei date si 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 evidentã functionarea sa. La fiecare
iesire a circuitului se va considera cîte o capacitate de sarcinã. Valorile pentru tensiunea de alimentare
VDD, timpii de tranzitie TR ai formelor de undã de la intrãri si, respectiv, capacitãtile de sarcinã CL se vor
adopta în functie de tehnologia impusã conform specificatiilori urmãtoare:

Tehnologie:

CMOS: 0.35µm

VDD: 3,3V

TR: 0.3 ns

CL: 0.09pF

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:

tptotal = tpintrinsec + Kload*CL determinaţi pe baza graficelor obţinute valorile pentru tpintrinsec şi
Kload şi completaţi un tabel de felul următor (tpintrinsec corespunde valorii CL=0pF):

Descriere tpLH tpHL

tpLHintrinsec Kload tpHLntrinsec Kload

CK → Q

CK → QN
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:

Pin Intrare Parametru Constrangere Durata interval [ns]


SETUP_TIME_LH → CKN
D SETUP_TIME_HL → CKN
HOLD_TIME_LH → CKN
HOLD_TIME_HL → CKN
CKN MINPW_HIGH
MINPW_LOW
Circuitul DFFNSR este un bistabil D cu intrări asincrone de Set (SN) şi Reset (RN) active pe nivelul 0 Logic.
Circuitul este secvenţial, funcţionarea acestuia făcându-se sincron cu semnalul de ceas CKN pe palierul
negativ al acestuia, cu excepţia comenzilor SN şi RN care sunt independente de semnalul de ceas.

Plecând de la condiţiile de proiectare de mai sus, pentru fiecare tip de poartă logică se ajunge la o relaţie
între latimile tranzistoarelor, Wn si Wp.

Pentru dimensionarea subcircuitelor (portilor logice: inversor, nand cu 2 intrari , nor cu 2 intrari si
inversorul comandat), vom sintetiza o analiza parametrica a dimensiunilor tranzistoarelor, dupa cum
urmeaza. În general, lăţimile W ale tranzistoarelor MOS sunt mai mari decat lungimea L a canalului. În
practică, valoarea minima a lăţimii W a canalului unui tranzistor MOS este in functie de tehnologie
adoptata (L) si este aproximativ data de relatia: Wmin = (1.5 ... 4)*L.

Alegem valoare egala cu 2 si rezulta ca Wn=0.7u. Pentru poarta NOT si INV3S Wp=1.4u, stiind ca
Wp/Wn=2.

Dimensionarea tranzistoarelor Porţii NOT ţinând cont de tehnologia 0.35 µm, circuitul de test pentru
poartă, desenul cu structura porţii şi graficul cu afişarea rezultatelor.

*POARTA NOT
VIN 1 0 PULSE(0 3.3 10ns 0.3ns 0.3ns 150ns 300ns)
VDD 2 0 3.3v
CL 3 0 0.09p
XNOT 1 2 3 NOT
.SUBCKT NOT 1 2 3
* DGSB
MP 3 1 2 2 CMOSP_35 L=0.35u W=1.40u
MN 3 1 0 0 CMOSN_35 L=0.35u W=0.70u
.ENDS
.INC CMOS_TSMC_035_T42U.txt
.TRAN 0.01n 0.5u
.PROBE
.END

Dimensionarea inversorului comandat ţinând cont de tehnologia 0,35 µm, circuitul de test pentru
poartă, desenul cu structura porţii şi graficul cu afişarea rezultatelor:

Poarta INV3S
VIN1 1 0 PULSE(0 3.3 30ns 0.3ns 0.3ns 600ns 1200ns)
VIN2 2 0 PULSE(3.3 0 0ns 0.3ns 0.3ns 30ns 300ns)
VIN3 3 0 PULSE(0 3.3 0ns 0.3ns 0.3ns 30ns 300ns)
VDD 4 0 3.3v
CL 5 0 0.09p
.SUBCKT INV3S 1 2 3 4 5
MP1 6 2 4 4 CMOSP_35 L=0.35u W=1.40u
MP2 5 1 6 4 CMOSP_35 L=0.35u W=1.40u
MN1 5 1 7 0 CMOSN_35 L=0.35u W=0.70u
MN2 7 3 0 0 CMOSN_35 L=0.35u W=0.70u
.ENDS
XBUFF 1 2 3 4 5 INV3S
.INC CMOS_TSMC_035_T42U.txt
.TRAN 0.1n 1u
.PROBE
.END

Dimensionarea tranzistoarelor porţii OR2 ţinând cont de tehnologia 0,35 µm, circuitul de test pentru
poartă, desenul cu structura porţii şi graficul cu afişarea rezultatelor:

*POARTA OR2
VIN1 1 0 PULSE(0 3.3 100ns 0.3ns 0.3ns 150ns 300ns)
VIN2 2 0 PULSE(0 3.3 100ns 0.3ns 0.3ns 300ns 600ns)
VDD 3 0 3.3v
CL 4 0 0.09p
XOR 1 2 3 4 OR
.SUBCKT OR 1 2 3 4
MP1 5 1 3 3 CMOSP_35 L=0.35u W=2.80u
MP2 6 2 5 3 CMOSP_35 L=0.35u W=2.80u
MN1 6 1 0 0 CMOSN_35 L=0.35u W=0.70u
MN2 6 2 0 0 CMOSN_35 L=0.35u W=0.70u
MP3 4 6 3 3 CMOSP_35 L=0.35u W=1.40u
MN3 4 6 0 0 CMOSN_35 L=0.35u W=0.70u
.ENDS
.INC CMOS_TSMC_035_T42U.txt
.TRAN 0.1n 1u
.PROBE
.END

Dimensionarea tranzistoarelor porţii NAND2 ţinând cont de tehnologia 0,35 µm, circuitul de test pentru
poartă, desenul cu structura porţii şi graficul cu afişarea rezultatelor.

*POARTA NAND2
VIN1 1 0 PULSE(0 3.3 10ns 0.3ns 0.3ns 150ns 300ns)
VIN2 2 0 PULSE(0 3.3 10ns 0.3ns 0.3ns 300ns 600ns)
VDD 3 0 3.3v
CL 4 0 0.09p
XNAND 1 2 3 4 NAND
.SUBCKT NAND 1 2 3 4
* DGSB
MP1 4 1 3 3 CMOSP_35 L=0.35u W=0.70u
MP2 4 2 3 3 CMOSP_35 L=0.35u W=0.70u
MN1 4 1 5 0 CMOSN_35 L=0.35u W=0.70u
MN2 5 2 0 0 CMOSN_35 L=0.35u W=0.70u
.ENDS
.INC CMOS_TSMC_035_T42U.txt
.TRAN 0.11n 1u
.PROBE
.END

Să se efectueze analiza tranzitorie a circuitului pentru a pune


în evidenţă funcţionarea sa.
*CIRCUIT DFFNSR
VD 1 0 PULSE(0 3.3 7ns 0.3n 0.3n 7n 14.3n)
VRN 2 0 PWL(0,0)(15n,0)(15.3n,3.3)(30ns,3.3)(30.3ns,0)(45ns,0)(45.3n,3.3)(120ns,3.3)
VSN 3 0 PWL(0,3.3)(15n,3.3)(15.3n,0)(45n,0)(45.3n,3.3)(120n,3.3)
VCKN 4 0 PULSE(3.3 0 0 0.35n 0.35n 3n 6.3n)
VDD 5 0 3.3V
CLQ 6 0 0.09p
CLQN 7 0 0.09p
XDFFNSR 1 2 3 4 5 6 7 DFFNSR
.SUBCKT DFFNSR 1 2 3 4 5 6 7
XINV3S1 1 9 8 5 10 INV3S
XINV3S2 11 8 9 5 10 INV3S
XINV3S3 11 8 9 5 12 INV3S
XINV3S4 13 9 8 5 12 INV3S
XOR1 10 14 5 16 OR
XOR2 12 14 5 17 OR
XNAND1 16 3 5 11 NAND
XNAND2 17 3 5 13 NAND
XNOT1 2 5 14 NOT
XNOT2 4 5 8 NOT
XNOT3 8 5 9 NOT
XNOT4 13 5 18 NOT
XNOT5 18 5 6 NOT
XNOT6 13 5 7 NOT
.ENDS
.SUBCKT NOT 1 2 3
MP 3 1 2 2 CMOSP_35 L=0.35u W=1.40u
MN 3 1 0 0 CMOSN_35 L=0.35u W=0.70u
.ENDS
.SUBCKT NAND 1 2 3 4
MP1 4 1 3 3 CMOSP_35 L=0.35u W=0.70u
MP2 4 2 3 3 CMOSP_35 L=0.35u W=0.70u
MN1 4 1 5 0 CMOSN_35 L=0.35u W=0.70u
MN2 5 2 0 0 CMOSN_35 L=0.35u W=0.70u
.ENDS
.SUBCKT OR 1 2 3 4
MP1 5 1 3 3 CMOSP_35 L=0.35u W=2.80u
MP2 6 2 5 3 CMOSP_35 L=0.35u W=2.80u
MN1 6 1 0 0 CMOSN_35 L=0.35u W=0.70u
MN2 6 2 0 0 CMOSN_35 L=0.35u W=0.70u
MP3 4 6 3 3 CMOSP_35 L=0.35u W=1.40u
MN3 4 6 0 0 CMOSN_35 L=0.35u W=0.70u
.ENDS
.SUBCKT INV3S 1 2 3 4 5
MP1 6 2 4 4 CMOSP_35 L=0.35u W=1.40u
MP2 5 1 6 4 CMOSP_35 L=0.35u W=1.40u
MN1 5 1 7 0 CMOSN_35 L=0.35u W=0.70u
MN2 7 3 0 0 CMOSN_35 L=0.35u W=0.70u
.ENDS
.INC CMOS_TSMC_035_T42U.TXT
.PROBE
.TRAN 0.01n 120n
.END

RN SN D CKN Q[n+1] QN[n+1] Indiferent de Date sau de Clock, atunci când

RN=0 şi SN=1, ieşirea Q=0.


0 1 x x 0 1
Când RN=1 sau 0 şi SN=0 ieşirea Q=1.
1 0 x x 1 0
Datele şi Clock-ul sunt folosite pentru valoarea de
0 0 x x 1 0 1 logic a Resetului şi a Setului, astfel: pe palierul
descrescător al Clockului Ieşirea copie Intrarea, iar
1 1 0 0 1 pe frontul crescător, Ieşirea are starea anterioară
a ei, data fiind indiferentă.
1 1 1 1 0

1 1 x Q[n] QN[n]

Determinarea timpilor de propagare intrinsecă a circuitului DFFNSR de la


Clock la ieşirea Q, precum şi coeficientul Kload de variaţie a acestor timpi cu
CL ieşirii.
Timpul de propagare total este de forma:
Tp_total=tp_intrinsec+K_load*CL
De unde rezulta:
K_load=(Tp_total-Tp_intrinsec)/K_load
Tp_intrinsec corespunde valorii de CL=0pF.

Circuitul de test pentru TP_intrinsec:


*CIRCUIT DFFNSR
VD 1 0 PULSE(0 3.3 7ns 0.3n 0.3n 7n 14.6n)
VRN 2 0 3.3V
VSN 3 0 3.3V
VCKN 4 0 PULSE(0 3.3 0 0.35n 0.35n 3n 6.3n)
VDD 5 0 3.3V
CLQ 6 0 {CL}
CLQN 7 0 {CL}
XDFFNSR 1 2 3 4 5 6 7 DFFNSR
.INC DFFNSR.TXT
.PARAM CL=0p
.PROBE
.TRAN 0.01n 200N
.END

Intrinsec_Q_HL
Intrinsec_Q_LH

Intrinsec_QN_HL

Intrinsec_QN_LH
Circuitul de test pentru TP_total:
*CIRCUIT DFFNSR
VD 1 0 PULSE(0 3.3 7ns 0.3n 0.3n 7n 14.6n)
VRN 2 0 3.3V
VSN 3 0 3.3V
VCKN 4 0 PULSE(0 3.3 0 0.35n 0.35n 3n 6.3n)
VDD 5 0 3.3V
CLQ 6 0 {CL}
CLQN 7 0 {CL}
XDFFNSR 1 2 3 4 5 6 7 DFFNSR
.INC DFFNSR.TXT
.PARAM CL=0.09p
.PROBE
.TRAN 0.01n 200N
.END

total_Q_HL

total_Q_LH
total_QN_HL

total_Q_LH
Descriere tpLH tpHL

tpLHintrinsec Kload tpHLntrinsec Kload

CK → Q 0.667 400 0.575 2355.55

CK → QN 0.54 7544.44 0.567 10911.11

Simularea parametrică pentru SETUP_TIME:


Setup_time este timpul minim dinaintea frontului activ de ceas în care este obligatoriu ca
semnalul de intrare să fie stabil.
Pentru determinarea timpilor de setup, variem parametrul delay a semnalului de intrare D
până la determinarea valorii pentru care diferenţa de timp între frontul lui D şi frontul CKN este
prea mică pentru ca bistabilul să mai comute. Similar si pentru setup_time HL.

*SETUP_TIME_LH
.INC DFFNSR.TXT
VD 1 0 PULSE(0 3.3 {td} 0.3n 0.3n 7n 14.3n)
VRN 2 0 3.3V
VSN 3 0 3.3V
VCKN 4 0 PULSE(3.3 0 0 0.3n 0.3n 3.5n 7.15n)
VDD 5 0 3.3V
CLQ 6 0 0.09p
CLQN 7 0 0.09p
XDFFNSR 1 2 3 4 5 6 7 DFFNSR
.PARAM td=0
.STEP PARAM td LIST 3.3n 3.4ns 3.5ns 3.6ns 3.7ns
.TRAN 0.1ns 50ns 0.1ns
.PROBE
.END

SETUP_TIME_LH= 0.3508

*SETUP_TIME_HL
.INC DFFNSR.TXT
VD 1 0 PULSE(0 3.3 {td} 0.3n 0.3n 7n 14.3n)
VRN 2 0 3.3V
VSN 3 0 3.3V
VCKN 4 0 PULSE(3.3 0 0 0.3n 0.3n 3.5n 7.15n)
VDD 5 0 3.3V
CLQ 6 0 0.09p
CLQN 7 0 0.09p
XDFFNSR 1 2 3 4 5 6 7 DFFNSR
.PARAM td=0
.STEP PARAM td LIST 6.8n 6.9ns 7ns 7.1ns 7.2ns
.TRAN 0.1ns 50ns 0.1ns
.PROBE
.END

SETUP_TIME_HL=4.1504

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