Está en la página 1de 16

ISSN 1696-7208 Revista nmero 10 de Septiembre de 2004

Codificacin de Datos
Nuevas Tecnologas en Comunicaciones Mviles.

Beln Lara Aznar.

Codificacin de Datos.

ndice.
1. Introduccin. 1.1. Criptografa. 2. Tipos de Procesamiento de la Informacin. 3. Cdigos de Deteccin y Correccin de Error. 3.1. Cdigos de Correccin de Error. 4. Cdigo de Compresin de Datos LZW. 4.1. Compresin. 4.2. Descompresin. 5. Referencias.

Beln Lara Aznar

Codificacin de Datos.

1. Introduccin.
En comunicaciones prcticamente todas las seales digitales producidas en la actualidad llevan asociados el proceso de deteccin o correccin de errores. El primer paso es reconocer la existencia de los mismos; es decir, debemos disponer de mtodos que permitan la evaluacin del nmero de errores. Posteriormente el nmero de errores se expresa como una Tasa de Error de Bit: BER (Bit Error Rate). Tras ser reconocida la existencia de errores puede ser posible la identificacin de los mismos y la correccin. Para ello se han generado mtodos correctores de errores. Se disponen de diferentes tipos de cdigos y de formas para corregir errores: la retransmisin de un paquete de datos (pedido cuando el receptor detecta la presencia de errores y solicita la retransmisin u obligada repitiendo la transmisin sin necesidad del pedido) y la correccin de errores hacia adelante FEC (Forward Error Correction) que enva suficiente cantidad de bits de redundancia como para detectar el bit errado. Una gua de los tipos de codificacin usados en comunicaciones se indica en el siguiente apartado (entendemos por codificacin una manipulacin de la informacin con ciertos objetivos). La codificacin se utiliza por razones de: Contenido de corriente continua DC en conductores de cobre (por uso de transformadores de capacitores en lnea). Temporizacin: para recuperacin del reloj (independencia de la fuente y eliminacin de jitter). Espectro (para reducir la banda de espectro, mejorar la eficiencia espectral y obtener mayor longitud). Mejora del rendimiento y seguridad (deteccin y correccin de errores, detectar cdigos prohibidos, etc). El presente trabajo muestra varios de estos tipos de codificacin. Adems de algunas de las comentadas en el apartado siguiente, se tratarn otras como el cdigo ZivLempel LZ: Un tipo de codificacin especial es la basada en diccionarios. Se fundamenta en ciertas secuencias que son ms comunes y se guardan en diccionarios que pueden ser estticos o adaptativos. A este tipo de codificacin pertenece el cdigo Ziv-Lempel. El algoritmo de 1977 determina el cdigo LZ77 y la versin 1978 se denomina LZ78. La variante de LZ78 debida a Welch se llama LZW. LZW se usa en el comando de

Beln Lara Aznar

Codificacin de Datos.

compresin de UNIX, GIF y V.42bis. Uno de los formatos que utiliza este cdigo es GIF (Graphic Interchange Format), formato diseado por Compuserve para imgenes grficas. La norma ITU-T V.42 describe la compresin de datos mediante LZW para modems de datos en la red telefnica. Utiliza un tamao de diccionario mnimo de 512 (9 bits de largo) y recomendado de 2048 palabras. El cdigo Ziv-Lempel LZ es un formato especial que permite codificar las secuencias repetitivas . La versin del algoritmo del ao 1977 se denomina LZ77 y utiliza el siguiente criterio: Considerar la secuencia ...abracadabrarrarrad... Resultado inicial: ...daabracadabrarrarradaab... (7,4); donde 7 indica la longitud hacia atrs y 4 la longitud de la copia. Es decir, indica la localizacin de la ocurrencia previa; y la longitud de la secuencia respectivamente. Resultado posterior: ...daabracadabrarrarradaab.... (3,5).

1.1 Criptografa. La codificacin criptogrfica permite la proteccin contra ataques pasivos (sobre la seal de datos PDU) a la comunicacin. El trmino cipher y cryption se refiere al proceso de cifrado o encriptado de datos. El desarrollo de estas tcnicas ha venido causado por su necesidad de uso. Ejemplos de estos usos que han contribuido a su evolucin son: INTERNET. La criptografa para Internet se inicia en 1976 por Diffie y Hellman cuando se estableci el concepto de criptografa de clave pblica. Para realizar este proceso se recurre a un nmero pblico (g), dos nmeros privados (x,y) y un mdulo (p). El extremo A enva la clave (gx) y el extremo B la clave (gy) en ambos casos mdulop. En recepcin se realizan las operaciones (gx)y y (gy)x que son iguales y pasan a ser la clave de criptografa secreta y nica. El problema de la criptografa de clave pblica es la lentitud de clculo y la posibilidad de ser descifrada mediante el criptoanlisis. El mtodo estndar utilizado en Internet se basa en segmentar la informacin en bloques fijos de 64 o 128 bits de longitud para realizar una criptografa por bloques. Para reducir la probabilidad de deteccin se realiza un proceso de concatenacin de forma que el resultado de un bloque influye sobre el

Beln Lara Aznar

Codificacin de Datos.

siguiente. Se denomina DES (Data Encryption Standard) fundamentado en bloques de cdigos conocidos ECB (Electronic Code Book).

EJEMPLO TELEFONIA GSM. Un tipo de Criptografa se aplica en telefona mvil celular en GSM. Se procede a criptografiar la informacin para proteccin de escuchas no autorizadas. El cifrado se realiza sobre pares de grupos de 57 bits con una codificacin de interleaver (permutaciones) ya realizada. Se tienen algoritmos distintos pero similares para el proceso de autentificacin y cifrado de datos de usuario. La red GSM (desde el centro de conmutacin MSC) enva un nmero aleatorio RAND de 128 bits. El mvil utiliza a RAND para mezclarlos con un parmetro secreto Ki disponible en el centro de autentificacin. La mezcla se realiza mediante un algoritmo denominado A8 y permite obtener la seal Kc de 64 bits. El nmero de trama (22 bits) y Kc (64 bits) generan, mediante el algoritmo de criptografa A5, la seal S2 de 114 bits. La numeracin secuencial de trama se recibe por el canal de control de sincronismo SCH. Esta seal S2 se usa para componer los datos (2x57 bits) a ser transmitidos mediante compuertas exclusive-or (XOR).

2. Tipos de Procesamiento de la Informacin.


En la siguiente relacin se muestran diversos tipos de codificacin, as como sus usos. Cdigo de lnea. Se utiliza para mantener la corriente continua nula en pares metlicos y enviar datos junto con el reloj por el mismo par. Por ejemplo: HDB3 en 2 Mb/s, CMI en STM-1, Manchester en LAN, etc. Otros medios de transmisin como la fibra ptica utilizaron los cdigos de lnea redundantes (por ejemplo, nBmB) como medio de deteccin de errores y aleatorizacin. En enlaces radioelctricos (terrestres, satelitales, celulares) el equivalente del cdigo de lnea es la modulacin. Codec vocal. Codificacin usada para comprimir la velocidad de 64 kb/s de los canales de telefona satelital y celular. La codificacin DPCM tambin se aplica para seales de vdeo. La codificacin predictiva lineal LPC es ms efectiva que DPCM desde el punto de vista de reduccin de velocidad a costa de calidad y retardo de procesamiento. DPCM se utiliza en telefona satelital y LPC en celular.

Beln Lara Aznar

Codificacin de Datos.

Codec audio. La codificacin de audio y canales de sonido tiene como objetivo maximizar la calidad en lugar de reducir la velocidad. Se utilizan algoritmos de codificacin en el dominio de la frecuencia.

Codec vdeo. La Transformada Discreta Coseno DCT es aplicable para comprimir las imgenes en JPEG y MPEG. En MPEG para imgenes en movimiento se aplica en conjunto con la Transformada Compensacin de Movimiento MCT.

Cdigo VLC. La Codificacin de Longitud Variable (Huffman) permite la reduccin promedio de la velocidad de datos. Es utilizado en facsmil con una relacin de compresin de 15:1. Tambin se aplica en JPEG/MPEG y otros procesos. Se denomina Codificacin de Entropa al cdigo Morse y Huffman-1952. El cdigo Morse utiliza la tcnica VLC donde las letras ms utilizadas requieren menor nmero de caracteres, por ejemplo e (.) y q (--.-). En cambio el cdigo ASCII es de longitud fija FLC (Fixed Length Code) de 7 bits (por ejemplo la letra a corresponde a 1000011).

Scrambler. Se trata de componer la seal a transmitir con una secuencia pseudoaleatoria PRBS. En fibra ptica permite la recuperacin de reloj (mantener la temporizacin) y en enlace de radiofrecuencia la distribucin espectral de la potencia. Se tienen las variantes auto-sincronizadas y sincrnicas.

Interleaver. Es utilizado para la distribucin de datos en el tiempo y eliminacin de rfagas de errores. Se disponen de interleaver a bloques y convolucional. Se aplica en conjunto con los codificadores FEC en enlaces celulares, radioelctricos terrestres y CD-ROM.

Criptografa. Esta forma de codificacin permite encubrir la informacin enviada bajo un formato de difcil identificacin por un detector no autorizado. Se encuentra en aplicaciones como ser CATV, redes de datos y sistemas celulares.

Diferencial. Permite obtener una demodulacin no-coherente en los mdems PSK, QAM y TCM. Se encuentra ligada a la codificacin trellis (TCM). Deteccin error. Los bits de paridad son utilizados para la deteccin de errores. Se encuentran las variantes CRC, BIP y checksum. Se aplica en toda seal digital conocida. Solo permite conocer la existencia de errores. La accin siguiente puede ser: informar mediante reportes de alarmas, descartar la informacin o corregir los errores.

Beln Lara Aznar

Codificacin de Datos.

Correccin error. Los FEC son cdigos para correccin de errores. Se disponen de dos tipos de FEC a bloques y convolucional. El FEC a bloques es del tipo Hamming, BCH o RS. El FEC convolucional da lugar al algoritmo de Viterbi. Son aplicados en los servicios satelitales IDR-IBS, telefona celular, CDROM, etc. Otra forma de corregir errores es la retransmisin (ARQ) usada en redes de datos (no aplicable a seales en tiempo real).

Spread Spectrum. Es un modo de codificacin usado para acceso mltiple por divisin de cdigo CDMA. Utilizado en aplicaciones satelitales y celulares. En el desarrollo en este trabajo se presentan algunos de estos cdigos.

3. Cdigos de Deteccin y Correccin de Error.


La codificacin con control de error es un mtodo para aadir redundancia a la informacin de forma que pueda ser transmitida a travs de un canal ruidoso y posteriormente, comprobada y corregida de los errores que hayan podido ocurrir en la transmisin. Su mayor aplicacin est en la comunicacin multimedia, como voz y video comprimida y datos. Pero especialmente, el mayor beneficio de la codificacin con control de error es para las aplicaciones wireless como telefona mvil y para alta definicin en la seal de difusin de televisin. Tambin es muy til en comunicaciones espaciales y por satlite, comunicacin digital y almacenamiento. En la figura se muestra un esquema bsico de cmo la informacin es transmitida y recibida en un canal con control de error.

Beln Lara Aznar

Codificacin de Datos.

Primero, la seal se graba y comprime digitalmente. A continuacin, se codifican los datos con el cdigo de control de error. Se modula para pasar de datos digitales a seal analgica y se amplifica para su transmisin por el canal. En el extremo receptor, la seal analgica se demodula para volver a su formato digital original. Los datos son procesados entonces en el decodificador de control de error usando la redundancia para corregir los errores que surgieron en la transmisin. Finalmente, los datos se descomprimen y se presentan. La sensibilidad a los errores de los distintos tipos de seales es la siguiente: Medio Voz sin compresin Video sin compresin Voz comprimida Video comprimido Datos Sensibilidad al error Baja sensibilidad Baja sensibilidad Alta sensibilidad Alta sensibilidad Alta sensibilidad

El objetivo de la codificacin con control de error es reducir el nmero de errores causados por la transmisin en un medio con potencia limitada. Tericamente, la mejor capacidad que un canal puede alcanzar es el lmite de Shannon. Un cdigo que alcance el lmite de Shannon es ideal, pero hasta ahora no se ha conseguido. El nico cdigo que en la prctica se queda ms cerca de este lmite es el turbo cdigo. Unos cdigos obtienen mayor rendimiento que otros. Los mejores cdigos encontrados para su uso prctico han sido los turbo cdigos, basados en RSC (Recursive Systematic Convolutional); el cual usa dos codificadores RSC, separados por interleaver. Algunas de las ventajas de los turbo cdigos son las superiores prestaciones que ofrece sobre los cdigos convencionales y que el uso de interleavers reduce las posibilidades de ataques externos. Las caractersticas de rendimiento que ofrecen estos cdigos son: Ms de 8,5 dB de ganancia de codificacin, respecto de un canal sin codificar, a u tasa de error (BER) de 10-5 . La ganancia de codificacin se na mide como la diferencia de relacin seal-ruido (SNR) entre un canal codificado y otro sin codificar. Ganancia de codificacin de ms de 2,7 dB respecto de los algoritmos convencionales FEC, como Viterbi o Reed- Solomon.
Beln Lara Aznar

Codificacin de Datos.

Esta

potencia

de

codificacin

es

extremadamente

importante

en

muchas

aplicaciones de telecomunicaciones porque permite disminuir la cantidad de potencia necesaria para transmitir seal o incrementar el rango en el que la seal puede ser recibida. Esta codificacin tambin permite incrementar el tiempo de duracin de la batera de los dispositivos portables y la capacidad de celda para mviles u otros tipos de acceso al medio, adems tambin incrementa la cantidad de datos que pueden transmitirse. Este cdigo es, por ejemplo, el usado en la Armada de los EEUU.

3.1 Cdigos de Correccin de Error. Los esquemas de correccin son de dos clases: de bloque y convolucionales. Una tercera clase de cdigo, muy popular recientemente es el Turbo Cdigo. Tcnicamente, el Turbo Cdigo es un cdigo de bloque, pero funciona como una combinacin de un cdigo de bloque y uno convolucional.

Cdigos de Bloque. Los cdigos de bloque toman un bloque de bits, de longitud k, denominado secuencia de informacin, y lo codifican en una palabra de longitud n, con n>k. Los bits adicionales en la palabra codificada son bits de paridad, n bits. Los bits de paridad se -k usan para comprobar si la palabra codificada tiene errores una vez decodificada. Si hay errores, el decodificador los detecta y los corrige. Un cdigo de bloque muy comn es el cdigo de Hamming que se ilustra en el siguiente ejemplo. Ejemplo: Queremos transmitir el dato (0011) de 4 bits de longitud. Para una secuencia de longitud 4 (a0, a1, a2, a se aaden 3 bits de redundancia (b0,b1, b2) para formar la 3), palabra codificada. En este caso particular el cdigo es (7,4), con k=4 y n=7, donde los 4 primeros bits de la palabra codificada son la misma secuencia que la palabra de informacin. Los 3 ltimos bits redundantes se calculan usando aritmtica en mdulo 2 en las siguientes ecuaciones: b0=a1+a2+a3=0+1+1=0 b1=a0+a1+a3=0+0+1=1 b2=a0+a2+a3=0+1+1=0 Al concatenar con la secuencia, el bloque transmitido resulta: Datos &Bits de Paridad= Bloque transmitido

Beln Lara Aznar

Codificacin de Datos.

&

Debido al ruido de interferencia del canal, el bloque recibido (d0, d1, d2, d3, d4, d5, d6) puede no ser el mismo que el bloque transmitido (a0, a1, a2, a3, b0, b1, b2). Por ejemplo supongamos que se transmite {0011010}pero se recibe {1011010}. El decodificador no conoce el bloque original, por lo que debe resolver el siguiente sistema de ecuaciones para detectar si hay error, y en ese caso dnde se produjo: s0=d1+d2+d3+d4=0+1+1+0=0 s1=d0+d1+d3+d5=1+0+1+1=1 s2=d0+d2+d3+d6=1+1+1+0=1 Si (s0,s1,s2)=(0,0,0) entonces no hay error. Como en este caso (s0,s1,s2)=(0,1,1) el decodificador sabe dnde est el error. Para corregir el error se busca este valor en la tabla siguiente, que indica posicin del error segn estos valores:

(s0,s1,s2) 000 001 010 011 100 101 110 111

Posicin del error en bloque transmitido NONE d6 d5 d0 d4 d2 d1 d3

Para crear esta tabla, asumiendo error en un solo bit, el codificador determina qu componentes de la ecuacin estn presentes en todas las ecuaciones de error (sx = 1) y no presentes en las ecuaciones correctas (sx = 0). Por ejemplo, el sndrome (s0, s1, s2) result arriba (0, 1, 1), por lo tanto el codificador determina qu componentes estaban presentes en el clculo de s1 y s2, pero no en el clculo de s0. La respuesta es d0, por lo que este bit es el error. Cdigos convolucionales. Otro mtodo de codificacin es la codificacin convolucional, llamada tambin codificacin continua porque tan pronto como un bit es codificado, es transmitido. Al
Beln Lara Aznar

10

Codificacin de Datos.

contrario que los cdigos de bloque, no se necesita la informacin entera para poder codificar. Normalmente se utilizan en combinacin con Viterbi y Viterbi de decisin suave (SOVA). En la figura se muestra un ejemplo de codificador convolucional:

Unas cuantas muestras de entrada y salida se muestran en la tabla a continuacin. Al principio, los registros de desplazamiento se suponen vacos: Secuencia de entrada, Ux Etiqueta Palabra de cdigo y1k 0000 0001 0010 0011 0 A B C 0000 0101 1010 1111 y2k 0000 0111 1110 1001

Un codificador convolucional como el de la figura superior, generalmente tiene dos o ms biestables (D), que constituyen el registro de desplazamiento, y una o ms puertas XOR. Una variacin del cdigo convolucional es el RSC (Recursive Systematic Convolutional); ste es especial porque tiene realimentacin, es decir es recursivo. Un ejemplo de ste se muestra en la figura siguiente:

Turbo Cdigos. Aunque son considerados cdigos de bloque, no funciona exactamente igual. Son como una mezcla entre los cdigos de bloque y los convolucionales. Requieren, igual que los cdigos de bloque, que toda la informacin est presente para codificar. Sin embargo, en vez de calcular los bits de paridad, utilizan registros de desplazamiento, como los cdigos convolucionales.

Beln Lara Aznar

11

Codificacin de Datos.

Los

Turbo

Cdigos

utilizan

al

menos

dos

componentes

de

codificacin

convolucional y dos decodificadores en el Turbo codec. Hay tres tipos de implementacin de los Turbo Cdigos: PCCC (Parallel Concatenated Convolutional Codes). SCCC (Serial Concatenated Convolutional Codes). HCCC (Hybrid Concatenated Convolutional Codes).

Normalmente el esquema tpico es el PCCC. Un ejemplo de este esquema se muestra en la figura:

Como se coment anteriormente, son los que ofrecen las mejores prestaciones debido a su eficacia ante baja SNR. Una razn para esta eficacia es porque estos cdigos producen palabras de mayores pesos ya que la salida de paridad segunda pasa por un interleaver que baraja la secuencia de entrada, produciendo ms probablemente una palabra de mayor peso. Esto es ideal para el cdigo porque palabras de mayor peso significan mejores prestaciones al decodificar. Aunque el codificador determina la capacidad para la correcin de error, es el decodificador el que determina las prestaciones reales. La eficacia depende, no obstante, del algoritmo usado. Como la decodificacin del Turbo Cdigo es un proceso iterativo, requiere un algoritmo de decisin suave, como el MAP (Maximum a Posteriori), o el de Viterbi (SOVA) para la decodificacin. Un esquema del decodificador de Turbo Cdigos se muestra a continuacin:

Beln Lara Aznar

12

Codificacin de Datos.

El proceso de decodificacin empieza recibiendo la informacin parcial de los canales Xk e Yk1 y pasndola por el primer decodificador. El resto de la informacin (Yk2)va al segundo decodificador y e spera a ser aadida con el resto de la informacin. Mientras el segundo decodificador espera, el primer decodificador hace una estimacin de la informacin transmitida, la pasa por el interleaver para adoptar el formato de la paridad 2 y lo enva al segundo decodificador. El segundo decodificador toma la informacin del primero y la estimacin del canal y vuelve a hacer una estimacin de la informacin. Esta segunda estimacin realimenta al primer decodificador y el proceso comienza de nuevo. Este ciclo continuar hasta que se cumplan ciertas condiciones. Cuando el decodificador est listo, la informacin estimada sale del ciclo y se realiza una decisin dura sobre la componente. El resultado ser la informacin decodificada.

4. Cdigo de Compresin de Datos LZW.


El cdigo Lempel Ziv original se public en 1977. Las mejoras de Terry Welch's al algoritmo fueron publicadas en 1984. El algoritmo es sorprendentemente simple, la compresin que realiza reemplaza cadenas de caracteres por cdigos simples. No hace ningn anlisis del texto de entrada. En vez de eso, aade cada nueva cadena de caracteres a una tabla de cadenas. La compresin tiene lugar cuando se obtiene como salida un cdigo en vez de una cadena de caracteres. El cdigo que se obtiene a la salida del algoritmo LZW tiene longitud arbitraria. Los primeros 256 cdigos (cuando se usan caracteres de 8 bits) son asignados por defecto desde el juego de caracteres estndar. El resto de cdigos son asignados por el algoritmo

Beln Lara Aznar

13

Codificacin de Datos.

a las cadenas. El algoritmo que se implementa en esta trabajo funciona con cdigos de 12 bits. Esto significa que los cdigos 0-255 se refieren a los bits individuales y los 2564095 se refieren a las subcadenas del texto original. 4.1 Compresin. A continuacin se muestra el algoritmo LZW. Como se puede observar intenta adjudicar siempre cdigos a las cadenas que ya se conocen, y cada vez que se aade un nuevo cdigo una nueva cadena entra en la tabla. Rutina LZW_COMPRESION
CADENA = Toma carcter de entrada WHILE hay caracteres en la entrada DO CARACTER = toma carcter de entrada IF CADENA+CARACTER est en la tabla de cadenas CADENA = CADENA+caracter ELSE Sacar el cdigo de CADENA aade CADENA+CARACTER a tabla de cadenas CADENA = CARACTER END IF END WHILE Sacar el cdigo de CADENA

A continuacin se muestra un ejemplo de este algoritmo. Para el ejemplo se han tomado palabras en ingls separadas por el carcter /. La tabla que resulta es: Cadena de entrada = /WED/WE/WEE/WEB/WET Carcter entrada /W E D / WE / WEE /W EB Cdigo de salida / W E D 256 E 260 261 257 Nuevo valor de cdigo 256 257 258 259 260 261 262 263 264 Nueva cadena /W WE ED D/ /WE E/ /WEE E/W WEB

Beln Lara Aznar

14

Codificacin de Datos.

/ WET EOF

B 260 T

265 266

B/ /WET

4.2 Descompresin. El algoritmo compaero para la descompresin es el que se explica en este apartado. Necesita tomar el flujo de cdigos del algoritmo de compresin y usarlos para recomponer exactamente la informacin de entrada. Una razn de la eficiencia del algoritmo LZW es que no necesita que le sea pasada la tabla de cadenas para descompresin del cdigo. La tabla puede ser construida exactamente como fue realizada en la compresin, usando el flujo de datos de entrada. Esto es posible porque el algoritmo de compresin siempre saca la cadena y el carcter antes de usar su posterior cdigo de salida. Esto da lugar a que los datos comprimidos no estn masificados con la enorme tabla de traducciones de las cadenas. Rutina LZW_DECOMPRESION Leer COD_ANT Sacar COD_ANT WHILE hay caracteres de entrada DO Leer COD_NUEVO CADENA = realizar traduccin del COD_NUEVO Sacar CADENA CARACTER = primer carcter en CADENA aadir COD_ANT + CARACTER a la tabla de traduccin COD_ANT = COD_NUEVO END WHILE

5. Referencias.
C. Berrou, A. Glavieux, and P. Thitimajshima, Near Shannon Limit ErrorCorrecting Coding and Decoding: Turbo-Codes, IEEE 1993, pp.1064-1070. 2. Amin Shokrollahi, LDPC Codes: An Introduction, Digital Fountain, Inc., April 2003. 3. http://www.cambridge.org/0521642981, Convolutional Codes and Turbo Codes, Cap.48, Cambridge University Press 2003. 4. Wei Mo, An Introduction to Turbo Codes, Iowa State Iowa State University, March 2003.
1.

Beln Lara Aznar

15

Codificacin de Datos.

5. J. Feldman, D. Karger and M. Wainright, Algorithms for Decoding Turbo Codes and LDPC Codes, MIT Laboratory for Computer Science, March 2003, pp. 313314. 6. Mark Nelson, LZW Data Compression, Dr. Dobb's Journal October, 1989. 7. Internet es la fuente ms recomendable existiendo multitud de artculos publicados en la web. Las especificaciones formales habitualmente se pueden descargar desde las web de los organismos relacionados.

Beln Lara Aznar

16

También podría gustarte