CODIFICACIÓN DE MULTINIVEL La presente invención se refiere en general a un sistema para codificar datos. Más particularmente, la presente invención se refiere a un sistema para codificar datos el cual permite velocidades de transmisión de datos más elevadas y conserva la anchura de banda y proporciona
-autosincronización \ ANTECEDENTES DE LA INVENCIÓN Los métodos de codificación de datos de la técnica anterior para codificar la información digital han utilizado dos niveles de voltaje, en donde cada nivel voltaje representa un solo bit. En este aspecto, un primer nivel de voltaje representa un valor digital "0", mientras que un segundo nivel de voltaje representa un valor digital "1" . Como un resultado, se necesita un conjunto de ocho de estos niveles de voltaje para codificar un byte de datos digitales. Los bytes de datos se codifican en voltajes variables y se decodifican de nuevo en bytes . Esto se hace al utilizar un dispositivo electrónico comúnmente disponible, el cual generalmente se refiere como un UART
(Receptor-Transmisor Asincrono Universal) o un ACIA
(Adaptador de Interface de Comunicaciones Asincrono) . Los
UARTs convierten datos paralelos (usualmente palabras de ocho bits) en una corriente de datos en serie para su transmisión sobre un solo cable de alambre y simultáneamente convierte una corriente de bits en serie recibida en palabras paralelas . La corriente de datos en serie se encuentra comprendida de una señal que tiene dos niveles de voltaje, representado uno un "0" digital, representando el otro un "1" digital. En muchos casos, la velocidad de transmisión de datos factible por los UARTs y ACIAs es insuficiente para la aplicación deseada. Con el objeto de lograr mayores velocidades de transmisión de datos para comunicaciones de velocidad elevada, se han codificado datos en formas de onda complejas tales como tonos, los cuales se modulan después por fase, frecuencia y amplitud. Por ejemplo, se han codificado datos utilizando modulación de RF
(Radiofrecuencia) , QAM (Modulación de Amplitud en Cuadratura) , ASK (Manipulación por Variación de Amplitud) , PSK (Manipulación por Variación de Fase) , FSK (Manipulación por Desplazamiento de Frecuencia) , TCM (Modulación Codificada en Enrejado) y QPSK (Manipulación por Variación de Fase en Cuadratura) . Todos los métodos anteriores codifican los datos en formas de onda de CA. para su transmisión. La presente invención supera las limitaciones de la velocidad de transferencia de datos de los sistemas de codificación de la técnica anterior y proporciona un sistema para codificar bits de datos múltiples en paralelo como transiciones entre niveles discretos. Este sistema de codificación incrementará substancialmente la velocidad de transferencia de datos y conservará la anchura de banda dentro de un medio que es capaz de soportar niveles discretos. SUMARIO DE LA INVENCIÓN De acuerdo a la presente invención, se proporciona un método para codificar datos que incluye las etapas de recibir una pluralidad de valores de entrada a codificarse, en donde cada valor de entrada puede ser uno de N valores de entrada diferentes; establecer al menos N+l niveles de salida y la transición de uno de dichos al menos N+l niveles de salida a otro de dichos al menos N+l niveles de salida, representando cada transición uno de los N valores de entrada diferentes . De acuerdo a otro aspecto de la presente invención, se proporciona un sistema para codificar datos que comprende medios para establecer al menos N+l niveles de salida, en donde cada transición de un nivel de salida a otro nivel de salida representa un valor de entrada codificado; medios para recibir una pluralidad de valores de entrada a codificarse, en donde cada uno de los valores de entrada puede ser uno de N valores de entrada diferentes y medios para la transición de uno de los al menos N+l niveles de salida a otro de los al menos N+l niveles de salida para cada valor de entrada recibido consecutivamente . De acuerdo a otro aspecto de la presente invención se proporciona un método para codificar y decodificar datos que incluye las etapas de establecer N+l niveles de voltaje, en donde cada transición de un nivel de voltaje a otro nivel de voltaje representa un valor de entrada codificado; recibir una pluralidad de valores de entrada a codificarse, en donde cada valor de entrada es uno de N valores de entrada diferentes, que representa log2 (N) bits; transitar de uno de los N+l niveles de voltaje a otro de los N+l niveles de voltaje para cada valor de entrada recibido consecutivamente y decodificar el nivel de salida en un valor de entrada de acuerdo a un conjunto de reglas determinado tanto por el nivel de salida que se decodifica actualmente como uno o más de los niveles de salida previamente decodificados. De acuerdo a otro aspecto de la presente invención, se proporciona un sistema para decodificar datos comprendido de medios de detección de transiciones para detectar una transición de un primero de N+l niveles de salida a un segundo de N+l niveles de salida; medios de decodificación para decodificar un nivel de salida a un valor de entrada en respuesta a la detección de una transición del primero de N+l niveles de salida al segundo - de N+l niveles de salida, el cual decodifica el nivel de salida al valor de entrada de acuerdo con el nivel de salida que se decodifica actualmente y al menos uno de los niveles de salida previamente decodificados; y medios de almacenamiento para almacenar el valor de entrada decodificado por los medios de decodificación. Es un objeto de la presente invención proporcionar un sistema de codificación de datos que logre mayores velocidades de transferencia de datos, sin utilizar velocidades de sincronización más elevadas para transportar los datos . Es otro objeto de la presente invención proporcionar un sistema de codificación de datos que utilice una anchura de banda de manera más eficiente. Es todavía otro objeto de la presente invención proporcionar un sistema de codificación de datos que codifique una serie de bits de datos múltiples en una serie de niveles de voltaje. Es aún otro objeto de la presente invención proporcionar un sistema de codificación de datos que codifique una serie de N valores de entrada (base N+l) en una serie de transiciones entre uno de N+l o más niveles de voltaje . Es aún otro objeto de la presente invención proporcionar un sistema de codificación de datos que -
transmite los datos codificados utilizando una forma de onda que se autosincroniza de manera inherente, en donde las transiciones de un nivel a otro nivel indican que existen datos para codificarse. Es todavía otro objeto de la presente invención proporcionar un sistema para decodificar datos codificados de multinivel. Es todavía otro objeto de la presente invención proporcionar un sistema de decodificación de datos que decodifica una serie de N+l o más niveles de voltaje en N valores de datos posibles que igualan los N valores de entrada originales antes de la codificación. Es todavía otro objeto de la presente invención proporcionar un sistema de decodificación de datos que no requiera una señal de sincronización externa para su sincronización con una forma de onda codificada. Es todavía otro objeto de la presente invención proporcionar un sistema de decodificación de datos el cual autosincronice un decodificador con una forma de onda codificada por referencia para establecer transiciones dentro de una forma de onda, tales como cambios de un nivel de voltaje a otro. Es aún otro objeto de la presente invención permitir una fácil implementación de varios métodos de detección y corrección de errores al utilizar más de N+l -
niveles de salida y transiciones de los mismos. Estos y otros objetos será aparentes a partir de la siguiente descripción de una modalidad preferida tomada junto con los dibujos acompañantes y las reivindicaciones anexas . BREVE DESCRIPCIÓN DE LOS DIBUJOS Las características y objetos arriba mencionados y otros de la invención y la manera de lograrlo serán más aparentes y la invención se entenderá mejor con referencia a la siguiente descripción detallada de una modalidad de la invención tomada en relación a los dibujos acompañantes y las reivindicaciones anexas, en donde: La Figura 1 es un diagrama de estados para codificar dos valores de entrada diferentes en tres niveles de salida, de acuerdo a una modalidad preferida de la presente invención; La Figura 2 es un diagrama de estados para codificar tres valores de entrada diferentes en cuatro niveles de salida, de acuerdo a una modalidad preferida de la presente invención; La Figura 3 es un diagrama de estados para codificar cuatro valores de entrada diferentes en cinco niveles de salida, de acuerdo a una modalidad preferida de la presente invención; La Figura 4 es un cronograma que ilustra la codificación de cuatro valores de entrada diferentes, de acuerdo al diagrama de estados mostrado en la Figura 3 ; La Figura 5 es un diagrama de flujo que ilustra una modalidad preferida del algoritmo para codificar los valores de entrada, de acuerdo al diagrama de estados mostrado en la Figura 3; La Figura 6 es un diagrama de flujo que ilustra una modalidad preferida del algoritmo para decodificar niveles de salida en valores de entrada; La Figura 7 es un cronograma que ilustra la codificación de cuatro valores de entrada diferentes; La Figura 8 es un diagrama de bloques de la instalación de hardware para implementar el algoritmo de codificación, de acuerdo a una modalidad preferida de la presente invención; y La Figura 9 es un diagrama de bloques de la instalación de hardware para implementar el algoritmo de decodificación, de acuerdo a una modalidad preferida de la presente invención. DESCRIPCIÓN DETALLADA DE LA MODALIDAD PREFERIDA La presente invención se dirige a un sistema para codificar N valores de entrada en al menos N+l niveles de salida. En una modalidad preferida de la presente invención, cada nivel de salida se representa por un voltaje diferente. Sin embargo, debe apreciarse que cada -
nivel de salida también puede representarse por una frecuencia, fase o amplitud diferente. Refiriéndose ahora a los dibujos en donde las exposiciones son para el propósito de ilustrar solamente una modalidad preferida de la invención y no para el propósito de limitar la misma, la Figura 1 muestra un diagrama de estados 20 que ilustra la transición entre estados para codificar dos valores de entrada diferentes (es decir, "0" y "1") en tres niveles de salida (es decir, niveles de salida A, B y C) , de acuerdo a una modalidad preferida de la presente invención. Por ejemplo, comenzando en el estado 22 (nivel de salida A) , si el siguiente valor de entrada es un "0", el sistema transita al estado 24 (nivel de salida (B) . En contraste, si el siguiente valor de entrada es un "1", el sistema transita al estado 26 (nivel de salida C) . El sistema transitará de un estado a uno de los otros dos estados restantes a medida que cada valor de entrada consecutivo se codifique. De manera importante, debe observarse que ninguno de los dos valores de entrada consecutivos se codificará como el mismo nivel de salida. La Figura 2 muestra un diagrama de estados 30 que ilustra la transición entre estados para codificar tres valores de entrada (es decir, "0", "1" y "2") en cuatro niveles de salida (es decir, niveles de salida A, B, C y D) , de acuerdo a una modalidad preferida de la presente invención. La Figura 3 muestra un diagrama de estados 40 que ilustra la transición entre estados para la codificación de cuatro valores de entrada (es decir, "0", "1", "2" y "3") en cinco niveles de salida (es decir, niveles de salida A, B, C, D y E) , de acuerdo a una modalidad preferida de la presente invención. Debe apreciarse que ya que hay cuatro valores de entrada, cada valor de entrada puede representar un par de bits (es decir, "00", "01", "10" y "11"). Por lo tanto, cada nivel de salida representará dos bits, en lugar de un bit, como en sistemas de codificación convencionales. Además, cuando se codifican N valores de entrada diferentes en al menos N+l niveles de salida, cada valor de entrada puede representar log2 (N) bits. Como un resultado de utilizar un solo valor de entrada para representar una pluralidad de bits, son factibles las velocidades de transferencia de datos más elevadas, y puede conservarse la anchura de banda. Debe apreciarse que aunque en una modalidad preferida de la presente invención los valores de entrada codifican datos de base 2 (es decir, log2 (N) bits), los valores de entrada también pueden codificar datos de base X. Por lo tanto, los valores de entrada pueden representar valores de O a X-l en base X con la salida codificada teniendo al menos X niveles de salida diferentes. También debe entenderse que pueden existir más -
de N+l niveles de salida y transiciones de los mismos para codificar N valores de entrada diferentes. Esto permite la implementación simplificada de varios métodos de detección y corrección de errores . Una descripción detallada de la presente invención según se aplica a la codificación de cuatro valores de entrada en cinco niveles de salida, se describirá ahora con referencia a las Figuras 4 y 5. La Figura 4 proporciona un cronograma 50 que muestra la transición de los niveles de salida a medida que cada valor de entrada se codifica. Debe apreciarse que en la modalidad mostrada en la Figura 4, cada valor de entrada representa un par de bits. Para el propósito de ilustración, el valor de entrada "0" representa el par de bits "00", el valor de entrada "1" representa el par de bits "01", el valor de entrada "2" representa el par de bits "10" y el valor de entrada "3" representa el par de bits "11". Como puede observarse a partir de la Figura 4, cada nivel de salida consecutivo será diferente. Cada nivel de salida A a E es un nivel de voltaje discreto. Por ejemplo, los niveles de salida A a E pueden corresponder a voltajes en el rango de 0 a 5 voltios. Los valores de entrada mostrados en la Figura 4 se codifican en niveles de salida A a E, de acuerdo al algoritmo mostrado en el diagrama de flujo 60 de la Figura 5. Comenzando con la etapa 62 , una PRIMER señal se establece como VERDADERA. Esta indicará que es el primer valor de entrada a codificarse. En la etapa 64, se leerá un valor de entrada. Después, en la etapa 66, se determina si el valor de entrada es el primer valor de entrada a codificarse, al determinar el estado de la PRIMER señal. Si el valor de entrada es el primer valor de entrada a codificarse, se aplicará un primer conjunto de reglas (etapas 70-76) . Si el valor de entrada no es el primer valor de entrada a codificarse, se determinará si un segundo conjunto de reglas (etapas 80-86) debe aplicarse, como se tratara abajo. Por ejemplo, en la Figura 4, el primer valor de entrada es un "0" (correspondiente al par de bits "00") . De acuerdo con lo anterior, existen las condiciones para aplicar el primer conjunto de reglas. En particular, se ejecutará la etapa 70. En este aspecto, el nivel de salida se establecerá como A y la ÚLTIMA variable se establecerá como "0" . La .ÚLTIMA variable se utiliza como un valor de referencia para determinar el conjunto apropiado de reglas a aplicarse siguiendo el primer valor de entrada, como se describirá abajo en relación con la etapa 68. Debe entenderse *ue solamente una de las etapas 70-76 será válida cuando se aplique el primer conjunto de reglas. De acuerdo con lo anterior, la etapa 90 seguirá a la etapa 70. La etapa 90 establece la PRIMER señal como FALSA para los valores de entrada subsecuentes . El algoritmo regresa entonces a la etapa 64 para leer el siguiente valor de entrada. En la Figura 4, el siguiente valor de entrada consecutivo es un "1" . Ya que la PRIMER señal se establece ahora como FALSA, el algoritmo procederá de la etapa 66 a la etapa 68. En la etapa 68, se determina si el valor de entrada es menor a la ÚLTIMA variable. Esta etapa determina si debe aplicarse el primer conjunto de reglas (etapas 70-76) o si debe aplicarse el segundo conjunto de reglas (etapas 80-86) . En el presente ejemplo, el valor de entrada de "1" es mayor a la ÚLTIMA variable, la cual se ha establecido previamente como "0" en la etapa 70. Por lo tanto, el algoritmo aplicará el segundo conjunto de reglas (etapas 80-86) . Ya que el valor de entrada es "1", se ejecutará la etapa 82. La etapa 82 establece el nivel de salida como C y la ÚLTIMA variable como 2. El algoritmo procede entonces a la etapa 90 y regresa de nuevo a la etapa 64 para leer el siguiente valor de entrada consecutivo. El algoritmo continuará de esta manera hasta que todos los valores de entrada se hayan codificado como niveles de salida. Con referencia a la Figura 4, debe apreciarse que el nivel de salida del valor de entrada codificado precedente determinará el nivel de salida para el siguiente valor de entrada codificado consecutivo. En particular, el siguiente valor de entrada consecutivo se codificará como uno de los cuatro niveles de salida restantes. Como resultado, cuando dos valores de entrada consecutivos son los mismos, tal como los 3 consecutivos que siguen a los primeros tres valores de entrada en la Figura 4, cada uno de los 3 se codificarán como niveles de salida diferentes. En el caso del primer "3", el nivel de salida es E, mientras que el segundo 3 se codifica como el nivel de salida D. Ya que ningún nivel de salida consecutivo será el mismo, los niveles de salida transitarán por cada valor de entrada codificado, consecutivo. Refiriéndose ahora a la Figura 6, se muestra un diagrama de flujo 100 que ilustra un algoritmo para decodificar de nuevo niveles de salida en valores de entrada, de acuerdo a una modalidad preferida de la presente invención. Comenzando con la etapa 102, la PRIMER señal se establece como VERDADERA indicando que es el primer nivel de salida a decodificarse. En la etapa 104, se lee el nivel de salida. Para las etapas 106-114, se determina un valor de entrada en base al nivel de salida leído. Sin embargo, en algunos casos el valor de entrada se modificará, como se explicará abajo en relación con la etapa 118. Por lo tanto, el valor de entrada decodificado se determinara en base a un conjunto de reglas determinado tanto por el nivel de salida actual como uno o más niveles de salida previos. Si el nivel de salida es el primer nivel de salida leído (es decir, PRIMERO = VERDADERO) , entonces el valor de entrada no se modifica. En este aspecto, el algoritmo procederá de la etapa 116 a la etapa 120 en donde la ÚLTIMA variable se establecerá como el valor de entrada. Debe apreciarse que la ÚLTIMA variable se utiliza para determinar si necesita modificarse un valor de entrada, como se explicará en relación con la etapa 118. Procediendo después a la etapa 122, la PRIMER señal se establece como FALSA para leer niveles de salida subsecuentes. En la etapa 124, se almacena el valor de entrada. El algoritmo regresa ahora a la etapa 104, para leer el siguiente nivel de salida consecutivo. Después de evaluar el nivel de salida en las etapas 106-114, si la PRIMER señal ya no es verdadera (etapa 116) , el algoritmo procede a la etapa 118. En la etapa 118, se determina si el valor de entrada (obtenido en una de las etapas 106-114) es mayor que la ÚLTIMA variable. Si es así, el valor de entrada se modifica al reducirlo en uno. Si el valor de entrada no es mayor a la ÚLTIMA variable, entonces el valor de entrada no se modifica. El algoritmo procede entonces a la etapa 120, en donde la ÚLTIMA variable se establece igual al valor de entrada presente, y la etapa 122. En la etapa 124, se almacena el valor de entrada. El algoritmo 1 -
regresa entonces a la etapa 104 para leer el siguiente nivel de salida consecutivo. El algoritmo continuará de esta manera hasta que todos los niveles de salida se hayan decodificado de nuevo en valores de entrada originales. Como se observa arriba, cada nivel de salida consecutivo en la forma de onda codificada será diferente y de esta manera necesita una transición. Como resultado, el sistema de decodificación no requerirá una señal de sincronización externa para sincronizarse con la forma de onda codificada. En este aspecto, el sistema de decodificación se autosincroniza con la forma de onda codificada al utilizar la transición de cada nivel de salida consecutivo como el indicador de que un nuevo nivel de salida se ha recibido para su decodificación. De esta manera, el decodificador puede sincronizare fácilmente con una forma de onda codificada que tiene una velocidad de transmisión variable. Debe entenderse que aunque las Figuras 4-6 muestran la implementación de solamente cinco niveles de salida, el número de niveles de salida puede ser significativamente mayor. Como resultado, el número de valores de entrada diferentes también puede ser significativamente mayor. Al incrementar el número de niveles de salida y valores de entrada, el número de bits representado por cada valor de entrada también puede incrementarse. De acuerdo con lo anterior, como se observa arriba, la presente invención también puede utilizarse para incrementar substancialmente la velocidad de transferencia de datos y conservar la anchura de banda. Debe apreciarse que las Figuras 4-6 ilustran una relación de temporización fija entre un nivel de salida y el siguiente, únicamente para el propósito de ilustrar la presente invención. En este aspecto, la misma escala de tiempo por sí misma es completamente arbitraria y el tiempo requerido para la transición de un nivel de salida a otro también es completamente arbitrario. De acuerdo con lo anterior, debe entenderse que la presente invención puede maximizar el uso de anchura de banda disponible, al variar la relación de temporización de una transición a otra. Por ejemplo, en un medio de transmisión limitado de anchura de banda, un cambio de un nivel de salida a un nivel de salida cercano, tal como de A a B, se estabilizará rápidamente, mientras que un cambio de un nivel de salida a un nivel de salida distante, tal como de A a E, tomará más tiempo para estabilizarse. Por lo tanto, los cambios pequeños pueden transmitirse de manera más rápida. La Figura 7 proporciona un cronograma 160 que muestra la temporización, en donde la estabilización de las transiciones varia dependiendo de la diferencia relativa entre niveles de salida consecutivos. Como puede observarse a partir del diagrama, el tiempo para un solo cambio de nivel (es decir, de A a B) toma aproximadamente la mitad del tiempo necesario para un cambio de dos niveles (por ejemplo, de B a D) . Refiriéndose ahora a la Figura 8 , se muestra un diagrama de bloques de una instalación de hardware 130 para codificar valores de entrada en transiciones de nivel de salida. La instalación 130 comprende en general una memoria intermedia 132, un circuito lógico de codificación 134 y un convertidor digital-a-análogo 136. En una modalidad preferida de la presente invención, la memoria intermedia 132 es un chip FIFO para almacenar los datos recibidos. Por ejemplo, la memoria intermedia 132 puede tomar la forma de un Semiconductor Cyprus CY7C464. El circuito lógico de codificación 134 se programa para implementar el algoritmo en la manera descrita en relación con la Figura 5. En una modalidad preferida de la presente invención, el circuito lógico de codificación 134 toma la forma de un dispositivo EPLD, tal como el EPM7096S de Altera. El convertidor digital-a-análogo 136 puede tomar la forma de un DAC de vídeo de 8 bits, tal como el TDA8702 de Phillips. La instalación 130 opera de la siguiente manera. Los datos sin codificar se almacenan en la memoria intermedia 132. Los datos sin codificar son valores de entrada que pueden representar uno o más bits. El circuito lógico de codificación 134 extrae de la memoria los datos sin codificar y los codifica en transiciones de niveles de salida que se envían al convertidor digital -a-análogo 136. Debe apreciarse que los datos codificados análogos pueden transmitirse utilizando una variedad de medios diferentes, incluyendo una señal de televisión. Por ejemplo, los datos codificados pueden transmitirse durante la porción de vídeo activa de la señal de televisión. De acuerdo con lo anterior, grandes cantidades de datos pueden transferirse rápida y convenientemente. Refiriéndose ahora a la Figura 7, se muestra un diagrama de bloques de la instalación de hardware 150 para decodificar transiciones de niveles de salida en valores de entrada. La instalación 150 comprende en general un convertidor análogo-a-digital 152, una memoria intermedia 154 y un circuito lógico de decodificación 156. El convertidor análogo-a-digital 152 es preferentemente un ADC de vídeo de 8 bits, tal como el TDA8708B de Phillips. En una modalidad preferida de la presente invención, la memoria intermedia 154 es un chip FIFO para almacenar los datos digitales. Por ejemplo, la memoria intermedia 154 puede tomar la forma de un Semiconductor Cyprus CY7C464. El circuito lógico de decodificación 156 se programa para implementar el algoritmo en la manera descrita en relación con la Figura 6. En una modalidad preferida de la presente invención, el circuito lógico de decodificación 156 toma la forma de un dispositivo EPLD, tal como el EPM7096S de Altera. La instalación 150 opera de la siguiente manera. El convertidor análogo-a-digital 152 recibe los niveles de salida codificados y los convierte en datos digitales. La memoria intermedia 154 almacena los datos digitales. El circuito lógico de decodificación 156 extrae de la memoria los datos digitales de la memoria intermedia 154 y decodifica las transiciones del nivel de salida codificado en valores de entrada. Estos valores de entrada a su vez pueden convertirse en uno o más bits. Debe apreciarse que las instalaciones 130 y 150, como se describe arriba, se proporcionan únicamente para el propósito de ilustrar una modalidad preferida de la presente invención y que numerosas otras instalaciones también son adecuadas . La descripción anterior es una modalidad específica de la presente invención. Debe apreciarse que esta modalidad se describe solamente para propósitos de ilustración, y que pueden practicarse por aquellos expertos en la materia numerosas alteraciones y modificaciones sin apartarse del espíritu y alcance de la invención. En este aspecto, se sabe que grandes cambios entre niveles de salida consecutivos puede generar interferencia - significativa, y requerir de esta manera una anchura de banda incrementada. Como resultado, puede ser necesario en algunos casos limitar los cambios entre niveles de salida consecutivos al 50 por ciento más cerca de los niveles de salida disponibles. Por lo tanto, puede haber más de N+l niveles de salida para codificar N valores de entrada. Por ejemplo, un codificador que tiene diez niveles de salida puede producir una etapa de uno de los cuatro niveles por cada transición, codificando dos bits a un tiempo, pero reduciendo la anchura de banda necesaria del canal . Se pretende que todas tales modificaciones y alteraciones se incluyan hasta donde se encuentren dentro del alcance de la invención según lo reivindicado o los equivalentes de las mismas .