31
VERILOG A PV-3 1

VERILOG A PV-3tnt.etf.bg.ac.rs/~amk/index_files/VERILOG_A_PV_3.pdf · specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja se primenjuje na datu granu

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: VERILOG A PV-3tnt.etf.bg.ac.rs/~amk/index_files/VERILOG_A_PV_3.pdf · specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja se primenjuje na datu granu

VERILOG APV-3

1

Page 2: VERILOG A PV-3tnt.etf.bg.ac.rs/~amk/index_files/VERILOG_A_PV_3.pdf · specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja se primenjuje na datu granu

2Discipline

• Discipline su setovi definicija i osobina za određeni tip sistema. U električnimsistemima, discipline definišu tipove čvorova, portova i grana.

• Konzervativne discipline se referenciraju na dve fizičke veličine, jedna je potencijal,a druga je protok.

• U konzervativnom električnom sistemu, potencijal predstavlja napon, dok protokodgovara struji

• Discipline za protok signala (signal-flow) se referenciraju na samo jednu fizičkuveličinu, bilo potencijal, ili protok

• U single-nature disciplinama standard zahteva da fizička veličina bude potencijal,čak i u disciplinama sa strujom.

Conservative Signal-Flow [Potential]discipline electrical discipline voltage

potential Voltage; potential Voltage;flow Current;

enddiscipline enddiscipline

Page 3: VERILOG A PV-3tnt.etf.bg.ac.rs/~amk/index_files/VERILOG_A_PV_3.pdf · specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja se primenjuje na datu granu

3Empty Signal-Flow [Flow]discipline empty discipline current

potential Current;enddiscipine enddiscipine

Discipline i fizičke veličine se definišu i za mehaničke, magnetske i termodinamičkesisteme

nature Position nature Forceaccess = Pos; access = F ;units = “m”; units = “N”;abstol = 1u ; abstol = 1n ;

endnature endnaturediscipline mechanical

potential Position ;flow Force ;

enddiscipline

Page 4: VERILOG A PV-3tnt.etf.bg.ac.rs/~amk/index_files/VERILOG_A_PV_3.pdf · specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja se primenjuje na datu granu

4

DisciplinePotential Flow

Nature Access Units Nature Access Units

Electrical Voltage V V Current I A

Magnetic Magnetomotive Force

MMF A-turn Flux Phi Wb

Thermal Temperature Temp C Power Pwr W

Kinematic[Position]

Position Pos m Force F N

Kinematic[Velocity]

Velocity Vel m/s Force F N

Rotational[Phase]

Angle Theta rads Angular Tau N*m

Rotational[Velocity]

Angular Velocity Omega rads/s Angular Tau N*m

Discipline

Page 5: VERILOG A PV-3tnt.etf.bg.ac.rs/~amk/index_files/VERILOG_A_PV_3.pdf · specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja se primenjuje na datu granu

5 Kompatibilnost

disciplina

Svaka disciplina je kompatibilna sasamom sobom

Prazna disciplina (empty discipline) jekompatibilna sa svim disciplinama

Ako u obe discipline postoje iste fizičkeveličine one su kompatibilne

Discipline su kompatibilne čak iakonemaju obe fizičke veličine, ukoliko imje jedna fizička veličina zajednička

Page 6: VERILOG A PV-3tnt.etf.bg.ac.rs/~amk/index_files/VERILOG_A_PV_3.pdf · specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja se primenjuje na datu granu

6Posmatrajmo sledeće disciplinenature Voltage nature Currentaccess = V ; access = I ;units = "V" ; units = "A" ;abstol = 1u ; abstol = 1p ;endnature endnature

discipline emptydisenddiscipline

discipline electricalpotential Voltage ;flow Current ;

enddiscipline

discipline sig_flow_vpotential Voltage ;

enddiscipline

Electrical i sig_flow su kompatibilne

Page 7: VERILOG A PV-3tnt.etf.bg.ac.rs/~amk/index_files/VERILOG_A_PV_3.pdf · specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja se primenjuje na datu granu

7

Terminologija

Kao i promenljive, veze (wires) se nazivaju još i skladištima vrednosti. One suobično bez zapamćenog stanja (što znači da moraju biti konstantno pobuđivane ili ćeprogram zaboraviti njihovu vrednost) i generalno se koriste za povezivanjekomponenti.

Postoje dve osnovne vrste veza: za kontinualne i diskretne događaje. Kontinualneveze su dostupne u Verilog-A i Verilog-AMS i deklarišu se disciplinom. Vezediskretnog događaja su dostupne u Verilogu i Verilog-AMS-u.

Mreža (nets) predstavlja kolekciju veza po kojima komuniciraju komponente jednogsistema. Kao takve, one obuhvataju više od jedne komponente. Komponente seumrežavaju kroz portove. Portovi se deklarišu u modulu, kada dobijaju ime i smer.Na taj način se imena koja se koriste za svaku vezu mreže obično razlikuju u svakojod komponenti koje mreža povezuje.

Page 8: VERILOG A PV-3tnt.etf.bg.ac.rs/~amk/index_files/VERILOG_A_PV_3.pdf · specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja se primenjuje na datu granu

8 Mrežne discipline

Koristi se deklarisanje mrežne discipline radi povezivanja mreže sa prethodnodefinisanom disciplinom

net_discipline_declaration ::=discipline_identifier [range] list_of_nets ;

| wire [range] list_of_nets ;range ::=

[ msb_expr : lsb_expr ]list_of_nets ::=

net_type| net_type , list_of_nets

msb_expr ::=constant_expr

lsb_expression ::=constant_expr

net_type ::=net_identifier [range] [= constant_expr | constant_array_expr]

Page 9: VERILOG A PV-3tnt.etf.bg.ac.rs/~amk/index_files/VERILOG_A_PV_3.pdf · specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja se primenjuje na datu granu

9 Mogu se koristiti standardni atributi za opis mrežne discipline(* desc="drain terminal" *) electrical d;

Skalarna mreža je mreža koja je deklarisana bez opsega, dok se mreža deklarisana saopsegom zove vektorska mreža

magnetic inductor1, inductor2 ; //Declares two scalar netselectrical [1:10] node1 ; //Declares a vector netwire [3:0] connect1, connect2 ; //Declares two vector netselectrical [0:4] bus = {2.3,4.5,,6.0} ; //Declares vector net with nodesetvalues

Sledeći primer nije ispravan jer opseg, ako je definisan, mora biti prva stavka nakonidentifikatora discipline, a zatim se primenjuje na sve navedene net identifikatore

electrical AVDD, AVSS, BGAVSS, PD, SUB, [6:1] TRIM ; // Illegal Cadence preporučuje da se prvo definiše smer porta pre nego što se definiše

disciplina. U sledećem primeru su in i out definisani pre deklarisanja električnediscipline

discipline emptydisenddisciplinemodule comp1 (out, in, unknown1, unknown2) ;output out ;input in ;electrical out, in ;emptydis unknown1 ; // Declared with an empty discipline

Page 10: VERILOG A PV-3tnt.etf.bg.ac.rs/~amk/index_files/VERILOG_A_PV_3.pdf · specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja se primenjuje na datu granu

10analog

V(out) <+ 2 * V(in)endmodule

Moduo comp1 ima 4 porta: out, in, unknown1 i unknown2. U ovom modulu sedeklarišu električni portovi out i in, gde se i koriste. Port unknown1 je deklarisan upraznoj disciplini i ne može se koristiti u analognom bloku jer nema načina da sepristupi ovom signalu. Međutim port unkonown1 se može koristiti u listi portova,gde nasleđuje prirodu portova modula instanci koji su povezani sa njim.

Pošto se unknown2 pojavljuje u listi portova, a nije deklarisan u telu modula,Verilog-A ga implicitno deklariše kao skalarni port sa podrazumevanomdisciplinom. Podrazumevani tip discipline je wire.

Posmatrajmo sledeći primer:module five_inputs( portbus );input [0:5] portbus;electrical [0:5] portbus;real x;analog begin

generate i ( 0,4 )V(portbus[i]) <+ 0.0;

endendmodule

Page 11: VERILOG A PV-3tnt.etf.bg.ac.rs/~amk/index_files/VERILOG_A_PV_3.pdf · specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja se primenjuje na datu granu

11 U prethodnom primeru moduo five_inputs koristi port portbus. To je jedini port koji

se pojavljuje u listi, ali se unutar modula definiše sa opsegom U prethodna dva primera su ilustrovana dva načina korišćenja netova u modulima

• Port u modulu se može definisati dajući listu netova u naredbi za opis modula• Ponašanje modula se može opisati i deklarisanjem i korišćenjem netova u

okviru tela modula Kada se želi opisati konzervativni sistem, moraju se koristiti konzervativne

discipline za definisanje mreža. Kada se želi opisati protok signala, ili mešovitisignali i konzervativni sistem, može se definisati mreže sa disciplinama protokola.

Kao rezultat veza portova u analognim mrežama, jedan čvor može biti vezan zabrojne mreže različitih disciplina.

Doprinos struje čvoru koji je vezan samo za discipline potencijala su nedozvoljene.Potencijal takvog čvora je zbir svih potencijalnih doprinosa, ali protok za takav čvornije definisan.

Mreže disciplina protoka signala u modulima ne smeju biti vezane za ulazno-izlazneportove i ne smeju doprinositi potencijalu za ulazne portove.

Da bi se pristupilo abstol koji je povezan sa mrežama potencijala, ili protoka, trebakoristiti formu net.potential.abstol , ili net.flow.abstol

Page 12: VERILOG A PV-3tnt.etf.bg.ac.rs/~amk/index_files/VERILOG_A_PV_3.pdf · specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja se primenjuje na datu granu

12 Imenovana grananja Koriste se za deklarisanje puta između dve mreže u kontinualnoj disciplini. Cadence preporučuje da se koriste imenovana grananja, naročito kada se debaguje

sa komandom Tcl. Na primer, lakše je uneti value branch1 nego value \vect1[5]vec2[1] i onda računati razliku između vraćenih vrednosti.

Sintaksa:branch_declaration ::=

branch list_of_branches ;list_of_branches ::=

terminals list_of_branch_identifiersterminals ::=

( scalar_net_identifier )| ( scalar_net_identifier , scalar_net_identifier )

list_of_branch_identifiers ::=branch_identifier| branch_identifier , list_of_branch_identifiers

scalar_net_identifier mora biti ili skalarna mreža ili jedan element vektorske mreže. Deklarisanje grananja se može uraditi jedino u modulu. Ne smeju se kombinovati

eksplicitna i implicitna deklarisanja za jednu granu. Skalarni netovi koji povezuju deklaraciju i granu se zovu terminali grana. Ako se

specificira jedan net, Verilog-A podrazumeva da je drugi net masa.

Page 13: VERILOG A PV-3tnt.etf.bg.ac.rs/~amk/index_files/VERILOG_A_PV_3.pdf · specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja se primenjuje na datu granu

13 Terminali grana moraju biti kompatibilni sa disciplinama. Posmatrajmo sledeća deklarisanja

voltage [5:0] vec1 ; // Declares a vector netvoltage [1:6] vec2 ; // Declares a vector netvoltage sca1 ; // Declares a scalar netvoltage sca2 ; // Declares a scalar netbranch (vec1[5],vec2[1]) branch1, (sca1,sca2) branch2 ;

branch1 je dobro deklarisana jer je svaki terminal grane jedan element net vektora.Druga grana, branch2, je takodđe dobro deklarisana jer su oba čvora sca1 i sca2skalarni netovi.

Implicitna grananja Kao što Cadence preporučuje, može se referencirati na ime grane sa samo jednim

identifikatorom Alternativno, može biti lakše da se referencira na granu pomoću njenog terminala

grane. U sledećem primeru se koristi deklarisanje implicitne grane. Međutim, ne smeju se

kombinovati imenovana i implicitna deklarisanja za jednu granu.

Page 14: VERILOG A PV-3tnt.etf.bg.ac.rs/~amk/index_files/VERILOG_A_PV_3.pdf · specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja se primenjuje na datu granu

14module diode (a, c) ;inout a, c ;electrical a, c ;parameter real rs=0, is=1e-14, tf=0, cjo=0, phi=0.7 ;parameter real kf=0, af=1, ef=1 ;analog begin

I(a, c) <+ is*(limexp((V(a, c)-rs*I(a, a))/$vt) - 1);I(a, c) <+ white_noise(2* `P_Q * I(a, c)) ;I(a, c) <+ flicker_noise(kf*pow(abs(I(a, c)),af),ef);

endendmodule

Prethodni primer koristi implicitna grananja, a ekvivalentan je sledećem primeru koji koristi imenovana grananja.

module diode (a, c) ;inout a, c ;electrical a, c ;branch (a,c) diode, (a,a) anode ; // Declare named branchesparameter real rs=0, is=1e-14, tf=0, cjo=0, phi=0.7 ;parameter real kf=0, af=1, ef=1 ;analog begin

I(diode) <+ is*(limexp((V(diode)-rs*I(anode))/$vt) - 1);I(diode) <+ white_noise(2* `P_Q * I(diode)) ;I(diode) <+ flicker_noise(kf*pow(abs(I(diode)),af),ef);

endendmodule

Page 15: VERILOG A PV-3tnt.etf.bg.ac.rs/~amk/index_files/VERILOG_A_PV_3.pdf · specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja se primenjuje na datu granu

15

Primer za implicitna i eksplicitna grananja

Paralelno RLC kolo

Implicitno grananje:module rlc (a, b);inout a,b; electrical a,b;parameter real R=1k exclude 0;parameter real C=1p;parameter real L=1n exclude 0;analog begin

I(a,b) <+ V(a,b)/R;I(a,b) <+ ddt(C*V(a,b));I(a,b) <+ idt(V(a,b)/L);

endendmodule

Page 16: VERILOG A PV-3tnt.etf.bg.ac.rs/~amk/index_files/VERILOG_A_PV_3.pdf · specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja se primenjuje na datu granu

16

Eksplicitno grananje:module rlc (a, b);inout a,b; electrical a,b;parameter real R=1k exclude 0;parameter real C=1p;parameter real L=1n exclude 0;branch (a,b) res, cap, ind;analog begin

I(res) <+ V(res)/R;I(cap) <+ ddt(C*V(cap));I(ind) <+ idt(V(ind)/L);

endendmodule

Page 17: VERILOG A PV-3tnt.etf.bg.ac.rs/~amk/index_files/VERILOG_A_PV_3.pdf · specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja se primenjuje na datu granu

Naredbe u analognim blokovima

Naredbe dodeleU Verilog-A postoje nekoliko vrsta naredbi dodele vrednosti: proceduralne naredbe dodele,naredba za dodelu vrednosti grane i indirektne naredba dodele. Proceduralna naredba dodele se koristi da bi se modifikovale cele i realne promenljive Naredbe za dodelu vrednosti grane i indirektne naredbe dodele vrednosti se upotrebljavaju zamodifikaciju vrednosti grana, potencijal i protok.

Proceduralne naredbe dodeleprocedural_assignment ::=

lexpr = expression ;lexpr ::=

integer_identifier| real_identifier| array_element

array_element ::=integer_identifier [ constant_expression ]| real_identifier [ constant_expression ]

17

Page 18: VERILOG A PV-3tnt.etf.bg.ac.rs/~amk/index_files/VERILOG_A_PV_3.pdf · specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja se primenjuje na datu granu

Leva strana operanda mora biti celobrojna, realna, ili element celobrojnog ili realnog niza. Tipleve strane određuje vrstu dodele vrednosti.

Desni operand može biti bilo koji proizvoljni skalarni izraz iz legalnog operanda i operator.

U sledećem fragmentu koda promenljivoj phase se dodeljuje realna vrednost. Ta vrednostmora biti realna jer je phase definisana kao realna promenljiva.

real phase ;analog begin

phase = idt( gain*V(in) ) ; Proceduralna naredba dodele vrednosti se može koristiti i za dodeljivanje vrednosti nizovima.

Ako je r promenljiva definisana kao real r[0:3], sum ;

tada se može izvršiti dodela vrednosti članovima nizar[0] = 10.1 ;r[1] = 11.1 ;r[2] = 12.1 ;r[3] = 13.1 ;sum = r[0] + r[1] + r[2] + r[3] ;

18

Page 19: VERILOG A PV-3tnt.etf.bg.ac.rs/~amk/index_files/VERILOG_A_PV_3.pdf · specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja se primenjuje na datu granu

Naredbe za dodelu vrednostigrane

Koristi se za modifikaciju vrednosti signalabranch_contribution ::=

bvalue <+ expression ;bvalue ::=

access_identifier ( analog_signal_list )analog_signal_list ::=

branch_identifyer| node_or_port_identifier| node_or_port_identifier , node_or_port_identifier

bvalue specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja seprimenjuje na datu granu

expression može biti linearan, nelinearan, ili dinamički izraz Ova naredba se mora nalaziti unutar analognog bloka. Kao što se vidi proceduralno dodeljivanje vrednosti i dodeljivanje vrednosti grane se značajno

razlikuju. Proceduralno dodeljivanje se koristi samo na promenljivu, dok se naredba zadodelu vrednosti grane primenjuje na pristupnu funkciju.

Proceduralne naredbe dodele dodeljuju novu vrednost promenljivoj, dok se u drugom slučajuvrednost dodaje na prethodnu vrednost.

19

Page 20: VERILOG A PV-3tnt.etf.bg.ac.rs/~amk/index_files/VERILOG_A_PV_3.pdf · specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja se primenjuje na datu granu

Evaluacija naredbe za dodelu vrednosti grane

Procedura:1. Simulator procenjuje desnu stranu operanda2. Simulator dodaje vrednost na prethodno zapamćenu vrednost grane3. Na kraju evaluacije analognog bloka simulator dodeljuje sumiranu vrednost izvornoj grani Na primer u električnoj disciplini fragment koda

V(n1, n2) <+ expr1 ;V(n1, n2) <+ expr2 ;

ekvivalentan je koduV(n1, n2) <+ expr1 + expr2 ;

20

Page 21: VERILOG A PV-3tnt.etf.bg.ac.rs/~amk/index_files/VERILOG_A_PV_3.pdf · specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja se primenjuje na datu granu

Switch Branches

Switch branch je grana koja može biti potencijal ili protok, a koristi se pri modelovanjuidealnog prekidača

Grana može biti izvor potencijala kada se primenjuje potencijal, ili izvor protoka (struje) kadase primenjuje protok

21

Page 22: VERILOG A PV-3tnt.etf.bg.ac.rs/~amk/index_files/VERILOG_A_PV_3.pdf · specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja se primenjuje na datu granu

Switch Branches

Model idealnog prekidača:1. Kada je ulaz veći od praga, prekidač se zatvara a grana je u kratkom spoju. U ovom slučaju

naponski izvor nultog napona je ekvivalent kratkog spoja.2. Prekidač je otvoren u drugom slučaju i tada ne protiče struja. Tada umesto naponskog izvora

nultog napona grana postaje strujni izvor nulte struje.

module idealSwitch (pout, nout, psense, nsense);inout pout, nout, psense, nsense;electrical pout, nout, psense, nsense;branch (pout, nout) out, (psense, nsense) controlparameter real thresh;analog begin

if (V(control) > thresh)V(out) <+ 0; // switch closed

elseI(out) <+ 0; // switch opened

endendmodule

22

Page 23: VERILOG A PV-3tnt.etf.bg.ac.rs/~amk/index_files/VERILOG_A_PV_3.pdf · specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja se primenjuje na datu granu

Kontrolisani strujni i naponski izvori

VCVS VCCSmodule vcvs (po, no, pi, ni); module vccs (po, no, pi, ni);input pi, ni, input pi, ni,output po, no; output po, no;electrical po, no, pi, ni; electrical po, no, pi, ni;parameter real vgain=0; parameter real gm=0;Analog analog

V(po, no) <+ vgain *V(pi, ni); I(po, no) <+gm*V(pi, ni);endmodule endmodule

CCVS CCCSmodule ccvs (po, no, pi, ni); module cccs (po, no, pi, ni);input pi, ni, input pi, ni,output po, no; output po, no;electrical po, no, pi, ni; electrical po, no, pi, ni;parameter real rm=0; parameter real igain=0;Analog analog

V(po, no) <+ rm *I(pi, ni); I(po, no) <+ igain*I(pi, ni);endmodule endmodule

23

Page 24: VERILOG A PV-3tnt.etf.bg.ac.rs/~amk/index_files/VERILOG_A_PV_3.pdf · specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja se primenjuje na datu granu

Kontrolisani strujni i naponski izvori

Potential source branch Flow source branch

Sa izvorima potencijala i izvorima protoka se mogu modelovati četiri osnovna kontrolisanaizvora

VCVS VCCSbranch (pi,ni) in, (po,no) out; branch (pi,ni) in, (po,no) out;V(out) <+ vgain * V(in); I(out) <+ gm * V(in);

CCVS CCCSbranch (pi,ni) in, (po,no) out; branch (pi,ni) in, (po,no) out;V(out) <+ rm * I(in); I(out) <+ igain * I(in);

24

Page 25: VERILOG A PV-3tnt.etf.bg.ac.rs/~amk/index_files/VERILOG_A_PV_3.pdf · specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja se primenjuje na datu granu

Indirektne naredbe dodele vrednosti

Sintaksa:ndirect_branch_assignment ::=

target : equation ;target ::=

bvalueequation ::=

nexpr == expressionnexpr ::=

bvalue| ddt ( bvalue )| idt ( bvalue )| idtmod ( bvalue )

Primer:V(out) : V(in) == 0 ;

koji znači: odrediti V(out) tako da V(in) bude nula.V(in) je u prethodnoj jednačini naponska proba (detektuje se vrednost napona na krajevima grane) Indirektna dodela vrednosti se može koristiti samo unutar analognog bloka.

25

Page 26: VERILOG A PV-3tnt.etf.bg.ac.rs/~amk/index_files/VERILOG_A_PV_3.pdf · specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja se primenjuje na datu granu

Indirektne naredbe dodele vrednosti

Sledeći primer modeluje operacioni pojačavač sa beskonačnim naponskim pojačanjem. Indirektna dodela vrednosti ovde znači: odrediti V(out) tako da V(pin, nin) bude nula.

module opamp (out, pin, nin) ;output out ;input pin, nin ;voltage out, pin, nin ;analog

V(out) : V(pin, nin) == 0 ; // Indirect assignmentendmodule

Indirektna dodela vrednosti je nekompatibilna sa naredbom za dodelu vrednosti grane.Ukoliko grana ima indirektno dodeljenu vrednost, ta vrednost se ne može promeniti pomoćunaredbe za direktnu dodelu vrednosti grane.

26

Page 27: VERILOG A PV-3tnt.etf.bg.ac.rs/~amk/index_files/VERILOG_A_PV_3.pdf · specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja se primenjuje na datu granu

Blok naredbe

Koriste se kada je potrebno više naredbi grupisati tako da se ponašaju kao jedna naredba. Pojedinačne naredbe se sekvencijalno izvršavaju.

Sintaksa:seq_block ::=

begin [ : block_identifier { block_item_declaration } ]{ statement }

endblock_item_declaration ::=

parameter_declarationinteger_declaration| real_declaration

Ako se doda identifikator bloka, mogu se deklarisati lokalne varijable koje se koriste unutarbloka. Sve lokalne promenljive koje se deklarišu su statične. Drugim rečima, jedinstvenalokacija postoji za svaku lokalnu varijablu, a ulazak ili izlazak iz bloka ne utiče na njenuvrednost.

Sledeći primer ima dva bloka, a u svakom od njih se definišu lokalne varijable. Iako su nekevarijable sa istim imenom u oba bloka, to je regularno jer su one lokalnog tipa.

27

Page 28: VERILOG A PV-3tnt.etf.bg.ac.rs/~amk/index_files/VERILOG_A_PV_3.pdf · specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja se primenjuje na datu granu

Blok naredbe

integer j ;...

for ( j = 0 ; j < 10 ; j=j+1 ) beginif ( j%2 ) begin : odd

integer j ; // Declares a local variablej = j+1 ;$display ("Odd numbers counted so far = %d" , j ) ;

end else begin : eveninteger j ; // Declares a local variablej = j+1 ;$display ("Even numbers counted so far = %d" , j ) ;

endend

28

Page 29: VERILOG A PV-3tnt.etf.bg.ac.rs/~amk/index_files/VERILOG_A_PV_3.pdf · specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja se primenjuje na datu granu

Uslovne naredbe

Sintaksa:conditional_statement ::=

if ( expression ) statement1[ else statement2 ]

Ako se expression u potpunosti sastoji od izraza genvar, literalne numeričke konstante,parametara ili funkcija analize, statement1 i statement2 mogu uključivati analogne operatore.

Primer1: unutrašnja i spoljašnja if-else formaif (index > 0)

if (i > j) // The next else belongs to this ifresult = i ;

else // This else belongs to the previous ifresult = j ;

else $strobe ("Index < 0"); // This else belongs to the first if

29

Page 30: VERILOG A PV-3tnt.etf.bg.ac.rs/~amk/index_files/VERILOG_A_PV_3.pdf · specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja se primenjuje na datu granu

Primer2: jedan koristan oblik korišćenja if-else naredbeif ((value > 0)&&(value <= 1)) $strobe("Category A");else if ((value > 1)&&(value <= 2)) $strobe("Category B");else if ((value > 2)&&(value <= 3)) $strobe("Category C");else if ((value > 3)&&(value <= 4)) $strobe("Category D");else $strobe("Illegal value");

CASE naredba Naredba se koristi da bi se kontrolisalo koji se niz naredbi izvršava Sintaksa:

case_statement ::=case ( expression ) case_item { case_item } endcase

case_item ::=test_expression { , test_expression } : statement| default [ : ] statement

Default naredba je opciona. Upotreba više od jedne default naredbe nije dozvoljena Ako su expression i text_expression genvar izrazi, parametri ili analitičke funkcije, naredba

može uključivati analogne operatere

30

Page 31: VERILOG A PV-3tnt.etf.bg.ac.rs/~amk/index_files/VERILOG_A_PV_3.pdf · specificira izvornu granu signala i mora se sastojati od pristupne funkcije koja se primenjuje na datu granu

Primer u kome se određuje opseg promenljive value:real value ;...case (1)((value > 0)&&(value <= 1)) : $strobe("Category A");((value > 1)&&(value <= 2)) : $strobe("Category B");((value > 2)&&(value <= 3)) : $strobe("Category C");((value > 3)&&(value <= 4)) : $strobe("Category D");value <= 0 , value >= 4 : $strobe("Out of range");default $strobe("Error. Should never get here.");endcase

Primer: 4-input analog MUXcase (select)0: out=V(in0);1: out=V(in1);2: out=V(in2);3: out=V(in3);default: out=0;endcase

31