Instanciar Módulos en Verilog

A medida que nuestras arquitecturas comienzan a aumentar su complejidad, esto es, comenzamos a realizar descripciones de módulos que hacen uso o están conformados por otros módulos más pequeños o con propósitos muy específicos, se hace especialmente útil saber como instanciar estos módulos más pequeños para tener una descripción estructural, entendible, compacta y eficaz.

En Verilog podemos utilizar la siguiente sintaxis:

module_name      instance_name(.port(signal),..,.portn(signaln))

Donde module_name es el nombre del módulo que queremos instanciar, instance_name es el nombre de la instancia que vamos a generar a nivel local, portn y signaln equivalen respectivamente al nombre del puerto o variable declarada como entrada o salida del módulo que queremos instanciar (los nombres que aparecen en el prototipo de dicho módulo) y signaln será el nombre de las señales que tenemos en el módulo en el cual nos encontramos trabajando y que nos servirán para interactuar con otros sistemas en dicho módulo.

Esta descripción como siempre hemos dicho, se puede entender de forma más clara mediante un ejemplo, en esta ocasión vamos a implementar un registro de desplazamiento de 3 bits con verilog. En primer lugar, para este ejemplo vamos a describir en un documento titulado flipflop_d.v el diseño de un Flip Flop tipo D, tal como se muestra en el siguiente código:

flip-flop tipo d en verilog

Una vez diseñado el elemento principal para un registro de desplazamiento, vamos a crear un nuevo archivo en nuestro proyecto con el nombre shift_reg.v, el cual contendrá el diseño del RD, esta descripción se muestra a continuación (existen otras formas de describir el mismo diseño).

shift register verilog

Tal como se puede ver, las “variablesq, d, rst y clk están declaradas en el módulo que describe al flip-flop tipo D y las “variables” in, out, clk y rst, están declaradas en el módulo en el cual nos encontramos trabajando (en este caso shift_reg) y se puede ver entonces con el ejemplo anterior, la forma en que se realiza la instanciación de los módulos tipo flip-flop y además se muestra la forma de realizar las conexiones de forma explicita entre señales y puertos.

Espero que este artículo te haya resultado útil, si crees que puede ser útil para alguien más, ayúdanos a compartirlo.


Author: Julio César Echeverri Marulanda

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s