38 0 3MB
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 tpLHintrinsec
CK → Q CK → QN
tpHL Kload
tpHLntrinsec
Kload
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 D
CKN
Parametru Constrangere SETUP_TIME_LH → CKN SETUP_TIME_HL → CKN HOLD_TIME_LH → CKN HOLD_TIME_HL → CKN MINPW_HIGH MINPW_LOW
Durata interval [ns]
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
0
1
x
x
0
1
1
0
x
x
1
0
0
0
x
1
1
1 1
x
Q[n+1] QN[n+1]
1
0
0
0
1
1
1
1
0
1
x
Q[n]
QN[n]
Indiferent de Date sau de Clock, atunci când RN=0 şi SN=1, ieşirea Q=0. Când RN=1 sau 0 şi SN=0 ieşirea Q=1. Datele şi Clock-ul sunt folosite pentru valoarea de 1 logic a Resetului şi a Setului, astfel: pe palierul descrescător al Clockului Ieşirea copie Intrarea, iar pe frontul crescător, Ieşirea are starea anterioară a ei, data fiind indiferentă.
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
CK → Q
0.667
400
CK → QN
0.54
7544.44
tpHLntrinsec 0.575 0.567
Kload 2355.55 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