Apuntes sobre Verilog

Tema 1. Breve Introducción a Verilog

18 de diciembre de 2021


1. Introducción a Verilog


Verilog fue desarrollado en 1983 por la compañía Automated Integrated Design como lenguaje para simular circuitos lógicos. Se estandariza en 1995 y es revisado en 2001 y 2005. Verilog es un método avanzado para el diseño de sistemas digitales y es capaz de describir tanto circuitos combinacionales como secuenciales.


Una vez tenemos el código Verilog terminado, podemos simularlo con un Test Bench o sintetizarlo en un ASIC o FPGA.


· ASIC: application-specific integrated circuit, es un tipo de circuito integrado diseñado para un fin concreto. Es un diseño final, no se puede modificar, por ejemplo: puertas lógicas, multiplexores, contadores, encoders…


· FPGA: es un diseño flexible, puede implementar casi cualquier circuito.

2. Módulos

Un módulo es la unidad básica de hardware. Un circuito digital se representa como una serie de módulos interconectados entre sí.

Cada módulo se conecta mediante nets con otros módulos a través de puertos de entrada y salida. 

Verilog se compone de dos tipos de módulos:


2.1 Módulos Descriptivos

Para modelar un circuito se emplean las palabras claves module / endmodule. Entre esas dos palabras clave se escriben las declaraciones que describen el circuito. 

module circuito2 ( input in1, in2, in3, in4, output out);

wire w1, w2;

or OR1 (w1, in1, in2);

or OR2 (w2, in3, in4);

and AND1 (out, w1, w2);

endmodule

Dentro de un módulo no se pueden emplear las palabras module / endmodule, es decir, cuando escribimos código Verilog, un módulo no puede contener otros módulos.


Sin embargo, sí se pueden crear copias de un módulo ya definido sin tener que volver a escribir el código que describe dicho circuito. Este proceso se llama Instanciar y consiste en crear copias del módulo auxiliar dentro del módulo principal. 

Al ser Verilog un lenguaje que describe hardware, no existe el concepto de invocar una función; lo que se hace es crear una copia del módulo que se invoca dentro del principal.


Al instanciar módulos creamos una jerarquía dentro del hardware.


2.2 Módulos de Estímulos 

También llamados Test Bench, proporcionan las entradas para simular el circuito. 

imagen cortesía Obijuan 

La imagen siguiente muestra la simulación de un circuito con la aplicación GTKWake.

imagen cortesía Obijuan