Documente Academic
Documente Profesional
Documente Cultură
Introducere
Scopul HDL: De a descrie circuitul la nivel algoritmic (ca n cazul limbajului c) i la nivel de pori logice (e.g. poart SI) Simulare Sintez Cuvintele sunt mai bune dect imaginile
Lexic
Comentarii:
Dou tipuri:
// Comentariu
/* Aaceste comentarii se
extind pe mai multe linii. Utile pentru invalidarea codului la depanare */
Setul de caractere:
Tipuri de date
module sample (a,b,c,d); input a,b; output c,d; wire [7:0] b; reg c,d; integer k;
0,1,x,z
Reg
Pot fi sintetizate n registre, bistabile sau conexiuni Folosite n descrieri procedurale
Valori
0: valoare logic 0 sau condiie fals; 1: valoare logic 1 sau condiie adevrat; x: valoare logic necunoscut; z: stare de nalt impedan.
Numere
Numere ntregi
13 numrul 13 exprimat n baza 10 (n binar 1101) -13 numrul -13 exprimat n baza 10 (n binar, pe 5 bii 1011, iar pe 6 bii 10011) 4'b1010 numrul 10 exprimat n binar pe 4 bii 12'o327 numr exprimat pe 12 bii n baza 8 16'hBEEF numr exprimat pe 16 bii n baza 16 -8'd3 numr exprimat legal ca fiind complementul fa de 2 al numrului pozitiv 3, reprezentat pe 8 bii (echivalent cu 8'b1111_1101) 16 'h DEAD form legal cu spaii ntre dimensiune i caracterul ' i ntre baz de numeraie i valoare 8'b101 numr exprimat n baza 2 reprezentat pe 8 bii ca 8'b00000101
Numere ntregi
'b1010 form legal, dimensiunea poate lipsi (numrul este reprezentat pe numrul maxim de bii, n acest caz 4'hFF numr exprimat n baza 16 reprezentat pe 8 bii 8'b0000_0101 numr echivalent cu forma anterioar (caracterele _ sunt ignorate) 3'b0110_0101 numr echivalent cu 3'b101 (caracterele din stnga sunt trunchiate dac valoarea are mai muli bii dect dimensiunea precizat explicit) 8'b0_11_0_0101 folosire legal a caracterului de subliniere pentru delimitare 8'd260 numr echivalent cu 4 n baza 10 (provenit din trunchierea caracterului cel mai semnificativ al reprezentrii n binar 9'b1_0000_0100.) 8'bx valoare nedefinit extins pe 8 bii xxxxxxxx 4'bz valoare z extins pe 4 bii zzzz
8
Numere ntregi
Forme ilegale
8'd-3 numr exprimat ilegal (valoarea nu poate fi negativ) 4' b0010 form ilegal cu spaii ntre caracterul ' i baza de numeraie width'b1010 form ilegal, dimensiunea nu poate fi un parametru sau o expresie 8'b_0110_0101 folosire ilegal a caracterului de subliniere la nceputul valorii
Numere reale
Numere zecimale (cu virgul)
Forme ilegale
5.3E-3, 5
Numerele reale nu sunt sintetizabile. Numerele reale sunt automat convertite la numere ntregi prin rotunjire.
10
Valorile datelor
Constante:
Parameteri:
parameter n=4; wire [n-1:0] t, d; `define Reset_state = 0, state_B =1, Run_state =2, finish_state = 3; if(state==`Run_state)
11
Tipuri de date
Tipul net: Acest tip de date modeleaz o conexiune fizic ntre elementele structurale. Valoarea unei date de acest tip este determinat de sursa sa, care poate fi o specificaie de atribuire continu assign sau o instaniere de component. Dac nu exist nici o surs (driver de semnal) atunci data de tip net pstreaz valoarea implicit z. Cel mai folosit tip din aceast categorie este tipul wire.
12
Tipul register: Acest tip de date modeleaz un element abstract de stocare a datelor. Valorile obiectelor de acest tip pot fi atribuite din interiorul specificaiilor always i initial. Valoarea implicit a acestui tip de date este x. Tipul de date reg modeleaz caracteristicile hardware care permit unei valori logice s fie memorate ntr-un circuit bistabil sau circuit de zvorre (latch) Un reg este o abstracie pentru un element de memorare hardware dar nu corespunde direct unui element fizic de memorie. Dimensiunea implicit este 1 bit.
13
Net (conectivitate)
(11 tipuri) wire, tri, wand, wor, triand, trior, supply0, supply1, tri0, tri1, trireg
Register (memorare)
14
wire stabilete conexiuni, fr comportament logic sau funcionalitate implicat tri - stabilete conexiuni, fr comportament logic sau funcionalitate implicat. Are aceeai funcionalitate ca si wire dar este identificat distinctiv pentru a indica o conexiune hardware tri-state wand o legatur care are mai multe surse. Modeleaz cazul hardware ce presupune implementri de tip SI cablat (wired and), ex. tehnologia colector n gol (open collector)
15
wor - o legatur care are mai multe surse. Modeleaz cazul hardware ce presupune implementri de tip SAU cablat (wired or), ex. tehnologia emitori cuplai. triand -o legatur cu mai multe surse. Modeleaz cazul hardware SI cablat. Legtura este de tip tri-state trior - o legatur cu mai multe surse. Modeleaz cazul SAU cablat. Legtura este de tip tristate
supply0 o legtur global legat la masa circuitului supply1 o legtur global care este legat la sursa de alimentare tri0 o legtur legat la mas printr-o conexiune de tip pulldown tri1 o legtur legat la sursa de alimentare printr-o conexiune de tip pullup trireg o legtur care modeleaz sarcina stocat ntr-o conexiune fizic
reg memoreaz o valoare logic integer utilizat pentru calcule time memoreaz timpul sub forma unei mrimi fr semn reprezentat pe 64 de bii real memoreaz valorile (ex. ntrzieri) ca numere reale realtime memoreaz valorile timpului ca numere reale
Operatori
Verilog are un set robust de operatori pentru manipularea diferitelor tipuri de date Folosii:
n partea dreapt a expresiilor de atribuire continu i instruciuni procedurale n expresii booleene n instruciuni condiionale sau cu operatori condiionali
Operatori
Rezultat cuvnt binar cuvnt binar bit valoare boolean valoare boolean cuvnt binar expresie
Operatori aritmetici
+ - adunare * - nmulire, - - scdere / - mprire, % - Modulo
^ - SAU EXCLUSIV (XOR) 5b11001 ^ 5b01101 ==> 5b10100 & - SI (AND) : 5b11001 & 5b01101 ==> 5b01001 | - SAU (OR): 5b11001 | 5b01101 ==> 5b11101 ~^ sau ^~ - SAU EXCLUSIV negat (echivalen) (XNOR): 5b11001 ~^ 5b01101 ==> 5b01001
Operatori de reducere
Operatorii unari ce ntorc o valoare pe 1 bit & : SI (AND) | :SAU (OR) ~& : SI-NU (NAND) ~| : SAU-NU (NOR) ^ : SAU-EXCLUSIV (XOR) &(010101)=0 |(010101)=1 ~&(010101)=1 ~|(010101)=0 ^(010101)=1
Operatori logici
Operatorii egalitate i inegalitate tip case sunt folosite pentru a determina dac dou cuvinte sunt identice la nivel de bit inclusiv biii care au valorile x i z.
Operatori (exemple)
reg [3:0] a, b, c, d; wire[7:0] x,y,z; parameter n =4; //operatori aritmetici c = a + b; d = a *n; //operatori logici If(x==y) d = 1; else d =0; //operatori la nivel de bit d = a ~^ b; //operatori logici i de reducere if ((x>=y) && (z)) a=1; else a = !x;
25
Operatori relaionali
<: mai mic <=: mai mic sau egal >: mai mare >=: mai mare sau egal
26
Operatori de deplasare
1011_0011 >> ==> 0101_1001 1011_0011 >> 3==>0001_0110 1011_0011 << ==> 0110_0110 1011_0011 << 3==>1001_1000
27
Operatori condiionali
(cond) ? (rezultat cond adevarat) : (rezultat cond fals) X=(A==B) ? A:B; wire[15:0] bus_a= drive_bus_a ? data: 16'bz Efect drive_bus_a =1 drive_bus_a =0 drive_bus_a =x pune data pe bus_a pune bus_a pe stare de nalt impedan pune bus_a ntr-o stare nedeterminat
28
Operatori de concatenare
Construiete un singur cuvnt din doi sau mai muli operanzi. Util n a realiza magistrale
{ } (concatenare)
29
Operatori (exemple)
module sample (a, b, c, d); input [2:0] a, b; output [2;0] c, d; wire z,y; // operatori de reducere assign z = ~| a; c = a * b; // opertori relationali If(a==b) d = 1; else d =0; operatori pe bit d = a ~^ b;
//operatori relationali si de reducere if ((a>=b) && (z)) y=1; else y = !x; // operatori de deplasare assign d << 2; //operator de concatenare assign {carry, d} = a + b; assign c = {2{carry},2{1b0}}; // c = {carry,carry,0,0} //operatori conditionali assign c= (inc==2)? a+1:a-1;
30
Precedena operatorilor
Nivel nalt Operator Unari Adunare, Scdere Deplasare Relaionali Sczut Condiionali Simbol +-!~ +<< >> < <=.... ?:
31