Upload
lukitas-ruarte
View
226
Download
2
Embed Size (px)
Citation preview
Universidad Nacional de la Patagonia San Juan Bosco
Facultad de Ingeniería
Sistemas Digitales I
Comodoro Rivadavia, 16 de marzo de 2015
INGENIERÍA ELECTRÓNICA
Sistemas de numeración y códigos Unidad 1
Sistemas Digitales I 2 16 de marzo de 2015
Contenido
• Sistemas de numeración posicional.
• Aritmética binaria, sin signo y con signo.
• Códigos binarios.
• Detección y corrección de errores.
Sistemas Digitales I 3 16 de marzo de 2015
Sistemas de numeración posicional
Los números se representan mediante una cadena de símbolos o
dígitos ordenados, donde cada posición tiene un peso determinado.
148,3710 2 1 0 -1 -2 → Posición
peso 10-2 = 0,01; valor absoluto = 7; valor relativo = 7.10-2 = 0,07
peso 101 = 10; valor absoluto = 4; valor relativo = 4.101 = 40
N = (an-1 an-2... a1 a0, a-1 a-2... a-m)b : número con n dígitos enteros y
m fraccionarios, en base b.
El valor del número es una suma ponderada de los dígitos
148,3710 = (1 . 102 + 4 . 101 + 8 . 100 + 3 . 10-1 + 7 . 10-2)10
1-n
N general,En mi
i
i ba
Base (b) : cantidad de símbolos o dígitos distintos permitidos
Sistemas Digitales I 4 16 de marzo de 2015
Sistemas decimal, binario, octal y hexadecimal
Bit: binary digit (dígito binario).
Byte: conjunto de 8 bits.
Nibble: conjunto de 4 bits = 1/2 byte.
1K = 210 = 1024; 1M = 220 = ..........................
1G = 230 = .....................................................
Conversión binario-octal
23 = 8 3 dígitos binarios equivalen a 1 dígito octal
24 = 16 4 dígitos binarios equivalen a 1 dígito hexa
Los sistemas octal y hexadecimal se usan
para representar cadenas de bits en forma
más compacta para nuestra interpretación.
Conversión binario-hexadecimal
Sistemas Digitales I 5 16 de marzo de 2015
Sistemas decimal, binario, octal y hexadecimal
Ejercicio: convertir
• 101110,111010110012 = .................8 = ............16
• 3F816 = ...........................2 = ..............8
1’101’011’1012 = 15358 11’0101’11012 = 35D16
11’010,100’010’12 = 32,4248 1’1010,1000’1012 = 1A,8A16
56,726 2E,EB
0011 1111 1000 1770
Ejercicio:
•Investigar sobre el error de truncamiento
•Calcular y memorizar las primeras 10 potencias de 2.
Sistemas Digitales I 6 16 de marzo de 2015
Conversiones de base
• Método de evaluación del polinomio: Dado N en base b1, se evalúa el polinomio en base b2.
Ejemplo 1: convertir 110102 a decimal.
110102 =
Ejemplo 2: convertir 3F,C16 a decimal.
3F,C16 =
• Método de división o multiplicación por la base: dividendo = divisor * cociente + resto
Nb1 = an-1 b2n-1 + ... + a2 b2
2 + a1 b21 + a0 + a-1 b2
-1 + a-2 b2-2 + ... + a-m b2
-m
Nb1 = (b2 (an-1 b2n-2 + ... + a2 b2
1 + a1) + a0) + (b2-1 (a-1 + a-2 b2
-1 + ... + a-m b2-m+1))
Parte entera: / b2 →el resto es a0 y el cociente se / b2 → el resto es a1, ... el último cociente es an-1
Parte fraccionaria: * b2 → la parte entera es a-1 y la parte fraccionaria * b2 → la parte entera. es a-2, ...
hasta que sea 0 (es una fracción entera), hallemos el período o logramos la precisión deseada.
(Se opera en la base de origen b1)
(1 . 24 + 1 . 23 + 0 . 22 + 1 . 21 + 0 . 20)10 = (16 + 8 + 0 + 2 + 0)10 = 2610
(3 . 161 + 15 . 160 + 12 . 16-1)10 = (48 + 15 + 0,75)10 = 63,7510
Sistemas Digitales I 7 16 de marzo de 2015
41 |2
40 20 |2
1/ 20 10 |2
0/ 10 5 |2
0/ 4 2 |2
1/ 2 1
0/
Conversiones de base
Resumen de algoritmos para convertir de base b1 a base b2:
1) Sustitución de grupos de dígitos si b1 = b2n o b1
n = b2 (recomendado si es posible).
2) Evaluación del polinomio con aritmética de base b2 (recomendado si b2 = 10).
3) División o multiplicación por b2 con aritmética de base b1 (recomendado si b1 = 10).
4) Si b1 y b2 ≠ 10, convertir a decimal y luego a b2 para evitar aritméticas complicadas.
Ejercicios: convertir
• 83,710 a binario, hexadecimal y b = 7.
• 10111,012 a decimal, hexadecimal y b = 5.
Ejemplo 1: convertir 41,110 a binario
0,1 * 2 = 0,2
0,2 * 2 = 0,4
0,4 * 2 = 0,8 período
0,8 * 2 = 1,6
0,6 * 2 = 1,2
0,2 * 2 = 0,4
41,110 = 101001,00011...
Sistemas Digitales I 8 16 de marzo de 2015
Conversiones de base
Sistemas Digitales I 9 16 de marzo de 2015
Conversiones de base
Sistemas Digitales I 10 16 de marzo de 2015
Resolución Ejercicios TP1, Parte A
15 minutos
Sistemas Digitales I 11 16 de marzo de 2015
Aritmética decimal y binaria
Tablas de suma y multiplicación decimal Tablas de suma y multiplicación binaria
1 1 1 1
1101101
+ 11110
10001011
acarreos
parciales
acarreo final
10
0 10 0 0 10 0 10
1011010
- 101101
101101
préstamos
10111
x 1010
101110
101110
11100110
1110111 |1001
1001 1101
01011
1001
001011
1001
0010/
•Solo se
intenta con
dos valores
Sistemas Digitales I 12 16 de marzo de 2015
Aritmética hexadecimal
Tablas de suma y multiplicación hexadecimal (¡imposibles de memorizar!):
4FE3
-1FFE
Ejemplo:
Calcular la distancia entre las posiciones de memoria cuyas direcciones son 4FE316 y 1FFE16.
Dadas las tablas de la suma y el producto en cualquier base
b, se pueden hacer las 4 operaciones básicas con los
mismos algoritmos que en decimal. 2FE5
Sistemas Digitales I 13 16 de marzo de 2015
Resolución Ejercicios TP1, Parte B
15 minutos
Sistemas Digitales I 14 16 de marzo de 2015
Complemento a la base
• Reglas prácticas para hallar el complemento a dos (Ca2):
1) Dado (N)2, copiar los dígitos de N desde la derecha (LSB, Least
Significant Bit) hasta el primer uno inclusive, y complementar (b-1-d en
b=2 invertir) los bits que quedan.
2) Complementar cada bit y sumarle 1 al resultado.
Def.: [N]b = bn - (N)b en binario: [N]2 = 2n - (N)2
Ejemplo: [01110110]2 = 28 - (01110110)2 = (100000000)2 - (01110110)2 = (10001010)2
• De la definición: [N]b + (N)b = bn = 1000...0 (un 1 y n ceros) → en el
registro queda 0. Entonces, [N]b sirve para representar -(N)b
• [[N]b] = bn - (bn - (N)b) = (N)b
Sistemas Digitales I 15 16 de marzo de 2015
Complemento a la base
Ejercicios: determinar
• [11011010]2 = ................................
• [10111]2 (en 8 bits) = .............................
Complemento a la base menos 1
• [11011010]2 = ................................
• [10111]2 (en 8 bits) = .............................
Complemento a la base menos 1
• Que se entiende por Ca1?
• Como se obtiene?
Sistemas Digitales I 16 16 de marzo de 2015
Números enteros con signo y magnitud
Ejemplo: +2710 =
-2710 =
En binario: Rango entre - 2n-1+1 y + 2n-1-1
Capacidad de representación, con n dígitos enteros en total, ya que todo
sistema digital tiene registros de tamaño finito y fijo para almacenar los
datos con los cuales opera: • el número más negativo tiene n dígitos (b-1) → es -(bn-1-1).
• el cero tiene dos representaciones: +0 = (000...0)bsm y -0 = (b-1 00...0).
• el número más positivo tiene un 0 y n-1 dígitos (b-1) → es +(bn-1-1)
N = ±(an-1 an-2... a1 a0, a-1 a-2... a-m)b → N = (s an-1 an-2... a1 a0, a-1 a-2... a-m)bsm
→ s = 0 si N ≥ 0 y s = b-1 si N ≤ 0
(027)10sm = (00011011)2sm
(927)10sm = (10011011)2sm
La implementación de este circuito requiere de circuitos y algoritmos con un costo
mayor en términos de componentes y de tiempo de cálculo
Sistemas Digitales I 17 16 de marzo de 2015
Sistema numérico de complemento a la base
• Los números positivos se representan con dígito de signo (0) y magnitud.
• Los números negativos se representan con el complemento a la base del número
positivo correspondiente: -(N)b = [N]b → quedan con dígito de signo = b-1
Ejemplo: representar +1310 y -1310 en Ca2 con 8 bits.
1310 = 11012 → +1310 = 00001101Ca2
-1310 = [00001101]2 = 11110011Ca2
la suma da: 1 00000000Ca2 = 0 (el acarreo se desprecia)
Capacidad de representación, con n dígitos enteros en total: • el número más negativo tiene un b-1 y n-1 ceros → es -bn-1
• el cero tiene una representación: 0 = (000...0)Cab.
• el número más positivo tiene un 0 y n-1 dígitos (b-1) → es +(bn-1-1)
En binario → entre - 2n-1 y + 2n-1-1
Aritmética en Ca2: • Para ahorrar hardware se realizan las restas como sumas: A - B = A + (-B).
• El acarreo (carry) final se desprecia.
• Si el resultado está fuera del intervalo (- 2n-1; + 2n-1-1), hay desbordamiento (overflow)
Sistemas Digitales I 18 16 de marzo de 2015
2) A = B-C = B+(-C) (B y C ≥ 0)
(B)2+[C]2=(B)2+2n-(C)2=2n + (B-C)2
(acarreo descartable)
• |B-C| es menor que B o C → nunca
hay overflow
• hay acarreo cuando A ≥ 2n, o sea
cuando B ≥ C.
Ejemplos, con 5 bits:
1410-910 01110
10111
100101Ca2 = +510
910-1410 01001
10010
11011Ca2=-(0101)2= -510
Aritmética en complemento a dos 1) A = B + C (B y C ≥ 0)
• 0 A (2n-1-1)+(2n-1-1) = 2n -2
nunca hay carry
• hay overflow cuando A > 2n-1-1
(el bit de signo es 1, como si fuera negativo)
Ejemplos, con 5 bits:
710+610 00111
00110
01101Ca2 = +1310
1310+510 01101
00101
10010Ca2=-(1110)2
= -1410
13+5=1810 > (01111)Ca2 = +1510
overflow
3) A = -B-C = -(B+C) (B y C≥0)
[B]2+[C]2 = 2n-(B)2+2n-(C)2 = 2n +2n-
(B+C)2 = 2n + [B+C]2
(siempre hay acarreo)
• hay overflow cuando A < -2n-1
(el bit de signo del resultado es 0)
Ejemplos, con 5 bits:
-410-910 11100
10111
110011Ca2 = -1310
-910-1410 10111
10010
1 01001Ca2= +910
-9-14=-2310 < (10000)Ca2 = -1610
overflow
carry
Sistemas Digitales I 19 16 de marzo de 2015
Aritmética en complemento a dos
Ejercicios: calcular
• -1910 + 3210 en 7 bits
• -1710 - 2110 en 6 bits
Sistemas Digitales I 20 16 de marzo de 2015
Sistema numérico de complemento a la base
menos uno (en binario, complemento a uno)
• Los números positivos se representan con dígito de signo (0) y magnitud.
• Los números negativos se representan con el complemento a la base menos
uno del número positivo correspondiente: -(N)b = [N]b-1 = bn - 1 - (N)b
Ejemplo: representar +1310 y -1310 en Ca1 con 8 bits.
1310 = 11012 → +1310 = 00001101Ca1
-1310 = [00001101]1 = 11110010Ca1 (Regla práctica: invertir todos los bits)
la suma da: 11111111Ca1 = -[11111111]1 = -0
Capacidad de representación, con n dígitos enteros en total: • el número más negativo tiene un b-1 y n-1 ceros → es -(bn-1-1)
• el cero tiene dos representaciones: +0 = (000...0)Cab-1 y -0 = (b-1 b-1 b-1 ... b-1)Cab-1
• el número más positivo tiene un 0 y n-1 dígitos (b-1) → es +(bn-1-1)
En binario → entre - 2n-1+1 y + 2n-1-1
Sistemas Digitales I 21 16 de marzo de 2015
Sistema numérico de complemento a uno Aritmética en Ca1: • El conteo suma 1 excepto desde -0 = 1111Ca1 a + 1 = 0001Ca1, donde hay que sumar 2 →
cuando se excede 2n-1 (hay carry), hay que sumar 1 al resultado (“acarreo final circular”).
• Si el resultado está fuera del intervalo (- 2n-1+1; + 2n-1-1), hay desbordamiento (overflow). En
este caso, el resultado tiene distinto signo que ambos sumandos.
Ejemplos:
+910- 1410 en 5 bits 01001 -710-1110 en 5 bits 11000
10001 10100
11010Ca1 = -(0101)2 = -510 1 01100
1
-110-210 en 4 bits 1110 01101Ca1 = +1310
1101
1 1011 -7-11=-1810 < (10000)Ca1 = -1510
1
1100Ca1 = -(011)2= -310
overflow
Ejercicio:
Calcular (11011)Ca1 - (10011)Ca1 en 5 bits.
Acarreo
circular
Sistemas Digitales I 22 16 de marzo de 2015
Resolución Ejercicios TP1, Parte C
15 minutos
Sistemas Digitales I 23 16 de marzo de 2015
• Código: es un uso sistemático de un conjunto de símbolos para representar
unívocamente información.
• Palabra del código: cada conjunto ordenado de símbolos que representa un
dato particular.
Códigos
• Los sistemas digitales utilizan solamente códigos binarios.
• Códigos de n bits pueden tener hasta 2n palabras.
Ejemplos de códigos binarios:
1) Si para codificar un auto con 5 opcionales se utiliza un bit para cada opcional (1 =
presente; 0 = ausente), ¿cuántas variantes del auto (palabras del código) existen?
¿cuántos códigos distintos podrían definirse de esa manera? ¿y si no es necesario asociar
un bit a cada opcional?
2) Codificar las teclas de un sistema de alarma que sirven para ingresar una clave de 4
dígitos decimales. ¿qué cambia si en vez de tener que codificar cada tecla (dígito decimal)
por separado, puedo codificar el número completo?
Ejemplos: todos los sistemas de numeración, un semáforo, el número de DNI,
CUIT/CUIL, etc.
Sistemas Digitales I 24 16 de marzo de 2015
• Código continuo: las combinaciones correspondientes a eventos
consecutivos son adyacentes (difieren sólo en un bit).
• Código cíclico: es continuo y la última palabra es adyacente a la primera.
Ejemplo: código Gray o reflejado. Se usa para codificadores de posición:
Códigos binarios
usando código binario
usando código Gray
000
001
011
010
110
111
101
100
•Otro ejemplo: código Johnson.
00000
00001
00011
00111
01111
11111
11110
11100
11000
10000
•Con n bits, 2n palabras.
Sistemas Digitales I 25 16 de marzo de 2015
Código ponderado: cada bit tiene un peso definido. Ej.: BCD natural y Aiken.
Código autocomplementario: el complemento a 9 de N se obtiene invirtiendo los bits de N.
Códigos BCD (binary coded decimal)
Para codificar un dígito decimal hacen
falta por lo menos 4 bits.
La base de cualquier código BCD es 10
Ejemplos en BCD natural.
• números sin signo:
837,410 = 1000 0011 0111, 0100BCD natural
• números con signo, en complemento a la
base menos uno, con 4 dígitos más signo:
+47,210 = 0 0100 0111, 0010 0000BCD Ca9
-17,2310 = 1 1000 0010, 0111 0110BCD Ca9
Para operar en BCD natural:
• Si el resultado de un dígito es mayor que
9, hay que saltar las combinaciones no
usadas, sumándole 6 (0110).
• En Ca9 (base-1), existe acarreo circular.
BCD natural BCD
Aiken
BCD XS3
Sistemas Digitales I 26 16 de marzo de 2015
Códigos para números reales • Números de punto fijo: usan los
mismos algoritmos sencillos que para
los enteros, pero desaprovechan
capacidad de representación.
Ejemplo:
011011,11
+100001,01
111101,00
máximo positivo = 011111,11
“mínimo” positivo = 000000,01
• Números de punto flotante: usan
algoritmos mucho más complejos.
N = ±M . bE M: mantisa o significando
E: exponente o característica.
Mantisa normalizada: tiene su MSB ≠ 0.
Ej.: 1101,01012 = (0,11010101)2 . 24 → 0,5 ≤ |M| < 1
Exponente: con exceso K. Por ejemplo con e bits, -2e-1 ≤
E < 2e-1 Entonces, 0 ≤ E + 2e-1 < 2e (si E está en Ca2, K
= 2e-1)
Formato estándar IEEE 754-1985 (el más usado, por ej. Intel):
• Simple precisión o short (32 bits): signo, 8 bits para exponente con
exceso 127 y mantisa de 23 bits más un MSB (1) implícito. → 1≤ |M| <2
• Doble precisión o long (64 bits): signo, 11 bits para exponente con
exceso 1023 y mantisa de 52 bits más un MSB (1) implícito.
• Precisión extendida o temporary (80 bits): signo, 15 bits para exponente
con exceso 16383 y mantisa de 64 bits (con el MSB explícito)
Sistemas Digitales I 27 16 de marzo de 2015
Códigos alfanuméricos
Para representar texto (cadenas o
strings de caracteres), el código más
común es el ASCII (American
Standard Code for Information
Interchange), con 7 bits (1968).
Ejemplo.
• “ASCII” se codifica como:
Ejercicio.
• Decodificar (43 4F 44 49 47 4F 20 41
53 43 49 49)16:
............................................
El código ASCII extendido a 8 bits es la
base de la mayoría de los sets de
caracteres que se usan en las
computadoras.
(41 53 43 49 49)16
Sistemas Digitales I 28 16 de marzo de 2015
Cubos-n y distancia de un código
Cada cadena de n bits se
puede representar como un
vértice de un cubo-n.
Subcubo-m: tiene n-m bits
iguales para cada vértice y
m bits que toman las 2m
combinaciones posibles.
• Distancia entre dos cadenas de n bits: es el número de bits en los cuales difieren.
• Distancia mínima: es la menor de las distancias entre todos los pares de palabras del
código.
Si hay al menos un par de palabras adyacentes, dmín = 1 (Ejemplos: binario natural,
cualquier código BCD de 4 bits, código Gray, etc.)
Sistemas Digitales I 29 16 de marzo de 2015
Códigos para detección y corrección de errores Errores: bits almacenados o transmitidos que se modificaron por fallas del
hardware o interferencia externa (ruido).
Modelo de error independiente:cada falla produce un error simple (en 1 bit).
Entonces, los errores múltiples son mucho menos probables.
En general:
• para detectar s errores: dmín ≥ s + 1
• para corregir t errores: dmín ≥ 2 t + 1
• para corregir t errores y detectar s
errores adicionales: dmín ≥ 2 t + s + 1
Detección de errores simples: sólo es posible
si no existen palabras adyacentes (dmín = 2)
Códigos de paridad: agrega un bit de
paridad para que el número total de unos en
cada palabra ser par (paridad par) o impar
(paridad impar). Sólo la mitad de las palabras
posibles pertenecen al código.
Sistemas Digitales I 30 16 de marzo de 2015
Códigos de Hamming Con i bits de paridad construye un código con dmín = 3 que permite corregir errores simples.
Puede haber hasta 2i - 1 bits por palabra (información y paridad). Ej.: 4 bits de datos, hay
que agregar 3 bits de paridad para que 4+3 = 7 ≤ 23 - 1 = 7
• Los grupos se forman según los unos del
equivalente binario de la posición de cada bit.
• Generación: cada bit de paridad (par) se
genera para el grupo de bits de datos
correspondiente. Son los bits que pertenecen a
un único grupo porque están ubicados en las
potencias de dos.
• El código resultante, ¿tiene distancia mínima 3?
Luego de la transmisión o almacenamiento...
• Detección: determinar la paridad efectiva de
cada grupo en la palabra recibida (0 si es par, 1
si es impar) e interpretar:
- todas 0 → no hubo error simple ni doble.
- no cero → se supone un error simple, da la
posición para corregirlo (invertir ese bit)
Sistemas Digitales I 31 16 de marzo de 2015
Ejemplo: para un código binario natural de 4 bits.
Códigos de Hamming
• Se transmiten los 7 bits.
• Si se recibe la palabra: d3d2d1d0p2p1p0 = 0110011,
verificamos que se mantuvo la paridad par en los tres grupos:
c0 = d3 d1 d0 p0 = 0
c1 = d3 d2 d0 p1 = 0 error en 1 o 2 bits
c2 = d3 d2 d1 p2 = 0 : función lógica XOR (OR-exclusiva)
• Si se recibe la palabra: d3d2d1d0p2p1p0 = 0111011,
determinamos los grupos que cambiaron su paridad a impar:
c2c1c0 = 011 → existe un error simple o doble. Si lo
suponemos simple, está en el bit cuya posición lógica es 3 (en
la secuencia d3d2d1p2d0p1p0), o sea d0.
Si se agrega un bit de paridad par global al código anterior,
se obtiene un código de Hamming con dmin = 4, que permite
corregir errores en un bit y además detectar errores en dos
bits.
Sistemas Digitales I 32 16 de marzo de 2015
Códigos de Hamming
Sistemas Digitales I 33 16 de marzo de 2015
Códigos para transmisión y almacenamiento de datos en serie
Transmisión de datos:
• en paralelo: 1 línea por cada bit de la palabra de datos y la masa.
• en serie: un bit a la vez, por una sola línea y la masa. Si se puede usar, es más barata.
Requiere 3 líneas y la masa.
Códigos de línea:
Para usar un único “par” (línea de datos y
masa) o 3 líneas para comunicación
bidireccional (Tx, Rx y masa, como la
interfase RS-232), el receptor debe poder
recuperar la información del reloj y del
sincronismo a partir de la señal de datos. Se
usa un DPLL (digital phase-locked loop), el
cual se “desengancha” si no recibe
suficientes transiciones.
Sistemas Digitales I 34 16 de marzo de 2015
Bibliografía
Capítulo 1: Sistemas numéricos y Códigos
Análisis y diseño de circuitos lógicos digitales, V. P. Nelson - H. T: Nagle –
B. D. Carrol – J. D. Irwin, Ed. Prentice Hall
Capítulo 2: Sistemas y Códigos numéricos
Diseño Digital: Principios y Prácticas , John Wakerly