Funciones combinacionales
Parte de la sección Diseño y verificación RTL del Journey de Verilog de Coddy. Lección 11 de 38.
Una function de Verilog encapsula un cálculo de tiempo cero para reutilizarlo dentro de un módulo. Declara el ancho de retorno, los argumentos de entrada y las variables locales; después, assign el resultado al nombre de la function. Las funciones combinacionales no contienen retardos ni controles de eventos; un bucle con límites fijos puede describir lógica repetida.
Extracto relevante; las declaraciones y conexiones circundantes se proporcionan en el desafío.
function [7:0] gray;
input [7:0] value;
begin gray = value ^ (value >> 1); end
endfunctionLlamar a la function calcula una expresión sin añadir tiempo de simulación.
Asigna el resultado de function en cada ruta y mantén las funciones combinacionales libres de controles de temporización.
Desafío
IntermedioImplementa una function de Verilog llamada gray que convierta un valor binario sin signo de 8 bits a código Gray usando value XOR (value desplazado a la derecha un bit). Asigna y llamando a la function con a. Columnas de salida: y. Todos los valores de estímulo son valores binarios conocidos.
Completa design.v y conserva los nombres de sus módulos y puertos. El testbench.v bloqueado proporciona cambios de entrada e imprime las salidas una vez que se estabilizan. Elige un escenario mediante un argumento del simulador como +CASE=1; no se requiere entrada estándar. No añadas impresiones, retardos ni terminación de la simulación al diseño. La salida esperada es una fila de valores decimales por observación, separados por un espacio y terminada con un salto de línea.
Pruébalo tú mismo
module dut (input [7:0] a, output [7:0] y);
// Reemplaza este marcador de posición con tu diseño.
assign y = 0;
endmoduleEsta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Diseño y verificación RTL
1RTL combinacional confiable
Los valores predeterminados evitan los latchesCodificadores de prioridadValidación one-hotDecodificación segura de caseRepaso: enrutador de solicitudes4RTL secuencial controlado
Prioridad de reinicio y habilitaciónContadores con saturaciónPipeline de datos y validaciónDetección de flancos muestreadosRepaso: contador de eventos7Proyecto - Monitor de muestras
Acumular muestrasAceptar muestras habilitadas2Anchos y aritmética con signo
Conservar los bits de acarreoComparaciones con signoDesplazamientos aritméticos a la derechaDesbordamiento y saturaciónRepaso: diferencia con signo3RTL reutilizable
Funciones combinacionalesParámetros seguros en anchuraBucles generateGenerate condicionalRepaso - Máscara de bits reutilizablePractica por tu cuenta: Compilador de Verilog online