Você está na página 1de 12

Sistemas Digitales

Cdigos

Cdigos
Prof. Mario Medina
mariomedina@udec.cl

Conceptos bsicos
Definiciones
Tipos de cdigos numricos

Conceptos generales

Cdigo: conjunto de smbolos usados para


representar letras, nmeros, palabras,
conceptos u otros smbolos.

Cdigos ponderados
Cdigos autocomplementados
Cdigos de largo variable
Cdigos detectores y correctores de errores

Cdigos alfanumricos

Conceptos generales

Usos comunes de codificacin

Ejemplos: cdigo morse, emoticones, etc.

En un nmero codificado, las cifras


representan algo, y slo podremos saber su
significado si conocemos el cdigo que las
gener

Transmisin de informacin fcil y


rpida
Compresin para optimizar el
espacio de almacenamiento
Expresar adecuadamente los datos
para su procesamiento
Deteccin y correccin de errores

Cdigos binarios

Definiciones

Difcil comprensin para el


humano, pero lenguaje natural en
circuitos
Representacin fcil y eficiente
en

Circuitos elctricos, mecnicos o


hidrulicos
Medios de almacenamiento pticos y
magnticos

2013 Mario Medina C.

Capacidad de un cdigo

Nmero de valores distintos en el cdigo

Depende del nmero de dgitos en el cdigo


Cdigo de 3 bits tiene capacidad 23 = 8

Utilizacin de un cdigo

Nmero de valores distintos definidos como


vlidos en el cdigo
Utilizacin del cdigo puede ser menor que la
capacidad

Existencia de palabras no vlidas

Sistemas Digitales

Definiciones

Distancia entre 2 palabras de un cdigo

Nmero de smbolos de una palabra que deben


modificarse para obtener la otra

Tipos de cdigos

Cdigo adyacente

Todas las palabras tienen distancia 1 con sus


vecinos

Cdigos ponderados
Palabras del cdigo son generadas por un
polinomio cuyos dgitos tienen una
ponderacin establecida
Binary Coded Decimal (BCD)

Cdigos BCD

Cdigos autocomplementados
Cdigos adyacentes
Cdigo Gray
Cdigos de largo variable
Cdigos detectores y/o correctores de
errores

Distancia mnima de un cdigo

Mnima distancia entre 2 palabras vlidas


cualesquiera de un cdigo

Cdigos ponderados

Cdigos ponderados

BCD 8421 (Similar a binario puro)

Secuencias 1010 a 1111 no son vlidas


Usa 4 bits para representar un dgito decimal

Cdigos ponderados ms usados


Cada cifra decimal se representa por 4 bits
Capacidad del cdigo: 16
Utilizacin del cdigo: 5/8

Existen diferentes tipos de BCD, dependiendo


de las ponderaciones de cada bit

Cdigos ponderados BCD

Existen otros cdigos BCD

BCD 2421, BCD 1224, BCD 7421, BCD 6321, etc.


En algunos, un decimal no tiene representacin
nica

Se prefiere 1100: dgitos 0 a 4 comienzan con 0

Es necesario definir normas particulares

BCD 8421 asegura representacin nica


Cdigos BCD son vlidos para nmeros enteros y
fraccionarios

Permite operaciones aritmticas de gran tamao

2013 Mario Medina C.

BCD 8421

Dec

BCD 8421

0000

0101

0001

0110

0010

0111

0011

1000

0100

1001

Ejemplo de cdigos BCD

Representacin
del nmero 25

Ej: 610 en BCD 2421 puede ser 1100 o 0110

Dec

En binario

En BCD 7421

11001
0010 0101

En BCD 4321

0010 1001

Se prefiere que
dgitos 0 a 4
empiecen con 0

Decimal

BCD 7421

BCD 4321

0000

0000

0001

0001

0010

0010

0011

0100 0011

0100

0101 1000

0101

1001 0110

0110

1010 0111

1000

1011 1100

1001

1101

1010

1110

Sistemas Digitales

Cdigos autocomplementados

Cdigos en que el complemento disminuido


de una palabra tambin es una palabra vlida

En binario, el complemento a 1 se obtiene


invirtiendo cada uno de los bits originales

Especialmente tiles para realizar restas

Cdigos autocomplementados

Simplifican circuitos de complementacin

Ms utilizados
Exceso 3: cdigo BCD 8421 + 3
BCD 2421 cdigo Aiken

Cdigos autocomplementados

Ejercicio:

Representar el numero 90710 en BCD exceso-3 y usar


complemento a 1 para encontrar el complemento a la
base disminuida del nmero (complemento a 9).
90710

Llamados tambin cdigos cclicos


Nmeros sucesivos difieren slo en 1 bit
Especialmente tiles en:

Conversin anloga-digital
Control de mquinas-herramientas

Los ms utilizados son

Cdigo Gray
Reflejado exceso 3

2013 Mario Medina C.

BCD 2421

0011

0000

0100

0001

0101

0010

0110

0011

0111

0100

1000

1011

1001

1100

1010

1101

1011

1110

1100

1111

BCD 8421: cambiar de 710 a 810

Cambiar de 01112 a 10002


Qu pasa si los 4 bits no cambian
simultneamente?

complemento a 9 de 90710 es 999-907 = 09210

1100 0011 1010Exc3


09210 en complemento a 9
0011 1100 0101Exc 3

Cdigos adyacentes

Exceso 3

Transiciones en cdigos BCD

Demostrar que el resultado est correcto


El

Decimal

0111

Vlido

1111

15

Invlido

1011

11

Invlido

1001

Vlido

1000

Vlido

Cdigos adyacentes
Decimal
0

Codigo Gray
0000

Reflejado Ex. 3
0010

Cdigo Johnson
00000

1
2
3
4
5
6
7
8
9

0001

0110

00001

0011

0111

00011

0010

0101

00111

0110

0100

01111

0111
0101
0100
1100
1101

1100

11111

1101

11110

1111

11100

1110

11000

1010

10000

Sistemas Digitales

Cdigo Gray

Codificador de posicin
rotatorio

Cdigo adyacente no ponderado


Digitos decimales consecutivos difieren en
un solo bit
Simplifica la transicin entre estados

Copiar el Gray de 1 bit dos veces, la segunda en


forma invertida
Anteponer un 0 a la formacin original y un 1 a
la parte reflejada

Gray de n bits

Repetir lo anterior con cdigo Gray de n-1 bits

Cdigo Gray y cdigo


reflejado exceso 3

Cdigo Gray es adyacente

0
1

Los dos valores posibles son 0 y 1

Gray de 2 bits

Distancia 1 entre dgitos 0 al 9


Distancia 3 entre el 9 y el 0

Cdigo reflejado exceso 3 es adyacente y


circular (cclico)

Con cdigo Gray todas las posiciones son adyacentes

Generacin cdigo Gray

Gray de 1 bit

til para sistemas fsicos con transiciones


mecnicas
Mucho ruido y elevado consumo de potencia

Generacin cdigo Gray

Aplicacin comn: determinar posicin


y velocidad de ejes (rotary encoder)

Distancia 1 entre dgitos 0 al 9


Distancia 1 entre 9 y 0
Se obtiene sumando 3 a cdigo Gray

000
001
011
010
110
111
101
100

0000
0001
0011
0010
0110
0111
0101
0100
1100
1101
1111
1110
1010
1011
1001
1000

Cdigo Gray
Cdigo reflejado
exceso 3

Conversin binario a Gray


A veces, es necesario convertir de cdigo
binario a Gray y vice versa
Para ello, primero definimos la operacin
lgica de OR exclusivo (XOR)

2013 Mario Medina C.

00
01
11
10

Tambin llamado operador de desigualdad


00=0
01=1
10=1
11=0

Sistemas Digitales

Conversin binario a Gray

La relacin para pasar de binario a Gray es

gi = bi bi+1
g0 = b0 b1 = 0 0 = 0
g1 = b1 b2 = 0 1 = 1
g2 = b2 b3 = 1 1 = 0
g3 = b3 b4 = 1 0 = 1 (ltimo bit b4 es 0)

Represente el nmero decimal 9876 en

Cdigo BCD 8421


Cdigo BCD 7421
Cdigo BCD 2421
Cdigo Gray
Cdigo Exceso-3
Cdigo Reflejado exceso-3

Propiedad prefijo

Regla de conversin:
b MSB g MSB
b i b i 1 g i

Se copia el bit ms
significativo
Se usa XOR para calcular
bits siguientes

Entonces, 11002 es 1010Gray

Ejercicios

Ejemplo: pasar 11002 a Gray

Conversin Gray a binario

Para que un cdigo de largo variable est


completamente definido, debe cumplirse la

Ejemplo: Transformar
el dato 1101Gray a
binario

b3 = g3=1
b2 = b3 g2 = 0
b1 = b2 g1 = 0
b0 = b1 g0 = 1

Entonces, 1101Gray es
10012

Cdigos de largo variable

Cdigos anteriores son de largo fijo

Todos los smbolos se representan usando el


mismo nmero de bits

Cdigo Huffman

Asigna largo de representacin en funcin de la


frecuencia del smbolo
Secuencias ms cortas corresponden a smbolos ms
frecuentes
Reduce largo promedio de mensajes

Construccin de un cdigo
Huffman

Construir el rbol de decodificacin

propiedad prefijo

si a1a2ak es una palabra vlida del cdigo,


entonces no puede existir otra palabra vlida
definida como a1a2aj, para j < k

2013 Mario Medina C.

Agregar cada smbolo a una hoja del rbol


Identificar los 2 nodos de ms baja frecuencia
que no poseen predecesores y construir el nodo
predecesor

Frecuencia ser suma de frecuencias de los dos nodos

Repetir hasta que quede slo un nodo sin


predecesor

Sistemas Digitales

Construccin de un cdigo
Huffman

Rotular los arcos del grafo

Este cdigo cumple con la propiedad prefijo


Largo promedio de un smbolo: 2.25 bits

Ruido aditivo en los medios de transmisin

Puede invertir los bits de datos


Bit Error Rate (BER): Tasa de errores en la
transmisin

Normalmente del orden de 10-9


Depende de la tasa de transmisin y potencia de la
seal

Smbolo Frecuencia

Se genera el siguiente
rbol
0

(0.6)

(0.4)

0
0
1 C (0.15)
A (0.35)
B (0.25)
0
D (0.15)

1
(0.25)
1
E (0.1)

Cdigo

0,15

010

0,30

00

0,20

10

0,05

1110

0,15

011

0,05

1111

0,10

110

Cdigos detectores de errores

Se desea detectar errores y pedir la


retransmisin de datos errneos

Deben existir palabras no vlidas en el cdigo

Inversin no deseada de un bit genera


palabra no vlida

2013 Mario Medina C.

Frecuencia
0.35
0.25
0.15
0.15
0.10

Ejercicio cdigo Huffman

Frecuencia Cdigo
0.35
00
0.25
01
0.15
10
0.15
110
0.10
111

Cdigos detectores de errores

Dada la siguiente
frecuencia de smbolos
Dato
A
B
C
D
E

Asignar a cada nodo la secuencia de 0s y 1s


correspondientes al camino desde la raz al
nodo en cuestin

Dato
A
B
C
D
E

Asignar un 0 a uno de los arcos que salen del


nodo raz y un 1 al otro arco
Repetir recursivamente hasta haber cubierto
todos los nodos

Ejemplo cdigo Huffman

Ejemplo cdigo Huffman

Distancia mnima de un cdigo debe ser mayor


que n
n: nmero de errores a detectar
Inversin de hasta n bits da palabra no vlida

Sistemas Digitales

Cdigos detectores de errores

Cdigos de paridad

Tipos

Cdigos de paridad

de cdigos detectores

Agregar un bit a la palabra para verificar si


nmero de bits en 1 es par o impar

EMISOR DE INFORMACIN
b0
Informacin
En ASCII
De 7 bits

RECEPTOR DE INFORMACIN
b0
7
b1

b1

b6

b6

Generador /
Detector de
paridad

Generador /
Detector de
paridad

Bit de
verificacin
de paridad

Bit de paridad

Cdigos de peso constante


Mantienen un nmero constante m de bits
en 1 en las palabras del cdigo
Ms usados: cdigos pentdicos (5 bits)

Walking code 2 de 5
BCD 63210

Cdigos de 7 bits

Duplica la cantidad de palabras del cdigo


Igual nmero de palabras vlidas e invlidas
Cdigo de paridad asegura una distancia
mnima de 2

Qui-binario (10-86420)
Bi-quinario (50-43210)

Usado en bacos romanos y chinos, y en lenguajes


Khmer y Wolof

2013 Mario Medina C.

Transmisor y receptor se ponen de acuerdo

Expresar el binario 1001010 en un cdigo de


paridad par

Informacin
En ASCII
De 7 bits

Cdigos de paridad

b7

Agregar un bit a palabras transmitidas para


asegurar que el nmero de 1s sea par o impar

CRC (Cyclic Redundancy Check)

Informacin en ASCII con paridad constante

Tambin llamados cdigos m de n


Mantiene un nmero constante de bits en 1

Cdigos de paridad

Puede ser par o impar

Cdigo de paridad

Cdigos de peso constante

Paridad: cardinalidad de los 1s en una palabra

1001010

Paridad

Dato

Palabras como 01001010 y 10001010 son


invlidas en el cdigo

Nmero de 1s es impar
Cdigo slo detecta nmero impar de errores

Cdigos de peso constante


Decimal
0
1
2
3
4

2 de 5
00011

BCD 63210
00110

50-43210
01-00001

10-86420
01-00001

00101

00011

01-00010

10-00001

00110

00101

01-00100

01-00010

01010

01001

01-01000

10-00010

01100

01010

01-10000

01-00100

10100
11000
01001
10001
10010

01100

10-00001

10-00100

10001

10-00010

01-01000

10010

10-00100

10-01000

10100

10-01000

01-10000

11000

10-10000

10-10000

6
7
8
9

Sistemas Digitales

Cyclic Redundancy Check


(CRC)

Nmero binario de n bits corresponde a un


polinomio M(x)

Mensajes M de 12 bits es 110100110111

M(x) =

Se transmite mensaje de (n+r) bits formado


por M(x) seguido de R(x)

El cuociente de la divisin es Q(x)


El resto de la divisin es R(x)
Se cumple que M(x)*xr/G(x) = Q(x) R(X)/G(x)

Ejemplo de CRC

101001 => x5+ x3+1

CRC divide polinomio M(x) de n bits por un


polinomio generador G(x) de orden r < n (r
bits)

Cyclic Redundancy Check


(CRC)

El receptor divide la palabra codificada por


el mismo polinomio G(x)

Resto es 0: no hubo errores

Resto es distinto de 0: error en la transmisin

x11+x10+x8+x5+x4+x2+x+1

Divisin mediante restas sin 11010011011100000


110101
prstamo

Polinomio generador G(x) = x5+x4+x2+1


Dividir 11010011011100000 por 110101

Resto de la divisin R(x) = 10001


Palabra transmitida es 11010011011110001

Ejemplo de CRC

Supongamos que un error de transmisin


modifica 3 bits sucesivos

Dato recibido es 11011101011110001


Resto de divisin por G(x) es distinto de 0: Error!

Supongamos que un error de transmisin


modifica 7 bits sucesivos

Dato recibido es 11111100111110001


Resto de divisin por G(x) es 0: Error no
detectado!

2013 Mario Medina C.

O, no son detectables

Ejemplo de CRC

T(x) = M(x)*xr+R(x)

Completar mensaje con 0s


hasta n+r bits
Alinear MSB con 1er bit en 1
Realizar XOR entre los bits
Repetir hasta obtener el
resto de la divisin
Fcil de implementar con
desplazamientos y XORs

111011100000
110101
1110100000
110101
11110000
110101
100100
110101
10001

Cyclic Redundancy Check


(CRC)

Un CRC de r bits detecta una cadena de error


en bits consecutivos de largo menor a r

CRC detecta rfagas de errores

Eleccin del polinomio generador es crtica


Existen combinaciones de errores no
detectables por un polinomio dado
Pueden obtenerse del anlisis matemtico

Sistemas Digitales

Cyclic Redundancy Check


(CRC)

Cdigos correctores de errores

Polinomios usados en CRC se encuentran


estandarizados para aplicaciones especficas

CRC-1 (x+1): bit de paridad


CRC-5-USB (x5 + x2 + 1): USB token packets
CRC-16-CCITT (x16 + x12 + x5 + 1): (Bluetooth)
CRC-32 (x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 +
x8 + x7 + x5 + x4 + x2 + x + 1) (Ethernet, gzip, SATA,
MPG)

Cdigos correctores de errores

Cdigo corrector de errores de n bits

Se debe cumplir M 1 = C + D, CD

M: distancia mnima del cdigo


D: nmero de errores a detectar
C: nmero de errores a corregir

01

01

0, 1 2

0, 1 2

21

32

4, 3 2

5, 4 3

Cada bit de validacin verifica paridad de un


subconjunto de bits del dato

Estas posiciones estn dadas por:


Posicin 1 (p1): 1, 3, 5, 7, 9, 11, 13,
Posicin 2 (p2): 2, 3, 6, 7, 10, 11, 14, 15,
Posicin 4 (p4): 4, 5, 6, 7, 12, 13, 14, 15,
Posicin 8 (p8): 8, 9, 10, 11, 12, 13, 14, 15, 24,

Bit de validacin se escoge para formar


paridad par sobre bits verificados

2013 Mario Medina C.

di : bits del dato original


pi : bits dedundantes

pi en las posiciones que son potencias de 2

Generacin de Cdigo
Hamming

Cdigo que detecta y corrige un error

Cdigo Hamming
Transmisin de bloques

Cdigo Hamming

Distancia mnima al menos 3

Muy usados para respaldo de informacin

Correccin requiere insercin de ms bits


redundantes

m bits corresponden al dato


k=n-m son la informacin redundante

Paridad permite detectar pero no corregir


errores

di en las posiciones restantes

Un dato de 4 bits d1d2d3d4 requerir 3 bits de


validacin p1p2p4
Posicin
Bit

1
p1

2
p2

4
p4

3
d1

5
d2

6
d3

7
d4

Generacin de Cdigo Hamming

El bit de paridad de la posicin 2k comprueba los bits en las


posiciones que tengan al bit k en su representacin binaria
Binario

20

P1
P2 2 1
P4 2 2
P8 2 3

1
2
4
8

0001
0010
0100
1000

Posicin

0001

0010

0011

0100

0101

0110

0111

1000

1001

1010

10

1011

11

1100

12

P1

P2

P4

P8

X
X
X

X
X

X
X

X
X

X
X

X
x

Sistemas Digitales

Verificacin de cdigo
Hamming

Calcular los bits de comprobacin Cj

Ejemplo Cdigo Hamming

Cada bit verifica paridad para el subconjunto


asociado a la posicin j (tabla anterior)

Enviar BCD 0110 codificado en Hamming

p1 = b3 b5 b7 = 0 1 0 = 1
p2 = b3 b6 b7 = 0 1 0 = 1
p4 = b5 b6 b7 = 0 1 1 = 0

c1 = b7 b5 b3 b1
c2 = b7 b6 b3 b2
c4 = b7 b6 b5 b4

El valor decimal equivalente a c4c2c1 indicar la


posicin donde hubo un error

Dato recibido es 1100100

Posicin
Bit
Hamming

Si no hubo error, c4c2c1 ser 000

Ejemplo Cdigo Hamming

Codifique el nmero decimal 7 en cdigo


Hamming(7, 4)
Detecte la presencia de un error en el cdigo
Hamming(7, 4) 1010101 y corrjalo

5
d2
1

6
d3
1

7
d4
0

En conjunto con BCD 8421


Este cdigo puede corregir cualquier error en un
bit, y detectar todos los errores de 2 bits
Probabilidad de 2 errores es bajsima
Agrega 3 bits de paridad por cada 4 bits de
datos

Transmitir bloques de datos

Dato tiene bit de paridad (paridad horizontal)


Bloque incluye palabra de validacin (paridad
vertical)

Error en un bit modifica ambas paridades

Error puede ser identificado y corregido


Eficiente para grandes cantidades de datos
Disminuye los bits redundantes en cada dato
Permite detectar mltiples errores

2013 Mario Medina C.

4
p4
0

Transmisin de bloques

3
d1
0

Cdigo Hamming(7, 4) es ineficiente

Se debi haber recibido 1100110


Dato transmitido correcto es 0110

Ejercicios

2
p2
1

Cdigo Hamming(7, 4) es el ms usado

Calcular bits de comprobacin c4c2c1

El error est en el bit c4c2c1 = 110


Receptor puede invertir bit 6 y corregir el error

1
p1
1

Cdigo Hamming(7, 4)

c4 = b4 b5 b6 b7 = 0 1 0 0 = 1
c2 = b2 b3 b6 b7 = 1 0 0 0 = 1
c1 = b1 b3 b5 b7 = 1 0 1 0 = 0

Calcular bits de paridad p1p2p4

Aunque no corregirlos

10

Sistemas Digitales

Transmisin de bloques

Transmitir 5 datos
usando paridad par
vertical y horizontal
Paridad

Dato

01101

00100

10010

01001

11110

01100

Transmisin de bloques

Error en la transmisin
puede ser corregido
Paridad

Recibido

101101

100100

VRC: Vertical Redundancy Check


BPI
(VRC) b b b b b b b
6
5
4
3
2
1
0

LRC: Longitudinal Redundancy Check


A

010010

001011

LRC

011110

001100

BPI

000010

BPI: Bit de Paridad Impar


Informacin
a transmitir

BPI
1100001

BPI
1010010

LRC

BPI
1000001
A

BPI
1001100
L

1000001
A
t

error

Cdigos alfanumricos

Permiten transmisin de informacin para equipos


complejos de procesamiento de datos
Letras, nmeros, smbolos y seales de control
Ms comunes con ASCII y Unicode
UNICODE (utf-8)
Utiliza 32 bits => 232 smbolos diferentes
Incluye casi todos los alfabetos conocidos
An quedan cdigos libres
Posibilidad de programacin internacional

Cdigos alfanumricos

Cdigo ASCII es el ms usado hoy en da

American Standard Code for Information


Interchange
Codifica utilizando 7 bits (128 dgitos diferentes)
Un octavo bit se utiliza como bit de paridad
ASCII Extendido (8 bits)
Permite representar 256 smbolos
Engorroso e incompatible entre lenguajes
No hay estndar definido para ASCII-8

Unicode

Estndar de codificacin de caracteres

Incluye todos los caracteres de uso comn en la


actualidad
Versin 5.1 contiene 100 713 caracteres

UTF-8: codifica caracteres en 1, 2, 3 4 bytes

Alfabetos, sistemas ideogrficos y smbolos diversos

1 bytes: US-ASCII
2 bytes: caracteres romances, griegos, signos
3 bytes: casi todo el resto, grupo CJK
4 bytes: lenguajes acadmicos, smbolos matemticos

2013 Mario Medina C.

11

Sistemas Digitales

Cdigo de barras

Cdigo QR

UPC (Universal Product Code)

Se puede leer de izquierda a derecha o de derecha a


izquierda

Digit

Izquierdo

Derecho

Digit

Izquierdo

Derecho

0001101

1110010

0110001

1001110

0011001

1100110

0101111

1010000

0010011

1101100

0111011

1000100

0111101

1000010

0110111

1001000

0100011

1011100

0001011

1110100

Cdigo QR (Quick Response


Code)

Cdigo de barras bidimensional


Desarrollado por la industria
automotriz
Cdigo incorpora correccin de
errores, puede estar encriptado
Capacidad ~3 KB

67

2013 Mario Medina C.

12

Você também pode gostar