En telecomunicaciones , 8b/10b es un código de línea que asigna palabras de 8 bits a símbolos de 10 bits para lograr un equilibrio de CC y una disparidad limitada, y al mismo tiempo proporcionar suficientes cambios de estado para permitir una recuperación de reloj razonable . Esto significa que la diferencia entre el número de unos y ceros en una cadena de al menos 20 bits no es mayor que dos, y que no hay más de cinco unos o ceros seguidos. Esto ayuda a reducir la demanda del límite inferior de ancho de banda del canal necesario para transmitir la señal. [ 1 ]
Un código 8b/10b puede implementarse de diversas maneras, centrándose en diferentes parámetros de rendimiento. Una implementación fue diseñada por K. Odaka para la grabadora de audio digital DAT . [ 2 ] Kees Schouhamer Immink diseñó un código 8b/10b para la grabadora de audio DCC . [ 3 ] La implementación de IBM fue descrita en 1983 por Al Widmer y Peter Franaszek . [ 4 ] [ 5 ]
Implementación de IBM
Como su nombre indica, se transmiten ocho bits de datos como una entidad de 10 bits denominada símbolo o carácter . Los cinco bits menos significativos se codifican en un grupo de 6 bits (la porción 5b/6b) y los tres bits más significativos en un grupo de 4 bits (la porción 3b/4b). Estos grupos de código se concatenan para formar el símbolo de 10 bits que se transmite por el cable. Los símbolos de datos suelen denominarse Dxy, donde x varía de 0 a 31 e y de 0 a 7. Los estándares que utilizan la codificación 8b/10b también definen hasta 12 símbolos especiales (o caracteres de control ) que pueden enviarse en lugar de un símbolo de datos . Estos se utilizan a menudo para indicar el inicio y el final de la trama, la inactividad del enlace, la omisión y otras condiciones similares a nivel de enlace. Es necesario utilizar al menos uno de ellos (por ejemplo, una coma) para definir la alineación de los símbolos de 10 bits. Se les conoce como Kxy y tienen codificaciones diferentes a las de cualquiera de los símbolos Dxy.
Debido a que la codificación 8b/10b utiliza símbolos de 10 bits para codificar palabras de 8 bits, algunos de los 1024 posibles símbolos (10 bits, 2¹⁰ ) pueden excluirse para garantizar un límite de longitud de ejecución de 5 bits iguales consecutivos y asegurar que la diferencia entre el número de ceros y unos no sea superior a dos. Algunas de las 256 posibles palabras de 8 bits pueden codificarse de dos maneras diferentes. Mediante estas codificaciones alternativas, el esquema logra un equilibrio de CC a largo plazo en el flujo de datos en serie. Esto permite que el flujo de datos se transmita a través de un canal con una característica de paso alto, por ejemplo, el par trenzado sin blindaje acoplado por transformador de Ethernet o los receptores ópticos que utilizan control automático de ganancia.
Tablas de codificación y codificación de bytes
Nótese que en las siguientes tablas, para cada byte de entrada (representado como HGF EDCBA), A denota el bit menos significativo (LSB) y H el más significativo (MSB). La salida obtiene dos bits adicionales, i y j . Los bits se envían de LSB a MSB: a, b, c, d, e, i , f, g, h y j ; es decir, el código 5b/6b seguido del código 3b/4b. Esto garantiza la unicidad de la secuencia de bits especial en los símbolos de coma.
El efecto residual en el flujo con respecto al número de bits cero y uno transmitidos se mantiene como la disparidad acumulada ( RD ) y el efecto de la variación se equilibra mediante la elección de la codificación para los símbolos siguientes.
El código 5b/6b es un código de disparidad emparejada , al igual que el código 3b/4b. Cada palabra de código de 6 o 4 bits tiene la misma cantidad de ceros y unos (una disparidad de cero), o bien se presenta en dos formas: una con dos ceros más que unos (cuatro ceros y dos unos, o tres ceros y un uno, respectivamente) y otra con dos menos. Cuando se utiliza un código de 6 o 4 bits con una disparidad distinta de cero (cantidad de unos menos cantidad de ceros; es decir, -2 o +2), la elección de las codificaciones de disparidad positiva o negativa debe ser aquella que invierte la disparidad en curso. En otras palabras, los códigos de disparidad distintos de cero se alternan.
Desigualdad en la carrera
La codificación 8b/10b no tiene componente de corriente continua (CC), lo que significa que la proporción a largo plazo de unos y ceros transmitidos es exactamente del 50 %. Para lograr esto, la diferencia entre el número de unos transmitidos y el número de ceros transmitidos siempre se limita a ±2, y al final de cada símbolo, es +1 o −1. Esta diferencia se conoce como disparidad acumulada (DA).
Este esquema solo necesita dos estados para la disparidad acumulada de +1 y −1. Comienza en −1. [ 6 ]
Para cada código de 5b/6b y 3b/4b con un número desigual de unos y ceros, existen dos patrones de bits que pueden utilizarse para su transmisión: uno con dos bits "1" adicionales y otro con todos los bits invertidos, lo que resulta en dos ceros adicionales. Dependiendo de la disparidad actual de la señal, el motor de codificación selecciona cuál de las dos posibles secuencias de seis o cuatro bits enviar para los datos dados. Obviamente, si el código de seis o cuatro bits tiene el mismo número de unos y ceros, no hay elección que hacer, ya que la disparidad permanecería sin cambios, con la excepción de los subbloques D.07 (00111) y Dx3 (011). En ambos casos, la disparidad permanece sin cambios, pero si RD es positivo al encontrar D.07, se utiliza 000111, y si es negativo, se utiliza 111000. Asimismo, si RD es positivo cuando se encuentra Dx3, se utiliza 0011, y si es negativo, se utiliza 1100. Esto se refleja con precisión en los gráficos a continuación, pero vale la pena mencionarlo adicionalmente, ya que estos son los únicos dos subbloques con igual número de 1s y 0s que tienen dos codificaciones posibles cada uno.
Código 5b/6b (abcdei)
† También se utiliza para el código 5b/6b de Kx7.
‡ utilizado exclusivamente para el código 5b/6b de K.28.y
Código 3b/4b (fghj)
† Para Dx7, se debe seleccionar la codificación primaria (DxP7) o la alternativa (DxA7) para evitar una secuencia de cinco 0 o 1 consecutivos cuando se combina con el código 5b/6b precedente. Se utilizan secuencias de exactamente cinco bits idénticos en símbolos de coma para problemas de sincronización. DxA7 se utiliza únicamente
- cuando RD = −1: para x = 17, 18 y 20 y
- cuando RD = +1: para x = 11, 13 y 14.
Con x = 23, x = 27, x = 29 y x = 30, la porción de código 3b/4b utilizada para los símbolos de control Kx7 es la misma que para DxA7. No se puede utilizar ningún otro código DxA7, ya que podría generar secuencias de comas desalineadas.
‡ Solo K.28.1, K.28.5 y K.28.7 generan símbolos de coma, que contienen una secuencia de bits de cinco 0 o 1. El símbolo tiene el formato 11 0000 0 1xx o 00 1111 1 0xx.
Símbolos de control
Los símbolos de control dentro de 8b/10b son símbolos de 10 bits que representan secuencias válidas de bits (no más de seis 1s o 0s), pero que no tienen un byte de datos de 8b correspondiente. Se utilizan para funciones de control de bajo nivel. Por ejemplo, en Fibre Channel, K28.5 se usa al inicio de secuencias de cuatro bytes (denominadas "conjuntos ordenados") que realizan funciones como arbitraje de bucles, palabras de relleno, reinicios de enlace, etc.
Como resultado de las tablas 5b/6b y 3b/4b, se permite el envío de los siguientes 12 símbolos de control:
† Dentro de los símbolos de control, K.28.1, K.28.5 y K.28.7 son "símbolos de coma". Los símbolos de coma se utilizan para la sincronización (para encontrar la alineación de los códigos de 8b/10b dentro de una secuencia de bits). Si no se utiliza K.28.7, las secuencias de coma únicas 00 11111 0 o 11 00000 1 no pueden aparecer inadvertidamente en ninguna posición de bit dentro de ninguna combinación de códigos normales.
‡ Si se permite el código K.28.7 en la codificación real, se debe utilizar una definición más compleja del patrón de sincronización que la sugerida por †, ya que una combinación de K.28.7 con varios otros códigos forma un símbolo de coma desalineado falso que se superpone a los dos códigos. En ningún caso se permite una secuencia de múltiples códigos K.28.7, ya que esto daría como resultado símbolos de coma desalineados indetectables.
K.28.7 es el único símbolo de coma que no puede ser el resultado de un solo error de bit en el flujo de datos.
Ejemplo de codificación de D31.1
Tecnologías que utilizan 8b/10b
Tras la expiración de la patente de IBM mencionada anteriormente, el esquema se hizo aún más popular y fue elegido como código de línea libre de CC para varias tecnologías de comunicación.
Entre las áreas en las que se aplica la codificación 8b/10b se encuentran las siguientes:
- Aurora
- Interfaz serie de la cámara
- CoaXPress
- Interfaz común de radio pública (CPRI)
- Interfaz serie asíncrona (ASI) de DVB
- Isla de vídeo DVI y HDMI ( señalización diferencial con transiciones minimizadas )
- DisplayPort 1.x
- ESCON (Conexión de Sistemas Empresariales)
- Canal de fibra
- Gigabit Ethernet (excepto el 1000BASE-T basado en par trenzado )
- IEEE 1394b (FireWire y otros)
- InfiniBand
- JESD204B
- Interfaz OBSAI RP3
- PCI Express 1.x y 2.x
- E/S rápida serial
- SD UHS-II
- ATA serie
- SAS 1.x, 2.x y 3.x
- SSA
- ServerNet (a partir de ServerNet2)
- SGMII
- UniPro M-PHY [ 7 ]
- USB 3.0
- Thunderbolt 1.x y 2.x
- XAUI
- SLVS-EC
Fibre Channel (solo variantes 4GFC y 8GFC)
El estándar FC-0 define qué esquema de codificación se debe usar (8b/10b o 64b/66b) en un sistema Fibre Channel [ 8 ] – las variantes de mayor velocidad suelen usar 64b/66b para optimizar la eficiencia del ancho de banda (ya que la sobrecarga de ancho de banda es del 20% en 8b/10b frente a aproximadamente el 3% (~ 2/66) en los sistemas 64b/66b). Por lo tanto, la codificación 8b/10b se usa para las variantes 4GFC y 8GFC; para las variantes 10GFC y 16GFC, es 64b/66b. [ 9 ] La capa de enlace de datos Fibre Channel FC1 es entonces responsable de implementar la codificación y decodificación 8b/10b de las señales.
El esquema de codificación Fibre Channel 8b/10b también se utiliza en otros sistemas de telecomunicaciones. Los datos se expanden mediante un algoritmo que genera uno de dos posibles valores de salida de 10 bits para cada valor de entrada de 8 bits. Cada valor de entrada de 8 bits puede asignarse a un valor de salida de 10 bits con disparidad impar o a uno con disparidad par. Esta asignación se realiza generalmente cuando los datos de entrada paralelos se convierten en un flujo de salida en serie para su transmisión a través de un enlace de fibra óptica. La selección de valores pares/impares se realiza de forma que se mantenga una disparidad cero a largo plazo entre unos y ceros. Esto se conoce comúnmente como "balance de CC".
El esquema de conversión de 8 a 10 bits utiliza solo 512 de los 1024 valores de salida posibles. De los 512 valores restantes, la mayoría contiene demasiados unos (o demasiados ceros) y, por lo tanto, no se permiten. Esto deja suficientes pares de codificación impares y pares de 10 bits para permitir al menos 12 caracteres especiales que no son de datos.
Los códigos que representan los 256 valores de datos se denominan códigos de datos (D). Los códigos que representan los 12 caracteres especiales que no son de datos se denominan códigos de control (K).
Todos los códigos se pueden describir mediante tres valores octales. Esto se hace utilizando la convención de nomenclatura "Dxx.x" o "Kxx.x". (Tenga en cuenta que las tablas de secciones anteriores utilizan valores decimales, en lugar de octales, para Dxx.x o Kxx.x).
Ejemplo:
- Bits de datos de entrada: ABCDEFGH
- Los datos están divididos: ABC DEFGH
- Los datos están mezclados: DEFGH ABC
Ahora estos bits se convierten a decimal en el orden en que están emparejados.
Datos de entrada
C3 (HEX) = 11000011 = 110 00011 = 00011 110 = 3 6
E 8B/10B = D03.6
Audio digital
Los esquemas de codificación 8b/10b se han utilizado ampliamente en aplicaciones de almacenamiento de audio digital, a saber:
- Cinta de audio digital , patente estadounidense 4,456,905, junio de 1984, por K. Odaka.
- Casete compacto digital (DCC), patente estadounidense 4,620,311, octubre de 1986 por Kees Schouhamer Immink .
Para los CD de audio y los CD-ROM se utiliza un esquema diferente pero relacionado :
Alternativas
Cabe destacar que 8b/10b se refiere al esquema de codificación, no a un código específico. Si bien muchas aplicaciones utilizan el mismo código, existen algunas implementaciones incompatibles; por ejemplo, la señalización diferencial minimizada por transición , que también expande 8 bits a 10 bits, pero utiliza un método completamente diferente para ello.
La codificación 64b/66b , introducida para las interfaces 10GBASE-R de Ethernet de 10 Gigabit dependientes del medio físico (PMD), es una alternativa con menor sobrecarga que la codificación 8b/10b, con una sobrecarga de dos bits por cada 64 bits (en lugar de ocho bits) de datos codificados. Este esquema es considerablemente diferente en diseño a la codificación 8b/10b y no garantiza explícitamente el equilibrio de CC, la longitud de ejecución corta ni la densidad de transición (estas características se logran estadísticamente mediante el cifrado ). La codificación 64b/66b se ha extendido a las variantes de codificación 128b/130b y 128b/132b para PCI Express 3.0 y USB 3.1 , respectivamente, reemplazando la codificación 8b/10b en revisiones anteriores de cada estándar. [ 10 ]
Referencias
- ↑ Kees Schouhamer Immink (marzo de 1997). "Evaluación del rendimiento de códigos multimodo sin CC". IEEE Transactions on Communications . 45 (3): 293– 299. doi : 10.1109/26.558690 .
Los códigos balanceados en CC o sin CC , como se les suele llamar, tienen una larga historia y su aplicación ciertamente no se limita a la práctica de grabación.
- ↑ US 4,456,905 , "Método y aparato para codificar datos binarios", publicado el 26 de junio de 1984
- ↑ US 4,620,311 , "Método de transmisión de información, dispositivo de codificación para su uso en el método y dispositivo de decodificación para su uso en el método", publicado el 28 de octubre de 1986.
- ↑ Al X. Widmer, Peter A. Franaszek (1983). "Un código de transmisión 8B/10B particionado y balanceado en CC" . IBM Journal of Research and Development . 27 (5): 440– 451. doi : 10.1147/rd.275.0440 . Archivado del original el 30 de mayo de 2009. Recuperado el 5 de abril de 2005 .
- ↑ US 4,486,739 , "Código de transmisión de bloques particionados 8B/10B balanceado en CC orientado a bytes (0,4)", publicado el 4 de diciembre de 1984
- ↑ Thatcher, Jonathan (1 de abril de 1996). "Reflexiones sobre Gigabit Ethernet Physical" . IBM . Consultado el 17 de agosto de 2008 .
- ↑ "Especificaciones de la capa física" . Mipi.org . Alianza MIPI . Consultado el 20 de abril de 2014 .
- ↑ Tramado y señalización de Fibre Channel - 3 (FC-FS-3) Rev 1.1 Secciones 5.2.1 y 5.3.1
- ↑ Interfaz física FIBRE CHANNEL-5 (FC-PI-5) REV 6.10 Sección 5.7
- ↑ Mahesh Wagh (6 de agosto de 2011). "PCIe 3.0 Encoding & PHY Logical" (PDF) . pcisig.com . Consultado el 5 de junio de 2015 .
Enlaces externos
- "Definición de codificación 8b/10b" . Archivado del original el 8 de junio de 2014. Consultado el 2 de septiembre de 2014 .
- estándares de telecomunicaciones
- Códigos de línea
- Canal de fibra
- Codificaciones