Tutorial de Verilog: 5 datos interesantes para saber

Tutorial de Verilog: Puntos de discusión

  • ¿Qué es Verilog?
  • Historia y estandarización
  • Diseño Verilog
  • Modelado Verilog
  • Operadores Verilog

Para otros temas relacionados con Verilog Tutorial, ¡Haz clic aquí!

¿Qué es Verilog?

Verilog es la combinación de los términos "Verificación" y "Lógica". Es un lenguaje de descripción de hardware o un tipo especial de lenguaje de programación que describe las implementaciones de hardware de sistemas y circuitos digitales. Es un lenguaje fuertemente tipado y se debe recordar que no es un lenguaje de programación.

Para obtener el tutorial de VHDL paso a paso, ¡Haz clic aquí!

Historia y estandarización de Verilog

Prabhu Goel, Chi-Lai Huang, Douglas Warmke y Phil Moorby desarrollaron Verilog alrededor del año 1983-1984. El primer nombre fue “Automated Integrated Design Systems”, que pasó a llamarse “Gateway Design Automation” y fue comprado por Cadence en el año 1990. Cadence es ahora el propietario de los derechos de autor de Verilog y Verilog-XL.

Principalmente, el uso de Verilog fue para definir e iniciar la simulación. Más tarde, la popularidad del lenguaje planteó la demanda de un mayor desarrollo y conduce a la síntesis de los circuitos lógicos.

640px Bus Verilog.svg
Verilog Bus, Crédito de imagen - Carga inductivaAutobús Verilog, marcado como dominio público, más detalles sobre Wikimedia Commons

Tutorial de Verilog: Normalización

La popularidad de VHDL cadencia forzada para publicar Verilog Language como fuente abierta. La primera estandarización de Verilog por IEEE fue etiquetada como 1364-1995 y nombrada como Verilog-95.

RevisionesActualizaciones
IEEE 1364-2001Verilog-2001. Admite variables firmadas y nido. Muy utilizado por los paquetes EDA.
IEEE 1364-2005Verilog 2005. Surgió con pequeñas correcciones y aclaraciones.
IEEE P1800-2005Verilog del sistema.
IEEE 1800-2017Fusión de SystemVerilog y Verilog. Conocido como SystemVerilog 2009.
Estandarización IEEE de Verilog, tabla de tutoriales Verilog -1

Diseño Verilog

Verilog tiene dos tipos de metodologías de diseño. Son - Enfoque de abajo hacia arriba y enfoque de arriba hacia abajo.

Enfoque de abajo hacia arriba: Es la forma convencional de diseñar modelos. La planificación se implementa a nivel de puerta. Las puertas típicas se utilizan para las implementaciones. Este método abre caminos para diferentes planificaciones estructurales y ordenadas.

Enfoque de arriba hacia abajo: Este enfoque tiene algunas ventajas sobre el convencional. Los cambios se pueden hacer más fáciles aquí. También es posible realizar pruebas tempranas.

Modelado Verilog

El modelado de Verilog tiene algunas unidades de diseño. Analicemos los componentes principales.

Código Verilog 1
Código Verilog para chanclas

A. Módulo

Un modelo Verilog presenta declaraciones de puertos, declaraciones de tipos de datos, funcionalidad de circuito, especificaciones de tiempo. A continuación se proporciona una estructura básica del módulo.

módulo Nombre del módulo (lista_puertos);

módulo final

  • Verilog distingue entre mayúsculas y minúsculas.
  • Las palabras clave reservadas están escritas en minúsculas.
  • Se utiliza un punto y coma para terminar la declaración.
  • La regla de comentario es la misma que la del lenguaje de programación C.
  • El comentario de una sola línea comienza con "//".

Por ejemplo - // Ejemplo de un comentario de una sola línea de Verilog

  • Los comentarios de varias líneas comienzan con - '/ *' y terminan con '* /'.

Por ejemplo -

/ * Ejemplo

De Verilog multiple

Comentario de línea * /

  • Las especificaciones de tiempo se utilizan para el proceso de simulación.

Un módulo consta de un máximo de cuatro niveles de noción. Los niveles se definen a continuación.

De comportamiento El más alto nivel de noción. El diseño anticipado está planeado a este nivel. Sin embargo, no se piensa en implementaciones de hardware.

Flujo de datos: Este nivel del módulo Verilog describe el flujo de datos del diseño deseado. Las implementaciones de hardware del flujo de datos a través de los componentes se tienen en cuenta al diseñar este nivel.

Imagen 26 1024x464 1
Modelado de flujo de datos, tutorial de Verilog

Puerta: Las puertas lógicas se implementan en este nivel de módulo Verilog. Se implementan interconexiones entre las puertas.

Cambiar: El nivel más bajo de noción. Se implementan interruptores, bloques de almacenamiento. Las interconexiones también se diseñan entre ellos.

B. Declaraciones del módulo

Las declaraciones de módulo comienzan con 'módulo'palabra clave. Incluye una lista de puertos (si existe).

Tipos de puerto: Hay tres tipos de puertos. El nombre y su funcionalidad se dan a continuación.

  • Las opciones de entrada - puerto de entrada
  • salida - Puerto de salida
  • inout - puerto bidireccional
Módulo de mezcla 1
Código Verilog para mezcla de módulos, tutorial Verilog

Declaraciones portuarias: La estructura general de las declaraciones de puertos se da a continuación.

<tipo_puerto>nombre_puerto>;

C. Tipos de datos

Hay varios tipos de tipos de datos en Verilog.

 Tipo de datos netos: Este tipo de datos describe la interrelación física entre los flujos.

Redes -> Bloque funcional: MUX -> Bloques funcionales: Sumadores -> Redes

La siguiente tabla proporcionará más detalles sobre Net Datatype.

Tipo de PropiedadCaracterización
cableDescribe el nodo o las conexiones
triDescribe un nodo de tres estados
supply0Representa la lógica 0
suministro1Representa la lógica 1
Tipos de datos netos, tabla de tutoriales de Verilog - 2
  •  Declaraciones de bus: La estructura general de las declaraciones de bus se muestra a continuación.

<tipo de datos> [Bit más significativo (MSB): Bit menos significativo (LSB)]nombre_señal>;

          <tipo de datos> [Bit menos significativo (LSB): Bit más significativo (MSB)]nombre_señal>;

Por ejemplo -

cable [3: 1] in;

Tipo de datos variables: Este tipo de datos describe el elemento para guardar un dato por el momento.

Hay muchos tipos de variables compatibles con Verilog. Algunos de ellos son -

entero - 32 bits, firmado.

reg - cualquier tamaño de bit, sin firmar. Para implementar el registro firmado, use la palabra clave - 'registro firmado'.

real, tiempo, tiempo real - sin soporte para síntesis.

D. Instanciación de módulos

Después de todas las declaraciones, se puede crear una instancia del módulo en un módulo de nivel superior con la ayuda de algunas sintaxis. Al crear instancias de módulos, podemos construir diseños con múltiples niveles de jerarquía. Eso nos ayudará aún más a lograr una mantenibilidad más simple. La mayoría de los diseños modernos tienen numerosas capas de jerarquía.

El formato general para la creación de instancias se da a continuación.

<nombre_componenet> #<retrasar>inombre_instancia> (lista_puertos);

Nombre del componente: Es el nombre del módulo del componente de nivel inferior.

retrasar: Es una opción opcional. El retraso introduce un retraso en todo el componente.

nombre de instancia: Es el nombre exclusivo dado por el diseñador para cada instancia individual.

lista de puertos: La lista de puertos proporciona las listas de señales que se conectarán al componente.

E. Componente de simulación

Una vez completado el proceso de diseño, comienza el proceso de prueba. Esta prueba se puede realizar utilizando el bloque de estímulo. Los bloques de estímulo se conocen comúnmente como banco de pruebas.

Las aplicaciones de estímulo pueden ser de dos tipos. El diseño principal comienza con el bloque de diseño y arrastra directamente las señales del puerto a los bloques de diseño.

El segundo diseño instancia el bloque de estímulo y el bloque de diseño en un modelo de réplica de nivel superior. La interfaz es el enlace de comunicación entre los bloques.

Algunos conceptos básicos de Verilog

Operadores Verilog

Verilog tiene tres operadores fundamentales para Verilog HDL. Se dan a continuación.

Operadores Unary Verilog: Estos tipos de operadores de Verilog son el primero de los operandos.

Por ejemplo: x = ~ y; Aquí '~' es un operador unario

Operadores binarios de Verilog: Estos tipos de operadores Verilog se encuentran entre dos operandos.

Por ejemplo: x = y || z; Aquí '||' es un operador binario.

Operadores ternarios de Verilog: TEstos tipos de operadores Verilog usan dos operadores diferentes para diferenciar tres operadores.

Por ejemplo: x = y? z: w; aquí '?' y ':' son operadores ternarios.

Los operadores categóricos de Verilog HDL son: aritméticos, lógicos, relacionales, bit a bit, desplazamiento, concatenación e igualdad. Los diferentes tipos de operadores Verilog y sus símbolos se muestran en la siguiente tabla.

Tipo de operadorSímboloOperaciónOperandos necesarios
Aritmética*MultiplicaciónDos
Aritmética/DivisiónDos
Aritmética+AdiciónDos
AritméticaSustracciónDos
Aritmética%MóduloDos
lógico!negaciónUn
lógico&&EDos
lógico||ORDos
RelacionalMás queDos
RelacionalMenos queDos
Relacional> =Mayor qué o igual aDos
Relacional<=Menos que o igual aDos
Igualdad==Igual aDos
Igualdad🇧🇷 🇧🇷No es igual aDos
Igualdad===Igualdad de casosDos
Igualdad! ==Caso no igualDos
Bitwise~la NegaciónUn
Bitwise&Bitwise YDos
Bitwise|Bitwise ODos
Bitwise^XOR bit a bitDos
Bitwise~^XNOR bit a bitDos
Reducción&Reducción YUn
Reducción~&Reducción NANDUn
Reducción|Reducción OUn
Reducción~|Reducción NORUn
Reducción^Reducción XORUn
Reducción^~Reducción XNORUn
Shift>> Giro a la derechaDos
Shift<< Shift izquierdoDos
Concatenación{}ConcatenaciónPuede ser de cualquier número
Replicación{{}}ReplicaciónPuede ser de cualquier número
Condicional? :CondicionalTres puestos
Operadores de Verilog, Tabla de tutoriales de Verilog - 3

Verilog Operators también tiene prioridad. Su precedencia se da en la siguiente tabla.

OperadorSímbolosPrecedencia
Multiplicación unaria, división, módulo +, -,!, ~ *, /,%La más alta
Cambio de suma, resta+, - <<, >> 
Igualdad relacional<, <=,>,> = ==,! =, ===,! == 
Reducción lógica&, ~ & ^, ^ ~ |, ~ | && || 
Condicional?:Más bajo
Operador Verilog, tabla de tutoriales Verilog - 4

Especificaciones del número de Verilog

Los números de Verilog son de dos tipos, números de tamaño y números sin tamaño.

Números de Verilog de tamaño: La estructura general para representar números de tamaño en Verilog HDL se proporciona a continuación.

'

Por ejemplo - 8'b3456;

Este es un número Verilog de tamaño que describe que es un número de 8 bits y de tipo binario.

  • tamaño: El tamaño es la cantidad de dígitos que tiene el número principal. El tamaño se describe mediante valores decimales.
  • formato_base: El formato base sugiere qué tipo de número sería. Hay varios tipos: binario (dado por - 'b'), decimal (dado por - 'd'), octal (dado por - 'o'), hexadecimal (dado por - 'h'). Si no hay ninguna especificación para base_format, entonces por defecto es un número decimal.
  • números: El número principal que desea ingresar.

Números de Verilog sin tamaño: Estos números no requieren ningún tamaño específico.

La estructura general para representar números sin tamaño en Verilog HDL se proporciona a continuación.

'

Por ejemplo - 'h3456;

Este es un número de Verilog sin tamaño que describe que es un número hexadecimal.

Números negativos: Si desea declarar un número como un número negativo, coloque un símbolo menos (-) antes del número.

Por ejemplo: - 345; es un número decimal negativo, sin tamaño.

Matrices Verilog

Las matrices de números enteros, registros (reg), vectores (de tipos de datos reg o netos, varias longitudes de bits) y tiempo son posibles en Verilog HDL. La declaración básica de matrices se muestra a continuación con un ejemplo.

matriz entera [0: 3];

Esto significa una matriz de siete valores.

  • Verilog no permite ningún arreglo para variables reales.
  • Verilog HDL no admite ninguna matriz multidimensional.
  • Los elementos de la matriz se pueden recuperar usando - [ ]

Para otros temas relacionados con Verilog Tutorial, ¡Haz clic aquí!

Para ver el tutorial paso a paso de Verilog usando Xilinx, consulte nuestro próximo artículo.

Deja un comentario