Tema 2: Sistemas y códigos numéricos Sistemas Digitales I Sistemas y códigos numéricos Sistemas numéricos posicionales En este sistema la posición de cada digito tiene un peso asociado. El valor de un número es una suma ponderada de los dígito, por ejemplo: 2568 = 2 ⋅ 1000 + 5 ⋅ 100 + 6 ⋅ 10 + 8 ⋅ 1 En forma general Base D = d1 ⋅ 101 + d 0 ⋅ 100 + d −1 ⋅ 10−1 + d −2 ⋅ 10−2 = D p −1 i d ⋅ r ∑ 1 i= −n El digito que se encuentra en el extremo izquierdo es el digito mas significativo y el que se encuentra en el extremo derecho es el menos significativo. Sistemas Digitales I Sistemas y códigos numéricos Los sistemas que mas vamos a utilizar en el diseño digital serán decimal, binario y hexadecimal. = D p −1 i d ⋅ 10 ∑ 1 i= −n = B p −1 i b ⋅ 2 ∑1 i= −n H = p −1 i 16 h ⋅ ∑1 i= −n Por ejemplo 10101.12 = 1 ⋅ 16 + 0 ⋅ 8 + 1 ⋅ 4 + 0 ⋅ 2 + 1 ⋅ 1 + 1 ⋅ 0.5 = 21.510 15.816 = 1 ⋅ 161 + 5 ⋅ 160 + 8 ⋅ 0.0625 = 21.510 La base 10 es la que utilizamos en las operaciones cotidianas. La base 2 es importante por que los números binarios se pueden procesar directamente en los circuitos digitales. La base 16 es útil para representar números de múltiples bits, debido a que la base es potencia de 2. Sistemas Digitales I Sistemas y códigos numéricos Para convertir fácilmente de binario a hexadecimal hay que agrupar los dígitos binarios en grupos de 4 bits alrededor del punto binario. 01001101.1110 0100 = = 4D.E . 1110 1101 2 4 D E Para convertir de cualquier base r a decimal utilizamos la formula: = D p −1 i ⋅ d r ∑ 1 i= −n Para convertir de decimal a cualquier base r debemos utilizar divisiones sucesivas del numero decimal en r. Por ejemplo: 179 ÷ 2 = 89 resto 1 (LSB) ÷2 = 44 resto 1 ÷2 = 22 resto 0 17910 = 101100112 ÷2 = 11 resto 0 ÷2 = 5 resto 1 ÷2 = 2 resto 1 ÷2 =1 resto 0 ÷2 = 0 resto 1 (MSB) Sistemas Digitales I Sistemas y códigos numéricos Suma de números no decimales Para realizar la operaciones de suma nos guiamos por la siguiente tabla: cent x y csal s 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 Ejemplos: Sistemas Digitales I Sistemas y códigos numéricos Resta de números no decimales Para realizar la operaciones de resta nos guiamos por la siguiente tabla: pent x y psal s 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 1 1 0 0 0 1 1 1 1 1 Ejemplos: Sistemas Digitales I Sistemas y códigos numéricos Representación de números negativos Para representar los números negativos se utilizan principalmente: • Representación de magnitud y signo • Representación de complemento Representación de magnitud y signo En este sistema el numero se compone de una magnitud y de un símbolo (+ o -). En este sistema existen dos posibles representaciones de cero, “+0” y “-0”, ambas con el mismo valor. Para aplicar en números binarios se utiliza un bit extra para el signo (bit de signo).Para representar “+” se utiliza el cero y el uno para “-”. Tiene la misma cantidad de números positivos y negativos. Que van desde − ( 2n−1 − 1) hasta + ( 2n−1 − 1) Sistemas Digitales I Sistemas y códigos numéricos Ejemplos: 010101012 = +8510 110101012 = −8510 011111112 = +12710 111111112 = −12710 000000002 = +010 100000002 = −010 Representación de complemento de base En este sistema el numero negativo se obtiene tomando el complemento del numero. El complemento de base de un numero de n dígitos se obtiene al restarlo de rn. En un sistema de complemento de base solo tenemos una representación del cero. Se puede calcular fácilmente complementando los dígitos individuales y sumándole 1. Para el sistema binario se conoce como complemento a dos. Sistemas Digitales I Sistemas y códigos numéricos En el sistema de complemento a dos, el bit mas significativo indica el signo del numero. Para convertir a decimal el bit mas significativo se lo tiene que considerar con peso de −2n−1 en vez de +2n−1 . n−1 n−1 El intervalo de números representables va desde − ( 2 ) a + ( 2 − 1) . Ejemplos de complemento a 2: Sistemas Digitales I Sistemas y códigos numéricos Entonces para hallar el complemento a la base de un numero N: N=' r n − N N =' 10 p − N10 N=' 2 p − N 2 Para convertir un numero X de n bits de complemento a dos en uno de m bits, siendo m>n tenemos que agregar m-n copias del bit de signo a la izquierda de X. Representación de complemento de base reducida Este complemento se obtiene de restar un numero D de n bits a rn – 1. Este complemento se denomina complemento a 9 en el sistema decimal y complemento a 1 en el sistema binario. Para calcular el complemento a 1 solo basta con complementar el numero sin sumarle 1. Al igual que en el complemento a dos el bit mas significativo indica el signo. Sistemas Digitales I Sistemas y códigos numéricos El complemento a 1 posee dos representaciones del 0, cero positivo (00···00) y cero negativo (11···11). Para convertir a decimal el bit mas significativo se lo tiene que n−1 considerar con un peso de −(2 − 1) . n−1 El intervalo de números representables va desde − ( 2 − 1) a + ( 2n−1 − 1) Ejemplos de complemento a 1: Sistemas Digitales I Sistemas y códigos numéricos Suma y resta de complemento a dos En complemento a dos son mucho mas sencillas las operaciones aritméticas. En el caso de la suma se utiliza una suma binaria común y se debe ignorar cualquier acarreo más allá del bit MSB. El resultado siempre será correcto siempre y cuando no se exceda el intervalo de representación del sistema numérico. Ejemplos de sumas de complemento a 2: Sistemas Digitales I Sistemas y códigos numéricos Desbordamiento (Overflow) Si el resultado de una suma excede el intervalo del sistema numérico, ocurre un desbordamiento. La suma de números de diferente signo nunca produce desbordamiento, pero cuando tienen el mismo signo se puede llegar a producir. Una suma provoca desbordamiento si los signos de los sumandos son iguales y el signo del resultado es diferente del signo de los sumandos. Sistemas Digitales I Sistemas y códigos numéricos En el caso de la resta la mayoría de los circuitos realizan el complemento a 2 del sustraendo y luego lo suman al minuendo aplicando las reglas normales para la suma. Ejemplos de resta en complemento a dos: El desbordamiento en la resta se puede detectar analizando los signos del minuendo y sustraendo complementado, usando la misma regla que en la suma. Sistemas Digitales I Sistemas y códigos numéricos Códigos binarios para números decimales Un conjunto de cadenas de n bits, en el cuales diferentes cadenas de bits representan diferentes números se denomina código. Una combinación particular de valores de n bits se conoce como palabra código. Para representar los 10 dígitos decimales se necesitan por lo menos cuatro bits. Existen muchísimos códigos decimales, pero el mas común es el decimal codificado en binario (BCD). El cual codifica los dígitos de 0 a 9 mediante sus representaciones binarias desde 0000 hasta 1001. Para representar números negativos en BCD lo mas común es utilizar magnitud y signo o complemento a 10. Sistemas Digitales I Sistemas y códigos numéricos Códigos decimales mas comunes Sistemas Digitales I Sistemas y códigos numéricos La suma de los dígitos BCD es semejante a la adicción de números binarios sin signo de 4 bits. Pero debe hacerse una corrección si el resultado excede 1001. Esta corrección consiste en agregarle 6. Sistemas Digitales I Sistemas y códigos numéricos El BCD es un código ponderado, ya que cada bit de la palabra de código tiene asignado un peso fijo. Los códigos como el 2421 son autocomplementados, esto significa que se puede obtener la palabra de código para el complemento a nueve de cualquier digito con solo complementar los bits individuales de la palabra de código. Los códigos decimales pueden tener mas de 4 bits. Un ejemplo de esto es el código biquinario y el código 1 de 10. La principal ventaja de utilizar mas bits del mínimo es la propiedad de detección de errores. Sistemas Digitales I Sistemas y códigos numéricos Código Gray Es un tipo de código en el cual cambia solamente un bit entre cada par de palabras de código sucesivas. Se denominan códigos continuos. Número Decimal Código binario Código Gray 0 000 000 1 001 001 2 010 011 3 011 010 4 100 110 5 101 111 6 110 101 7 111 100 Sistemas Digitales I Sistemas y códigos numéricos Códigos carácter (ASCII) Es un tipo de código utilizado para representar caracteres. El mas utilizado es el ASCII (American Standard Code for Information Interchange). El ASCII representa cada carácter con una cadena de 7 bits, y produce un total de 127 caracteres diferentes. Por ejemplo: A = 1000001 a = 1100001 Sistemas Digitales I ? = 0111111 Sistemas y códigos numéricos Códigos detectores de error Un código detector de error tiene la propiedad de que cuando se produce un error en la palabra de código se genera una palabra de código no valida. Un código detecta todos los errores simples si la distancia mínima entre todos los pares posibles de palabras de código es 2. En general se necesitan n + 1 bits para construir un código de detección de errores simples con 2n palabras de código. Es decir que se le agrega un bit adicional, el cual se denomina bit de paridad. Bits de Código de Código de información paridad par paridad impar 000 000 0 000 1 001 001 1 001 0 010 010 1 010 0 011 011 0 011 1 100 100 1 100 0 101 101 0 101 1 110 110 0 110 1 111 111 1 111 0 Sistemas Digitales I Sistemas y códigos numéricos Corrección de errores y detección de errores múltiples El código que se utiliza para corregir errores se denomina código de corrección de errores. En general si un código tiene: Distancia mínima = 2c + d + 1 Siendo c la cantidad de bit erróneos a corregir y d la cantidad a detectar. Por ejemplo si tenemos un código con distancia mínima de 4 podremos detectar y corregir 1 bit de información. Cuando se quiere corregir un error hay que tomar la decisión de que palabra se quiso transmitir originalmente, esta función la realiza un decodificador de corrección de errores. Sistemas Digitales I Sistemas y códigos numéricos Códigos de Hamming Estos son códigos que poseen una distancia mínima de tres. Estos códigos para cualquier valor de i producen un código de (2i − 1) bits con i bits de verificación y 2i − 1 − i bits de información. En estos códigos cualquier posición que sea potencia de 2 será un bit de verificación y las posiciones restantes serán bits de información. Bits de información Bits de paridad Bits Totales 1 2 3 Menor o igual a 4 3 Menor o igual a 7 Menor o igual a 11 4 Menor o igual a 15 Menor o igual a 26 5 Menor o igual a 31 Menor o igual a 57 6 Menor o igual a 63 Menor o igual a 120 7 Menor o igual a 127 Sistemas Digitales I Sistemas y códigos numéricos Códigos para almacenamiento y transmisión de datos serie En los dispositivos digitales existen dos formas para transmitir y almacenar los datos Serie Paralelo Los datos se envían en una misma línea de a un bit a la vez. Es mas barato y lento. Se proporciona una línea independiente para cada bit. Es mas rápido y caro. Sistemas Digitales I Sistemas y códigos numéricos Transmisión de datos serie La señal de CLOCK define la velocidad a la cual se van a transmitir los datos, un bit por cada ciclo de reloj. La señal SYNC indica cuando se va a enviar un nuevo dato. El tiempo que ocupa cada bit se conoce como celda de bit. El formato de la señal real que aparece en cada celda de bit depende del código de línea. El código mas simple que se utiliza es el de no retorno a cero (NZR), se transmite un 1 al colocar un 1 en toda la celda y un 0 al colocar un 0 en toda la celda. Sistemas Digitales I Sistemas y códigos numéricos Códigos de línea utilizados comúnmente para datos serie El código NRZI (no retorno a cero invertido) la señal cambia de nivel cuando se transmite un 1 y se mantiene igual cuando se transmite un 0. Se utiliza en las cintas o discos magnéticos. El código RZ (retorno a cero) es similar al NRZ solo que los 1 se transmiten solo una fracción de tiempo de bit. Es mas fácil recuperar la señal de clock. El BPRZ (retorno a cero bipolar) transmite con 3 niveles de señal +1, 0 y 1. La ventaja que tiene es que esta balanceado en CD. El Manchester proporciona una transición por celda por bit sin importar el valor. Esto permite recuperar mas fácilmente la señal de clock. Sistemas Digitales I