Codificación binaria

Anuncio
1
Capítulo 3
Codificación binaria
3.1. Codificación
En un ambiente de sistemas digitales se denomina codificación a la asignación de un significado
a una configuración de bits.
Al modelar problemas es usual encontrar variables que pueden tomar múltiples valores, se
denomina codificación al proceso de convertir esas variables en señales binarias. La elección
adecuada del código puede conducir a redes lógicas más simples.
Consideremos, por ejemplo, el estado de un semáforo: éste puede tomar uno de tres valores:
verde, amarillo o rojo.
Una posible codificación es considerar cada color como una señal binaria; así si la variable
color toma valor rojo, estará en nivel alto la señal rojo y el resto de las señales (la verde y
amarilla) serán ceros.
Otra posibilidad es emplear dos bits para representar las tres situaciones que son posibles; ya
que con dos bits pueden simbolizarse, en binario, cuatro casos. Existen gran cantidad de códigos
posibles, ya que el nombre binario para el primer color puede elegirse de 4 maneras diferentes;
el código binario para el segundo color puede ser elegido de tres maneras diferentes, y el tercer
color puede ser elegido de dos modos diferentes. Existen 24 formas de representar la variable
multivaluada color mediante un vector binario.
A continuación se mostrarán ejemplos de tres clases de códigos: numéricos, alfanuméricos y de
despliegue.
3.2. Códigos numéricos
Los más empleados son aquellos usados para representar números decimales.
El código representa los dígitos decimales por una secuencia de símbolos binarios.
3.2.1. Códigos ponderados
Se denomina código ponderado a uno en el que a cada posición de la secuencia binaria se le
asigna un peso o ponderación.
Profesor Leopoldo Silva Bijit
19-01-2010
2
Sistemas Digitales
Ejemplo 3.1. Código BCD
El código ponderado más empleado es el BCD, que representa a los dígitos decimales por
secuencias de bits en sistema binario. BCD es un acrónimo de Binary Coded Decimal es decir,
decimal codificado en binario.
Decimal
0
1
2
3
4
5
6
7
8
9
BCD
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
Figura 3.1 Código BCD.
La tabla es el código. Cada secuencia de 4 bits es una palabra del código. Nótese que a cada
dígito decimal se le asocia una secuencia de 4 bits.
La posición de más a la izquierda, o más significativa, tiene peso 8. El bit menos significativo,
el de más a la derecha, tiene ponderación 1. Las ponderaciones son potencias de 2.
Así, la palabra 7, puede interpretarse según:
0*8 + 1*4 + 1*2 + 1*1 = 7
Para representar el número decimal 12 se requieren 8 bits, o dos palabras de código.
12
=
0001
0010
Ejemplo 3.2. Transmisión de símbolos BCD.
A través de un par de cables, puede enviarse una secuencia de cifras decimales codificadas en
binario. Si enviamos primero las unidades, luego las decenas y después las centenas; y si se
envía primero el bit menos significativo, se tendrá que la siguiente forma de onda representa el
número 923:
Profesor Leopoldo Silva Bijit
19-01-2010
Capítulo 3. Codificación binaria
1
1
3
0
0
0
1
0
0
1
0
0
1
t
3
2
9
Figura 3.2 Transmisión serie de un símbolo BCD.
La situación anterior ilustra una transmisión serie. La duración temporal de los bits y la forma
de iniciar y terminar la comunicación debe ser acordada entre el transmisor y receptor, esta
modalidad se denomina comunicación asincrónica. Si además se transmite una señal de reloj, se
tendrá una comunicación serial sincrónica.
Si se dispone de cuatro líneas, más una referencia, se puede enviar una cifra decimal en
paralelo. Si enviamos primero la cifra más significativa, y si identificamos los cables del bus
por su ponderación, la Figura 3.3. muestra la transmisión paralela del número 329.
Las líneas se han identificado de acuerdo al peso.
b
b
b
b
b
8
t
4
t
2
t
8
b
4
2
1
b
b
t
1
3
2
9
Figura 3.3 Transmisión paralela símbolo BCD.
3.2.2. Distancia
Se define la distancia entre dos palabras de un código, como el número de dígitos que se deben
cambiar a una palabra para obtener la otra.
Por ejemplo:
Hay distancia 1 entre 0100 y 0110.
Hay distancia 4 entre 0011 y 1100.
Profesor Leopoldo Silva Bijit
19-01-2010
4
Sistemas Digitales
La distancia del código es la mínima distancia entre dos palabras consecutivas cualesquiera del
código.
En ciertas aplicaciones son útiles los códigos de distancia unitaria. Uno de los más empleados
es el código Gray, que es un sistema de codificación que ordena un conjunto de 2n números
binarios, de tal modo que sólo uno de los n bits cambia de una palabra a la siguiente.
Por ejemplo, para palabras de largo igual a 3 bits, se pueden representar 8 números decimales
según:
Decimal
0
1
2
3
4
5
6
7
Gray
000
001
011
010
110
111
101
100
Figura 3.4 Código Gray para palabras de largo tres.
Nótese que entre números decimales consecutivos la distancia entre las palabras codificadas es
1.
3.2.3. Código reflejado.
Cuando en una lista ordenada ascendente, según el código, la mitad superior es simétrica con la
inferior, exceptuando el bit de mayor orden, se dice que el código es reflejado.
Ejemplo: Código Gray con largo de palabra de dos bits:
00
01
-11
10
Nótese que lo anterior permite construir tablas de código Gray con largos de palabra mayores.
Para obtener el código para largo tres, se duplica el código de largo dos, mediante un reflejo; a
la mitad superior se la antecede con un 0 y a la inferior con un 1, ver Figura 3.4.
En la Figura 3.5. se muestran los diseños de redes combinacionales, para generar código Gray a
partir de una secuencia binaria de cuatro bits y viceversa.
Profesor Leopoldo Silva Bijit
19-01-2010
Capítulo 3. Codificación binaria
B3
G3
B2
G2
5
B3
G3
B1
G1
B2
G2
B1
G1
B0
G0
B0
G0
Figura 3.5 Conversores de código Gray a binario.
3.2.4. Código cíclico
En éstos, las palabras consecutivas tienen la misma distancia, y esta distancia existe también
entre la primera y la última palabra del código. En este sentido, la lista puede considerarse
cerrada.
3.2.5. Paridad
En aplicaciones digitales de movimiento de información, es importante detectar cualquier tipo
de error en la información recibida.
Cuando la probabilidad de error no es muy alta, ha probado ser efectivo un sistema denominado
Chequeo de paridad. Esta técnica emplea un bit extra, llamado de paridad, cuyo valor se
selecciona de tal forma de dejar un número par de unos en la palabra de código, entonces se dice
que el código es de paridad par. Si el bit se escoge tal que el número de unos en la palabra sea
impar, se tiene un sistema de paridad impar.
Ejemplo 3.3. Generador y detector de paridad.
Generador y detector de paridad. Se envían 4 bits en paralelo más uno de paridad par. La Figura
3.6 muestra la generación del bit de paridad, mediante:
p b8
b4
b2
b1
En el extremo receptor se calcula la señal detectora de paridad, mediante:
dp b8
b4
b2
b1
p
Las ecuaciones que realizan el diseño se obtienen planteando la tabla de verdad y luego
empleando compuertas or exclusivo para la implementación.
Profesor Leopoldo Silva Bijit
19-01-2010
6
Sistemas Digitales
Rx
Tx
p
dp
Figura 3.6 Generador y detector de paridad.
En la Figura 3.6 se muestra, entre líneas punteadas, el medio de transmisión; que separa al
transmisor del receptor. Analizar el circuito, determinando valores de p y dp, en caso de
producirse errores, en una de las cinco señales que se transmiten.
Ejemplo 3.5.
a) Sea una palabra de largo 3: 010
Entonces con un bit de paridad par, se representa: 1010. Donde el bit de paridad ocupa la
posición más significativa. En este caso: p b4 b2 b1 0 1 0 1
b) Puede verse que un error se detecta simplemente, en un código con paridad, debido al
cambio de tipo de paridad. Si la palabra correcta, con paridad par es 1010, se tiene que si se
recibe:
i) 1110
(paridad impar). Llegó errado bit 2.
ii) 1000
(paridad impar). Llegó errado bit 3.
iii) 0010
(paridad impar). Llegó errado bit 1, el de paridad
iv) 1011
(paridad impar). Llegó errado bit 4.
El bit de paridad sólo permite detectar el error, no corregirlo.
Un error en dos bits no puede ser detectado. Este sistema no permite corregir el error, sólo
detectarlo.
c) Se tiene el siguiente código octal con paridad impar:
Profesor Leopoldo Silva Bijit
19-01-2010
Capítulo 3. Codificación binaria
Decimal
0
1
2
3
4
5
6
7
7
Octal con paridad impar
1000
0001
0010
1011
0100
1101
1110
0111
Figura 3.7 Código octal con paridad impar.
Nótese que la distancia del código, de la Figura 3.7, es dos. La paridad ocupa el bit más
significativo.
Ejemplo 3.6.
Un código muy empleado es el hexadecimal que representa 16 símbolos o cifras del sistema
hexadecimal mediante secuencias de cuatro bits. La tabla con el código se muestra en la Figura
3.8. Las secuencias hexadecimales suelen precederse con 0x; de este modo el número
hexadecimal 0x1A4 tiene como equivalente al número decimal 420:
0 x1A4 1 162 10 161 4 160
Hexadecimal
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
420
Hex en binario
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Figura 3.8 Código hexadecimal.
Profesor Leopoldo Silva Bijit
19-01-2010
8
Sistemas Digitales
De acuerdo a la tabla de la Figura 3.8, el equivalente binario de la secuencia 0x1A4 se obtiene
reemplazando cada cifra hexadecimal por su secuencia equivalente binaria, de cuatro bits.
0 x1A4 000110100100
3.3. Códigos alfanuméricos
La mayor parte de los dispositivos periféricos empleados en sistemas de computación para
comunicar al hombre con las máquinas, permiten representar las letras minúsculas y
mayúsculas, dígitos decimales, signos de puntuación y caracteres especiales.
Uno de los códigos más empleados es el código ASCII. Éste es un código de 7 bits, más uno de
paridad. Permite representar 128 símbolos. Su nombre es una abreviación de "American
Standard Code for Information Interchange".
Se tienen 32 símbolos de control, símbolos de puntuación, letras y números. Los símbolos
asociados a los dígitos decimales están entre 0x30 y 0x39; entonces basta considerar los 4
menos significativos para obtener el código BCD equivalente.
Los códigos binarios de las letras mayúsculas y minúsculas difieren en el estado de un bit.
Pueden plantearse una serie de sistemas combinacionales que decodifiquen o categoricen a
símbolos pertenecientes al código ASCII. Por ejemplo: ¿Es letra? , ¿Es letra o número?, etc.
H
00
01
02
03
04
05
06
07
08
09
0a
0b
0c
0d
0e
0f
NULL
SOH
STX
EXT
EOT
ENQ
ACK
BEL
BS
TAB
LF
VT
FF
CR
SO
SI
D
H
00
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
10
11
12
13
14
15
16
17
18
19
1a
1b
1c
1d
1e
1f
DEL
DC1
DC2
DC3
DC4
NAK
SYN
ETB
CAN
EM
SUB
ESC
FS
GS
RS
US
D
H
D
H
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
20
21
22
23
24
25
26
27
28
29
2a
2b
2c
2d
2e
2f
32
! 33
" 34
# 35
$ 36
% 37
& 38
'
39
( 40
) 41
* 42
+ 43
,
44
- 45
.
46
/
47
30
31
32
33
34
35
36
37
38
39
3a
3b
3c
3d
3e
3f
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
D
H
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
40
41
42
43
44
45
46
47
48
49
4a
4b
4c
4d
4e
4f
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
D
H
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
50
51
52
53
54
55
56
57
58
59
5a
5b
5c
5d
5e
5f
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
D
H
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
60
61
62
63
64
65
66
67
68
69
6a
6b
6c
6d
6e
6f
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
D
H
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
70
71
72
73
74
75
76
77
78
79
7a
7b
7c
7d
7e
7f
D
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~
del
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
Figura 3.9 Código ASCII.
En computadores personales se emplean 8 bits para representar caracteres, lo cual permite
denotar 256 símbolos. Esto ha sido especialmente útil en aplicaciones de procesamiento de
textos en diversos idiomas, pues pueden incluirse letras con diferentes tipos de acentos.
Profesor Leopoldo Silva Bijit
19-01-2010
Capítulo 3. Codificación binaria
9
El estándar ISO-8859 posee la codificación ASCII en su rango inicial (128 caracteres) y otros
128 caracteres para cada codificación de diferentes lenguas originarias de Europa occidental,
utilizando 8 bits. ISO-8859-1 es el alfabeto latino. Este código no cubre a lenguajes con otros
alfabetos, como el chino o el árabe.
Unicode asigna un código único a cada carácter, utilizado en los lenguajes escritos del mundo,
para esto Unicode representa un carácter en forma abstracta, y deja la representación visual,
tamaño, dimensión, fuente o estilo, a otra aplicación, como un navegador web, un procesador de
texto o un cliente de correo. Las normas de transmisión Unicode más empleadas son UTF-8 y
UTF-16.
En páginas web se emplean entidades HTML para enviar caracteres especiales al cliente.
Comienzan con & y terminan en punto y coma. Por ejemplo para enviar una a minúscula
acentuada, se envía: á. También se acepta introducir una secuencia Unicode precedida
de la secuencia &#x. Por ejemplo U+00E1, es el Unicode para la á; entonces en la página web,
puede codificarse: á
3.4. Códigos de despliegue (Display Codes)
Existe una variedad de códigos empleados en voltímetros digitales, tubos de rayos catódicos y
calculadoras. Uno de los más empleados es el código de siete segmentos, cuya tabla se ilustra a
continuación:
Decimal S6 S5 S4 S3 S2 S1 S0
0
0
1
1
1
1
1
1
1
0
0
0
0
1
1
0
2
1
0
1
1
0
1
1
3
1
0
0
1
1
1
1
4
1
1
0
0
1
1
0
5
1
1
0
1
1
0
1
6
1
1
1
1
1
0
1
7
0
0
0
0
1
1
1
8
1
1
1
1
1
1
1
9
1
1
0
1
1
1
1
0
5
1
6
4
2
3
Figura 3.10 Código de siete segmentos.
Profesor Leopoldo Silva Bijit
19-01-2010
10
Sistemas Digitales
El diagrama ilustra la numeración de los segmentos, y los segmentos activados de acuerdo al
valor decimal.
Profesor Leopoldo Silva Bijit
19-01-2010
Capítulo 3. Codificación binaria
11
Índice general.
CAPÍTULO 3 ............................................................................................................................................. 1
CODIFICACIÓN BINARIA ..................................................................................................................... 1
3.1. CODIFICACIÓN ................................................................................................................................... 1
3.2. CÓDIGOS NUMÉRICOS ........................................................................................................................ 1
3.2.1. Códigos ponderados .................................................................................................................. 1
Ejemplo 3.1. Código BCD ............................................................................................................................... 2
Ejemplo 3.2. Transmisión de símbolos BCD. .................................................................................................. 2
3.2.2. Distancia ................................................................................................................................... 3
3.2.3. Código reflejado. ....................................................................................................................... 4
3.2.4. Código cíclico ........................................................................................................................... 5
3.2.5. Paridad ...................................................................................................................................... 5
Ejemplo 3.3. Generador y detector de paridad. ................................................................................................ 5
Ejemplo 3.5. ..................................................................................................................................................... 6
Ejemplo 3.6. ..................................................................................................................................................... 7
3.3. CÓDIGOS ALFANUMÉRICOS ................................................................................................................ 8
3.4. CÓDIGOS DE DESPLIEGUE (DISPLAY CODES) ..................................................................................... 9
ÍNDICE GENERAL. ................................................................................................................................... 11
ÍNDICE DE FIGURAS................................................................................................................................. 12
Profesor Leopoldo Silva Bijit
19-01-2010
12
Sistemas Digitales
Índice de figuras
Figura 3.1 Código BCD. ................................................................................................................ 2
Figura 3.2 Transmisión serie de un símbolo BCD. ....................................................................... 3
Figura 3.3 Transmisión paralela símbolo BCD. ............................................................................ 3
Figura 3.4 Código Gray para palabras de largo tres. ..................................................................... 4
Figura 3.5 Conversores de código Gray a binario. ........................................................................ 5
Figura 3.6 Generador y detector de paridad. ................................................................................. 6
Figura 3.7 Código octal con paridad impar. .................................................................................. 7
Figura 3.8 Código hexadecimal. .................................................................................................... 7
Figura 3.9 Código ASCII. ............................................................................................................. 8
Figura 3.10 Código de siete segmentos. ........................................................................................ 9
Profesor Leopoldo Silva Bijit
19-01-2010
Descargar