Enteros y Reales
Parte de la sección Fundamentos del Journey de Verilog de Coddy — lección 8 de 90.
Además de wire y reg, Verilog tiene otros tipos de datos para números con diferentes propósitos.
Integer
integer es una variable de propósito general para conteo y cálculos.
- El tamaño predeterminado es de 32 bits
- Con signo (puede almacenar números negativos)
- Se utiliza principalmente en bancos de pruebas (testbenches) y bucles for
Declarar un entero:
integer i; // variable con signo de 32 bits
integer count; // Puede almacenar números negativosUsando integer:
integer i;
initial begin
i = 0; // Empezar en 0
i = i + 1; // Contar hacia arriba
i = -5; // Puede almacenar negativos
$display("i = %d", i); // Imprime: i = -5
endReal
real es para números de punto flotante (números con decimales).
- Almacena valores fraccionarios
- Se utiliza en bancos de pruebas para cálculos
- No se puede sintetizar en hardware
Declaración de un real:
real pi; // Variable de punto flotante
real voltage;Usando real:
real pi;
initial begin
pi = 3.14159; // Valor decimal
pi = 22.0 / 7.0; // Resultado de la división
$display("pi = %f", pi); // Imprime: pi = 3.142857
endDónde usarlos
En los bancos de pruebas (testbenches): Los enteros y reales se utilizan comúnmente para contadores de bucles, cálculos y para verificar valores esperados. Hacen que el código de prueba sea más fácil de escribir y entender.
En hardware: Estos tipos generalmente no son sintetizables, lo que significa que no pueden convertirse en circuitos reales. Para el hardware que irá en una FPGA o chip, use reg y wire en su lugar.
Desafío
Completa el código para que el banco de pruebas funcione.
Qué hacer:
- Declara un integer llamado i (para el contador del bucle)
- Declara un real llamado value (para el cálculo)
Hoja de referencia
integer – variable con signo de 32 bits para conteo/cálculos (bancos de pruebas, bucles):
integer i;
integer count;
initial begin
i = 0;
i = i + 1;
i = -5; // can store negatives
endreal – variable de punto flotante para valores fraccionarios (solo bancos de pruebas, no sintetizable):
real pi;
initial begin
pi = 3.14159;
pi = 22.0 / 7.0;
$display("pi = %f", pi);
endTanto integer como real se utilizan solo en bancos de pruebas. Para hardware sintetizable, use reg y wire.
Pruébalo tú mismo
module test;
// Declarar un entero llamado i
// Declarar un real llamado value
initial begin
i = 7;
value = i * 0.5;
$display("i = %0d, value = %f", i, value);
$finish;
end
endmoduleEsta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
1Introducción
¿Qué es Verilog?Hardware vs SoftwareNiveles de abstracción de diseñoTu primer móduloComentarios4Operadores Parte 1
Operadores aritméticosOperador de móduloOperadores de comparaciónRepaso - Matemáticas simplesOperadores bit a bit7Asignación y Compuertas
Asignación ContinuaAsignación con OperadoresPrimitivas de Compuertas IntegradasCompuertas AND OR NOTCompuertas XOR XNORResumen - Circuito de Compuertas Lógicas10Toma de decisiones
Sentencia IfIf - ElseRepaso - Comparador simpleSentencia CaseCasex y CasezRepaso - Diseño de ALU5Operadores Parte 2
Operadores lógicosOperadores de reducciónOperadores de desplazamientoOperador de concatenaciónOperador condicionalResumen - Desafío de operadores3Sistema de numeración
Representación binariaNúmeros con tamaño definidoNúmeros sin tamaño definidoNúmeros negativosValores especiales X y ZResumen - Formatos de números6Módulos
Estructura del móduloPuertos de entrada y salidaPuertos InoutInstanciación de módulosMapeo de puertos por nombreMapeo de puertos por ordenResumen: Construye un módulo