Quiero implementar un receptor de datos codificados en Manchester digital. La aplicación no es diferente del sistema KeeLoq. Es decir, no hay tiempo para un entrenamiento de enlace prolongado: quiero que el receptor recupere el reloj y analice los datos de un solo paquete, sin depender de nada antes o después. Dado que se trata de un receptor digital, el receptor tiene cientos de muestras valiosas de la historia para volver a procesar y permitir que haga esto.
Estoy encontrando la recuperación del reloj más difícil de lo esperado. En muchos casos, el promedio de la cantidad de muestras entre cada transición y tomar esto como el período de medio bit funciona, pero las simulaciones simples muestran que con ciertas cargas útiles (es decir, aquellas con muchas transiciones) este promedio es demasiado alto. En cualquier caso, sesgar el período estimado de medio bit debido a estos, incluso cuando todavía funciona, seguramente significará que el receptor es menos robusto de lo que podría ser. Tengo un preámbulo que facilita la recuperación del reloj, pero puedo ver (con simulación) que en algunos casos no será lo suficientemente largo y el promedio está demasiado inclinado por los períodos de bits completos en la carga útil. Mi aplicación es inusual porque la tasa de línea subyacente es muy baja, por lo que la eficiencia y la latencia son importantes.
Debe haber alguna manera de aprovechar la naturaleza bimodal de la distribución del período para hacer un estimador muy confiable, pero no puedo pensar cómo hacerlo de manera eficiente.
¿Qué es un buen enfoque para un receptor digital Manchester, con un establecimiento de enlace de muy baja latencia?
Por eficiencia, quiero decir computacionalmente - probablemente pueda hacer una búsqueda de fuerza bruta comparando las diferencias entre los histogramas normalizados, pero me pregunté si había una mejor manera.
EDITAR: Se me ocurrió justo ahora que no necesito hacer coincidir una distribución con un histograma, porque la codificación de Manchester por naturaleza aplica otra restricción: la distancia entre los picos está relacionada con el contenedor de pico en sí. Así que todo lo que tengo que hacer es encontrar el pico más alto en el histograma y luego determinar si he encontrado el intervalo de ancho medio o completo, mirando los valores de bin x2 arriba o 1 / 2x abajo. Prototiparé esto y veré si funciona, pero, por supuesto, ¡dejaré la pregunta abierta para mejores ideas!