Introducción al estudio de los circuitos lógicos y sistemas numéricos (página 3)
Enviado por Irlenys Tersek Rodriguez
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:
| à Octal |
| à Hexadecimal |
| à Hexadecimal |
| à Octal |
| à Hexadecimal |
| à Octal |
5. Dado los siguientes números:
a) 101110111012 | b) 6FAB,816 | c) 100100000111001010000110BCD | d) 58FF3D16 |
e) 11110110101010112 | f) 5432,768 | g) 11000011001110000110Exc3 | 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) 110010001010001100111001Exc3 | d) 0100011100111001100001110000BCD |
Realizar las siguientes sumas en BCD.
I) a + c + d | II) c + b | III) a + b + c + d |
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 |