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.
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.
Revisiones | Actualizaciones |
IEEE 1364-2001 | Verilog-2001. Admite variables firmadas y nido. Muy utilizado por los paquetes EDA. |
IEEE 1364-2005 | Verilog 2005. Surgió con pequeñas correcciones y aclaraciones. |
IEEE P1800-2005 | Verilog del sistema. |
IEEE 1800-2017 | Fusión de SystemVerilog y Verilog. Conocido como SystemVerilog 2009. |
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.
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.
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
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 Propiedad | Caracterización |
cable | Describe el nodo o las conexiones |
tri | Describe un nodo de tres estados |
supply0 | Representa la lógica 0 |
suministro1 | Representa la lógica 1 |
- 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 operador | Símbolo | Operación | Operandos necesarios |
Aritmética | * | Multiplicación | Dos |
Aritmética | / | División | Dos |
Aritmética | + | Adición | Dos |
Aritmética | – | Sustracción | Dos |
Aritmética | % | Módulo | Dos |
lógico | ! | negación | Un |
lógico | && | E | Dos |
lógico | || | OR | Dos |
Relacional | > | Más que | Dos |
Relacional | < | Menos que | Dos |
Relacional | > = | Mayor qué o igual a | Dos |
Relacional | <= | Menos que o igual a | Dos |
Igualdad | == | Igual a | Dos |
Igualdad | 🇧🇷 🇧🇷 | No es igual a | Dos |
Igualdad | === | Igualdad de casos | Dos |
Igualdad | ! == | Caso no igual | Dos |
Bitwise | ~ | la Negación | Un |
Bitwise | & | Bitwise Y | Dos |
Bitwise | | | Bitwise O | Dos |
Bitwise | ^ | XOR bit a bit | Dos |
Bitwise | ~^ | XNOR bit a bit | Dos |
Reducción | & | Reducción Y | Un |
Reducción | ~& | Reducción NAND | Un |
Reducción | | | Reducción O | Un |
Reducción | ~| | Reducción NOR | Un |
Reducción | ^ | Reducción XOR | Un |
Reducción | ^~ | Reducción XNOR | Un |
Shift | >> | Giro a la derecha | Dos |
Shift | << | Shift izquierdo | Dos |
Concatenación | {} | Concatenación | Puede ser de cualquier número |
Replicación | {{}} | Replicación | Puede ser de cualquier número |
Condicional | ? : | Condicional | Tres puestos |
Verilog Operators también tiene prioridad. Su precedencia se da en la siguiente tabla.
Operador | Símbolos | Precedencia |
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 |
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.
Hola, soy Sudipta Roy. He realizado B. Tech en Electrónica. Soy un entusiasta de la electrónica y actualmente me dedico al campo de la Electrónica y las Comunicaciones. Tengo un gran interés en explorar tecnologías modernas como la IA y el aprendizaje automático. Mis escritos están dedicados a proporcionar datos precisos y actualizados a todos los estudiantes. Ayudar a alguien a adquirir conocimientos me produce un inmenso placer.
Conectémonos a través de LinkedIn –