Introducción al estudio de los circuitos lógicos y sistemas numéricos (página 3)
Es un código
universal actualizado de propósito general, sirve para
representar todos los símbolos utilizados en los alfabetos
internacionales. Es una nueva norma de códigos
alfanuméricos de 16 bits. Los símbolos se
representan con cuatro dígitos hexadecimales como se
muestra en la
tabla 1.9. El código
ASCII es un subconjunto de éste y está
representado desde 000016 hasta
007F16. En la figura 1.4 se observa la distribución del código en cuatro
zonas que van desde 000016 hasta
FFFF16. La zona A comprende los códigos
para alfabetos, sílabas, y símbolos. En la zona I
están los códigos ideográficos como lo son
los alfabetos Chinos y Japoneses. La zona O no es utilizada
actualmente, sin embargo, está reservada para futuros
ideogramas.
La zona R es de uso restringido. Se subdivide en
Área de uso privado, Área de compatibilidad y
Códigos especiales. FFFE y FFFF no son códigos de
carácter y se excluyen
específicamente del UNICODE. El Área de uso privado
está a disposición de quienes necesiten caracteres
especiales para sus programas de
aplicación; por ejemplo, los iconos empleados en los
menús podrían especificarse por medio de
códigos de carácter en esta área. La zona de
compatibilidad tiene caracteres correlacionados con otras
áreas del espacio global de código. La
transmisión serial de un carácter UNICODE se
realiza con dos bytes (byte 0 y byte 1). Primero se
envía la palabra de control FFFE o
FEFF indicando cual de los dos bytes es el más
significativo; Por ejemplo, al enviar los símbolos FFFE,
4100, 4E00, 4700, 4500, 4C00 indica que se debe cambiar el orden
de los bytes, esto es: 0041, 004E, 0047, 0045, 004C que se
codifica como 'ANGEL' en la tabla 1.9. Sin embargo, en caso de
haber enviado la palabra de control FEFF indicaba que el orden de
los bytes era el mismo. Lo que no correspondía con los
códigos ASCII del
UNICODE.
Estos ordenamientos en los bytes del UNICODE guardan
relación con los formatos de datos para
comunicación de computadoras
Litle-Endian o Big-Endian.
Figura 1.4. Distribución del código
UNICODE.
Ejemplo 1.24. Indicar si es posible decodificar
las siguientes palabras dadas en UNICODE.
- FFFE, 4300, A200, 6400, 6900, 6700, 6F00
- FEFF, 0055, 004E, 0045, 0058, 0050, 004F
Solución (a): El orden de los bytes debe
ser invertido; 0043, 00A2, 0064, 0069, 0067, 006F que corresponde
con la palabra 'Código'.
Solución (b): El orden de los bytes es el
correcto 0055, 004E, 0045, 0058, 0050, 004F que corresponde con
la palabra 'UNEXPO'.
Tabla 1.9. Primeros 256 Símbolos
UNICODE.
HEX | 000 | 001 | 002 | 003 | 004 | 005 | 006 | 007 | 008 | 009 | 00A | 00B | 00C | 00D | 00E | 00F |
0 | CTL | CTL | SP | 0 | @ | P | ` | P | Ç | É | á | _ | + | ð | Ó | |
1 | CTL | CTL | ! | 1 | A | Q | a | Q | ü | æ | í | _ | – | Ð | ß | ± |
2 | CTL | CTL | " | 2 | B | R | b | R | é | Æ | ó | _ | – | Ê | Ô | _ |
3 | CTL | CTL | # | 3 | C | S | c | S | â | ô | ú | ¦ | + | Ë | Ò | ¾ |
4 | CTL | CTL | $ | 4 | D | T | d | T | ä | ö | ñ | ¦ | – | È | õ | ¶ |
5 | CTL | CTL | % | 5 | E | U | e | U | à | ò | Ñ | Á | + | I | Õ | § |
6 | CTL | CTL | & | 6 | F | V | f | V | å | û | ª | Â | Ã | Í | µ | ÷ |
7 | CTL | CTL | ' | 7 | G | W | g | W | ç | ù | º | À | Ã | Î | Þ | ¸ |
8 | CTL | CTL | ( | 8 | H | X | h | X | ê | ÿ | ¿ | © | + | Ï | Þ | ° |
9 | CTL | CTL | ) | 9 | I | Y | i | Y | ë | Ö | ® | ¦ | + | + | Ú | ¨ |
A | CTL | CTL | * | : | J | Z | j | Z | è | Ü | ¬ | ¦ | – | + | Û | · |
B | CTL | CTL | + | ; | K | [ | k | { | ï | ø | ½ | + | – | _ | Ù | ¹ |
C | CTL | CTL | , | < | L | l | | | î | £ | ¼ | + | ¦ | _ | Ý | ³ | |
D | CTL | CTL | – | = | M | ] | m | } | ì | Ø | ¡ | ¢ | – | ¦ | Ý | ² |
E | CTL | CTL | . | > | N | ^ | n | ~ | Ä | × | « | ¥ | + | Ì | ¯ | _ |
F | CTL | CTL | / | ? | O | _ | o | CTL | Å | ƒ | » | + | CTL | _ | ´ | SP
|
CÓDIGOS
DETECTORES Y CORRECTORES DE ERRORES.
La transmisión y recepción de datos
binarios, desde un dispositivo a otro, están propensas a
errores, campos magnéticos, interferencias y ruidos
eléctricos pueden ocasionar este problema. El costo agregado
que ocasiona añadir circuitos
detectores y correctores de error se ve compensado con el avance
de la tecnología en el área de las
telecomunicaciones. Los sistemas de
comunicación digital son la tecnología de punta en
el ámbito mundial y, específicamente, las redes de computadoras;
ejemplo de esto son las redes locales, Internet, etc.
Los sistemas deben detectar y/o corregir errores de
comunicación en el menor tiempo posible
de manera que puedan mantener el intercambio de información digital en línea y en
tiempo real. La tarea no parece sencilla; sin embargo, los
diseñadores de sistemas
digitales deben considerar el costo de estos circuitos
adicionales, a la hora de implementar el circuito.
De hecho, es necesario agregar más bits al dato
que se desea transmitir con la finalidad de chequear, en el
receptor, los posibles errores durante el proceso de
comunicación.
El método
para realizar esto; va desde solicitar que reenvíen el
dato, el bloque o hasta la información completa.
También hay métodos
más seguros que
implementan sistemas redundantes de tres o más circuitos
de comunicación idénticos que operan en paralelo y
por lo tanto disminuyen considerablemente el índice de
errores.
En esta sección se analizaran los métodos
de detección de errores por paridad y detección y/o
corrección mediante el código Hamming.
DISTANCIA Y PESO
DE LOS DATOS BINARIOS.
Para chequear un bit de dato, en el receptor, es
necesario agregar al sistema de
comunicación, por lo menos, otro bit. De esta manera, el
código queda formado por dos bits; uno para dato y el otro
para chequeo y control. De esta misma forma, se debe establecer
un patrón de comunicación (protocolo de
comunicación). Por ejemplo, establecer que el bit de
control se genere de la siguiente forma: sea el más
significativo y además, la suma de los dos bits sea
siempre par.
Esto se ilustra en la figura 1.5; aquí se puede
ver los cuatro cambios posibles de los bits X y
b0. El bit b0 tiene dos
valores
posibles 0 y 1; para enviar un cero se debe agregar en el
generador de paridad GP otro cero para mantener
la paridad par. Si, por el contrario, el b0 es
uno entonces hay que generar en GP un uno para
mantener el protocolo de paridad par sin errores.
El circuito receptor de información detecta la
paridad de los dos bits (X b0), chequea las
combinaciones posibles; activando la señal de error cuando
es recibida la combinación (0 1) o (1 0).
Este ejemplo se puede extender para datos que tengan n
bits de información ya que, basta un bit adicional, para
generar y chequear errores de paridad. Para entender mejor esta
última afirmación, se definen a
continuación, los términos distancia y peso en los
datos binarios.
La distancia máxima entre dos datos binarios, de
igual longitud, es equivalente al número de bits que
cambian de estado. Por
ejemplo, la distancia entre los datos D1=10010111 y
D'1=10110001 es tres. La distancia se puede definir
también como el número de bits diferentes entre dos
palabras.
Figura 1.6. Sistema de transmisión y
recepción de un bit con generación y
detección de error
Otro ejemplo para tomar en cuenta es el caso donde la
palabra transmitida y recibida difieren en dos bits; esto es,
transmitida A=1100101 y recibida A'=1101100. La distancia es dos;
sin embargo, aunque la palabra cambie, la paridad se mantiene y
por lo tanto no habrá señalización de error.
Al comparar, este caso, con el cambio entre
D1 y D'1 se observa que si hay
señalización de error porque la paridad no se
mantiene.
El número de bits en nivel uno de (D1
– D'1) no son iguales. Por el contrario, en el caso (A
– A') se observa el mismo número de bits en uno. Este
número de bits en nivel alto, de un dato binario, es lo
que se conoce como el peso de la palabra o peso del dato binario.
Por ejemplo, D1 tiene un peso de 5 y D'1
tiene un peso de 4; del mismo modo, A y A' pesan respectivamente
4.
DETECCIÓN DE
ERROR USANDO EL MÉTODO DE PARIDAD.
El sistema de chequeo de error por paridad es muy
utilizado en las comunicaciones
seriales de datos. El método consiste en establecer un
tipo de paridad (par o impar) en el sistema de
comunicación y generar en el transmisor, un bit adicional
de modo que el peso del dato corresponda con la paridad (par o
impar) establecida. Por lo general, este bit se agrega en la
posición más significativa del dato.
Ejemplo: En los datos a, b, y c generar el bit de
paridad par e impar en la posición más
significativa (MSB).
a) 1010; b) 1110101; c) 00001
Solución par: El bit, hay que generarlo en
el MSB de forma que el peso sea par;
a) 01010; b) 11110101; c) 100001
Solución impar: El bit, hay que generarlo
en el MSB de forma que el peso sea impar;
a) 11010; b) 01110101; c) 000001
Ejemplo: Un sistema de comunicación ha
recibido los siguientes caracteres ASCII: I) 01000001; II)
10111000; III) 11111110; y se desea saber si hay error. El
protocolo de paridad es par. Indicar, en caso de ser correcto, el
carácter enviado.
Solución (I): El peso de este dato es par
(dos), por lo tanto, es correcto y corresponde al carácter
ASCII 41H = 'A'.
Solución (II): El peso de este dato es par
(cuatro), por lo tanto, es correcto y corresponde al
carácter ASCII 38H = '8'.
Solución (III): El peso de este dato es
impar (siete), por lo tanto, hay error de transmisión. En
estos casos no es posible reconstruir el dato.
DETECCIÓN Y CORRECCIÓN DE
ERRORES MEDIANTE EL CÓDIGO HAMMING.
El método de paridad con un solo bit es eficiente
en la detección de errores cuando hay confiabilidad en el
sistema de comunicación. De hecho, el peso del dato queda
determinado con m=n+1 bits, donde n
es el número de bits que contiene la información.
Este método solamente puede detectar errores de dos datos
que difieran en un bit; osea, tengan distancia uno y que cambie,
por error del sistema, solamente un bit. Sin embargo, no los
corrige y a lo sumo, puede señalizar error y/o solicitar
que vuelvan a enviar el byte, dato, palabra, o bloque de
información que presentó el problema de
comunicación.
De la misma forma, si hay cambios de distancias pares
(2,4, 6,…), el método no detectará error. Sin
embargo, en las distancias impares señaliza los errores.
Ejemplo de esto se puede ver comparando, en el punto anterior,
los casos (D1 – D'1) y (A – A').
En 1950 R.W. Hamming introdujo un método para
detectar y corregir errores de datos en los sistemas de
comunicación donde las distancias pueden ser mayores a la
unidad. Este código trabaja con una distancia
mínima de tres y puede detectar errores con cambios de 1 o
2 bits y corregir, cambios de un solo bit.
Los bits necesarios para el código Hamming se
dividen en dos grupos; m bits de
información y k bits de chequeo o paridad, por lo que, el
tamaño del dato a transmitir debe ser n=m+k
bits. Éste debe cumplir con la siguiente
ecuación:
(Ec.1.9).
La paridad del código puede ser par o impar, sin
embargo, toda la información relacionada está dada
en paridad par. Por lo tanto, los ejemplos se realizaran tomando
como referencia codificación Hamming de paridad par con el
número de bits n igual a siete. En la figura
1.7 se observa la distribución de paridades para los bits
de chequeo con formato de siete bits de dato. De esta forma, al
aplicar la Ec.1.9 se determina que m=4 y k=3, por
lo tanto la información que se puede transmitir va desde
00002 hasta 11112;
éstos están distribuidos, en la figura 1.7 como
I7, I6, I5,
I3 y deben mezclarse con los de chequeo
C4, C2, C1.
Estos últimos ocupan las posiciones de la potencia en base
2 indicada por los subíndices dos, uno y cero
respectivamente.
Figura 1.7. Formación del código
Hamming de 7 bits.
El código se forma entrelazando los bits de
información (q3 q2 q1 q0) con los bits de control
(h2 h1 h0) de forma que los
subíndices de h correspondan con la posición
decimal del código formado. Los bits (q3
q2 q1 q0) de información
se hacen corresponder, en la figura 1.7, con los bits
(I7 I6 I5 I3)
respectivamente; la finalidad es ubicarlos en la posición
decimal del código. Del mismo modo, (h2
h1 h0) es equivalente con las posiciones
según en subíndice
h2=C22=C4;
h1=C21=C2;
h0=C20=C1.
Finalmente el código de siete bits queda formado de la
siguiente manera:
q3 | q2 | q1 | h2 | q0 | h1 | h0 |
I7 | I6 | I5 | C4 | I3 | C2 | C1 |
D6 | D5 | D4 | D3 | D2 | D1 | D0 |
Al enviar el dato de siete bits, este es recibido como
un paquete formado por
(D6 D5 D4 D3
D2 D1 D0) donde no se reconoce
quien es información y/o quien es control. Sin embargo,
con el método se realizan tres grupos de detección
y corrección formado por cuatro bits cada uno, los cuales
siempre deben tener paridad par. Estos grupos están
resaltados de gris en la figura 1.7 y forman tres cuartetos
agrupados de la siguiente forma: (I7 I5
I3 C1); (I7 I6
I3 C2); (I7 I6
I5 C4). Ellos sirven tanto para generar,
detectar y corregir datos con distancia uno y dos
respectivamente.
Por ejemplo, para enviar el dato de información
(1100) codificado en Hamming se deben agregar tres bits de
control de manera que los cuartetos tengan paridad
par:
Primero hay que hacer corresponder los bits de
información; (1100)=(I7 I6
I5 I3), después se organizan los
cuartetos de forma que la paridad sea par:
Los bits de control generados son: (C4
C2 C1) = (001); en consecuencia el dato a
enviar es (D6 D5 D4
D3 D2 D1 D0) =
(I7 I6 I5 C4
I3 C2 C1) = (1100001). De la
misma forma se procede a obtener la codificación de los
bits en código Hamming. En la tabla 1.10 están
representados los 4 bits de información y los tres bits de
chequeo del código Hamming de 7 bits. También se
puede observar que la mínima distancia, entre dos datos
consecutivos, es tres.
Decimal | Información | Control | Dato codificado |
I7I6I5I3 | C4C2C1 | I7I6I5C4I3C2C1 | |
0 | 0000 | 000 | 0000000 |
1 | 0001 | 011 | 0000111 |
2 | 0010 | 101 | 0011001 |
3 | 0011 | 110 | 0011110 |
4 | 0100 | 110 | 0101010 |
5 | 0101 | 101 | 0101101 |
6 | 0110 | 011 | 0110011 |
7 | 0111 | 000 | 0110100 |
8 | 1000 | 111 | 1001011 |
9 | 1001 | 100 | 1001100 |
10 | 1010 | 010 | 1010010 |
11 | 1011 | 001 | 1010101 |
12 | 1100 | 001 | 1100001 |
13 | 1101 | 010 | 1100110 |
14 | 1110 | 100 | 1111000 |
15 | 1111 | 111 | 1111111 |
Tabla 1.10. Código Hamming de 7
bits.
También se pueden corregir errores de datos con
distancia uno de la siguiente forma:
Ejemplo 1.27. Se han recibido los datos a, b,
c, d codificados en Hamming de 7 bits con paridad par, y es
necesario detectar y corregir los bits con errores.
a) 1100100; b) 1110101; c) 1010101; d)
1110111
Solución (a): Para mantener la paridad par
en el grupo 2,3,6,7
debe cambiarse el bit de la posición 2 (C2). El
dato corresponde a 1101.
I7 | I6 | I5 | C4 | I3 | C2 | C1 |
1 | 1 | 0 | 0 | 1 | 0 | 0 |
Solución (b): Para mantener la paridad par
en los grupos 2,3,6,7 y 4,5,6,7 se debe cambiar el bit de la
posición 6 (I6) para obtener la paridad
correcta. El dato es: 1011.
I7 | I6 | I5 | C4 | I3 | C2 | C1 |
1 | 1 | 1 | 0 | 1 | 0 | 1 |
Solución (c): En este caso, no hay error
en el dato enviado.
I7 | I6 | I5 | C4 | I3 | C2 | C1 |
1 | 0 | 1 | 0 | 1 | 0 | 1 |
I7 | I6 | I5 | C4 |
1 | 0 | 1 | 0 |
I7 | I6 | I3 | C2 |
1 | 0 | 1 | 0 |
I7 | I5 | I3 | C1 |
1 | 1 | 1 | 1 |
Solución (d): Para mantener la paridad par
en los grupos 4,5,6,7 se debe cambiar el bit de la
posición 4 (C4) para obtener la paridad
correcta. El dato es: 1111.
I7 | I6 | I5 | C4 | I3 | C2 | C1 |
1 | 1 | 1 | 0 | 1 | 1 | 1 |
Los casos a y d pueden ser aceptados como
errores dobles o simple. Sin embargo, al asumir algún
cambio en los bits de chequeo implica descartar errores dobles en
los bits de información. Debido a esto, en el ejemplo
1.27(a) pueden ser considerado los cambios de los bits
I7 e I5. De esta misma forma,
en el ejemplo 1.27(d), los cambios pueden ocurrir en los bits
I7 e I3. Los cambios dobles
(distancia dos) no pueden ser corregidos con el código
Hamming de 7 bits, sin embargo, para resolver esto es necesario
el código Hamming de 8 bits.
Ejercicios propuestos
1. Transformar al sistema
binario, octal y hexadecimal los siguientes números
decimales:
|
|
|
|
|
|
|
|
|
|
|
|
2. Transformar al sistema decimal los siguientes
números:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3. Construir una secuencia numérica, desde cero
hasta sesenta, equivalente con el sistema decimal. Se deben tomar
grupos de seis símbolos que correspondan con los
siguientes: £ , ‚ , ž , › ; los valores
posicionales son continuos y se incrementan de uno en uno. El
equivalente decimal es el siguiente:
£ Cero
unidades.
‚ Una
unidad.
ž Dos
unidades.
› Tres
unidades.
4. Transformar al sistema requerido los siguientes
números:
| à |
| à |
| à |
| à |
| à |
| à |
5. Dado los siguientes números:
a) 101110111012 | b) 6FAB,816 | c) | d) 58FF3D16 |
e) 11110110101010112 | f) 5432,768 | g) | h) 7964,910 |
Hallar las sumas:
I) a+b en octal | II) c+e+f en hexadecimal | III) c+d en binario |
IV) f+g+h en BCD | V) b+e+a+f en octal | VI) f+b+c en binario |
6. Dado los siguientes números:
a) FA0B16 | b) 11011011012 | c) 433758 |
d) 7FFF16 | e) -986310 | f) 11110000101010002 |
Realizar las siguientes operaciones
aritméticas utilizando el formato de números con
signo de 16 bits:
I) a – c | II) b + a | III) d – b |
IV) e + c | V) f – e | VI) b + e + d |
7 Un sistema de comunicación envía datos
de 9 bits. En cada uno, se codifican dos dígitos BCD
más un bit de paridad que es generado en la
posición más significativa y con paridad par. Se
pide detectar los errores que puedan ocurrir en los
códigos BCD recibidos, e indicar si son de paridad y/o de
código.
a) 101111001 | b) 110011100 | c) 111110001 |
d) 010000100 | e) 010101011 | f) 100000111 |
8. Los siguientes caracteres UNICODE son enviados en
binario con paridad impar en el MSB. Detectar, por el
método de paridad, si hay errores de comunicación,
y de no ser así, indicar el símbolo
correspondiente.
a) 101111110 | b) 110100101 | c) 101101110 |
d) 110101100 | e) 001000001 | f) 00100000 |
9. Dado los números:
a) 10011000011100000100BCD | b) 78946310 |
c) | d) |
Realizar las siguientes sumas en BCD.
I) a + c + d | II) c + b | III) a + b + c + |
10. Detectar y corregir los errores de los siguientes
datos, dados en exceso 3, y codificados en Hamming de 7 bits con
paridad par.
a) 1100001 | b) 1000110 | c) 0101100 |
d) 1111111 | e) 0001110 | f) 0000001 |
- CUESTA, Luís M. PADILLA G, Antonio. REMIRO D,
Fernando. (1993). Electrónica digital. Madrid:
McGraw Hill. S/f. p.445. - GAJSKI, Daniel D. (1997). Principios de diseño digital. Madrid: Prentice Hall
Iberia. S/f. p.488. "Principles of digital design". Traducido
por: Alberto Prieto Espinosa. - LLORIS, Antonio. PRIETO, Alberto. (1996).
Diseño lógico. Madrid: McGraw Hill. S/f.
p.403. - MANO, Morris. KIME, Charles. (1998). Fundamentos
de diseño lógico y computadoras. México: Prentice Hall. Primera edición en español. P.604. "Logic and computer
design fundamentals". Traducido por: Teresa Sanz
Falcón. - NEAMEN A, Donald. (1999). Análisis y
diseño de circuitos electrónicos. Tomo II.
México: McGraw Hill. S/f. p.1176. "Electronic circuit
analysis and design". Traducido por: Felipe Castro
Pérez. - NELSON, V. NAGLE, H. CARROLL, B. IRWIN, J. (1996).
Análisis y diseño de circuitos lógicos
digitales. México: Prentice Hall. Primera
edición. p.842. "Digital logic circuit analysis and
design". Traducido por: Oscar A. Palmas V. - TOCCI, Ronald. (1995). Sistemas digitales principios y
aplicaciones. México: Prentice Hall. Quinta
edición. p.823. "Digital systems principles and
applications". Traducido por: Edmundo G. Urbina M. - WARKELY, John F. (1997). Diseño digital
principios y prácticas. México: Prentice
Hall. S/f. p.743. "Digital design principles and practices".
Traducido por: Gutiérrez R. Raymundo H.
Realizado por:
Ing. Irlenys Tersek Rodríguez
Chivacoa, 09 de Noviembre de 2005-11-09
Página anterior | Volver al principio del trabajo | Página siguiente |