Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial Internet of Things >> Incrustado

Verilog 101: Construyendo sus primeros módulos de descripción de hardware

En este artículo, estudiaremos la estructura básica de un módulo Verilog, veremos ejemplos del tipo de dato "wire" de Verilog y su forma vectorial, y tocaremos brevemente algunas diferencias entre VHDL y Verilog.

En este artículo, estudiaremos la estructura básica de un módulo Verilog, veremos ejemplos del tipo de dato "wire" de Verilog y su forma vectorial, y tocaremos brevemente algunas diferencias entre VHDL y Verilog.

Verilog y VHDL son dos lenguajes comúnmente usados para describir circuitos digitales. AAC tiene una serie de artículos técnicos discutiendo los conceptos básicos de VHDL. Este artículo funciona como punto de partida para nuestra serie sobre Verilog.

¿Necesito tanto Verilog como VHDL?

Antes de comenzar nuestra discusión, abordemos una pregunta obvia: ¿realmente necesitamos conocer ambos lenguajes?

Tanto Verilog como VHDL son herramientas poderosas que pueden usarse para diseñar un circuito digital complejo. Aunque hay algunas diferencias entre estos dos HDLs, usted es libre de elegir uno para dominar y usar. Sin embargo, creo que en algún punto se beneficiará de tener al menos una comprensión básica de ambos lenguajes. A veces, como diseñadores, necesitamos un segmento de código de muestra para obtener una idea sobre cómo codificar un proyecto. Navegamos por la red por horas y finalmente encontramos lo que necesitamos pero no tiene sentido para nosotros —está escrito en el HDL que nos es completamente desconocido. Sin tener una comprensión básica del lenguaje, es posible que no podamos entender completamente las técnicas.

Evolución de Verilog

Verilog fue diseñado a principios de 1984 por Gateway Design Automation (aproximadamente tres años después de que VHDL fuera iniciado por el Departamento de Defensa de EE. UU.). Con el apoyo del DoD, VHDL se convirtió en estándar IEEE en 1987. Verilog no llegó a la escena hasta 1995. Hoy, tanto VHDL como Verilog son HDLs populares y las herramientas de diseño FPGA usualmente soportan ambos lenguajes.

La palabra "Verilog" es un acrónimo de las palabras "verification" y "logic" porque el lenguaje fue sugerido primero como herramienta de simulación y verificación. Comencemos con conceptos y sintaxis de Verilog.

Ejemplo 1

Como primer ejemplo, escribamos el código Verilog para el circuito representado en la Figura 1.

 

Verilog 101: Construyendo sus primeros módulos de descripción de hardware

Figura 1. Circuit_1
 

Hay dos entradas y una salida. Los puertos son todos de un bit de ancho. La funcionalidad del circuito es hacer AND de las dos entradas y poner el resultado en el puerto out1.

Una posible descripción Verilog para el módulo Circuit_1 es:

Verilog 101: Construyendo sus primeros módulos de descripción de hardware

Líneas 1 y 8

Estas dos líneas usan las palabras clave "module" y "endmodule" para especificar que las líneas entre ellas (líneas 2 a 7) describen un circuito llamado "Circuit_1". Este nombre es arbitrario y nos permite referirnos a este circuito más tarde.

 

Líneas 2 a 6

Estas líneas especifican la interfaz de "Circuit_1" con su entorno circundante. Los puertos de entrada y salida se describen usando las palabras clave "input" y "output". Estas palabras clave son seguidas por otra palabra clave "wire" y luego el nombre del puerto (Ver Figura 1). ¿Qué especifica la palabra clave "wire"? "Wire" es un tipo de dato Verilog que representa un cable físico en el diseño. Discutiremos los tipos de dato Verilog con mayor detalle en un artículo futuro, pero por ahora sabemos que habría tres cables llamados a, b y out1 en nuestro módulo y, como se especifican en la declaración de puertos, corresponden a la interfaz del módulo.

 

Línea 7

Esta línea usa el operador AND bit a bit, es decir, &, para describir la funcionalidad del circuito. La palabra clave "assign" pone a&b en el puerto de salida out1. Este tipo de asignación se llama asignación continua. Se llama así porque la asignación está siempre activa cuando un operando en el lado derecho cambia, a&b se evalúa y asigna a out1. Podemos imaginar una asignación continua como un circuito combinacional cuya salida se actualiza continuamente dependiendo de sus entradas. En nuestro ejemplo, este circuito combinacional es una simple compuerta AND. También existen asignaciones procedimentales en Verilog HDL que se discutirán en artículos futuros.

Ahora, podemos usar un paquete de software como Xilinx ISE para verificar el código anterior. Puede encontrar un tutorial basado en Verilog de este software aquí (PDF).

Comparando el Ejemplo 1 con el código VHDL

La Figura 2 a continuación muestra las descripciones Verilog y VHDL para el módulo Circuit_1.

 

Verilog 101: Construyendo sus primeros módulos de descripción de hardware

Figura 2. Comparación de descripciones Verilog y VHDL para Circuit_1.

 

Como puede ver, tenemos que incluir algunas bibliotecas al codificar en VHDL. Estas bibliotecas dan la definición para los tipos de dato y operadores. Considerando la adición de estas bibliotecas y el formato general de VHDL, observamos que el código VHDL es más verboso. Sin embargo, esta verbosidad no carece de ventajas. Por ejemplo, la característica de gestión de bibliotecas de VHDL puede ser útil al modelar sistemas de alto nivel. En artículos futuros, discutiremos ocasionalmente los pros y contras de estos dos HDLs.

Verilog tiene un sistema de cuatro valores

Hay cuatro valores básicos usados en la mayoría de los tipos de dato Verilog. Los cables definidos en el Listado 1 pueden tomar uno de los siguientes valores:

El tipo de dato VHDL std_logic puede tomar nueve valores diferentes pero sus valores comúnmente usados son '0', '1', 'Z', y '-' ('-' denota don't-care).

Ejemplo 2

Como otro ejemplo, escribamos el código Verilog para el circuito (que etiquetaremos Circuit_2) mostrado en la Figura 3.

 

Verilog 101: Construyendo sus primeros módulos de descripción de hardware

Figura 3. Circuit_2

 

El siguiente código Verilog describe este circuito:

Verilog 101: Construyendo sus primeros módulos de descripción de hardware

Los elementos usados en el código anterior son similares a los del Ejemplo 1, excepto que se define una señal interna en la línea 10 del código. La palabra clave "wire" se usa para especificar el tipo de dato de esta conexión. Como se discutió arriba, el tipo de dato "wire" se traduciría a un cable físico en el diseño.

El código anterior también usa algunos nuevos operadores bit a bit de Verilog: ~ para NOT y | para operación OR. Otro operador bit a bit útil es ^ para la operación XOR. La Figura 4 muestra tanto las descripciones Verilog como VHDL para el módulo Circuit_2. Tales comparaciones pueden ayudarle a ver las diferencias y similitudes entre estos dos lenguajes.

Verilog 101: Construyendo sus primeros módulos de descripción de hardware

Figura 4. Comparación de descripciones Verilog y VHDL para Circuit_2.

Ejemplo 3

Para nuestro tercer y último ejemplo, daremos el código Verilog para el esquema mostrado en la Figura 5.

 

Verilog 101: Construyendo sus primeros módulos de descripción de hardware

Figura 5. Esquema para el ejemplo 3.

 

Como puede ver, hay una cierta relación entre los puertos de entrada azules y los rojos: las entradas correspondientes se combinan con el operador AND. El resultado se asigna a un puerto de salida. En tales casos, podemos agrupar las señales y tratarlas como un vector. Esto hace el código compacto y legible.

Usando el concepto de vector en Verilog, podemos extender fácilmente el código del Listado 1 para describir el circuito anterior (Ver el código en el Listado 3 a continuación).

Verilog 101: Construyendo sus primeros módulos de descripción de hardware

Tenga en cuenta que el rango de índice de los vectores puede ser ascendente ([0:2] como se usó arriba) o descendente ([2:0]). Aunque se usó el formato ascendente arriba, suele ser menos propenso a errores usar la forma descendente. Esto se debe a que el estilo descendente coincide con nuestra percepción de que la posición más a la izquierda de un número binario tiene el índice más alto. Tenga en cuenta que los vectores también se usan en VHDL.

La Figura 6 a continuación muestra una simulación ISE del código del Listado 3.

Verilog 101: Construyendo sus primeros módulos de descripción de hardware

Figura 6. Simulación ISE del código del Ejemplo 3.

 

En este artículo, discutimos que es buena idea aprender tanto VHDL como Verilog, estudiamos la estructura básica de un módulo Verilog, y nos familiarizamos con el tipo de dato "wire" de Verilog y su forma vectorial. También tocamos brevemente algunas diferencias entre VHDL y Verilog. El próximo artículo en nuestra serie de Verilog discutirá el diseño de circuitos combinacionales en Verilog.

Incrustado

  1. Optimice su Maquinaria Cat®: Guía Definitiva de My.Cat.com
  2. Primeros Pasos con TJBot: Construye, Configura y Controla por Voz tu Robot IA
  3. Guía Paso a Paso para Desplegar una Pasarela LoRa RAK 831 en Raspberry Pi 3
  4. Construye una puerta de enlace LoRa con el módulo RAK831 en Raspberry Pi 3 – Guía paso a paso
  5. Descubra el Grupo Eagle: Su Socio para Fabricación Metálica de Calidad
  6. Guía práctica de impresión 3D cerámica: Técnicas, materiales y consejos de diseño
  7. IA en seguros: Guía práctica para implementación real
  8. Domina la inferencia Edge AI: Guía práctica para insights accionables
  9. Despliega Node-RED en PLCnext con Docker: Guía paso a paso
  10. Crea tu primera aplicación Go en PLCnext: Guía para principiantes
  11. Code-Ready Containers: Guía práctica para automatización de procesos cloud-native con Red Hat OpenShift