Decodificación de Manchester

4

¿Es obligatorio un bucle de fase bloqueada para decodificar datos codificados en Manchester? ¿Se utiliza el PLL para que la codificación de Manchester admita diferentes tasas de datos?

enlaces útiles:                enlace ,                enlace ,

Nota: Según tengo entendido, las transiciones del centro de bits en MED (Datos codificados de Mancheter) se utilizan para la sincronización del reloj en el receptor. Así que para la decodificación, uno puede detectar estas transiciones de centro de bits y luego muestrear después de 3T / 4 para decodificar correctamente.

Otra pregunta: ¿Puedo implementar un decodificador de sobremuestreo de Manchester?

    
pregunta Mike George

2 respuestas

5

No, no necesitas un PLL para decodificar Manchester. Esa es sólo una manera. De hecho, un PLL no decodifica nada por sí solo, solo proporciona un reloj en el que puede muestrear de manera confiable los semitonos del Manchester. Si la velocidad de bits del flujo de Manchester puede variar, entonces puede ser útil algo como un PLL que se pueda ajustar a la frecuencia de entrada.

He hecho varios decodificadores de Manchester y ninguno de ellos utilizó un PLL. La primera vez que hice esto, mi pensamiento fue medir el tiempo entre los bordes capturando un temporizador y luego decodificar el flujo de bits desde allí. Eso funcionó bien, pero en proyectos posteriores utilicé un esquema diferente que permitía una mayor tasa de bits de Manchester en relación con la tasa de instrucciones. En estos proyectos, simplemente muestreé el flujo entrante a intervalos regulares. La interrupción periódica cuenta cuántas muestras sucesivas la entrada es alta o baja y pasa al siguiente nivel hasta la lógica de decodificación. Luego, se clasifica cada nivel como largo, corto o no válido, que luego se decodifica en la cadena del protocolo y generalmente termina en paquetes totalmente recibidos y validados.

Debido a que uschester se usa generalmente porque los datos deben transmitirse a través de algún medio analógico (por ejemplo, es un poco tonto usar manchester entre dos chips digitales en la misma placa), la señal de entrada sin procesar es a menudo analógica. Anteriormente mencioné que ahora generalmente muestro la señal de Manchester en algún múltiplo (como 8-12) de la tasa de bits esperada. Esto se hace generalmente con un A / D. Al hacer esto, elimina la necesidad de los procesadores de datos analógicos.

Los cortadores de datos digitales pueden ser bastante mejores que los analógicos de complejidad razonable. Todo lo que necesita hacer externamente es filtrar en paso bajo la señal para evitar el alias a la velocidad de muestreo rápida. Como la señal de Manchester se está muestreando de 8 a 12 veces más rápido que la velocidad de bits, este filtro no cortará la señal real en absoluto. Por lo general, dos polos de R-C son lo suficientemente buenos.

Mis cortadores de datos digitales funcionan manteniendo los dos últimos tiempos de bit de las muestras en la memoria. Por ejemplo, si se están muestreando los datos de Manchester 8 veces la velocidad de bits, esto significaría que las últimas 16 muestras se mantienen en un búfer rodante. La razón de dos tiempos de bits completos es que este es el tiempo mínimo para dos niveles sucesivos completos de polaridad opuesta (imagine un patrón 101010 ...). El segmentador de datos calcula el promedio de los valores máximo y mínimo en el búfer y lo utiliza como el umbral de comparación alto / bajo.

Otro truco es hacer un poco de filtrado de paso bajo en la cadena de muestras A / D antes de cortar los datos. Este es uno de los pocos casos en que un filtro de caja es en realidad una buena respuesta, como se relaciona con la reacción habitual de aquellos que no prestaron atención en la clase de procesamiento de señales. El ancho de la ventana de convolución es simplemente el número de muestras en medio bit. Piense en el caso donde la entrada es una señal digital perfectamente limpia. Esta señal siempre tendrá niveles de tiempo de 1/2 bit o 1 bit. El filtro de caja ("media móvil" para los tirones de rodilla) convertirá los bordes en rampas que durarán 1/2 bit cada uno. Una señal con una secuencia de niveles cortos, por lo tanto, se convierte en una onda triangular. Una secuencia de niveles largos, por lo tanto, un trapecio con rampas dura un tiempo de 1/2 bit y niveles sólidos entre un tiempo de 1/2 bit. Tenga en cuenta que los datos que dividen esta señal al promedio de su valor máximo y mínimo producen el mismo flujo resultante que en la entrada sin filtro.

Entonces, ¿por qué filtrar? Porque obtienes mejor inmunidad al ruido. Como se describe anteriormente, una señal perfecta no se ve afectada por este filtro. Sin embargo, una señal ruidosa es. El efecto en el flujo resultante de 1s y 0s fuera de la segmentación de datos del ruido aleatorio agregado a las muestras de entrada es menor con el filtrado. He implementado este algoritmo en un muestreo dsPIC a 9 veces la velocidad de bits con un A / D de 12 bits desde un receptor de RF analógico. Este sistema fue capaz de descodificar paquetes válidos de transmisiones de RF que apenas podía ver en un alcance al observar la misma señal que entraba en el A / D. Paquete "válido" significa que no se encontraron violaciones de Manchester, la secuencia de bits se decodificó y se pasó una prueba de suma de comprobación CRC de 20 bits. Esto realmente funciona.

    
respondido por el Olin Lathrop
2

Depende de tu frecuencia máxima. Si tiene una frecuencia de reloj del sistema, digamos, un orden de magnitud más rápido, no hay absolutamente ninguna necesidad de un pll dedicado a la decodificación de prácticamente cualquier protocolo. Hacer esto en un fpga sería fácil, e incidentalmente lo he hecho para decodificar el código de tiempo lineal (velocidad de cuadro adaptable).

Por cierto, no tendrías que muestrearlo per se, porque todo lo que necesitas es el tiempo entre transiciones. Si lo decodifica con un microcontrolador, conéctelo a un pin con interrupción en cambio, y dentro del ISR registre la hora, y use esta información para decodificar (por lo que no es necesario realizar un sondeo).

    
respondido por el apalopohapa

Lea otras preguntas en las etiquetas