Validación one-hot
Parte de la sección Diseño y verificación RTL del Journey de Verilog de Coddy. Lección 3 de 38.
Los datos one-hot tienen exactamente un bit activado. Un decodificador genera esos datos, mientras que la validación comprueba los datos entrantes antes de utilizarlos. Para valores binarios conocidos, un valor distinto de cero es one-hot cuando bits & (bits - 1) es cero. Esta sección no utiliza ese atajo para clasificar X o Z.
Fragmento relevante; las declaraciones y conexiones circundantes se proporcionan en el desafío.
assign one_hot = (bits != 0) && ((bits & (bits - 1)) == 0);La comprobación de valor distinto de cero excluye el estado inactivo; el truco de bits rechaza varios bits establecidos.
Distingue entre cero, exactamente un bit establecido y varios bits establecidos al validar solicitudes.
Desafío
IntermedioPara bits de entrada conocidos de 4 bits, establece valid solo cuando exactamente un bit esté alto. Usa la comprobación de valor distinto de cero junto con bits & (bits - 1). Columnas de salida: valid. Todos los valores de estímulo son valores binarios conocidos.
Completa design.v y conserva los nombres de los módulos y los puertos. El testbench.v bloqueado proporciona cambios de entrada e imprime las salidas después de que se estabilicen. 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 terminados con un salto de línea.
Pruébalo tú mismo
module dut (input [3:0] bits, output valid);
// Reemplaza este marcador de posición con tu diseño.
assign valid = 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 signoPractica por tu cuenta: Compilador de Verilog online