Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

03 Codigos PDF

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 12

Sistemas Digitales

Códigos

Códigos 

Conceptos básicos
Definiciones
Prof. Mario Medina  Tipos de códigos numéricos

mariomedina@udec.cl  Códigos ponderados


 Códigos autocomplementados
 Códigos de largo variable
 Códigos detectores y correctores de errores
 Códigos alfanuméricos

Conceptos generales Conceptos generales


 Código: conjunto de símbolos usados para  Usos comunes de codificación
representar letras, números, palabras,  Transmisión de información fácil y
conceptos u otros símbolos. rápida
 Ejemplos: código morse, emoticones, etc.  Compresión para optimizar el
 En un número codificado, las cifras espacio de almacenamiento
representan algo, y sólo podremos saber su  Expresar adecuadamente los datos
significado si conocemos el código que las para su procesamiento
generó
 Detección y corrección de errores

Códigos binarios Definiciones


 Difícil comprensión para el  Capacidad de un código
humano, pero lenguaje natural en  Número de valores distintos en el código
circuitos  Depende del número de dígitos en el código
 Código de 3 bits tiene capacidad 23 = 8
 Representación fácil y eficiente  Utilización de un código
en  Número de valores distintos definidos como
 Circuitos eléctricos, mecánicos o válidos en el código
hidráulicos  Utilización del código puede ser menor que la
 Medios de almacenamiento ópticos y capacidad
magnéticos  Existencia de palabras no válidas

©2013 Mario Medina C. 1


Sistemas Digitales

Definiciones Tipos de códigos


 Distancia entre 2 palabras de un código  Códigos ponderados
 Número de símbolos de una palabra que deben  Códigos BCD
modificarse para obtener la otra
 Distancia mínima de un código  Códigos autocomplementados
 Mínima distancia entre 2 palabras válidas  Códigos adyacentes
cualesquiera de un código
 Código Gray
 Código adyacente
 Todas las palabras tienen distancia 1 con sus  Códigos de largo variable
vecinos  Códigos detectores y/o correctores de
errores

Códigos ponderados Códigos ponderados


 Palabras del código son generadas por un  BCD 8421 (Similar a binario puro)
polinomio cuyos dígitos tienen una  Secuencias 1010 a 1111 no son válidas
ponderación establecida
 Usa 4 bits para representar un dígito decimal
 Binary Coded Decimal (BCD)
 Códigos ponderados más usados
 Cada cifra decimal se representa por 4 bits Dec BCD 8421 Dec BCD 8421
 Capacidad del código: 16 0 0000 5 0101
 Utilización del código: 5/8 1 0001 6 0110

 Existen diferentes tipos de BCD, dependiendo 2 0010 7 0111


de las ponderaciones de cada bit 3 0011 8 1000
4 0100 9 1001

Códigos ponderados BCD Ejemplo de códigos BCD


 Existen otros códigos BCD  Representación Decimal BCD 7421 BCD 4321
 BCD 2421, BCD 1224, BCD 7421, BCD 6321, etc. 0 0000 0000
del número 25
 En algunos, un decimal no tiene representación 1 0001 0001
única  En binario 2 0010 0010
 Ej: 610 en BCD 2421 puede ser 1100 o 0110  11001 3 0011 0100 ó 0011
 Se prefiere 1100: dígitos 0 a 4 comienzan con 0  En BCD 7421 4 0100 0101 ó 1000
 Es necesario definir normas particulares  0010 0101 5 0101 1001 ó 0110
 BCD 8421 asegura representación única  En BCD 4321
6 0110 1010 ó 0111

 Códigos BCD son válidos para números enteros y  0010 1001


7 1000 1011 ó 1100
8 1001 1101
fraccionarios  Se prefiere que 9 1010 1110
 Permite operaciones aritméticas de gran tamaño dígitos 0 a 4
empiecen con 0

©2013 Mario Medina C. 2


Sistemas Digitales

Códigos autocomplementados Códigos autocomplementados


 Códigos en que el complemento disminuido
de una palabra también es una palabra válida Decimal Exceso 3 BCD 2421
0 0011 0000
 En binario, el complemento a 1 se obtiene 1 0100 0001
invirtiendo cada uno de los bits originales 2 0101 0010

 Especialmente útiles para realizar restas 3 0110 0011


4 0111 0100
 Simplifican circuitos de complementación 5 1000 1011
 Más utilizados 6 1001 1100

 Exceso 3: código BCD 8421 + 3 7 1010 1101


8 1011 1110
 BCD 2421 ó código Aiken 9 1100 1111

Códigos autocomplementados Transiciones en códigos BCD


 Ejercicio:  BCD 8421: cambiar de 710 a 810
 Representar el numero 90710 en BCD exceso-3 y usar  Cambiar de 01112 a 10002
complemento a 1 para encontrar el complemento a la  Qué pasa si los 4 bits no cambian
base disminuida del número (complemento a 9). simultáneamente?
1100 0011 1010Exc3 0111 7 Válido
90710   09210 en complemento a 9
0011 1100 0101Exc 3 1111 15 Inválido
 Demostrar que el resultado está correcto 1011 11 Inválido
 El complemento a 9 de 90710 es 999-907 = 09210 1001 9 Válido
1000 8 Válido

Códigos adyacentes Códigos adyacentes


Decimal Codigo Gray Reflejado Ex. 3 Código Johnson
 Llamados también códigos cíclicos
0 0000 0010 00000
 Números sucesivos difieren sólo en 1 bit 1 0001 0110 00001
 Especialmente útiles en: 2 0011 0111 00011
3 0010 0101 00111
 Conversión análoga-digital
4 0110 0100 01111
 Control de máquinas-herramientas
5 0111 1100 11111
 Los más utilizados son 6 0101 1101 11110
 Código Gray 7 0100 1111 11100
 Reflejado exceso 3 8 1100 1110 11000
9 1101 1010 10000

©2013 Mario Medina C. 3


Sistemas Digitales

Codificador de posición
Código Gray rotatorio
 Aplicación común: determinar posición
 Código adyacente no ponderado
y velocidad de ejes (rotary encoder)
 Digitos decimales consecutivos difieren en
 Con código Gray todas las posiciones son adyacentes
un solo bit
 Simplifica la transición entre estados
 Útil para sistemas físicos con transiciones
mecánicas
 Mucho ruido y elevado consumo de potencia

Generación código Gray Generación código Gray


 Gray de 1 bit 0
1
00
01
000
001
0000
0001
 Los dos valores posibles son 0 y 1 11 011 0011
10 010 0010
 Gray de 2 bits 110
111
0110
0111
Código Gray
 Copiar el Gray de 1 bit dos veces, la segunda en 101 0101

forma invertida
100 0100 Código reflejado
1100
1101 exceso 3
 Anteponer un 0 a la formación original y un 1 a 1111
la parte reflejada 1110
1010
 Gray de n bits 1011
1001
 Repetir lo anterior con código Gray de n-1 bits 1000

Código Gray y código


reflejado exceso 3 Conversión binario a Gray
 Código Gray es adyacente  A veces, es necesario convertir de código
 Distancia 1 entre dígitos 0 al 9 binario a Gray y vice versa
 Distancia 3 entre el 9 y el 0  Para ello, primero definimos la operación
 Código reflejado exceso 3 es adyacente y lógica de OR exclusivo (XOR)
circular (cíclico)  También llamado operador de desigualdad
 Distancia 1 entre dígitos 0 al 9  00=0
 Distancia 1 entre 9 y 0  01=1
 Se obtiene sumando 3 a código Gray  10=1
 11=0

©2013 Mario Medina C. 4


Sistemas Digitales

Conversión binario a Gray Conversión Gray a binario


 La relación para pasar de binario a Gray es  Regla de conversión:  Ejemplo: Transformar
b MSB  g MSB el dato 1101Gray a
 gi = bi  bi+1
binario
 Ejemplo: pasar 11002 a Gray b i  b i 1  g i  b3 = g3=1
 g0 = b0  b1 = 0  0 = 0  Se copia el bit más  b2 = b3 ⊕ g2 = 0
 g1 = b1  b2 = 0  1 = 1 significativo  b1 = b2 ⊕ g1 = 0
Se usa XOR para calcular  b0 = b1 ⊕ g0 = 1
 g2 = b2  b3 = 1  1 = 0 
bits siguientes  Entonces, 1101Gray es
 g3 = b3  b4 = 1  0 = 1 (último bit b4 es 0) 10012
 Entonces, 11002 es 1010Gray

Ejercicios Códigos de largo variable


 Represente el número decimal 9876 en  Códigos anteriores son de largo fijo
 Código BCD 8421  Todos los símbolos se representan usando el
 Código BCD 7421 mismo número de bits
 Código BCD 2421  Código Huffman
 Código Gray  Asigna largo de representación en función de la
 Código Exceso-3 frecuencia del símbolo
 Código Reflejado exceso-3  Secuencias más cortas corresponden a símbolos más
frecuentes
 Reduce largo promedio de mensajes

Construcción de un código
Propiedad prefijo Huffman
 Para que un código de largo variable esté  Construir el árbol de decodificación
completamente definido, debe cumplirse la  Agregar cada símbolo a una hoja del árbol
propiedad prefijo  Identificar los 2 nodos de más baja frecuencia
 si a1a2…ak es una palabra válida del código, que no poseen predecesores y construir el nodo
entonces no puede existir otra palabra válida predecesor
 Frecuencia será suma de frecuencias de los dos nodos
definida como a1a2…aj, para j < k
 Repetir hasta que quede sólo un nodo sin
predecesor

©2013 Mario Medina C. 5


Sistemas Digitales

Construcción de un código
Huffman Ejemplo código Huffman
 Rotular los arcos del grafo  Dada la siguiente  Se genera el siguiente
 Asignar un 0 a uno de los arcos que salen del frecuencia de símbolos árbol
nodo raíz y un 1 al otro arco Dato Frecuencia 0 1
(0.6) (0.4)
 Repetir recursivamente hasta haber cubierto
A 0.35
todos los nodos 0 0 1
B 0.25 A (0.35) 1 C (0.15) (0.25)
 Asignar a cada nodo la secuencia de 0s y 1s B (0.25)
C 0.15
correspondientes al camino desde la raíz al 0
D (0.15)
1
E (0.1)
D 0.15
nodo en cuestión
E 0.10

Ejemplo código Huffman Ejercicio código Huffman


 Este código cumple con la propiedad prefijo Símbolo Frecuencia Código
 Largo promedio de un símbolo: 2.25 bits A 0,15 010
B 0,30 00
Dato Frecuencia Código
C 0,20 10
A 0.35 00
D 0,05 1110
B 0.25 01
E 0,15 011
C 0.15 10
F 0,05 1111
D 0.15 110 G 0,10 110
E 0.10 111

Códigos detectores de errores Códigos detectores de errores


 Ruido aditivo en los medios de transmisión  Se desea detectar errores y pedir la
 Puede invertir los bits de datos retransmisión de datos erróneos
 Bit Error Rate (BER): Tasa de errores en la  Deben existir palabras no válidas en el código
transmisión  Inversión no deseada de un bit genera
 Normalmente del orden de 10-9 palabra no válida
 Depende de la tasa de transmisión y potencia de la
señal  Distancia mínima de un código debe ser mayor
que n
 n: número de errores a detectar
 Inversión de hasta n bits da palabra no válida

©2013 Mario Medina C. 6


Sistemas Digitales

Códigos detectores de errores Códigos de paridad


 Tipos de códigos detectores  Paridad: cardinalidad de los 1s en una palabra
 Códigos de paridad  Puede ser par o impar
 Agregar un bit a la palabra para verificar si  Código de paridad
número de bits en 1 es par o impar  Agregar un bit a palabras transmitidas para
 Códigos de peso constante asegurar que el número de 1s sea par o impar
 También llamados códigos m de n  Transmisor y receptor se ponen de acuerdo
 Mantiene un número constante de bits en 1
 Duplica la cantidad de palabras del código
 Igual número de palabras válidas e inválidas
 CRC (Cyclic Redundancy Check)
 Código de paridad asegura una distancia
mínima de 2

Códigos de paridad Códigos de paridad


Información en ASCII con paridad constante
 Expresar el binario 1001010 en un código de
EMISOR DE INFORMACIÓN RECEPTOR DE INFORMACIÓN
paridad par
b0 b0
7 Información 1 1001010
Información b1 b1 En ASCII
En ASCII Generador / De 7 bits Paridad Dato
De 7 bits Detector de
b6 b6 paridad Bit de
1
b7 verificación
de paridad  Palabras como 01001010 y 10001010 son
Generador /
Detector de
/ inválidas en el código
paridad Bit de paridad
 Número de 1s es impar
1  Código sólo detecta número impar de errores

Códigos de peso constante Códigos de peso constante


 Mantienen un número constante m de bits Decimal 2 de 5 BCD 63210 50-43210 10-86420
en 1 en las palabras del código 0 00011 00110 01-00001 01-00001
 Más usados: códigos pentádicos (5 bits) 1 00101 00011 01-00010 10-00001
2 00110 00101 01-00100 01-00010
 Walking code 2 de 5
3 01010 01001 01-01000 10-00010
 BCD 63210
4 01100 01010 01-10000 01-00100
 Códigos de 7 bits 5 10100 01100 10-00001 10-00100
 Qui-binario (10-86420) 6 11000 10001 10-00010 01-01000
 Bi-quinario (50-43210) 7 01001 10010 10-00100 10-01000
 Usado en ábacos romanos y chinos, y en lenguajes 8 10001 10100 10-01000 01-10000
Khmer y Wolof 9 10010 11000 10-10000 10-10000

©2013 Mario Medina C. 7


Sistemas Digitales

Cyclic Redundancy Check Cyclic Redundancy Check


(CRC) (CRC)
 Número binario de n bits corresponde a un  Se transmite mensaje de (n+r) bits formado
polinomio M(x) por M(x) seguido de R(x)
 101001 => x5+ x3+1  T(x) = M(x)*xr+R(x)
 CRC divide polinomio M(x) de n bits por un  El receptor divide la palabra codificada por
polinomio generador G(x) de orden r < n (r
bits) el mismo polinomio G(x)
 El cuociente de la división es Q(x)  Resto es 0: no hubo errores
 El resto de la división es R(x)  O, no son detectables
 Se cumple que M(x)*xr/G(x) = Q(x) ⊕R(X)/G(x)  Resto es distinto de 0: error en la transmisión

Ejemplo de CRC Ejemplo de CRC


 Mensajes M de 12 bits es 110100110111  División mediante restas sin 11010011011100000
préstamo 110101
 M(x) = x11+x10+x8+x5+x4+x2+x+1
 Completar mensaje con 0s 111011100000
 Polinomio generador G(x) = x5+x4+x2+1 hasta n+r bits 110101
 Dividir 11010011011100000 por 110101  Alinear MSB con 1er bit en 1 1110100000
110101
 Resto de la división R(x) = 10001  Realizar XOR entre los bits
11110000
 Palabra transmitida es 11010011011110001  Repetir hasta obtener el
110101
resto de la división
100100
 Fácil de implementar con
110101
desplazamientos y XORs
10001

Cyclic Redundancy Check


Ejemplo de CRC (CRC)
 Supongamos que un error de transmisión  Un CRC de r bits detecta una cadena de error
modifica 3 bits sucesivos en bits consecutivos de largo menor a r
 Dato recibido es 11011101011110001  CRC detecta ráfagas de errores
 Resto de división por G(x) es distinto de 0: Error!  Elección del polinomio generador es crítica
 Supongamos que un error de transmisión  Existen combinaciones de errores no
modifica 7 bits sucesivos detectables por un polinomio dado
 Dato recibido es 11111100111110001  Pueden obtenerse del análisis matemático
 Resto de división por G(x) es 0: Error no
detectado!

©2013 Mario Medina C. 8


Sistemas Digitales

Cyclic Redundancy Check


(CRC) Códigos correctores de errores
 Polinomios usados en CRC se encuentran  Paridad permite detectar pero no corregir
estandarizados para aplicaciones específicas errores
 CRC-1 (x+1): bit de paridad  Corrección requiere inserción de más bits
 CRC-5-USB (x5 + x2 + 1): USB token packets redundantes
 CRC-16-CCITT (x16 + x12 + x5 + 1): (Bluetooth)  Distancia mínima al menos 3
 CRC-32 (x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 +  Muy usados para respaldo de información
x8 + x7 + x5 + x4 + x2 + x + 1) (Ethernet, gzip, SATA,  Código Hamming
MPG)  Transmisión de bloques

Códigos correctores de errores Código Hamming


 Código corrector de errores de n bits  Código que detecta y corrige un error
 m bits corresponden al dato  di : bits del dato original
 k=n-m son la información redundante  pi : bits dedundantes
 Se debe cumplir M – 1 = C + D, C≤D  pi en las posiciones que son potencias de 2
 M: distancia mínima del código  di en las posiciones restantes
 D: número de errores a detectar  Un dato de 4 bits d1d2d3d4 requerirá 3 bits de
 C: número de errores a corregir
validación p1p2p4
M 1 2 3 4 5 6
Posición 1 2 3 4 5 6 7
C 0 0 0ó1 0ó1 0, 1 ó 2 0, 1 ó 2
Bit p1 p2 d1 p4 d2 d3 d4
D 0 1 2ó1 3ó2 4, 3 ó 2 5, 4 ó 3

Generación de Código
Hamming Generación de Código Hamming
 Cada bit de validación verifica paridad de un  El bit de paridad de la posición 2k comprueba los bits en las
posiciones que tengan al bit k en su representación binaria
subconjunto de bits del dato Binario Posición
P1 P2 P4 P8
 Estas posiciones están dadas por: 0001 1 X

 Posición 1 (p1): 1, 3, 5, 7, 9, 11, 13, …


P1 20 1 0001 0010 2 X

P2 2 1
0011 3 X X
 Posición 2 (p2): 2, 3, 6, 7, 10, 11, 14, 15, … 2 0010 0100 4 X

 Posición 4 (p4): 4, 5, 6, 7, 12, 13, 14, 15, … P4 2 2 4 0100 0101 5 X X

0110 6 X X
 Posición 8 (p8): 8, 9, 10, 11, 12, 13, 14, 15, 24, …
P8 2 3 8 1000 0111 7 X X X

 Bit de validación se escoge para formar 1000 8 X

paridad par sobre bits verificados


1001 9 X X

1010 10 X X

1011 11 X X X

1100 12 x X

©2013 Mario Medina C. 9


Sistemas Digitales

Verificación de código
Hamming Ejemplo Código Hamming
 Calcular los bits de comprobación Cj  Enviar BCD 0110 codificado en Hamming
 Cada bit verifica paridad para el subconjunto  Calcular bits de paridad p1p2p4
asociado a la posición j (tabla anterior)  p1 = b3 ⊕ b5 ⊕ b7 = 0 ⊕ 1 ⊕ 0 = 1
 c1 = b7 ⊕ b5 ⊕ b3 ⊕ b1  p2 = b3 ⊕ b6 ⊕ b7 = 0 ⊕ 1 ⊕ 0 = 1
 c2 = b7 ⊕ b6 ⊕ b3 ⊕ b2  p4 = b5 ⊕ b6 ⊕ b7 = 0 ⊕ 1 ⊕ 1 = 0
 c4 = b7 ⊕ b6 ⊕ b5 ⊕ b4
 El valor decimal equivalente a c4c2c1 indicará la
posición donde hubo un error Posición 1 2 3 4 5 6 7
 Si no hubo error, c4c2c1 será 000 Bit p1 p2 d1 p4 d2 d3 d4
Hamming 1 1 0 0 1 1 0

Ejemplo Código Hamming Código Hamming(7, 4)


 Dato recibido es 1100100  Código Hamming(7, 4) es el más usado
 Calcular bits de comprobación c4c2c1  En conjunto con BCD 8421
 c4 = b4 ⊕ b5 ⊕ b6 ⊕ b7 = 0 ⊕ 1 ⊕ 0 ⊕ 0 = 1  Este código puede corregir cualquier error en un
 c2 = b2 ⊕ b3 ⊕ b6 ⊕ b7 = 1 ⊕ 0 ⊕ 0 ⊕ 0 = 1 bit, y detectar todos los errores de 2 bits
 c1 = b1 ⊕ b3 ⊕ b5 ⊕ b7 = 1 ⊕ 0 ⊕ 1 ⊕ 0 = 0  Probabilidad de 2 errores es bajísima
 El error está en el bit c4c2c1 = 110  Código Hamming(7, 4) es ineficiente
 Receptor puede invertir bit 6 y corregir el error  Agrega 3 bits de paridad por cada 4 bits de
 Se debió haber recibido 1100110
datos
 Dato transmitido correcto es 0110

Ejercicios Transmisión de bloques


 Codifique el número decimal 7 en código  Transmitir bloques de datos
Hamming(7, 4)  Dato tiene bit de paridad (paridad horizontal)
 Bloque incluye palabra de validación (paridad
vertical)
 Detecte la presencia de un error en el código  Error en un bit modifica ambas paridades
Hamming(7, 4) 1010101 y corríjalo  Error puede ser identificado y corregido
 Eficiente para grandes cantidades de datos
 Disminuye los bits redundantes en cada dato
 Permite detectar múltiples errores
 Aunque no corregirlos

©2013 Mario Medina C. 10


Sistemas Digitales

Transmisión de bloques Transmisión de bloques


 Transmitir 5 datos  Error en la transmisión
VRC: Vertical Redundancy Check
usando paridad par puede ser corregido BPI
LRC: Longitudinal Redundancy Check (VRC) b b b b b b b
vertical y horizontal Paridad Recibido BPI: Bit de Paridad Impar A 1
6
1
5 4 3 2
0
1 0
0 0 0 0 1

0 101101 Información L 0 1 0 0 1 1 0 0
Paridad Dato a transmitir
0 100100 A 1 1 0 0 0 0 0 1
1 01101
R 0 1 0 1 0 0 1 0
0 010010
1 00100 LRC 1 1 1 0 0 0 0 1
1 001011
0 10010
0 011110
0 01001
0 001100 BPI BPI BPI BPI BPI
0 11110
000010 1 1100001 0 1010010 1 1000001 0 1001100 1 1000001
0 01100
LRC R A L A
t
error

Códigos alfanuméricos Códigos alfanuméricos


 Permiten transmisión de información para equipos  Código ASCII es el más usado hoy en día
complejos de procesamiento de datos  American Standard Code for Information
 Letras, números, símbolos y señales de control Interchange
 Más comunes con ASCII y Unicode  Codifica utilizando 7 bits (128 dígitos diferentes)
 UNICODE (utf-8)  Un octavo bit se utiliza como bit de paridad
 Utiliza 32 bits => 232 símbolos diferentes  ASCII Extendido (8 bits)
 Incluye casi todos los alfabetos conocidos  Permite representar 256 símbolos
 Aún quedan códigos libres  Engorroso e incompatible entre lenguajes
 No hay estándar definido para ASCII-8
 Posibilidad de programación internacional

Unicode
 Estándar de codificación de caracteres
 Incluye todos los caracteres de uso común en la
actualidad
 Versión 5.1 contiene 100 713 caracteres
 Alfabetos, sistemas ideográficos y símbolos diversos
 UTF-8: codifica caracteres en 1, 2, 3 ó 4 bytes
 1 bytes: US-ASCII
 2 bytes: caracteres romances, griegos, signos
 3 bytes: casi todo el resto, grupo CJK
 4 bytes: lenguajes académicos, símbolos matemáticos

©2013 Mario Medina C. 11


Sistemas Digitales

Código de barras Código QR


 UPC (Universal Product Code)  Código QR (Quick Response
 Se puede leer de izquierda a derecha o de derecha a Code)
izquierda
 Código de barras bidimensional
Digit Izquierdo Derecho Digit Izquierdo Derecho
 Desarrollado por la industria
0 0001101 1110010 5 0110001 1001110 automotriz
1 0011001 1100110 6 0101111 1010000
 Código incorpora corrección de
2 0010011 1101100 7 0111011 1000100

3 0111101 1000010 8 0110111 1001000


errores, puede estar encriptado
4 0100011 1011100 9 0001011 1110100  Capacidad ~3 KB
67

©2013 Mario Medina C. 12

También podría gustarte