¿Cómo puedo agregar ECC a mis paquetes?

4

He estado estudiando el uso de LDPC's en algunos de mis proyectos y me han surgido algunas preguntas . Actualmente mi estructura se ve algo como esto:

Luego,puedoactivarelhardwarecuandoveelpreámbulo,leeelbytedelongitudeinclusocompruebaelCRCparamíantesdequemiprocesadortengaquemanejarelpaquete.Estoquitamuchacargadeltiempodeprocesamientoasícomodeltiempodeescrituradelcódigo.

LoquemepreguntoessihayalgúnhardwarequepuedausarLDPCocualquierotrocódigodecorreccióndemanerasimilaraloqueestoyhaciendoactualmente.Preferiblemente,seincluiríaconelmóduloinalámbrico,especialmentesiescapazdehacerunadescodificaciónsuave,peroestoyempezandoapensarquenohaynadaquehagaesoactualmente.Debidoaesto,tambiénestoyabiertoalhardware"en línea" que puede ayudar con esto.

Entonces, ¿sabes algo?

    
pregunta Kellenjb

2 respuestas

1

¿Cuál es la representación física de los bits que se envían? En muchos casos, los códigos de corrección de errores dentro del paquete serán inútiles porque incluso una falla transitoria causará que muchos bits se malinterpreten, posiblemente todos los bits hasta la siguiente marca de sincronización.

Si se necesita una corrección de errores hacia adelante, y los paquetes son de tamaño uniforme, el enfoque más simple puede ser enviar paquetes de datos con el valor de n + 1 paquetes, cada uno etiquetado con un número de paquete, donde (n + 1 ) El paquete contiene el xor de los otros. Si los primeros n paquetes se leen con éxito, ignore el extra. De lo contrario, si falta un paquete o está dañado, infiera su valor al juntar los n paquetes restantes.

Una leve mejora de este enfoque sería enviar paquetes con el valor de 2n paquetes utilizando 2n + 2 paquetes, intercalando dos conjuntos de n + 1 paquetes, cada uno de los cuales se formuló como se indicó anteriormente. Eso garantizaría la recuperación de cualquier fallo de comunicaciones único que no fuera más largo que el tiempo requerido para enviar un solo paquete (un pequeño fallo podría afectar al final de un paquete y al comienzo del siguiente, pero los dos paquetes estarían en diferentes grupos).

La mayor limitación con este enfoque es que los paquetes se deben ensamblar en grupos (o, dicho de otra manera, lo que podría ser paquetes más grandes se deben subdividir en otros más pequeños). Por otro lado, es robusto contra problemas técnicos que podrían causar una pérdida de sincronización que hace que grandes cantidades de datos sean ilegibles.

    
respondido por el supercat
0

Todos los códigos tempranos de detección de errores y de corrección de errores, tanto los codificadores como los decodificadores / detectores, fueron diseñados originalmente para implementarse en hardware, en lugar de en software: CRC, código convolucional de corrección de errores y su decodificador enrejado (decodificador Viterbi). Código BCH, código de corrección de errores Reed – Solomon, etc.

En particular, las implementaciones de hardware de un CRC son mucho más simples y, a menudo, más rápidas que las implementaciones software CRC controladas por tablas de la misma CRC: solo se necesitan unos pocos chips de la serie 74xxx para implementar, en lugar de unas pocas páginas de código (bueno, unas pocas líneas de código ejecutable, más unas pocas páginas de constantes calculadas previamente).

Todas las implementaciones de ECC que he visto están en una de estas categorías; Parece que la primera categoría está más cerca de lo que quieres:

  • Decodificación ECC en software en un coprocesador externo que habla con el procesador principal: este enfoque parece tener el tiempo de desarrollo más rápido. Muchos transceptores de radio incluyen un coprocesador que puede programarse para manejar la decodificación ECC - transceptores de radio ; " ¿Radio de baja potencia + recomendación del microcontrolador? "; como módulos inalámbricos Jennic ; etc.

  • un puñado de chips de la serie 74xxx: históricamente precisos y muy educativos, pero los costos de la CPU y la memoria se han reducido de manera tal que otros enfoques son más económicos o más rápidos, o ambos. a b c

  • FPGA: a altas velocidades de datos, como cuando se maneja video sin comprimir, se ve forzado a usar un FPGA. A menudo, una pequeña parte de la FPGA maneja el material FEC; la mayor parte del FGPA se ocupa de la codificación / decodificación de video. a b c

  • Decodificación ECC en el procesador principal.

  • Escucho rumores de chips decodificadores Viterbi / trellis. ¿Hay alguna que no sea obsoleta? b c d e

respondido por el davidcary

Lea otras preguntas en las etiquetas