# Códigos NRZ

La forma más frecuente y fácil de transmitir señales digitales es mediante la utilización de un nivel diferente de tensión para cada uno de los bits. Los códigos que siguen esta estrategia comparten la propiedad de que el nivel de tensión se mantiene constante durante la duración del bit, es decir, no hay transiciones (no hay retorno al nivel cero de tensión). Por ejemplo la ausencia de tensión se puede utilizar para representar un 0 binario, mientras que un nivel constante y positivo de tensión puede representar el 1.
En telecomunicaciones, se denomina NRZ porque el voltaje no vuelve a cero entre bits consecutivos de valor uno.
Mediante la asignación de un nivel de tensión a cada símbolo se simplifica la tarea de decodificar un mensaje. Esta es la teoría que desarrolla el código NRZ (non return to zero). La decodificación en banda base se considera como una disposición diferente de los bits de la señal on/off, de este modo se adapta la señal al sistema de transmisión utilizado. Para ello se emplean los códigos tipo NRZ.
Una clasificación atendiendo a las modulaciones situaría el código NRZ dentro de las portadoras digitales y las moduladoras digitales como los códigos Manchester, Bifase, RDSI, etc.
Atendiendo a la forma de onda binaria se pueden clasificar estos códigos como unipolares (el voltaje que representa los bits varía entre 0 voltios y +5voltios). Este tipo de código no es recomendable en largas distancias principalmente por dos motivos. En primer lugar presentan niveles residuales de corriente continua y en segundo lugar por la posible ausencia de suficientes números de transiciones de señal que permitan la recuperación fiable de una señal de temporización.
Los polares desplazan el nivel de referencia de la señal reduciendo a la mitad la diferencia de potencial necesaria con referencia a la Unipolar.
En el receptor y el transmisor se debe efectuar un muestreo de igual frecuencia.
Este código no es autosincronizante, y su principal ventaja es que al emplear pulsos de larga duración requiere menor ancho de banda que otros sistemas de codificación que emplean pulsos más cortos.
Dentro de los códigos NRZ se establece una clasificación, pudiendo tratar códigos del tipo NRZ-L o NRZ-I.

## NRZ-L

La tarea del código NRZL (No Retorno al Cero) es simplificar la descodificación de un mensaje asignando un nivel de tensión en todo los símbolos que lo componen. La descodificación en banda base lleva a cabo una disposición diferente de los bits de la señal on / off, y de esta manera se adapta la señal al sistema de transmisión utilizado.
Por este motivo, se emplean los códigos tipo NRZ. El código NRZ (no retorno a cero) puede dividirse en código polar o código no polar, donde polar hace referencia a una asignación a tensiones de + V y -V, y no polar se refiere a una asignación de tensión de + V y 0, por los valores binarios correspondientes de '0' y '1'.
El código NRZ es una forma de codificar y mapear un código binario en el que los "unos" están representados con una tensión positiva, mientras que los ceros son representados por una tensión negativa, sin ninguna otra condición, neutra o de reposo.

## NRZ-I

El código NRZI (No Retorno al Cero Invertido) es una forma de codificar y mapear una señal binaria por una señal digital para transmitirlo a través de un medio, y es menos usado que el código NRZ.
Las señales NRZI pueden tener una transición si están transfiriendo un 1 lógico y no tienen si lo que transmiten un 0 lógico (hay que tener en cuenta que el sistema binario es un sistema de numeración compuesto solo por el 0 y el 1).
El código del NRZI es un código muy similar al que usan los USB, los CD o el Fast Ethernet. Ahora bien, si el NRZI toma la señalización de los USB, la transición se produciría en la señalización del 0, mientras que en la primera hay un nivel constante.

## Otras variantes

NRZ puede hacer referencia a cualquiera de los siguientes códigos de línea del serializador :
| Nombre clave name | Nombre alternativo name | Nombre completo | Descripción |
| NRZ(L) | NRZL | Nivel sin retorno a cero | Aparece como bits binarios sin formato y sin ningún tipo de codificación. Normalmente, el binario 1 se asigna al nivel lógico alto y el binario 0 se asigna al nivel lógico bajo. El mapeo de lógica inversa también es un tipo de código NRZ(L). |
| NRZ(I) | NRZI | Sin retorno a cero invertido | Se refiere a un código NRZ(M) o NRZ(S). |
| NRZ(M) | NRZM | Marca de no retorno a cero | Asignación de serializador {0: constante, 1: alternar}. |
| NRZ(S) | NRZS | Espacio sin retorno a cero | Asignación de serializador {0: alternar, 1: constante}. |
| NRZ(C) | NRZC | Cambio sin retorno a cero | |
El código NRZ también se puede clasificar como polar polar o no polar, donde polar se refiere a un mapeo de voltajes de +V y −V, y no polar se refiere a un mapeo de voltaje de +V y 0, para los valores binarios correspondientes. de 0 y 1.

### Nivel unipolar sin retorno a cero

"Uno" está representado por una polarización de CC en la línea de transmisión (convencionalmente positiva), mientras que "cero" está representado por la ausencia de polarización: la línea a 0 voltios o conectada a tierra. Por esta razón también se le conoce como "codificación on-off". En lenguaje de reloj, un "uno" pasa o permanece en un nivel sesgado en el flanco posterior del reloj del bit anterior, mientras que "cero" pasa o permanece sin sesgo en el flanco posterior del reloj del bit anterior. Entre las desventajas del NRZ unipolar está que permite series largas sin cambios, lo que dificulta la sincronización, aunque esto no es exclusivo del caso unipolar. Una solución es no enviar bytes sin transiciones. Más críticos, y exclusivos de NRZ unipolar, son los problemas relacionados con la presencia de un nivel de CC transmitido: el espectro de potencia de la señal transmitida no se aproxima a cero en frecuencia cero. Esto conduce a dos problemas importantes: primero, la potencia de CC transmitida conduce a mayores pérdidas de energía que otras codificaciones, y segundo, la presencia de un componente de señal de CC requiere que la línea de transmisión esté acoplada a CC.

### Nivel bipolar sin retorno a cero

"Uno" está representado por un nivel físico (normalmente un voltaje positivo), mientras que "cero" está representado por otro nivel (normalmente un voltaje negativo). En lenguaje de reloj, en el nivel NRZ bipolar, el voltaje "oscila" de positivo a negativo en el flanco de salida del ciclo de reloj de bits anterior.
Un ejemplo de esto es RS-232 , donde "uno" es de -12 V a -5 V y "cero" es de +5 V a +12 V.

### Espacio sin retorno a cero

"Uno" está representado por ningún cambio en el nivel físico, mientras que "cero" está representado por un cambio en el nivel físico. En lenguaje de reloj, el nivel pasa en el flanco posterior del reloj del bit anterior para representar un "cero". Este "cambio en cero" lo utilizan el control de enlace de datos de alto nivel y USB . Ambos evitan largos períodos sin transiciones (incluso cuando los datos contienen secuencias largas de 1 bit) mediante el uso de inserción de cero bits . Los transmisores HDLC insertan un bit 0 después de 5 bits 1 contiguos (excepto cuando se transmite el delimitador de trama "01111110"). Los transmisores USB insertan un bit 0 después de 6 bits 1 consecutivos. El receptor en el otro extremo utiliza cada transición, tanto desde los bits 0 en los datos como desde estos bits 0 adicionales que no son datos, para mantener la sincronización del reloj. De lo contrario, el receptor ignora estos bits 0 que no son datos.

### Sin retorno a cero invertido

El no retorno a cero, invertido (NRZI, también conocido como no retorno a cero IBM , [1] código de inhibición , [2] o código IBM [2] ) fue ideado por Bryon E. Phelps ( IBM ) en 1956 [2] [3] Es un método de mapear una señal binaria a una señal física para su transmisión a través de algún medio de transmisión . La señal NRZI de dos niveles distingue los bits de datos por la presencia o ausencia de una transición en un límite de reloj. La señal codificada NRZI se puede decodificar sin ambigüedades después de pasar por una ruta de datos que no conserva la polaridad.
En la práctica, el valor de bit que corresponde a una transición varía; NRZI se aplica igualmente a ambos. NRZI-M, marca invertida de cero sin retorno, adopta la convención de que un 1 lógico se codifica como una transición y un 0 lógico se codifica como sin transición. Los protocolos HDLC y Universal Serial Bus utilizan la convención opuesta: NRZI-S, espacio invertido de cero sin retorno, que codifica un 0 lógico como una transición y un 1 lógico como sin transición. Ninguna codificación NRZI garantiza que el flujo de bits codificado tenga transiciones.
Un receptor asíncrono utiliza un reloj de bits independiente que está sincronizado en fase detectando transiciones de bits. Cuando un receptor asíncrono decodifica un bloque de bits sin una transición más larga que el período de la diferencia entre la frecuencia de los relojes de bits de transmisión y recepción, el reloj de bits del decodificador es 1 bit anterior al del codificador, lo que resulta en la inserción de un bit duplicado en el flujo de datos decodificado, o el reloj de bits del decodificador, es 1 bit más tarde que el codificador, lo que da como resultado que se elimine un bit duplicado del flujo de datos decodificado. Ambos se denominan "deslizamiento de bits", lo que indica que la fase del reloj de bits se ha deslizado un período de bits.
Forzar transiciones a intervalos más cortos que el período de diferencia de reloj de bits permite utilizar un receptor asíncrono para flujos de bits NRZI. Las transiciones adicionales necesariamente consumen parte de la capacidad de velocidad del canal de datos. No consumir más capacidad de canal de la necesaria para mantener la sincronización del reloj de bits sin aumentar los costos relacionados con la complejidad es un problema con muchas soluciones posibles.
Se han utilizado codificaciones de longitud de ejecución limitada (RLL) para dispositivos de almacenamiento en cinta y disco magnético que utilizan códigos RLL de velocidad fija que aumentan la velocidad de datos del canal en una fracción conocida de la velocidad de datos de información. HDLC y USB utilizan relleno de bits : insertar un bit 0 adicional antes de la codificación NRZI-S para forzar una transición en la secuencia de datos codificados después de 5 (HLDC) o 6 (USB) 1 bits consecutivos. El relleno de bits es más eficiente, ya que consume capacidad del canal sólo cuando es necesario, pero da como resultado una velocidad de datos de información variable porque se necesitan más bits de datos del canal para enviar una larga cadena de marcas con ceros insertados para forzar la codificación de una transición que para enviar. una larga cadena de espacios (0) que codifican como transiciones.

### Sin retorno a cero sincronizado

El NRZI sincronizado (SNRZI) y la grabación codificada por grupo (GCR) son formas modificadas de NRZI. En SNRZI-M cada grupo de 8 bits se amplía a 9 bits mediante un 1 para insertar una transición para la sincronización. En informática, la grabación codificada en grupo o grabación de código de grupo (GCR) se refiere a varios métodos de codificación distintos pero relacionados para representar datos en medios magnéticos. El primero, utilizado en cintas magnéticas de 6250 bpi desde 1973.

## Comparación con retorno a cero

Retorno a cero describe un código de línea utilizado en telecomunicaciones en el que la señal cae (regresa) a cero entre cada pulso . Esto ocurre incluso si en la señal aparecen varios 0 o 1 consecutivos. La señal se sincroniza automáticamente . Esto significa que no es necesario enviar un reloj separado junto con la señal, pero requiere usar el doble de ancho de banda para lograr la misma velocidad de datos en comparación con el formato sin retorno a cero.
El cero entre cada bit es una condición neutral o de reposo, como una amplitud cero en la modulación de amplitud de pulso (PAM), un cambio de fase cero en la modulación por desplazamiento de fase (PSK) o una frecuencia media en la modulación por desplazamiento de frecuencia (FSK). . Esa condición cero suele estar a medio camino entre la condición significativa que representa un bit 1 y la otra condición significativa que representa un bit 0.
Aunque el retorno a cero contiene una disposición para la sincronización, todavía puede tener un componente DC que resulte en una desviación de la línea de base durante cadenas largas de 0 o 1 bits, al igual que el código de línea sin retorno a cero.

### Algoritmo

- Si el bit es 0
la señal se mantiene como está
- Si el bit es 1
La señal varía, es decir, si está a nivel bajo pasa a ser de nivel alto, y viceversa.
Así pues, si tenemos un flujo de información que contiene la secuencia "10110010" y se inicia la señal a nivel alto, los niveles transmitidos con NRZI son "bajo, bajo, alto, bajo, bajo, bajo, alto, alto" , teniendo en cuenta que en transmitir un 0 no se produce transición y en el 1 invierte la transmisión.

## Características

* Detección de posibles errores que pueden surgir en la codificación del mensaje
* NRZ-I es más eficaz ante ruidos y errores del cableado.
* Facilidad de sincronización
* Facilidad de implementación.
* Uso eficaz de ancho de bandas.

## Aplicaciones

Su principal aplicación es la grabación magnética, pero son demasiado limitados para la transmisión de señales.

## Problemas existentes

Uno de los problemas que presenta este código se fundamenta en la longitud de las secuencias de unos y ceros. En estos casos el receptor necesita sincronizarse y del mismo modo llegar a comprobar que exista señal o si por el contrario no está disponible.
Una prolongada permanencia de la señal en nivel positivo o negativo durante la transmisión puede conducir a la situación denominada desplazamiento de la línea base, que dificulta al receptor la adecuada decodificación de la información.
Otro de los aspectos negativos se centra en el método que se debe emplear para que el emisor y el receptor estén en sincronismo. Para ello es necesario continuos cambios en la señal. Esto se ve dificultado cuando aparecen las mencionadas cadenas de unos y ceros que mantienen la tensión a niveles altos o bajos durante largos periodos de tiempo.
* Es susceptible a interferencias.
* Los límites entre bits individuales pueden perderse al transmitir de forma consecutiva secuencias largas de 1 o 0.

## Tabla de códigos NRZ

| Código | Nombre | Descripción |
| NRZ-L | No retorno a cero (Non return to Zero) | En la codificación del sistema binario, el 0 representa el nivel alto y el 1 el nivel bajo. |
| NRZ-I | No retorno al cero invertido (Non return to Zero Inverted) | En la codificación del sistema binario, el 0 no produce transmisión y el 1 envía una transición a nivel positivo y negativo. |