Estaba pasando por la especificación SATA3. Según las especificaciones, en su diseño se utilizan codificadores 8b/10b y codificadores. Scrambler ayuda a aleatorizar los datos, mientras que el codificador 8b/10 crea suficiente transición para el balance de CC y la recuperación de datos del reloj.
Mi duda es que si el codificador aleatoriza los datos, entonces debería resolver el propósito del equilibrio de CC y la recuperación de datos del reloj, porque el codificador está creando transiciones de '1' y '0'. Entonces, ¿cuál es la necesidad de un codificador 8b/10b?
Estoy discutiendo esto en base a mi conocimiento de Ethernet, en lugar de SATA. No conozco el estándar SATA, pero si usa codificación LFSR y codificación 8b10b o 64b66b, debería tener los mismos beneficios que tiene en Ethernet.
La codificación 8b10b o 64b66b proporciona dos funciones que no están disponibles con una simple codificación:
límites de bloque La codificación introduce límites de bloque que permiten la sincronización entre el transmisor y el receptor. Sin estos límites, el receptor no sabría dónde termina un octeto y comienza el siguiente, y mucho menos dónde están los límites entre tramas o paquetes en protocolos de nivel superior.
detección de errores La codificación permite detectar cualquier error de un solo bit en una trama y, estadísticamente, puede detectar errores de varios bits. Esto permite que el protocolo reaccione adecuadamente cuando se recibe un bloque con errores.
Algunos protocolos de comunicaciones envían cada octeto de datos utilizando ocho bits de datos más algunos bits de trama. Cuando se envían datos a través del protocolo asíncrono típico, puede haber hasta nueve bits "0" consecutivos y un número arbitrario de bits "1" consecutivos. Un codificador simple puede mapear diez bits de los cuales se garantiza que los dos primeros sean 10, en diez bits que se garantiza que no tendrán más de seis valores coincidentes consecutivos.
El uso de un codificador 8b/10b más complicado hará posible reducir el número de bits coincidentes consecutivos en el peor de los casos más de lo que sería posible usando un codificador simple, y también ofrecerá garantías sobre el equilibrio de línea (asegurando que el número total de ceros y unos transmitidos permanezcan cerca uno del otro). Obtener estos beneficios requiere un circuito más complicado y también requiere renunciar a parte de la flexibilidad de tiempo que ofrecía un protocolo asíncrono. Por ejemplo, un protocolo asíncrono podría entregar 100 bytes en 1100 tiempos de bit, a una velocidad continua "suave" de un byte cada once tiempos de bit. Usando una codificación 8b/10b, sería necesario enviar un byte, luego un carácter inactivo, luego diez bytes, luego otro carácter inactivo, etc. Para muchos propósitos eso no importaría, pero para algunos propósitos podría. Si un receptor asíncrono estuviera conectado a un DAC que emitiera inmediatamente cada muestra tal como se recibió, pasar la señal a través de un sincronizador de bits y codificar agregaría 0,5 bits de fluctuación. Pasarlo a través de un codificador 8b/10b agregaría 5 bits de fluctuación.
Tapojyoti mandal
finbarr
TonyM
TonyM