Sunteți pe pagina 1din 2

Comportamentul unui modul poate fi descris în trei moduri:

la nivel structural
la nivel de flux de date
la nivel procedural

Atribuirile continue (assign) reprezintă relații directe între semnalele. Ele


urmează câteva reguli:

Variabilă căreia îi atribuim o valoare (variabila din stânga) trebuie să fie de tip
wire.
Expresia din dreapta poate folosi operatori și variabile de tip wire și reg.
Nu o putem folosi în interiorul unui bloc initial sau always

Operatorii pe care îi putem folosi în Verilog sunt:

Aritmetici:
Unari: - (schimbare semn - complementul față de 2)
Binari: +, -, *, /, % (modulo)
Logici:
Unari: ! (negare logică - orice nenul devine 0, 0 devine 1)
Binari: && (și logic), || (sau logic)
Relaționali: >, <, >=, <=, ==, !=
Pe biți:
Unari: ~ (negare pe biți - complementul față de 1)
Binari: & (și pe biți), | (sau pe biți), ^ (xor pe biți), ~^ sau ^~ (exclusive nor
- xnor)
Alți operatori:
Concatenare: {<var0>, …, <varn>} (prin concatenarea unei variabile a, pe 3 biți, cu
o variabilă b,
pe 4 biți, se obtine o variabilă pe 7 biti ai cărei primi 3 biți sunt cei din a iar
următorii 4 din b)
Deplasare stânga (shift left): <<
Deplasare dreapta (shift right): >>
Operator ternar: (<cond>) ? <expr_true> : <expr_false>; (evaluează condiția iar,
dacă ea este adevărată,
returnează valoarea primei expresii, altfel returnează valoarea celei de-a doua
expresii)
Blocurile initial și always marchează secțiunile de cod procedural ale modulului,
iar în interiorul lor se pot
folosi construcții de control similare celor din limbajele procedurale.

Fiecare semnal poate fi prefixat cu posedge sau negedge, pentru a specifica


execuția doar la fronturile pozitive sau negative ale semnalului.
Atribuiri non-blocante: <= - sunt folosite pentru descrierea logicii secvențiale

Comportamentul unui modul poate fi descris în trei moduri:


la nivel structural
la nivel de flux de date
la nivel procedural
Comportamentul unui modul poate fi descris în trei moduri:
la nivel structural (folosește primitive și module)
la nivel de flux de date (folosește atribuiri continue și expresii)
la nivel procedural (folosește programarea procedurală) în blocuri initial și/sau
always
Comportamentul unui modul poate fi descris în trei moduri:
la nivel structural (folosește primitive și module)
la nivel de flux de date (folosește atribuiri continue și expresii)
la nivel procedural (folosește programarea procedurală) în blocuri initial și/sau
always

przenta lui @ face ca blocul sa se execute doar la aparitia unui eveniment

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