¿Cómo puedo detectar un pulso en un dispositivo con el componente AC'97 de una placa Xilinx Atlys?

0

Tengo un dispositivo digital que transmite pulsos rápidos a través de un cable de audio de 3,5 mm, lo que indica que se ha producido algún evento. Quiero conectar ese dispositivo a mi conector de entrada de línea de 3.5 mm en mi tablero Atlys y determinar cuántos de esos pulsos se han encontrado. He leído las preguntas de otras personas sobre la transmisión, pero aún no he encontrado información de origen comunitario sobre la recepción con los conectores de audio.

La frecuencia máxima de pulsos del dispositivo es un poco inferior a 6 kHz, por lo que creo que la placa Atlys no tendrá ningún problema.

Esperaba poder simplemente monitorear algún tipo de señal "lista para datos". Pero con los dos relojes diferentes (L15, L13) y las complejidades de AC'97, para un principiante es bastante confuso.

¿Alguien tiene alguna idea o sugerencia sobre cómo puedo lograr detectar estos pulsos?

    
pregunta Michael J. Gray

1 respuesta

0

Sin más información, todo lo que podemos hacer es adivinar. No viene directamente y dice si esta fuente de "pulsos rápidos" es AC'97, por lo que mi respuesta va a suponer que es solo un tren de pulsos arbitrario que desea ver y procesar. Si es AC'97, es probable que no quieras conectarlo a una entrada de audio analógica (probablemente).

Adivina 1

El conector de 3.5 mm en la placa Atlys tiene un poco de acondicionamiento de señal y se puede conectar directamente a un pin de entrada del FPGA. Puede ejecutar esa señal a través de un sincronizador y Bob es su tío. Su tiempo de detección tendrá una resolución de la señal del reloj FPGA utilizada para sincronizar la señal entrante, y se habrá retrasado por muchos flip flops en su sincronizador.

Adivina 2

El conector de 3.5 mm en la placa Atlys se trata como una señal analógica (tiene sentido, ya que los conectores de 3.5 mm se usan normalmente para audio), se acondicionan como tales y se envían a la entrada de un ADC. En este caso, tiene que conducir el ADC con el FPGA y mirar la salida del ADC para determinar cuándo entró un pulso. El ancho de banda de la señal es de solo 6kHz, por lo que esto realmente no debería ser un problema, y puede filtrar Los datos de ADC más si es necesario. La salida de todo esto debería ser un tren de pulsos digital.

Adivina 3

Similar a Guess 2, pero quizás tenga suerte y tenga la señal analógica del conector de 3.5 mm que alimenta un comparador. La salida del comparador va al FPGA, y ahora tiene una señal digital que debe sincronizarse y usarse como Guess 1.

Una vez que tenga este tren de pulso digital en el FPGA, probablemente desee contar los pulsos durante un período de tiempo. Si se trata de un flujo AC'97, hay muchos recursos para decodificar AC'97, pero ignoremos el contenido del flujo de datos por el momento.

Si solo estás contando pulsos, algo como esto podría funcionar:

if pulse_bit changes
    if pulse_bit = '1'
        ++pulse_count
    end if

    reset_pulse_timeout
end if

if pulse_timeout expires
    copy pulse count to toplevel
    reset_pulse_timeout
end if

Si realmente está buscando extraer algún tipo de inteligencia del tren de pulsos (es decir, no es solo una línea de pulsos sino más bien una línea en serie y está buscando obtener datos de esto), entonces usted quiere mirar varios puertos serie asíncronos o de sincronización (UART, TDM o USART) para buscar el inicio de una transmisión, capturar bits y buscar un bit de parada. En ese momento, ahora tiene una palabra de datos que puede ver en bits específicos para lo que quiera.

    
respondido por el akohlsmith

Lea otras preguntas en las etiquetas