Detección de flancos muestreados
Parte de la sección Diseño y verificación RTL del Journey de Verilog de Coddy. Lección 19 de 38.
Un nivel puede permanecer alto durante muchos ciclos, mientras que un pulso de evento debería durar un ciclo. Almacena el nivel muestreado anterior y compáralo con el actual. Este detector de flancos supone que la entrada ya está sincronizada con este reloj; no es un sincronizador de cruce de dominios de reloj.
Extracto relevante; las declaraciones y conexiones circundantes se proporcionan en el desafío.
previous <= sig;
rising <= sig & ~previous;El nivel almacenado anteriormente genera un único pulso en la transición muestreada.
Compara los niveles muestreados actual y anterior; usa este detector solo con una entrada síncrona.
Desafío
IntermedioPara una señal sig ya síncrona con clk, produce un pulso registrado de un ciclo en cada transición muestreada de 0 a 1. El rst síncrono borra el nivel anterior almacenado y el pulso. Por lo tanto, una señal sig alta en el primer flanco que no sea de reinicio produce un pulso. Columnas de salida: pulse. Todos los controles y datos son estables antes de cada flanco ascendente del reloj; los resultados se observan después.
Completa design.v y conserva sus nombres de módulo y puertos. El testbench.v bloqueado proporciona cambios de entrada e imprime las salidas una vez estabilizadas. 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 clk, input rst, input sig, output reg pulse);
// Reemplaza este marcador de posición con tu diseño.
initial pulse = 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