Documente Academic
Documente Profesional
Documente Cultură
la nivel structural
la nivel de flux de date
la nivel procedural
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
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.