Sunteți pe pagina 1din 44

Universitatea Tehnica Gheorghe Asachi, Iasi Facultatea de Electronica Telecomunicatii si Tehnologia Informatiei

Limbaje de descriere hardware


Tema nr.3

1.Proiectarea si analiza in SPICE a circuitului :JKFFS 2.Modelul comportamental in VHDLsi Verilog a circuitului :JKFFS 3.Circuit de comanda lift Tehnologia impusa: CMOS_AMIS_035_T46W.txt Anul de studiu: III Student : Moldovan Iosif-Iulian Grupa: 5305 Sectia: MON Anul universitar: 2010-2011 Cadru didactic: Dan Burdia

Tema de proiect nr. 3

Partea I Proiectarea i analiza dinamic n SPICE a circuitului JKFFS

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 sa. La fiecare ie ire a circuitului se va considera cte 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: func ionarea

Tehnologie CMOS VDD TR CL

0.13 m 1.2V 0.1ns 0.06pF

0.18 m 1.8V 0.15ns 0.07pF

0.25 m 2.5V 0.2ns 0.08pF

0.35 m 3.3V 0.3ns 0.09pF

0.50 m 5V 0.4ns 0.1pF

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 ntrzierilor de propagare corespunz toare valorilor adoptate pentru CL i TR. Considernd 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):

tpLH Descriere tpLHintrinsec CK->Q CK->QN Kload tpHLintrinsec

tpHL Kload

4. Determina i prin simulare parametrii de constrngere SETUP_TIME, HOLD_TIME i durata minim a pulsului MINPW pentru pinii de intrare specifica i n tabelul urm tor:

Pin intrare

Parametru constrangere SETUP_TIME_LH SETUP_TIME_HL CK CK CK CK

Durata interval

K HOLD_TIME_LH HOLD_TIME_HL MINPW_HIGH CK MINPW_LOW

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 sau 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. Sa se rezolve aceleasi cerinte de la pct. A in limbajul Verilog. C. Denumirea circuitului: Circuit de selec ie i comand a unui sistem de dou lifturi

Descriere circuit: Circuitul selecteaz i comand un sistem de dou lifturi, A i B, dintr-o cl dire cu 8 nivele (parter + 7 etaje) n urma unei cereri de chemare. La fiecare etaj exist un singur buton pentru chemarea unuia din cele dou lifturi. Cnd la un anumit etaj s-a ap sat butonul de chemare a liftului, circuitul va determina i va selecta liftul situat cel mai aproape de locul chem rii i, totodat , va transmite acestuia sensul i num rul de nivele pe care trebuie s le parcurg pn la locul chem rii. Dac lifturile se afl la aceea i distan fa de locul chem rii, atunci va fi selectat liftul A. Pentru simplitate se va presupune c ntotdeauna cnd este ap sat un buton de chemare, lifturile sta ioneaz . Pentru circuit se vor considera urm toarele porturi:

Denumire

Mod

Semnificatie Semnal pe 8 bi i corespunz tor butoanelor de la fiecare etaj pentru chemarea unui lift. Exemplu: cnd R(5) ia valoarea 1 se

R[0:7]

Intrare

consider c la etajul 5 s-a ap sat butonul pentru chemarea unui lift.

PLA[2:0]

Intrare

Semnal pe 3 bi i care indic valoarea n binar a pozi iei (etajului)

unde este situat liftul A. Exemplu: dac PLA= 010 , liftul A este la etajul 2. PLB[2:0] Intrare Semnal pe 3 bi i care indic valoarea n binar a pozi iei liftului B. Port pentru selec ia liftului A. Dac SELA= 1 , liftul A este SELA SELB SENS Iesire selectat pentru a se deplasa la locul chem rii. iesire Iesire selectat: 1 DIST[2:0] iesire parcurg liftul selectat pn la locul chem rii. urcare; 0 coborre. Port care indic n binar num rul de nivele pe care trebuie s le Port pentru selec ia liftului B. Similar ca SELA. Port care indic sensul n care trebuie s se deplaseze liftul

Cerin e:

i) S se realizeze un model comportamental n VHDL a circuitului. ii) S se implementeze un testbench pentru verificarea modelului circuitului. n cadrul simul rii se vor aplica tranzi ii la intr ri astfel nct s se testeze r spunsul circuitului pentru cteva din situa iile posibile.

Partea I Proiectarea i analiza dinamic n SPICE a circuitului JKFFS

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).

Schema la nivel de poarta logica pentru circuitul SDFFNR contine porti logice de 4 tipuri: AND cu 2 intrari, NOR cu 2 intrari, inversoare si inversoare comandate. Aceste circuite pot fi descrise la randul lor la nivel de transistor dupa scheme cunoscute. Tranzistoarele MOS din componenta portilor logice se vor dimensiona conform tehnologiei de 0.18 microni.

Poarta inversoare *Inversor *ordine noduri inversor: in, out, vdd; .subckt INV 1 2 3 *ordine noduri tranzistoare MOS: drena,poarta,sursa,substrat; MP1 2 1 3 3 CMOSP L=0.35u W=1.4u MN1 2 1 0 0 CMOSN L=0.35u W=0.7u .ends

Inversorul tristate

*inversor tri-state * ordinea nodurilor inversor tri-state : in, out, c, cn, vdd; .subckt INVtri 1 2 3 4 5 * ordine nodudilor tranzistoarelor Mos :drena, poarta, sursa, substrat; MP1 2 1 6 5 CMOSP L=0.35u W=1.4u MP2 6 4 5 5 CMOSP L=0.35u W=1.4u MN1 7 3 0 0 CMOSN L=0.35u W=0.7u MN2 2 1 7 0 CMOSN L=0.35u W=0.7u .ends

Poarta NAND2

* NAND2 *ordinea nodurilor NAND2: in1, in2, out, vdd; .subckt NAND2 1 2 3 4 *ordine noduri tranzistoare MOS: drena,poarta,sursa,substrat;

MP1 MP2 MN1 MN2

3 3 5 3

1 2 1 2

4 4 0 5

4 4 0 0

CMOSP CMOSP CMOSN CMOSN

L=0.35u L=0.35u L=0.35u L=0.35u

W=0.7u W=0.7u W=0.7u W=0.7u

.ends

*NOR2 *ordine noduri NOR2: in1, in2, out, vdd; .subckt NOR2 1 2 3 4 *ordine noduri tranzistoare MP1 5 1 4 4 CMOSP L=0.35u MP2 3 2 5 4 CMOSP L=0.35u MN1 3 2 0 0 CMOSN L=0.35u MN2 3 1 0 0 CMOSN L=0.35u .ends MOS: drena,poarta,sursa,substrat; W=2.8u W=2.8u W=0.7u W=0.7u

Poarta AND2

* AND2 *ordinea nodurilor AND2: in1 in2 out vdd; .subckt AND2 1 2 3 4 MP1 MP2 MN1 MN2 MP3 MN3 6 6 5 6 3 3 1 2 1 2 6 6 4 4 0 5 4 0 4 4 0 0 4 0 CMOSP CMOSP CMOSN CMOSN CMOSP CMOSN L=0.35u L=0.35u L=0.35u L=0.35u L=0.35u L=0.35u W=0.7u W=0.7u W=0.7u W=0.7u W=1.4u W=0.7u

.ends

Poarta OR2

* OR2 *ordinea nodurilor OR2: in1 in2 out vdd; .subckt OR2 1 2 3 4 MP1 MP2 MN1 MN2 MP3 MN3 6 5 5 5 3 3 1 2 2 1 5 5 4 6 0 0 4 0 4 4 0 0 4 0 CMOSP CMOSP CMOSN CMOSN CMOSP CMOSN L=0.35u L=0.35u L=0.35u L=0.35u L=0.35u L=0.35u W=2.8u W=2.8u W=0.7u W=0.7u W=1.4u W=0.7u

.ends

Bistabilul JKFFS * JKFFS .inc .inc .inc .inc .inc .inc INV.cir INVtri.cir OR2.cir NOR2.cir AND2.cir NAND2.cir

*ordinea terminalelor circuitului JKFFS:j,k,sn,ck,q,qn,vdd; .subckt JKFFS 1 2 3 4 5 6 7 X1 1 10 11 7 AND2 X2 10 2 12 7 NOR2 X3 11 12 13 7 OR2 X4 13 14 8 9 7 INVtri X5 15 14 8 9 7 INVtri X6 14 3 15 7 NAND2 X7 15 16 8 9 7 INVtri X8 17 16 8 9 7 INVtri X9 16 3 17 7 NAND2 X10 17 10 7 INV X11 10 5 7 INV X12 17 6 7 INV X21 4 9 7 INV X14 9 8 7 INV .ends

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 cte 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 L=0.35um.
*Analiza tranzitorie circuitului JKFFS .inc JKFFS.cir *ordine terminale JKFFS:j, k, sn, ck, q, qn, vdd; XJKFFS 1 2 3 4 5 6 7 JKFFS VCK VSN VJ VK 4 3 1 2 0 0 0 0 pulse(0 {vdd} pulse({vdd} 0 pulse(0 {vdd} pulse(0 {vdd} 0 0.2n 5n 5n {tr} {tr} {tr} {tr} {tr} {tr} {tr} {tr} {5n-tr} {15n-tr} {15n-tr} {10n-tr} 10n) 160n) 30n) 20n)

Vdd 7 0 {vdd} CQ 5 0 {CL} CQN 6 0 {CL} .param CL 0.09p .param tr 0.3n .param vdd 3.3 .inc CMOS_AMIS_035_T46W.txt .tran 0.1ns 100ns 0 0.1ns

*.step param CL list 0.045p 0.060p 0.080p 0.100p 0.135p *.step param tr list 0.15n 0.45n 0.1n .probe .end

Rezultatele analizei sun rredate in poza de mai jos:

In graficul de jos sunt reprezentate iesirile bistabilului Q si QN (V(5) si V(6)) urmatoarele doua corespund intralior J si K (V(1) si V(2)) in al patrulea grafic,privind de jos in sus, este reprezentat clock u, iar in primul de sus este reprezentat setul.

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 ntrzierilor de propagare corespunz toare valorilor adoptate pentru CL i TR. Considernd c dependen a timpilor de propagare n func ie de CL este de forma: tptotal = tpintrinsec + Kload*CL

3. Determina i prin simulare parametric

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):

tpLH Descriere tpLHintrinsec CK->Q CK->QN Kload tpHLintrinsec

tpHL Kload

Timpi de propagare la tranzitia din low in hight la o analiza parametrica in care se variaza parametru CL al iesirii Q .
*Analiza tranzitorie circuitului JKFFS .inc JKFFS.cir *ordine terminale JKFFS:j, k, sn, ck, q, qn, vdd; XJKFFS 1 2 3 4 5 6 7 JKFFS VCK VSN VJ VK 4 3 1 2 0 0 0 0 pulse(0 {vdd} pulse({vdd} 0 pulse(0 {vdd} pulse(0 {vdd} 0 0.2n 5n 5n {tr} {tr} {tr} {tr} {tr} {tr} {tr} {tr} {5n-tr} {15n-tr} {30n-tr} {20n-tr} 10n) 160n) 60n) 40n)

Vdd 7 0 {vdd} CQ 5 0 {CL} CQN 6 0 {CL} .param CL 0.09p .param tr 0.3n .param vdd 3.3 .inc CMOS_AMIS_035_T46W.txt .tran 0.1ns 100ns 68n 0.1ns .step param CL list 0 0.045p 0.060p 0.080p 0.100p 0.135p *.step param tr list 0.15n 0.45n 0.1n .probe .end

T_intrinsec=1.0146 ns;

T_total=1.8203 ns; Timpi de propagare la tranzitia din low in hight la o analiza parametrica in care se variaza parametru CL al iesirii QN.
*Analiza tranzitorie circuitului JKFFS .inc JKFFS.cir *ordine terminale JKFFS:j, k, sn, ck, q, qn, vdd; XJKFFS 1 2 3 4 5 6 7 JKFFS VCK 4 0 pulse(0 {vdd} 0 {tr} {tr} {5n-tr} 10n) VSN 3 0 pulse({vdd} 0 0.2n {tr} {tr} {15n-tr} 160n)

VJ VK

1 0 pulse(0 {vdd} 5n 2 0 pulse(0 {vdd} 5n

{tr} {tr} {30n-tr} 60n) {tr} {tr} {20n-tr} 40n)

Vdd 7 0 {vdd} CQ 5 0 {CL} CQN 6 0 {CL} .param CL 0.09p .param tr 0.3n .param vdd 3.3 .inc CMOS_AMIS_035_T46W.txt .tran 0.1ns 100ns 46n 0.1ns .step param CL list 0 0.045p 0.060p 0.080p 0.100p 0.135p *.step param tr list 0.15n 0.45n 0.1n .probe .end

T_intrinsec=1.204ns;

T_total=1.7208 ns; Timpi de propagare la tranzitia din hight in low la o analiza parametrica in care se variaza parametru CL al iesirii Q.
*Analiza tranzitorie circuitului JKFFS .inc JKFFS.cir *ordine terminale JKFFS:j, k, sn, ck, q, qn, vdd; XJKFFS 1 2 3 4 5 6 7 JKFFS VCK VSN VJ VK 4 3 1 2 0 0 0 0 pulse(0 {vdd} pulse({vdd} 0 pulse(0 {vdd} pulse(0 {vdd} 0 0.2n 5n 5n {tr} {tr} {tr} {tr} {tr} {tr} {tr} {tr} {5n-tr} {15n-tr} {30n-tr} {20n-tr} 10n) 160n) 60n) 40n)

Vdd 7 0 {vdd} CQ 5 0 {CL} CQN 6 0 {CL} .param CL 0.09p .param tr 0.3n .param vdd 3.3 .inc CMOS_AMIS_035_T46W.txt .tran 0.1ns 100ns 46n 0.1ns .step param CL list 0 0.045p 0.060p 0.080p 0.100p 0.135p *.step param tr list 0.15n 0.45n 0.1n .probe .end

T_intrinsec=1.2947 ns;

T_total=1.8174 ns;

Timpi de propagare la tranzitia din hight in low la o analiza parametrica in care se variaza parametru CL al iesirii QN.
*Analiza tranzitorie circuitului JKFFS .inc JKFFS.cir *ordine terminale JKFFS:j, k, sn, ck, q, qn, vdd; XJKFFS 1 2 3 4 5 6 7 JKFFS VCK 4 0 pulse(0 {vdd} 0 {tr} {tr} {5n-tr} 10n) VSN 3 0 pulse({vdd} 0 0.2n {tr} {tr} {15n-tr} 160n)

VJ VK

1 0 pulse(0 {vdd} 5n 2 0 pulse(0 {vdd} 5n

{tr} {tr} {30n-tr} 60n) {tr} {tr} {20n-tr} 40n)

Vdd 7 0 {vdd} CQ 5 0 {CL} CQN 6 0 {CL} .param CL 0.09p .param tr 0.3n .param vdd 3.3 .inc CMOS_AMIS_035_T46W.txt .tran 0.1ns 100ns 68n 0.1ns .step param CL list 0 0.045p 0.060p 0.080p 0.100p 0.135p *.step param tr list 0.15n 0.45n 0.1n .probe .end

T_intrinsec=1.2269 ns;

T_total=1.744 ns; Timpi de propagare la tranzitia din low in hight la o analiza parametrica in care se variaza parametru tr al al surselor de intrare,vizualizandu-se iesirea Q.
*Analiza tranzitorie circuitului JKFFS .inc JKFFS.cir *ordine terminale JKFFS:j, k, sn, ck, q, qn, vdd; XJKFFS 1 2 3 4 5 6 7 JKFFS VCK VSN VJ VK 4 3 1 2 0 0 0 0 pulse(0 {vdd} pulse({vdd} 0 pulse(0 {vdd} pulse(0 {vdd} 0 0.2n 5n 5n {tr} {tr} {tr} {tr} {tr} {tr} {tr} {tr} {5n-tr} {15n-tr} {30n-tr} {20n-tr} 10n) 160n) 60n) 40n)

Vdd 7 0 {vdd} CQ 5 0 {CL} CQN 6 0 {CL} .param CL 0.09p .param tr 0.3n .param vdd 3.3 .inc CMOS_AMIS_035_T46W.txt .tran 0.1ns 100ns 68n 0.1ns *.step param CL list 0 0.045p 0.060p 0.080p 0.100p 0.135p .step param tr list 0.15n 0.20n 0.25n 0.30n 0.40n 0.45n .probe .end

T_intrinsec=1.5857 ns;

T_total=1.7554 ns; Timpi de propagare la tranzitia din low in hight la o analiza parametrica in care se variaza parametru tr al al surselor de intrare,vizualizandu-se iesirea QN.
*Analiza tranzitorie circuitului JKFFS .inc JKFFS.cir *ordine terminale JKFFS:j, k, sn, ck, q, qn, vdd; XJKFFS 1 2 3 4 5 6 7 JKFFS VCK 4 0 pulse(0 {vdd} 0 {tr} {tr} {5n-tr} 10n)

VSN 3 0 pulse({vdd} 0 0.2n {tr} {tr} {15n-tr} 160n) VJ 1 0 pulse(0 {vdd} 5n {tr} {tr} {30n-tr} 60n) VK 2 0 pulse(0 {vdd} 5n {tr} {tr} {20n-tr} 40n) Vdd 7 0 {vdd} CQ 5 0 {CL} CQN 6 0 {CL} .param CL 0.09p .param tr 0.3n .param vdd 3.3 .inc CMOS_AMIS_035_T46W.txt .tran 0.1ns 100ns 46n 0.1ns *.step param CL list 0 0.045p 0.060p 0.080p 0.100p 0.135p .step param tr list 0.15n 0.20n 0.25n 0.30n 0.40n 0.45n .probe .end

T_intrinsec=1.3966 ns;

T_total=1.6990 ns;

Timpi de propagare la tranzitia din hight in low la o analiza parametrica in care se variaza parametru tr al al surselor de intrare,vizualizandu-se iesirea Q.
*Analiza tranzitorie circuitului JKFFS .inc JKFFS.cir *ordine terminale JKFFS:j, k, sn, ck, q, qn, vdd; XJKFFS 1 2 3 4 5 6 7 JKFFS VCK VSN VJ VK 4 3 1 2 0 0 0 0 pulse(0 {vdd} pulse({vdd} 0 pulse(0 {vdd} pulse(0 {vdd} 0 0.2n 5n 5n {tr} {tr} {tr} {tr} {tr} {tr} {tr} {tr} {5n-tr} {15n-tr} {30n-tr} {20n-tr} 10n) 160n) 60n) 40n)

Vdd 7 0 {vdd} CQ 5 0 {CL} CQN 6 0 {CL} .param CL 0.09p .param tr 0.3n .param vdd 3.3 .inc CMOS_AMIS_035_T46W.txt .tran 0.1ns 100ns 46n 0.1ns *.step param CL list 0 0.045p 0.060p 0.080p 0.100p 0.135p .step param tr list 0.15n 0.20n 0.25n 0.30n 0.40n 0.45n .probe .end

T_intrinsec=1.4919 ns;

T_total=1.7947 ns; Timpi de propagare la tranzitia din hight in low la o analiza parametrica in care se variaza parametru tr al al surselor de intrare,vizualizandu-se iesirea QN.
*Analiza tranzitorie circuitului JKFFS .inc JKFFS.cir *ordine terminale JKFFS:j, k, sn, ck, q, qn, vdd; XJKFFS 1 2 3 4 5 6 7 JKFFS VCK 4 0 pulse(0 {vdd} 0 {tr} {tr} {5n-tr} 10n) VSN 3 0 pulse({vdd} 0 0.2n {tr} {tr} {15n-tr} 160n) VJ 1 0 pulse(0 {vdd} 5n {tr} {tr} {30n-tr} 60n)

VK

2 0 pulse(0 {vdd} 5n

{tr} {tr} {20n-tr} 40n)

Vdd 7 0 {vdd} CQ 5 0 {CL} CQN 6 0 {CL} .param CL 0.09p .param tr 0.3n .param vdd 3.3 .inc CMOS_AMIS_035_T46W.txt .tran 0.1ns 100ns 68n 0.1ns *.step param CL list 0 0.045p 0.060p 0.080p 0.100p 0.135p .step param tr list 0.15n 0.20n 0.25n 0.30n 0.40n 0.45n .probe .end

T_intrinsec=1.4919 ns;

T_total=1.6624 ns;

tpLH Descriere tpLHintrinsec CK->Q CK->QN 1.0146 ns 1.204 ns Kload 8952 5742 tpHLintrinsec 1.2947 ns 1.2269 ns

tpHL Kload 5772 5745

tptotal = tpintrinsec + Kload*CL Kload=(tptotal-tpintrinsec)/CL

(1.8203-1.0146)e-9 / 0.09e-12 = 8952.2 s/F (1.8174-1.2947)e-9 / 0.09e-12 = 5772 s/F (1.7208-1.2040)e-9/ 0.09e-12 = 5742 s/F (1.7440-1.2269)e-9 / 0.09e-12 = 5745 s/F

4. Determina i prin simulare parametrii de constrngere SETUP_TIME, HOLD_TIME i durata minim a pulsului MINPW pentru pinii de intrare specifica i n tabelul urm tor:

Pin intrare

Parametru constrangere SETUP_TIME_LH SETUP_TIME_HL CK CK CK CK

Durata interval

K HOLD_TIME_LH HOLD_TIME_HL MINPW_HIGH CK MINPW_LOW

Pentru determinarea SETUP_TIME vom efectua o analiza parametrica in care vom varia timpul de delay al datelor, inaintea frontului de clock. Pentru determinarea HOLD_TIME vom efectua o analiza parametrica in care vom varia timpul de delay al datelor, imediat dupa frontul activ de clock. Pentru determinarea MINPW_HIGH vom efectua o analiza parametrica in care vom varia latimea pulsului semnalului de clock, iar pentru MINPW_LOW vom mentine latimea pulsului constanta si vom varia parametric perioada.

Determinarea parametrului SETUP_TIME_LH


*Analiza tranzitorie circuitului JKFFS .inc JKFFS.cir *ordine terminale JKFFS:j, k, sn, ck, q, qn, vdd; XJKFFS 1 2 3 4 5 6 7 JKFFS VCK VSN VJ VK 4 3 1 2 0 0 0 0 pulse(0 pulse({vdd} pulse(0 pulse(0 {vdd} 0 {tr} {tr} {1n-tr} 2.18n) {vdd} 0.2n {tr} {tr} {15n-tr} 160n) {vdd} 5n {tr} {tr} {30n-tr} 60n) {vdd} {td} {tr} {tr} {5n-tr} 10n)

Vdd 7 0 {vdd}

CQ 5 0 CQN 6 0 .param .param .param .param

{CL} {CL} 0.09p 0.3n 3.3 20p

CL tr vdd td

.inc CMOS_AMIS_035_T46W.txt .tran 0.1ns 100ns 0 0.1ns *.step param CL list 0.045p 0.060p 0.080p 0.100p 0.135p *.step param tr list 0.15n 0.20n 0.25n 0.30n 0.40n 0.45n .step param td list 20p 25p 30p 35p 40p 50p

.probe .end

Observam ca iesirea nu variaza la modificarea intraii de date inaintea frontului de clock, deci SETUP_TIME_LH nu poate fi determinat. Determinarea parametrului SETUP_TIME_HL
*Analiza tranzitorie circuitului JKFFS .inc JKFFS.cir *ordine terminale JKFFS:j, k, sn, ck, q, qn, vdd; XJKFFS 1 2 3 4 5 6 7 JKFFS VCK VSN VJ VK 4 3 1 2 0 0 0 0 pulse(0 pulse({vdd} pulse(0 pulse(0 {vdd} 0 {tr} {tr} {1n-tr} 2.18n) {vdd} 0.2n {tr} {tr} {15n-tr} 160n) {vdd} 5n {tr} {tr} {30n-tr} 60n) {vdd} {td} {tr} {tr} {5n-tr} 10n)

Vdd 7 0 {vdd} CQ 5 0 {CL} CQN 6 0 {CL} .param .param .param .param CL tr vdd td 0.09p 0.3n 3.3 20p

.inc CMOS_AMIS_035_T46W.txt .tran 0.1ns 100ns 0 0.1ns *.step param CL list 0.045p 0.060p 0.080p 0.100p 0.135p *.step param tr list 0.15n 0.20n 0.25n 0.30n 0.40n 0.45n .step param td list 20p 25p 30p 35p 40p 50p

.probe .end

Observam ca iesirea nu variaza la modificarea intraii de date inaintea frontului de clock, deci SETUP_TIME_HL nu poate fi determinat. Determinarea parametrului HOLD_TIME_LH
*Analiza tranzitorie circuitului JKFFS .inc JKFFS.cir *ordine terminale JKFFS:j, k, sn, ck, q, qn, vdd; XJKFFS 1 2 3 4 5 6 7 JKFFS VCK VSN VJ VK 4 3 1 2 0 0 0 0 pulse(0 pulse({vdd} pulse(0 pulse(0 {vdd} 0 {tr} {tr} {1n-tr} 10n) {vdd} 0.2n {tr} {tr} {15n-tr} 160n) {vdd} 5n {tr} {tr} {30n-tr} 60n) {vdd} {td} {tr} {tr} {5n-tr} 10n)

Vdd 7 0 {vdd} CQ 5 0 {CL} CQN 6 0 {CL} .param .param .param .param CL tr vdd td 0.09p 0.3n 3.3 20p

.inc CMOS_AMIS_035_T46W.txt .tran 0.1ns 100ns 0 0.1ns *.step param CL list 0.045p 0.060p 0.080p 0.100p 0.135p *.step param tr list 0.15n 0.20n 0.25n 0.30n 0.40n 0.45n .step param td list 20p 25p 30p 35p 40p 50p

.probe .end

Gasim ultima curba pentru care functionarea este normala si citim coordonatele.Diferenta dintre coordonate : SETUP_TIME_LH = 30ps

Determinarea parametrului HOLD_TIME_HL


*Analiza tranzitorie circuitului JKFFS .inc JKFFS.cir *ordine terminale JKFFS:j, k, sn, ck, q, qn, vdd; XJKFFS 1 2 3 4 5 6 7 JKFFS VCK 4 0 pulse(0 {vdd} VSN 3 0 pulse({vdd} {vdd} 0 {tr} {tr} {1n-tr} 2n) 0.2n {tr} {tr} {15n-tr} 160n)

VJ VK

1 0 pulse(0 2 0 pulse(0

{vdd} 5n {tr} {tr} {30n-tr} 60n) {vdd} {td} {tr} {tr} {5n-tr} 10n)

Vdd 7 0 {vdd} CQ 5 0 {CL} CQN 6 0 {CL} .param .param .param .param CL tr vdd td 0.09p 0.3n 3.3 20p

.inc CMOS_AMIS_035_T46W.txt .tran 0.1ns 100ns 0 0.1ns *.step param CL list 0.045p 0.060p 0.080p 0.100p 0.135p *.step param tr list 0.15n 0.20n 0.25n 0.30n 0.40n 0.45n .step param td list 20p 25p 30p 35p 40p 50p

.probe .end

Gasim ultima curba pentru care functionarea este normala si citim coordonatele.Diferenta dintre coordonate : SETUP_TIME_LH = 22.673ps

Determinarea parametrului MINPW_HIGH


*Analiza tranzitorie circuitului JKFFS .inc JKFFS.cir *ordine terminale JKFFS:j, k, sn, ck, q, qn, vdd;

XJKFFS 1 2 3 4 5 6 7 JKFFS VCK VSN VJ VK 4 3 1 2 0 0 0 0 pulse(0 pulse({vdd} pulse(0 pulse(0 {vdd} {vdd} {vdd} {vdd} 0 0.2n 5n 5n {tr} {tr} {tr} {tr} {tr} {tr} {tr} {tr} {5n-pw} 10n) {15n-tr} 160n) {30n-tr} 60n) {20n-tr} 40n)

Vdd 7 0 {vdd} CQ 5 0 {CL} CQN 6 0 {CL} .param .param .param .param CL tr vdd pw 0.09p 0.3n 3.3 20p

.inc CMOS_AMIS_035_T46W.txt .tran 0.1ns 100ns 0 0.1ns *.step param CL list 0.045p 0.060p 0.080p 0.100p 0.135p *.step param tr list 0.15n 0.20n 0.25n 0.30n 0.40n 0.45n .step param pw list 20p 25p 30p 35p 40p 50p

.probe .end

Se observa ca iesirea nu se modifica chiar daca variem latimea pulsului de clock si aceasta devine foarte mica. Prin urmare nu putem determina MINPW_HIGH.

Determinarea parametrului MINPW_LOW


*Analiza tranzitorie circuitului JKFFS .inc JKFFS.cir

*ordine terminale JKFFS:j, k, sn, ck, q, qn, vdd; XJKFFS 1 2 3 4 5 6 7 JKFFS VCK VSN VJ VK 4 3 1 2 0 0 0 0 pulse(0 pulse({vdd} pulse(0 pulse(0 {vdd} {vdd} {vdd} {vdd} 0 0.2n 5n 5n {tr} {tr} {tr} {tr} {tr} {tr} {tr} {tr} {5n-pw} {10n-pw}) {15n-tr} 160n) {30n-tr} 60n) {20n-tr} 40n)

Vdd 7 0 {vdd} CQ 5 0 {CL} CQN 6 0 {CL} .param .param .param .param CL 0.09p tr 0.3n vdd 3.3 t 20p

.inc CMOS_AMIS_035_T46W.txt .tran 0.1ns 100ns 0 0.1ns *.step param CL list 0.045p 0.060p 0.080p 0.100p 0.135p *.step param tr list 0.15n 0.20n 0.25n 0.30n 0.40n 0.45n .step param pw list 20p 25p 30p 35p 40p 50p

.probe .end

Gasim prima curba in ordine crescatoare a latimii perioadei pentru care functionarea este normala si citim coordonatele. Diferenta dintre coordonate: MINPW_LOW=94.314 ps;

In final completam tabelul cu toti parametrii de constrangere.

Pin intrare

Parametru constrangere SETUP_TIME_LH SETUP_TIME_HL CK CK CK CK

Durata interval 30 ps 22,673 ps 94,314 ps

K HOLD_TIME_LH HOLD_TIME_HL MINPW_HIGH CK MINPW_LOW

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. Sa se rezolve aceleasi cerinte de la pct. A in limbajul Verilog.

C. Denumirea circuitului: Circuit de selec ie i comand a unui sistem de dou lifturi

Descriere circuit: Circuitul selecteaz i comand un sistem de dou lifturi, A i B, dintr-o cl dire cu 8 nivele (parter + 7 etaje) n urma unei cereri de chemare.

La fiecare etaj exist un singur buton pentru chemarea unuia din cele dou lifturi. Cnd la un anumit etaj s-a ap sat butonul de chemare a liftului, circuitul va determina i va selecta liftul situat cel mai aproape de locul chem rii i, totodat , va transmite acestuia sensul i num rul de nivele pe care trebuie s le parcurg pn la locul chem rii. Dac lifturile se afl la aceea i distan fa de locul chem rii, atunci va fi selectat liftul A. Pentru simplitate se va presupune c ntotdeauna cnd este ap sat un buton de chemare, lifturile sta ioneaz . Pentru circuit se vor considera urm toarele porturi:

Denumire

Mod

Semnificatie Semnal pe 8 bi i corespunz tor butoanelor de la fiecare etaj pentru chemarea unui lift. Exemplu: cnd R(5) ia valoarea 1 se

R[0:7]

Intrare

consider c la etajul 5 s-a ap sat butonul pentru chemarea unui lift. Semnal pe 3 bi i care indic valoarea n binar a pozi iei (etajului)

PLA[2:0]

Intrare

unde este situat liftul A. Exemplu: dac PLA= 010 , liftul A este la etajul 2.

PLB[2:0]

Intrare

Semnal pe 3 bi i care indic valoarea n binar a pozi iei liftului B. Port pentru selec ia liftului A. Dac SELA= 1 , liftul A este

SELA SELB SENS

Iesire selectat pentru a se deplasa la locul chem rii. iesire Iesire selectat: 1 urcare; 0 coborre. Port care indic n binar num rul de nivele pe care trebuie s le Port pentru selec ia liftului B. Similar ca SELA. Port care indic sensul n care trebuie s se deplaseze liftul

DIST[2:0]

iesire parcurg liftul selectat pn la locul chem rii.

Cerin e:

i) S se realizeze un model comportamental n VHDL a circuitului. ii) S se implementeze un testbench pentru verificarea modelului circuitului. n cadrul simul rii se vor aplica tranzi ii la intr ri astfel nct s se testeze r spunsul circuitului pentru cteva din situa iile posibile.
A.i) Circuitul JKFFS.vhd
library ieee; use ieee.std_logic_1164.all; entity jkffs is generic( tp_LHQ tp_HLQ tp_LHQN tp_HLQN :time:= :time:= :time:= :time:= 1.0146 1.2947 1.204 1.2269 ns; ns; ns; ns);

port (ck,j,k,sn: in std_logic; q, qn : inout std_logic); end jkffs; architecture bistabil of jkffs is begin process (ck, j, k, sn) begin if sn='0'then q<='1'; qn<='0'; elsif sn='1' and ck'event and ck='1' then if j='0' and k='0' then q<=q; qn<= not q; elsif j='0' and k='1' then q<='0' after tp_HLQ; qn<= '1' after tp_LHQN; end if; if j='1' and k='1' then q<= not q; qn<= q; elsif j='1' and k='0' then q<='1' after tp_LHQ;

qn<= '0' after tp_HLQN; end if; else q<= q; qn<= not q; end if; end process; end bistabil;

A.ii)Circuitul test_JKFFS.vhd
library ieee; use ieee.std_logic_1164.all; entity Test_jkffs is end Test_jkffs; architecture test_bistabil of Test_jkffs is signal ck,j,k,sn,q,qn: std_logic; component jkffs is port(ck,j,k,sn : in std_logic; q, qn : inout std_logic); end component; begin UUT: jkffs port map(ck,j,k,sn,q,qn); gen_ck: process begin ck<='0'; wait for 1 ns; ck<='1'; wait for 1 ns; end process; gen_sn: process begin sn<='0'; wait for 20 ns; sn<='1'; wait for 30 ns; end process; gen_j: process begin j<='0'; wait for 3 ns; j<='1'; wait for 3 ns; end process;

gen_k: process begin

k<='0'; wait for 4 ns; k<='1'; wait for 4 ns; end process; end test_bistabil;

Formele de unda rezultate:

B.i) Circuitul JKFFS.v


module JKFFS(j,k,sn,ck,q,qn); input j,k,sn,ck; output q,qn; reg q,qn; always @(posedge ck or negedge sn) if(sn==0) begin q <=1; qn <=0; end else begin if(j==0 ) begin if(k==0) begin q <=q; qn <=~q; end else begin q <=0; qn <=1; end end else begin if(k==0) begin // bistabil JK cu set asincron activ pe low

q <=1; qn <=0; end else begin q <=~q; qn <=q; end end end endmodule

B.ii)Circuitul test_JKFFS.v
module TEST_JKFFS(); reg j,k,sn,ck; wire q,qn; JKFFS DUT(j,k,sn,ck,q,qn); initial begin j<=0; k<=0; sn<=0; ck<=0; #10 j<=1; #10 sn<=1; #2 k<=1; #10 j<=0; #8 k<=0; #12 j<=1; #16 k<=1; #4 j<=0; #20 j<=1; #4 k<=0; #34 sn<=0; end always #10 ck=~ck; endmodule

Formele de unda rezultate:

C.i) Circuitul lift.vhd


library IEEE; USE IEEE.std_logic_1164.ALL; USE work.functii.ALL; entity comanda_lift is port ( R : PLA, PLB : SELA, SELB, SENS : DIST : end comanda_lift; in in out out Bit_vector(0 to 7); Bit_vector(2 downto 0); BIT; Bit_vector(2 downto 0));

architecture functionare of comanda_lift is begin process ( R, PLA, PLB ) variable etajA : Natural :=0; variable etajB : Natural :=0; variable etajf : Natural :=0; variable d : Natural :=0; begin for i in 0 to 7 loop if R(i)='1' then etajf:=i; end if; end loop; etajA := convert_bin_nat(PLA); etajB := convert_bin_nat(PLB); if abs(etajf-etajA)<abs(etajf-etajB) then SELA <= '1'; SELB <= '0';

d:=abs(etajf-etajA); if etajf>etajA then SENS <= '1'; else SENS <= '0'; end if; elsif abs(etajf-etajA)>abs(etajf-etajB) then SELA <= '0'; SELB <= '1'; d:=abs(etajf-etajB); if etajf>etajB then SENS <= '1'; else SENS <= '0'; end if; else SELA <= '1'; SELB <= '0'; d:=abs(etajf-etajA); if etajf>etajA then SENS <= '1'; else SENS <= '0'; end if; end if; DIST <= convert_nat_bin(d,3); end process; end functionare;

Circuitul package.vhd library IEEE; use IEEE.std_logic_1164.all;

package functii is function convert_nat_bin ( N, L : Natural ) return Bit_Vector ; function convert_bin_nat ( B : Bit_Vector ) return Natural; end functii;

package body functii is

function convert_nat_bin ( N, L : Natural ) return Bit_Vector is variable Temp : Bit_Vector ( L-1 downto 0);

variable Value : Natural := N; begin for i in Temp'Right to Temp'Left loop Temp (i) := Bit'Val ( Value mod 2); Value := Value /2 ; end loop; return Temp; end;

function convert_bin_nat ( B: Bit_Vector ) return Natural is variable Temp : Bit_Vector ( B'Length - 1 downto 0) :=B; variable Value: Natural := 0 ; begin for i in Temp'Right to Temp'Left loop if Temp (i) = '1' then Value := Value + ( 2 ** i) ; end if; end loop; return Value; end; end functii; C.ii)Circuitul test_lift.vhd
library IEEE; USE IEEE.std_logic_1164.ALL; USE work.functii.ALL; entity test_lift is end test_lift;

architecture verificare_lift of test_lift is component comanda_lift port ( R : in Bit_vector(0 to 7); PLA, PLB : in Bit_vector(2 downto 0); SELA, SELB, SENS : out BIT; DIST : out Bit_vector(2 downto 0)); end component; signal R : bit_vector(0 to 7); signal PLA, PLB, DIST : bit_vector(2 downto 0); signal SELA, SELB, SENS: bit; begin UUT: comanda_lift port map (R,PLA,PLB,SELA,SELB,SENS,DIST); process type LINIE is record R:bit_vector(0 to 7); PLA,PLB:bit_vector(2 downto 0); SELA,SELB,SENS:bit; DIST:bit_vector(2 downto 0); end record; type MATRICE is array ( 0 to 4 ) of LINIE; constant TruthTable : MATRICE := ( --------R------PLA----PLB--SELA-SELB-SENS---DIST ("00001000", "010", "011", '0', '1', '1', "001"), ("00100000", "011", "001", '1', '0', '0', "001"), ("00000001", "001", "100", '0', '1', '1', "011"), ("00000100", "000", "111", '0', '1', '0', "010"), ("00000010", "001", "001", '1', '0', '1', "101")); begin for i in TruthTable'range loop R <= TruthTable(i).R; PLA <= TruthTable(i).PLA; PLB <= TruthTable(i).PLB; wait for 1 ns; assert SELA = TruthTable(i).SELA and SELB = TruthTable(i).SELB and SENS = TruthTable(i).SENS and DIST = TruthTable(i).DIST; end loop; wait; end process; end;

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