Medición de señal de entrada FPGA

1

¿Cómo medir la frecuencia de la señal de pulso de entrada con el kit de herramientas xilinx en matlab?

Ya que soy malo en la codificación, uso el generador del sistema en matlab. Estoy haciendo un proyecto, en el que usaré un sensor de proximidad para medir las RPM de un motor. La salida del sensor se coloca en el disparador de Schmitt, por lo que se convierte en una señal de pulso.

Necesito encontrar la frecuencia de esta señal de pulso, para poder calcular las RPM.

    
pregunta user36650

2 respuestas

2

Si desea medir la frecuencia, necesita una frecuencia de referencia con la que pueda compararla.

La forma habitual de hacer esto es configurar dos cadenas de contador, una de las cuales está sincronizada por su frecuencia de referencia F ref , y la otra cronometrada por su frecuencia desconocida F unk (el condicionamiento de la señal de entrada es un ejercicio que queda para el alumno). Dejas que los dos contadores se ejecuten durante la misma cantidad de tiempo T y luego lees sus valores.

$$ Count_ {ref} = F_ {ref} \ cdot T $$

$$ Count_ {unk} = F_ {unk} \ cdot T $$

Combina las dos ecuaciones al dividirlas y resuelve para F unk :

$$ F_ {unk} = \ frac {Count_ {unk}} {Count_ {ref}} F_ {ref} $$

Ese es el concepto general, pero en la práctica, el proceso a menudo se simplifica utilizando el propio contador de referencia para determinar el período de tiempo T, lo que hace que Count ref sea una constante conocida, y F ref también se elige para que sea un número de "buena ronda". Esto convierte la multiplicación y división en operaciones triviales, y la frecuencia se puede leer más o menos directamente desde el recuento unk . Por ejemplo, si F ref / Count ref = 1 Hz, entonces Count unk = F unk directamente.

Hay muchas sutilezas asociadas con la optimización del rendimiento de este proceso en las que no voy a entrar aquí, pero hay un truco que se usa a menudo cuando se quieren medir frecuencias relativamente bajas (como RPM) con alta resolución sin requerir una mucho tiempo T. En lugar de hacer que T dependa de F ref , haciendo que Count ref sea constante, haces que T dependa de F unk , haciendo que Count < sub> unk una constante. Además, haga que F ref sea lo más alto que pueda. Ahora necesitas hacer una operación de división para obtener la respuesta, pero puedes obtenerla en una fracción de segundo con muchos dígitos de precisión.

    
respondido por el Dave Tweed
0

Alimente su pulso en la entrada de restablecimiento de un contador ascendente (el generador del sistema tiene un bloque para eso). Cierre la salida del contador cada vez que aparezca el pulso y alimente esa señal hacia adelante. Es una representación de la frecuencia: sabiendo la frecuencia de reloj de su FPGA puede convertir a Hz y luego a RPM si es necesario, pero con un pequeño pensamiento adicional, a menudo puede trabajar en el dominio de "conteo de reloj" en las siguientes etapas de su procesamiento y evitar tener para convertir.

    
respondido por el Martin Thompson

Lea otras preguntas en las etiquetas