# Verilog

Verilog és un llenguatge de descripció de maquinari (HDL, de l'anglès Hardware Description Language) usat per modelar sistemes electrònics. El llenguatge, de vegades anomenat Verilog HDL, suporta el disseny, test i implementació de circuits analògics, digitals i de senyal mixta a diferents nivells d'abstracció. El llenguatge està definit pel Institute of Electrical and Electronics Engineers (IEEE) IEEE 1364-2005.
El IEEE 1364 estàndard defineix una lògica de quatre estats: 0, 1, Z (alta impedància) i X (valor lògic desconegut). En comparació VHDL, IEEE 1164, defineix una norma específica per a nou nivells.
Els dissenyadors de Verilog volien crear un llenguatge amb una sintaxi similar a la del Llenguatge C, de tal manera que li resultés familiar als enginyers i així fora ràpidament acceptada. El llenguatge té un preprocessador com C, i la majoria de paraules reservades de control, com ara "if" o "while", són similars. El mecanisme de format en les rutines d'impressió i en els operadors del llenguatge (i la seva precedència) també són similars. A diferència del llenguatge C, Verilog usa Begin / End en lloc de claus per definir un bloc de codi. D'altra banda la definició de constants en Verilog requereix la longitud de bits amb la seva base. Verilog no té estructures, punters o funcions recursives. Finalment el concepte de temps, molt important en un HDL, no es troba en C.
El llenguatge difereix dels llenguatges de programació convencionals en què l'execució de les sentències no és estrictament lineal. Un disseny en Verilog consisteix d'una jerarquia de mòduls. Els mòduls són definits amb conjunts de ports d'entrada, sortida i bidireccionals. Internament un mòdul conté una llista de cables i registres. Les sentències concurrents i seqüencials defineixen el comportament del mòdul, descrivint les relacions entre els ports, cables i registres. Les sentències seqüencials són col·locades dins d'un bloc begin / end i executades en ordre seqüencial, però totes les sentències concurrents i tots els blocs begin / end són executades en paral·lel en el disseny. Un mòdul pot contenir una o més instàncies d'un altre mòdul per definir un sub-comportament.
Un subconjunt de sentències en el llenguatge és sintetitzable. Si els mòduls en un disseny contenen només sentències sintetitzables, es pot usar programari per convertir o sintetitzar el disseny en una llista de nodes que descriu els components bàsics i els connectors que s'han d'implementar en maquinari. La llista de nodes pot llavors ser transformada en una forma descrivint les cel·les estàndard d'un circuit integrat, per exemple ASIC, o una cadena de bits per a un dispositiu de lògica programable (PLD) com pot ser una FPGA o un CPLD.

## Vegeu també

* Processador de senyals digitals
* FPGA
* VHDL
* SystemC
* ASIC

## Referències

* ↑ 1364-2005 - IEEE Standard for Verilog Hardware Description Language
* ↑ D. Michael Miller; Mitchell A. Thornton. Multiple valued logic: concepts and representations. 12. Morgan & Claypool Publishers, 2008 (SYNTHESIS LECTURES ON DIGITAL CIRCUITS AND SYSTEMS). ISBN 978-1-59829-190-2.

## Enllaços externs

* IEEE Std 1364-2005 – El Standard oficial de Verilog 2001 (no lliure).(anglès)
* IEEE P1364 – Grup de treball per aVerilog (inactiu).(anglès)
* IEEE P1800 – Grup de treball per SystemVerilog (subsdtitueix l'anterior).(anglès)
* Verilog syntax – Descripció sintactica. IEEE-1364 standard.(anglès)