Medir la duración de un mensaje no periódico en FPGA con VHDL

0

Estoy tratando de medir la duración de una señal no periódica (mensaje) en FPGA, como se muestra a continuación:

Quiero medir la duración de la señal medida contando el número del período de referencia del reloj. Establecí el primer flanco ascendente como activador de inicio, pero ¿cómo se debe configurar el activador de detención?

No tengo idea de cómo hacer esto, ¿me pueden dar algún consejo? Quiero implementar esto en FPGA con VHDL.

    
pregunta Joe

1 respuesta

1

Suposiciones:

  • Un "mensaje" es una colección de transiciones, con un espacio considerable entre los mensajes que no contiene transiciones.
  • El período de reloj es más pequeño que el espacio más corto entre las transiciones de señal.

Aquí hay un diagrama de bloques; Te lo dejo a ti para convertirlo a tu HDL favorito.

simular este circuito : esquema creado usando CircuitLab

  • U1 es un sincronizador de dos (o más) etapas que se asegura de que la señal de entrada esté sincronizada con el reloj.
  • U2 es un detector de borde síncrono que emite un impulso de 1 reloj para cada borde en la salida de U1.
  • U3 es el contador de "tiempo de espera". Se restablece en cada borde y el mensaje termina cuando se desborda.
  • U4 es un FF de restablecimiento de configuración simple que realiza un seguimiento de si estamos "en un mensaje" (la salida es baja) o "entre mensajes" (la salida es alta). Se establece cuando U3 se desborda y se borra cada vez que U2 detecta una ventaja.
  • U5 es el contador de "duración". Necesita tener suficientes bits para contar la duración del mensaje más largo. Comienza a contar desde el primer borde detectado y continúa contando hasta que U3 se desborda.
  • U6 es un registro de N bits simple que captura el valor de U5 para cada borde detectado. Cuando U3 se desborda, contiene el recuento del último borde que se produjo en el mensaje.

Cada uno de estos bloques es solo un par de líneas de código en VHDL o Verilog.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas