introducción al diseño lógico

32
SISTEMAS Y CÓDIGOS NUMÉRICOS

Upload: adaning

Post on 23-Dec-2015

29 views

Category:

Documents


1 download

DESCRIPTION

Contiene los temas básicos de diseño lógico

TRANSCRIPT

Page 1: Introducción al Diseño Lógico

SISTEMAS Y CÓDIGOS NUMÉRICOS

Page 2: Introducción al Diseño Lógico

SISTEMAS Y CÓDIGOS NUMÉRICOS

Página 2

UNIDAD I OPERACIÓN DE CIRCUITOS COMBINATORIOS

Orígenes y esbozo histórico.

En la actualidad es cada vez más difícil no encontrarse día con día con un producto de la tecnología digital.

Ciertamente, el ejemplo más representativo de estos es la computadora digital, sin embargo, lejos de ser el único

este pertenece a una amplia gama de productos que cada día se renueva, se perfecciona y crece. Los ejemplos

actuales van desde computadoras digitales y calculadoras de bolsillo hasta video juegos, relojes digitales,

medidores, controladores industriales, electrodomésticos, aparatos de comunicación, etc. Algunos ejemplos de

ellos se ilustran en la Figura 1.

Figura 1. Tecnología digital.

Aunque los productos derivados del diseño digital realizan funciones sorprendentes, la idea básica de esta rama

de la electrónica es extremadamente simple.

El Diseño Digital o diseño lógico puede ser definido como la ciencia de organizar conjuntos de interruptores

(switches) para procesar información de manera predecible y coherente.

El avance actual de la electrónica conjuga los avances tanto del diseño digital como del analógico, estas dos

ramas de la electrónica ofrecen soluciones para diversos problemas, sin embargo, cada vez más las soluciones

digitales invaden el campo que anteriormente era exclusivo de las soluciones analógicas. Sin embargo, en la

mayoría de los casos, la mejor solución conjuga elementos analógicos tanto como digitales. A continuación se

presenta un breve resumen del desarrollo de la electrónica digital y los principales eventos que contribuyeron

al desarrollo actual.

1854 George Boole publica su artículo “An investigation of the laws of thought...” en donde sienta las bases

del álgebra Booleana, sin embargo, para la época, el artículo no tuvo trascendencia práctica.

1938 Claude Shannon sistematiza el trabajo anterior de George Boole, dando origen a los primeros

dispositivos de conmutación diseñados y probados mediante métodos sistematizados. (Ya en 1930 los

Laboratorios Bell habían desarrollado una calculadora usando relevadores).

1940 Alan Touring construye “Colossus”, primera computadora de tubos de vacío (mantenida en secreto

casi por 40 años).

1946 John Mauchly y J. Presper Eckert (U.S.A. Pensilvania) construyen la ENIAC usando tubos de vacío

(18,000 tubos, 500,000 switches, 150 kilowatts) capaz de hacer 5000 sumas por segundo.

1947 Invención del transistor, con el consiguiente ahorro de espacio, potencia de consumo y costo de los

sistemas electrónicos.

1950-1960 Tercera generación de computadoras construidas en base a circuitos integrados.

1971 La compañía INTEL lanza al mercado el primer microprocesador (el 4004) de 4 bits. A partir de aquí

se comienzan a generalizar los sistemas digitales complejos basados en microprocesador para cubrir

una extensa gama de aplicaciones que va desde los electrodomésticos hasta controladores industriales.

Page 3: Introducción al Diseño Lógico

SISTEMAS Y CÓDIGOS NUMÉRICOS

Página 3

A su vez la tecnología de microprocesadores y computadoras digitales no ha dejado de perfeccionarse día con

día, los siguientes son algunos eventos significativos más recientes:

1972 INTEL produce el primer microprocesador de 8 bits (el 8008).

1973 INTEL lanza el 8080 (adoptado por IBM para la PC). MOTOROLA lanza el 6800.

1975 ZILOG lanza el Z80 y MOTOROLA produce el 6502 (adoptado por APPLE) (El 6501 y 6502 fueron

comercializados en $20 y $25 dólares cuando el microprocesador más barato valía unos $180 dólares.

1979 Se producen las primeras microcomputadoras de un solo chip (microcontroladores).

1985 Primeras memorias de 1 Megabit.

Actividad 1. Realizar una línea de tiempo, un cuadro descriptivo o un mapa mental resumiendo los desarrollos

más sobresalientes que conforman el diseño lógico y la electrónica digital tomando como base los puntos

anteriores hasta nuestra actualidad.

Escalas de Integración de los Circuitos Integrados.

En la actualidad se ha logrado introducir cantidades formidables de transistores en un solo circuito integrado.

De hecho, los circuitos integrados se clasifican de acuerdo a la cantidad de transistores que contienen:

S.S.I. (Pequeña escala de integración).- Menos de 100 transistores por circuito integrado.

M.S.I. (Media escala de integración).- De 100 hasta 1000 transistores por circuito.

L.S.I. (Alta Escala de Integración).- De 1000 a 10,000 transistores por circuito.

V.L.S.I. (Muy Alta Escala de Integración).- Más de 10,000 transistores por circuito.

Actividad 2. Investigar si existen más escalas de integración y escribir un ejemplo de cada escala de integración

para circuitos integrados.

El mundo analógico y el mundo digital.

Es conveniente tener clara la distinción entre los conceptos Analógico y Digital antes de introducirnos al mundo

de la electrónica digital, para ello consideremos los siguientes circuitos eléctricos:

Figura 2. Circuito analógico. Figura 3. Circuito digital.

Para el circuito de la izquierda la relación de la salida

(Vout) respecto a la entrada (Vin) está dada por:

𝑉𝑜𝑢𝑡 =𝑅2

𝑅1 + 𝑅2𝑉𝑖𝑛

De esta manera Vout puede tomar una infinidad de

valores dependiendo de la variación de Vin.

Para el circuito de la derecha la relación de la salida

(Luz) respecto a la entrada (Vin) está dada por la

siguiente tabla

Vin Luz Por esto la luz sólo puede tomar dos

0 ON estados o valores al variar Vin

V OFF debido a la posición del switch S.

Page 4: Introducción al Diseño Lógico

SISTEMAS Y CÓDIGOS NUMÉRICOS

Página 4

En general podemos pensar en una señal analógica como aquella que puede tomar una infinidad de valores en

un intervalo finito. En la Figura 4, se presenta una gráfica típica de una señal analógica que varía con el tiempo.

Como puede observarse en la Figura 4, la señal f(t)

puede tomar cualquier valor entre f(t1) y f(t2).

Ejemplos de señales analógicas: Temperatura del

cuerpo, velocidad de un auto, distancia recorrida por

un peatón, peso corporal, etc.

Figura 4. Gráfica de una señal analógica.

A diferencia de las señales analógicas, una señal

digital o discreta sólo puede tomar una cantidad finita

de valores en un intervalo cualquiera. En la Figura 5

se muestra una señal digital típica que varía con el

tiempo.

Como puede advertirse en la Figura 5, f(t) solamente

toma 6 valores diferentes entre f(t1) y f(t2).

Figura 5. Gráfica de una señal digital.

Ejemplos de variables digitales: la edad en años completos de una persona, el precio de un producto, el número

de pobladores de un país, etc.

Un caso particular de señal digital que será la que nos ocupe a lo largo de este curso es la llamada señal binaria

y se refiere simplemente a una señal discreta que sólo puede tomar dos valores. En la Figura 6 se muestra una

señal binaria típica que varía con el tiempo.

Así como hay señales analógicas y digitales,

también los dispositivos pueden clasificarse de

esta manera dependiendo de las señales que

manejan o de los principios de operación en

que están basados. Así, podemos hablar de

dispositivos analógicos o dispositivos

digitales.

Figura 6. Gráfica de una señal binaria.

Inclusive los métodos que nos permiten abordar problemas en general pueden ser clasificados como métodos

analógicos o métodos digitales. De hecho, un mismo problema puede ser resuelto por ambos enfoques.

Ejemplo 1. Contar el número de nueces en un costal:

Solución digital: Contar de una en una las nueces.

Solución analógica: Medir el peso promedio de una nuez, pesar el costal y dividir el peso del costal

entre el peso promedio de la nuez.

Page 5: Introducción al Diseño Lógico

SISTEMAS Y CÓDIGOS NUMÉRICOS

Página 5

Sistemas Numéricos.

Los sistemas digitales manejan información binaria, es decir, disponen solamente de dos valores para

representar cualquier información. Esto hace que los sistemas digitales sean más confiables que los analógicos,

ya que es más fácil distinguir entre dos valores que entre una gran cantidad de ellos. Sin embargo, esto implica

que si se desea diseñar o entender sistemas digitales, especialmente aquellos que manejan información de tipo

numérico es necesario dominar el sistema de numeración binario. En este capítulo, se presenta dicho sistema

de numeración comenzando con una introducción general sobre sistemas de numeración y haciendo énfasis en

los sistemas de numeración binario y hexadecimal, por su aplicación directa a sistemas digitales.

¿Cuál es el significado numérico de la representación acostumbrada para los números? Es decir, por ejemplo

¿qué significa la representación del número N=1998?

Como es sabido, el número anterior significa 1 millar, más 9 centenas, más 9 decenas, más 8 unidades, es decir,

N puede escribirse como:

N= 1*103 + 9 * 102+ 9*101 + 8*100

Es decir, en general, un número cualquiera N de n dígitos escrito como

N = An-1 An-2 ... A1 A0 (1.1)

Donde, los dígitos An-1, ... A1 A0 son alguno de los diez siguientes: 0, 1, 2, ..., 9. También podrá escribirse como

N = An-1*10n-1 + An-2*10n-2+ ...+ A1*101 + A0*100 (1.2)

En este punto es conveniente introducir las siguientes definiciones:

Sistema Numérico. Se llama sistema numérico al conjunto ordenado de símbolos o dígitos y a las

reglas con que se combinan para representar cantidades numéricas. Existen diferentes sistemas

numéricos, cada uno de ellos se identifica por su base.

Dígito. Un dígito en un sistema numérico es un símbolo que no es combinación de otros y que

representa un entero positivo.

Bit. Es un dígito binario (Abreviación del inglés binary digit), es decir, un 0 o un 1.

Base de un sistema numérico. La base de un sistema numérico es el número de dígitos diferentes

usados en ese sistema.

Notación. En adelante, para distinguir entre los diferentes sistemas numéricos encerraremos entre paréntesis el

número y le añadiremos un subíndice, indicando la base que se está usando. Sin embargo, si no se usa subíndice

se deberá entender que el número está en base diez, a menos que se diga lo contrario.

Ejemplos:

2) 35 = (35)10 = 35 base 10 (sistema decimal).

3) (110100)2 = 110100 base 2 (sistema binario).

4) (34)16 = 34H = 34 base 16 (sistema hexadecimal).

Page 6: Introducción al Diseño Lógico

SISTEMAS Y CÓDIGOS NUMÉRICOS

Página 6

Figura 7. Sistemas numéricos más usados en diseño digital.

Notación.

En general cualquier número entero consta de

Parte entera . Parte Fraccionaria

Cualquier número se puede escribir de dos maneras, mediante la notación yuxtaposicional o simplemente

posicional (ecuación 1.1) o la notación polinomial (ecuación 1.2).

Notación posicional.

Al escribir un número con esta notación, la posición de cada dígito nos dice su peso relativo. En general, en la

base b un número N de n dígitos en la parte entera y m dígitos en la parte fraccionaria en esta notación se

escribe:

N = (an-1 an-2 .... a1 a0 . a-1 .... a-m )b (1.3)

En esta notación el dígito de más a la izquierda (an-1) es decir, el que “pesa” más se denomina dígito más

significativo (MSD), en forma similar el de más a la derecha (a-m), es decir, el que “pesa” menos se le llama

dígito menos significativo (LSD).

Ejemplo 5: (218.25)10 b=10, n=3, m=2

Notación polinominal.

En general, cualquier número N puede ser escrito como un polinomio en potencias de la base. Así, la notación

polinomial para el número expresado por (1.3) será:

𝑁 = ∑ 𝑎𝑖𝑟𝑖𝑛−1

𝑖=−𝑚 = 𝑎𝑛−1𝑟𝑛−1 + 𝑎𝑛−2𝑟𝑛−2 + ⋯ + 𝑎1𝑟1 + 𝑎0𝑟0 + 𝑎−1𝑟−1 + ⋯ + 𝑎−𝑚𝑟−𝑚 (1.4)

Ejemplo 6: N = (218.25)10 = 2*102 + 1*101 + 8*100 + 2*10-1 + 5*10-2

Conversión Entre Sistemas Numéricos.

El problema general de convertir un número de su representación en base r a la correspondiente en base q se

puede resolver en un sólo paso si se maneja aritmética de base r o de base q, sin embargo, si se quiere usar en

el proceso solamente aritmética de base 10 debemos plantearlo en dos etapas como se muestra en la Figura 8.

Sistemas Numéricos

Más Usados

Binario

Base 2

Dígitos:

0,1

Octal

Base 8

Dígitos:

0, 1, 2, 3, 4, 5, 6, 7

Decimal

Base 10

Dígitos: 0,1,2,3,4,5,6,7,8,9

Hexadecimal

Base 16

Dígitos: 0,1,2,3,4,5,

6,7,8,9,A,B,C,D,E,F

Page 7: Introducción al Diseño Lógico

SISTEMAS Y CÓDIGOS NUMÉRICOS

Página 7

Figura 8. Conversión de base r a base q usando aritmética de base 10.

Conversión de Base r a Base 10.

Como lo sugiere la figura 8, este caso puede ser tratado directamente usando la notación polinomial y aritmética

de base 10. Este procedimiento consiste en usar la expresión (1.4) expresando todas las cantidades involucradas

en decimal.

Ejemplo 7. Convertir (B2A)16 a base 10.

Expresando el número en notación polinomial usando base 10 para representar cada cantidad involucrada en

dicha notación:

(B2A)16 = (B*162 + 2*161 + A*160)10

= (11x256 + 2x16 + 10x1)10

= (2858)10

Ejemplo 8. Convertir (11011)2, a base 10.

En forma similar al ejemplo anterior

(11011)2 = 1*24 + 1*23 + 0*22 + 1*21 + 1*20

=16 + 8 + 0 + 2 + 1

= (27)10

NOTA. En este caso y en los sucesivos se han obviado los paréntesis y el subíndice 10 para indicar decimal,

excepto hasta el resultado final.

Ejemplo 9. Convertir (12101.121)3 a decimal.

(12101.11)3 = 1*34 + 2*33 + 1*32 + 0*31 + 1*30 + 1*3-1 + 2*3-2 + 1*3-3

= 1*81 + 2*27 + 1*9 + 0 + 1 + 1/3 + 2/9 + 1/27

= (145.592592...)10

Conversión de Base 10 a Base q.

El método para realizar esto que se presenta aquí y que se denomina método de divisiones sucesivas por la base

q está basado en las siguientes consideraciones generales:

Consideremos un número entero N escrito en la base r, en la notación posicional, es decir,

N= (an-1 an-2 ...a1 a0)r

En notación polinomial, es decir,

N = an-1 rn-1 + an-2 rn-2 + ... + a1 r1 + a0

Factorizando r podemos reescribir

Page 8: Introducción al Diseño Lógico

SISTEMAS Y CÓDIGOS NUMÉRICOS

Página 8

N = r[ (an-1 rn-2 + an-2 rn-3 + ... + a1) + (a0/r) ]

Es decir,

N/r = (an-1 rn-2 + an-2 rn-3 + ... + a1) + (a0/r)

Como se observa, el primer término en el segundo miembro de la igualdad anterior que denotaremos N1 se

puede representar en forma posicional en base r como sigue

N1 = (an-1 an-2...a1)r

Con lo cual

N/r = N1 + (ao/r)

Conclusión. La expresión anterior significa que al dividir N =(an-1 an-2 ... a1 a0)r entre r obtenemos como cociente

N1 y como residuo de la división a0. En forma similar si dividimos N1 = (an-1 an-2...a1)r entre r obtendremos

como cociente N2 = (an-1 an-2...a2)r y como residuo a1 y así sucesivamente.

De esta manera, para obtener los n dígitos de N en base r se deberán obtener los n residuos de n divisiones

sucesivas entre r. Obteniéndose en el orden de LSD a MSD.

Ejemplo 10. Convertir (25)10 a base 2, 8 y 16.

Para este proceso se formará el siguiente arreglo de divisiones sucesivas entre la base

Para la base 2, se tiene que

(25)10 = (11001)2

En adelante se obviarán los

comentarios de la Tabla 1 y solo se

mostrarán los cocientes, residuos y la

base entre la cual se está dividiendo.

Tabla 1. Tabla de conversión aplicando divisiones sucesivas.

Para la base 8: Para la base 16:

(25)10 = (31)8 (25)10 = (19)16

Page 9: Introducción al Diseño Lógico

SISTEMAS Y CÓDIGOS NUMÉRICOS

Página 9

Números fraccionarios.

La parte fraccionaria de un número de base 10 puede convertirse a base r en forma similar a lo descrito para la

parte entera, pero en este caso, en lugar de realizar divisiones se realizan multiplicaciones sucesivas, y en lugar

de tomar residuos se toman las partes enteras resultantes de dichas multiplicaciones, obteniéndose los dígitos

del número en base r en el orden de MSD a LSD.

Esto se justifica de manera similar a lo mostrado para el caso de las divisiones sucesivas, ya que si un número

N se representa en notación posicional en base r como

N = (0.a-1 a-2 a-3 ...)r

Es fácil ver que

N*r = (a-1 . a-2 a-3 a-4 ...)r

Es decir que la parte entera de N*r es a-1.

Ejemplo 12: Convertir (0.27)10 a base 2

Es decir, (0.27)2 = (0.01000101...)2

En adelante se obviarán detalles en este

procedimiento.

Tabla 2. Tabla de conversión aplicando multiplicaciones sucesivas.

Caso particular conversión entre bases rk y r.

Cuando una de las bases involucradas en la conversión es una potencia entera de la otra la conversión se vuelve

muy sencilla, ya que se puede realizar en un sólo paso expresando cada dígito del número en base rk usando k

dígitos de base r. Además, este procedimiento no requiere aritmética de ningún tipo.

Ejemplo 13. Convertir N = (10111011110)2 a base 8 y a base 16.

Para base 8: Como 8 = 23, bastará con representar cada 3 dígitos del número binario en octal como se

muestra a continuación

Page 10: Introducción al Diseño Lógico

SISTEMAS Y CÓDIGOS NUMÉRICOS

Página 10

N = 10, 111, 011, 110

2 7 3 6

Es decir, N = (2736)8

Para base 16: Como 16=24, en forma similar al caso anterior

N = 101,1101,1110

5 D E

Es decir, N =(5DE)16

Ejemplo 14. Convertir N =(3F45)16 a base 4 y a base 2.

Para base 4 como 16 = 42, se convertirá cada dígito del número usando 2 dígitos de base 4 como se

muestra a continuación

N = 3 , F , 4 , 5

03 33 10 32

Es decir, N=(03331032)4

Para base 2 en forma similar, como 16 = 24

N = 3 , F , 4 , 5

0011 1111 0100 0101

Es decir, N = (0011111101000101)2

Por la importancia del caso a continuación se tratará de manera especial el caso de base dos o sistema binario,

ya que la información manejada por los sistemas digitales es información de tipo binaria.

Los Sistemas Octal y Hexadecimal.

Como se puede observar del caso de conversión descrito en la sección anterior, el sistema octal (base 8) y

hexadecimal (base 16) pueden ser considerados como “binario abreviado”, en el sentido de que la conversión

de éstos a binario y viceversa es prácticamente inmediata a simple vista, es por ello que estos sistemas

tradicionalmente han sido utilizados para representar de manera compacta información binaria en los sistemas

digitales.

Obsérvese que para realizar la conversión octal-binario o hexadecimal-binario, basta tener presente la

conversión de los 8 dígitos del octal o de los 16 dígitos del hexadecimal:

El Sistema Binario.

El sistema binario (r=2) requiere únicamente dos dígitos, 0 y 1. Este sistema es ideal para uso en sistemas

digitales, ya que éstos están construidos de dispositivos de dos estados (relevadores, transistores, etc.).

Notación: Se acostumbra representar los dígitos binarios (bits) de diversas maneras, dependiendo del contexto,

por ejemplo:

1= encendido = ON = alto = H

0= apagado = OFF = bajo = L

Page 11: Introducción al Diseño Lógico

SISTEMAS Y CÓDIGOS NUMÉRICOS

Página 11

Tabla 3. Tabla de conversión entre los sistemas decimal, hexadecimal, octal y binario.

Cuando se conectan varios dispositivos que pueden almacenar cada uno de ellos un bit, al arreglo así formado

se le llama registro, de esta manera, diferentes combinaciones de valores de los bits guardados en un registro se

pueden interpretar como un número binario. Así, un registro de 8 bits se representará como sigue:

Registro de 8 bits

Dependiendo de la longitud (medida en número de bits) del registro, este se denomina de acuerdo a la siguiente

Tabla 4.

El uso del término “palabra” es más genérico y algunos

autores hablan de palabras de 8 de 16, de 32 bits, etc.

Tabla 4. Nombre de los registros de acuerdo a la cantidad de bits utilizados.

Conversión de Binario a Decimal.

En temas anteriores fue tratado el caso general de conversión de cualquier base a decimal usando la

representación polinomial. Es conveniente tratar el caso particular de convertir un número binario a decimal

por ser un caso muy utilizado en sistemas digitales y porque el método puede ser simplificado de la siguiente

manera:

Anote (de ser posible mentalmente) los “pesos” o potencias de 2 correspondientes a las posiciones de los bits

del número a convertir. Luego, simplemente, sume los pesos correspondientes a las posiciones de los bits 1.

Para ello es conveniente memorizar algunas potencias de 2.

Tabla 5. Tabla de conversión directa a sistema decimal.

Page 12: Introducción al Diseño Lógico

SISTEMAS Y CÓDIGOS NUMÉRICOS

Página 12

Ejemplo 15. Convertir los siguientes números de binario a decimal: N1= (101101)2, yN2=(1010110.11)2

Para N1:

Pesos: 32 16 8 4 2 1

N1 = ( 1 0 1 1 0 1 )2

Sumando los pesos correspondientes a los bits 1,

N1=32+8+4+1 = 4510

Para N2:

Pesos: 64 32 16 8 4 2 1 -1 -2

N1 = ( 1 0 1 0 1 1 0 . 1 1 )2

Entonces

N1 = 64+16+4+2 + 0.5+0.25 = 86.7510

Aritmética Hexadecimal.

Suma.

El procedimiento es el siguiente:

1. Se suman los dos números.

2. Si la suma es 15 o menos, se expresa como un dígito.

3. Si la suma es mayor a 15, se resta 16 y se desplaza un 1 a la siguiente posición del dígito.

Ejemplo 16:

NOTA. En los ejemplos siguientes se ignora el subíndice de la base del sistema hexadecimal.

La suma de 9+7=1610 en el sistema decimal, para el sistema hexadecimal, tenemos

9+ 7

1 9+ 71 0

Como la suma es 16 le restamos, 16, y el resultado es 0, y desplazamos un 1 a la siguiente posición,

más ejemplos del mismo caso

10+6=1610 10+10=2010

1

𝐴+ 6 1 0

1 𝐴+ 𝐴 1 4

15+14=2910 10+11+12=3310

1 𝐹+ 𝐸 1 𝐷

2 𝐴+ 𝐵+ 𝐶 2 1

Para este último caso tenemos como resultado un 33, el cual si se le resta 16, obtenemos 17, el cual

sigue siendo un número mayor a 15, por lo tanto volvemos a restarle 16. De esta manera se desplaza

Page 13: Introducción al Diseño Lógico

SISTEMAS Y CÓDIGOS NUMÉRICOS

Página 13

un 2 a la siguiente posición del dígito. Así, se concluye que para cada resta de 16, incrementaremos un

1 a la siguiente posición del dígito.

Ejemplo 17.

79+207+166=45210 47+63+31+4=14510

1 2 4 𝐹+ 𝐶 𝐹+ 𝐴 6 1 𝐶 4

3 2 𝐹+ 3 𝐹+ 1 𝐹+ 4 9 1

Resta.

Para la realización de la resta, existen 2 métodos:

1. Complemento a 15.

1. Si la cantidad de dígitos del sustraendo es menor que la del minuendo, se completa el sustraendo

con ceros a la izquierda de la parte entera, y a la derecha de la parte decimal (encolumnar por la

coma).

8 𝐸 𝐴 𝐷, 0 1 (𝑚𝑖𝑛𝑢𝑒𝑛𝑑𝑜) − 3 𝐵 𝐸 5 (𝑠𝑢𝑠𝑡𝑟𝑎𝑒𝑛𝑑𝑜)

2. Se halla el complemento del sustraendo, restando este valor del máximo valor hexadecimal con

la misma longitud del minuendo. Obteniendo como resultado el complemento a 15.

𝐹 𝐹 𝐹 𝐹, 𝐹 𝐹− 3 𝐵 𝐸 5 , 0 0

𝐶 4 1 𝐴 , 𝐹 𝐹

3. Se suma el minuendo al complemento del sustraendo.

8 𝐸 𝐴 𝐷, 0 1 + 𝐶 4 1 𝐴 , 𝐹 𝐹

𝟏 5 2 𝐶 8 , 0 0

4. Se elimina el 1 de la izquierda y se suma encolumnado con el último dígito de la cifra, sin importar

la coma decimal.

8 𝐸 𝐴 𝐷, 0 1 + 𝐶 4 1 𝐴 , 𝐹 𝐹

5 2 𝐶 8 , 0 0+ 𝟏

𝟓 𝟐 𝑪 𝟖 , 𝟎 𝟏

Otro ejemplo (18), A4FC9-DE8= ?

𝐴 4 𝐹 𝐶 9− 𝐷 𝐸 8

𝐴 4 𝐹 𝐶 9− 0 0 𝐷 𝐸 8

𝐹 𝐹 𝐹 𝐹 𝐹− 0 0 𝐷 𝐸 8 𝐹 𝐹 2 1 7

1 1 1 1 𝐴 4 𝐹 𝐶 9+ 𝐹 𝐹 2 1 7𝟏 𝐴 4 1 𝐸 0

𝐴 4 1 𝐸 0+ 𝟏

𝑨 𝟒 𝟏 𝑬 𝟏

Por lo tanto, A 4 F C 9 – D E 8 = A 4 1 E 1

Resultado

Resultado

Page 14: Introducción al Diseño Lógico

SISTEMAS Y CÓDIGOS NUMÉRICOS

Página 14

2. Complemento a 16.

1. Si la cantidad de dígitos del sustraendo es menor que la del minuendo, se completa el

sustraendo con ceros a la izquierda de la parte entera, y a la derecha de la parte decimal (encolumnar

por la coma).

𝐴 4 𝐹 𝐶 9− 0 0 𝐷 𝐸 8

2. Se halla el complemento del sustraendo, restando este valor del máximo valor hexadecimal

con la misma longitud del minuendo.

𝐹 𝐹 𝐹 𝐹 𝐹− 0 0 𝐷 𝐸 8

𝐹 𝐹 2 1 7

3. Se suma 1, al resultado obtenido en el paso anterior, para obtener así el complemento a 16.

𝐹 𝐹 2 1 7+ 1

𝐹 𝐹 2 1 8

4. Se suma el complemento a 16, resultado del paso anterior, al minuendo.

1 1 1 1 𝐴 4 𝐹 𝐶 9+ 𝐹 𝐹 2 1 8

𝟏 𝐴 4 1 𝐸 1

5. El acarreo final obtenido es despreciado.

Aritmética Octal.

Suma.

La suma en sistema octal se realiza de la misma manera como en el sistema hexadecimal. Cabe mencionar que

para todos los diferentes sistemas se maneja el mismo procedimiento para las operaciones.

1. Se suma dígito a digito de los sumandos.

2. Cuando la suma es 7 o menos, se expresa como un dígito.

3. Si la suma es mayor a 7, se resta 8 y se desplaza un 1 a la siguiente posición del dígito.

Ejemplo 19.

Resta.

De la misma forma que la resta hexadecimal, existe el Complemento a 7 y el Complemento a 8. En seguida se

enlistan los pasos de acuerdo al complemento a 7.

1. Si la cantidad de dígitos del sustraendo es menor que la del minuendo, se completa el sustraendo con

ceros a la izquierda de la parte entera, y a la derecha de la parte decimal (encolumnar por la coma).

Acarreo

Resultado

Page 15: Introducción al Diseño Lógico

SISTEMAS Y CÓDIGOS NUMÉRICOS

Página 15

2. Se halla el complemento del sustraendo, restando este valor del máximo valor octal con la misma

longitud del minuendo. Obteniendo como resultado el complemento a 7.

3. Se suma el minuendo al complemento del sustraendo.

4. Se elimina el 1 de la izquierda y se suma encolumnado con el último dígito de la cifra, sin importar la

coma decimal.

6 2 0 4,0 2

+ 2 6 0 4,7 7

1 0 1 1 ,0 1+ 𝟏

𝟏 𝟎 𝟏 𝟏 ,𝟎 𝟐

Ejemplo 20. Aplicando Complemento a 8.

3 7 1 2− 1 4 4

3 7 1 2− 0 1 4 4

7 7 7 7− 0 1 4 4 7 6 3 3+ 1

7 6 3 4

1 1 3 7 1 2+ 7 6 3 4

𝟏 3 5 4 6

Como se observa, el acarreo es ignorado.

Aritmética binaria.

Una de las principales aplicaciones de la electrónica digital es el diseño de dispositivos capaces de efectuar

cálculos aritméticos, ya sea como principal objetivo (calculadoras, computadoras, máquinas registradoras, etc.)

o bien, como una subfunción que les permita realizar su cometido principal (medidores, controladores,

registradores, etc.) Por ello, y dado que los sistemas digitales sólo pueden manejar información binaria, es

necesario entender las operaciones aritméticas fundamentales en términos del sistema de numeración binario.

En este tema se tratan las operaciones fundamentales en el sistema binario solamente para números enteros.

Un tratamiento más general debe contener un tratamiento de números fraccionarios, es decir, la aritmética de

punto fijo y la de punto flotante. La primera de estas dos es una extensión casi inmediata de la aritmética entera.

Notación.

En este tema cuando no se anote el subíndice de un número que sólo contiene unos y ceros se sobreentenderá

que está en binario.

Adición o suma binaria.

En forma similar a como realizamos las sumas en decimal, para realizarlas en otros sistemas es necesario

aprender de memoria algunas sumas básicas, especialmente las sumas de dígito con dígito; en decimal son 100

sumas (tablas de sumar), mientras que en binario son sólo 4, puesto que en binario sólo hay dos dígitos:

Resultado

Resultado

Acarreo

Page 16: Introducción al Diseño Lógico

SISTEMAS Y CÓDIGOS NUMÉRICOS

Página 16

Tabla 6. Tabla de suma binaria.

Ejemplos:

21) Sumar 101101 + 10101, es decir, 4510 + 2110

22) Sumar 11101 + 111, es decir, 2910 + 710

Sustracción o resta binaria.

En forma similar a la suma, es conveniente memorizar la siguiente tabla:

Cuando la tabla anterior se usa en la resta de cantidades de varios bits,

se resta columna por columna de LSB a MSB y si aparece el caso de

restar 0 - 1 se interpreta como si fuera 10 - 1, resultando un 1 y un

acarreo negativo, o préstamo de 1 tomado de la siguiente columna.

Tabla 7. Tabla de resta binaria.

Ejemplos:

23) Restar 101101 - 10101, es decir, 4510 – 2110

24) Restar 11101 - 111, es decir, 2910 - 710

Acarrreos: 1 1 1 1 1

1 0 1 1 0 1

+ 1 0 1 0 1

1 0 0 0 0 1 0

Acarreos:

4 5

+ 2 1

6 6

Acarrreos: 1 1 1 1

1 1 1 0 1

+ 0 0 1 1 1

1 0 0 1 0 0

Acarreos: 1

2 9

+ 7

3 6

Préstamos: -1

1 0 1 1 0 1

- 1 0 1 0 1

0 1 1 0 0 0

Préstamos:

4 5

- 2 1

2 4

Préstamos: -1 -1

1 1 1 0 1

- 0 0 1 1 1

1 0 1 1 0

Préstamos:

2 9

- 7

2 2

Page 17: Introducción al Diseño Lógico

SISTEMAS Y CÓDIGOS NUMÉRICOS

Página 17

Representación de números negativos.

En la construcción de dispositivos digitales que realicen operaciones de resta se puede obtener un considerable

ahorro si esta operación es realizada mediante los mismos dispositivos que realizan la suma, de esta manera no

es necesario construir dos tipos de dispositivos, y el problema se convierte más bien en cómo manejar

adecuadamente los números negativos para realizar restas usando sumas.

Magnitud signada.

El método de representación de números negativos que consiste en anteponer un signo “-” al valor absoluto de

la cantidad se le llama magnitud signada y es el método tradicionalmente usado en decimal, ya que está pensado

en su manipulación por humanos.

Ejemplos: -510, -10112, .5EH, ... etc.

La principal desventaja del método de magnitud signada es que requiere de dos métodos diferentes, uno para la

suma y otro para la resta.

Sistema de numeración de complemento a la base (complemento a dos).

Un método de representación de cantidades negativas que permite realizar restas mediante sumas consiste en

representar los números negativos por su complemento, es decir, por lo que les falta para cierta cantidad tomada

como base.

En el sistema de numeración de complemento a la base r, los números negativos de n dígitos se representan por

la cantidad que les falta para completar rn. Es decir, en este sistema, la cantidad –Nr se representa por su

complemento, es decir, como rn -N y en ocasiones se denota [N]r.

Ejemplos:

25) Caso decimal (complemento a 10) para 2 dígitos (r=10, n=2)

-1510= 102 - 15 = [85]10

De esta manera, una resta como 45 - 15, se puede realizar mediante la suma 45 + 85 =

(1)30, despreciando el acarreo indicado entre paréntesis, ya que sólo se están usando 2

dígitos.

26) Caso binario (complemento a 2) para 4 dígitos (r=2, n=4)

-01012 = (10000 - 0101)2 = [1011]2

De esta manera, una resta como 1010, se puede realizar mediante la suma 1010

- 0101 + 1011

0101 (1)0101

Despreciando el acarreo indicado entre paréntesis, ya que sólo se están usando 4 dígitos.

Observación: En el sistema de complemento a dos de los números positivos se escriben sin ningún cambio.

Bit de signo (S).

En el sistema de numeración de complemento a dos el MSB se denomina bit de signo y se usa para indicar el

signo del número representado, de acuerdo a la siguiente convención:

S = 0 El número es positivo y el resto de los bits indica su magnitud directamente.

S = 1 El número es negativo y está en la forma complementada.

Page 18: Introducción al Diseño Lógico

SISTEMAS Y CÓDIGOS NUMÉRICOS

Página 18

Ejemplo 27: Expresar +5 y -5 en una palabra de 8 bits en el sistema de complemento a 2.

+ 5 es positivo y se expresará directamente con su magnitud en binario como 0000101

- 5 es negativo y estará expresado en la forma de complemento a 2 como:

+ 5 = 0 0 0 0 0 1 0 1

Complemento a 2: 1 1 1 1 1 0 1 1 = - 510

Obsérvese que de acuerdo a esta convención del sistema de complemento a dos, al aplicar el complemento a 2

a un número binario, equivale a cambiarle el signo (multiplicar por -1).

Ejemplo 28: 11010112 es un número de 7 bits, incluyendo el bit signo. ¿Cuál es su equivalente decimal?

Como el bit signo es = 1, el número es negativo y se encuentra en su forma

complementada.

1 1 0 1 0 1 1 : Número negativo

0 0 1 0 1 0 1 : Valor absoluto (complemento a dos del número)

21 : Equivalente decimal del complemento, entonces: [1101011]2 = -2110

Ejemplo 29: Si (01101011)2 es un número de 8 bits, incluyendo el bit signo. Cuál es su equivalente

decimal?.

Como el bit signo es = 0, el número es positivo y el resto de los bits indican su magnitud.

Número positivo: 0 1 1 0 1 0 1 1 = 10710

Valor absoluto: 0 1 1 0 1 0 1 1 ;entonces (01101011)2 =+10710

Ejemplo 30: Cuál es el equivalente en binario de complemento a dos de (-535)10 ?

Usaremos hexadecimal como paso intermedio a binario. Convirtiendo +535 a Hexadecimal:

Por tanto (+535)10 = (010 0001 0111)2

(+535)10 = 010 0001 0111

101 1110 1001: complemento a dos

Por lo tanto (-535)10 = [101 1110 1001]2

Obsérvese que para indicar este resultado se requieren por lo menos 11 bits.

Complemento a la base disminuida.

Una alternativa al sistema de complemento a la base es el complemento a la base menos 1. En este sistema un

número negativo -N de n dígitos en base r se representa por lo que le falta para llegar a rn-1 y se suele denotar

por [N]r-1, es decir, [N]r-1 = rn - 1 - N. en otra palabras, [N]r-1 = [N]r -1.

Ejemplos:

31) Caso decimal (complemento a 9) para 2 dígitos (r=10, n=2)

-1510 = 102 - 1 - 15 = 99 - 15 = [84]9

Page 19: Introducción al Diseño Lógico

SISTEMAS Y CÓDIGOS NUMÉRICOS

Página 19

De esta manera, una resta como 45 - 15, se puede realizar mediante la suma 45 + 84 =

(1)+29,

(Sumando el acarreo indicado entre paréntesis como una corrección del resultado).

32) Caso binario (complemento a 2) para 4 dígitos (r=2, n=4)

-01012 = (10000 - 1 - 0101)2 = (1111 - 0101)2 = [1010]1

De esta manera, una resta como 1010, se puede realizar mediante la suma 1010

- 0101 + 1010

0101 (1)0100

+ 1

0101

(Sumando el acarreo indicado entre paréntesis).

Obtención de complementos binarios sin usar restas.

La ventaja que provee el sistema de complementos al convertir una resta en una suma no sería tal si para obtener

el complemento usamos la definición, ya que esta requiere una resta. A continuación se describen dos

algoritmos que permiten obtener el complemento a 2 sin usar restas:

Algoritmo 1

1) Se copian los bits del número LSB a MSB hasta encontrar el primer bit 1.

2) Se prosigue invirtiendo los bits restantes (es decir, cambiando 1’s por 0’s y 0’s por 1’s)

hasta llegar al MSB.

Ejemplo 33. Para obtener el complemento a 2 de N=10110100

Se copian los primeros bits hasta el primer 1: 100

Se invierten los bits restantes: 01001

Resultando finalmente: 01001100

Algoritmo 2

1) Se obtiene el complemento a 1 del número invirtiendo todos sus bits.

2) Se suma 1 al resultado anterior.

Ejemplo 34. Para obtener el complemento a 2 de N= 010110

Se invierten todos los bits (complemento a 1): 101001

Se suma 1 al resultado: +1

Resultando finalmente: 101011

Sumas y restas usando complemento a dos.

A continuación se dan algunos ejemplos de restas usando complemento a dos, se introduce el concepto de

sobreflujo y el de bit de signo.

Sobreflujo. Se dice que una operación (en el sistema de complemento a dos) produce un sobreflujo, cuando el

resultado requiere más bits que los que se están usando en la operación.

Para visualizar el concepto de sobreflujo, es conveniente tener en mente el rango representable en complemento

a dos con n bits.

Ejemplo 35: ¿Cuál es el rango de números representables en complemento a dos con 3 bits?

En este caso es simple representar todos los números e interpretarlos en decimal:

Page 20: Introducción al Diseño Lógico

SISTEMAS Y CÓDIGOS NUMÉRICOS

Página 20

Entonces el rango es de -4 a +3. No es difícil concluir que en general

el rango representable con n bits será de -2n-1 a +2n-1-1.

De acuerdo al ejemplo anterior, si intentamos sumar (por ejemplo) 3+2

usando tres bits, el resultado (5) no podrá ser expresado con tres bits,

ya que se sale del rango y se tendrá un sobreflujo.

Tabla 8. Rango de números representados con 3 bits.

Ejemplo 36: Realizar las siguientes sumas en binario de complemento a dos, usando 4 bits. Indicar el signo

del resultado y en donde se produce sobreflujo:

a) 4+3

El resultado es positivo y no hay sobreflujo.

b) -4 + 5

El resultado es positivo y no hay sobreflujo.

c) -4 - 5 ,no se obtiene complemento para el -5, la suma se realiza de forma directa.

El resultado es positivo, lo cual no puede ser pues se están sumando dos datos negativos

y hay sobreflujo.

d) 6 + 5

El resultado es negativo, lo cual no puede ser pues se están sumando dos datos positivos

y hay sobreflujo.

e) 9 + 2

Esta operación NO se puede realizar con 4 bits, ya que el 9 requiere al menos 5 bits para

ser expresado en el sistema de complemento a 2.

0 1 0 0

+ 0 0 1 1

0 1 1 1

1 1 0 0

+ 0 1 0 1

1 0 0 0 1

1 1 0 0

+ 1 1 0 1

1 1 0 0 1

0 1 1 0

+ 0 1 0 1

1 0 1 1

Page 21: Introducción al Diseño Lógico

SISTEMAS Y CÓDIGOS NUMÉRICOS

Página 21

Interpretación del acarreo en el resultado de sumas en complemento a 2.

"Si los signos de los números que se suman son diferentes, cualquier acarreo obtenido es falso y deberá de ser

ignorado".

Ejemplo: Ver inciso (b) del ejemplo anterior.

"Si los signos de los números que se suman son iguales, el acarreo es verdadero y actúa como el bit signo. En

ausencia de acarreo se considera que este es 0, así la respuesta es positiva".

Ejemplos ver incisos (a), (c) y (d) del ejemplo anterior.

Ejemplo 37: Efectúe las siguientes operaciones y exprese el resultado en decimal con su signo (MSB = bit

signo)

a).-

Como los signos de los números son diferentes, el acarreo se ignora bit signo = 0 = + resultado = + 00101101

= +4510. Como el segundo número es negativo, se obtiene su complemento a 2, el bit de signo permanece igual

y se suma al primero. Por lo tanto el resultado anterior es erróneo. De manera que queda así:

y en decimal es

El resultado concuerda con el resultado en decimal, ya que el acarreo es ignorado de acuerdo a la nota anterior.

b).-

y en decimal es

Como los signos son iguales, el acarreo es el bit de signo del resultado acarreo = bit signo = 1, por lo tanto el

resultado es un número negativo.

Multiplicación binaria.

El conjunto básico de multiplicaciones de un sólo bit que hay que memorizar se resume en la siguiente tabla.

Tabla de multiplicar:

Sin embargo, al realizar multiplicaciones de números de varios bits, usamos

las mismas reglas de la multiplicación decimal. De manera que una

multiplicación de este tipo se convierte al final en varias sumas.

Tabla 9. Tabla de multiplicación binaria.

0 1 1 1 1 0 1 1

+ 1 0 1 1 0 0 1 0

1 0 0 1 0 1 1 0 1

0 1 1 1 1 0 1 1

+ 1 1 0 0 1 1 1 0

1 0 1 0 0 1 0 0 1

+ 1 2 3

+ - 5 0

7 3

1 0 0 1 0 1 1 1

+ 1 0 1 0 0 1 1 0

1 0 0 1 1 1 1 0 1

- 2 3

+ - 3 8

- 6 1

* 0 1

0 0 0

1 0 1

Page 22: Introducción al Diseño Lógico

SISTEMAS Y CÓDIGOS NUMÉRICOS

Página 22

Ejemplo 38:

y en decimal, se tiene Multiplicación por sumas y corrimientos.

Como se puede observar en el ejemplo, la multiplicación puede realizarse en una forma más sistematizada como

se indica enseguida, de acuerdo a los bits del multiplicador, comenzando por el LSB hacia el MSB. El algoritmo

descrito a continuación es especialmente útil si la multiplicación va a ser realizada por una máquina digital

(circuitos o computadora digital).

Algoritmo

1) Si el primer bit en el multiplicador es 1, anote el multiplicando como resultado parcial.

2) Si el primer bit del multiplicador es 0; anote ceros como resultado parcial.

3) Se recorre el multiplicando un lugar a la izquierda.

4) Por cada 1 en el multiplicador después del primer bit sume el multiplicando al resultado parcial.

Enseguida recorra el multiplicando un lugar a la izquierda.

5) Por cada cero en el multiplicador después del primer bit, no sume, únicamente recorra el multiplicando

un lugar a la izquierda.

6) Repita el procedimiento hasta incluir todos los bits del multiplicador.

Comprobando en decimal: (17)10 * (25)10 = (425)10

División binaria.

En la división de números binarios se puede aplicar el mismo procedimiento de prueba y error que se usa en la

división decimal.

Ejemplo 39:

1 0 1 1

* 1 0 1

1 0 1 1

0 0 0 0

1 0 1 1

1 1 0 1 1 1

1 1

* 5

5 5

Page 23: Introducción al Diseño Lógico

SISTEMAS Y CÓDIGOS NUMÉRICOS

Página 23

División por restas y corrimientos.

En forma similar a la multiplicación, la división se puede sistematizar para realizarla por restas y corrimientos.

En este algoritmo el cociente es obtenido bit por bit, así, cada siguiente sólo puede ser 0 ó 1. Así comenzando

de izquierda a derecha, si se puede substraer el divisor del dividendo, se anotará un 1 en el cociente, en caso

contrario el dígito será 0. Después de cada paso se hace un corrimiento del divisor hacia la derecha.

Ejemplo 40: La división 5710 /310:

Códigos numéricos.

No toda la información que maneja un sistema digital es numérica, e inclusive, para la información numérica a

veces no es conveniente utilizar el sistema binario descrito temas anteriores. Por ello es conveniente idear

formas diferentes de representar (codificar) información diversa usando solamente ceros y unos. En este tema

se describen algunos códigos tanto para información numérica como alfanumérica, cuyo uso se ha generalizado

por diversas razones, la mayoría de las veces de conveniencia, aunque no siempre.

Los códigos numéricos sirven para representar números con fines de procesamiento y almacenamiento. Los

números de punto fijo y de punto flotante son ejemplos de estos códigos.

Números de punto fijo.

Se utilizan para representar, tanto enteros con signo como fracciones con signo. En ambos casos se usan los

mismos sistemas de magnitud y signos de complemento a dos o de complemento a uno para representar los

valores con signo. Los enteros de punto fijo tienen un punto binario implícito a la derecha del bit menos

significativo, las fracciones de punto fijo tienen un punto binario implícito entre el bit de signo y el bit más

significativo.

Ejemplo 41. Dar dos posibles interpretaciones del número de punto fijo de ocho bits 01101010 usando el

sistema de complemento a dos.

Como el bit de signo es 0, el número representa el entero positivo 1101010, o bien la fracción

positiva 0.1101010.

Ejemplo 42. Dar dos posibles interpretaciones del número de punto fijo de 8 bits 11101010, usando el

sistema de complemento a dos.

El bit del signo es 1, por lo tanto el número representa a – 00010110, o bien – 0.0010110.

Page 24: Introducción al Diseño Lógico

SISTEMAS Y CÓDIGOS NUMÉRICOS

Página 24

Figura 9. Códigos utilizados en las computadoras.

Representaciones con exceso.

Una representación con exceso K de un código C se

forma usando el valor K a cada palabra del código

C. las representaciones con exceso se utilizan a

menudo para representar los exponentes de los

números de punto flotante.

Las representación con exceso 8 de la Tabla 10, se

obtiene al sumar (1000)2 al código de 4 bits.

CODIGOS DE COMPUTADORA

CODIGOS

NUMERICOS

NUMEROS

DE PUNTO FIJO

REPRESENTACIONES

CON EXCESO

NUMEROS

DE PUNTO FLOTANTE

CODIGOS DE

CARACTERES Y OTROS

DECIMAL CODIFICADO

EN BINARIO (BCD)

ASCII CODIGO GRAY

CODIGO PARA DETECCIÓN Y

CORRECCION DE ERRORES

CODIGOS

DE PARIDAD

CODIGO

DOS DE CINCO

CODIGOS

HAMMING

DECIMAL REPRESENTACIÓN

BINARIA

EXCESO

8

7 0111 1111

6 0110 1110

5 0101 1101

4 0100 1100

3 0011 1011

2 0010 1010

1 0001 1001

0 0000 1000

Tabla 10. Tabla de representación con exceso (exceso 8).

Page 25: Introducción al Diseño Lógico

SISTEMAS Y CÓDIGOS NUMÉRICOS

Página 25

Números de punto flotante.

Un número de punto flotante es un número N que se escribe como, N = M*rE, donde M es la mantisa, es un

número de punto fijo que contiene los dígitos significativos de N y E es el exponente o característica, es un

entero de punto fijo.

Al deducir la representación de un número de punto flotante, la mantisa y la característica se codifican por

separado. La base es implícita y no se incluye en la representación.

La mantisa, muchas veces, se codifica con magnitud y signo, por lo general como una fracción.

Ejemplo 43: -246,36 = -2.4636 E+2 = -2,4636*102

82000000000 = 8,2 E+10 = 8,2 * 1010

Ejemplo 44: Representar el número 1210 en sistema binario normalizado.

1210= 11002, normalizado es 0,1100 * 24

El exponente 4 en exceso a 128 (128+4) es 10000100

Representación: 0 10000100 1100000000000000000000

Por lo tanto el -1210 en complemento a dos, es

Representación: 1 10000100 0011111111111111111111

Decimal codificado en binario (BCD).

Los códigos BCD nos permiten representar cada uno de los dígitos decimales (0,...,9) mediante 4 bits. El más

sencillo de los códigos BCD es el BCD8421 o BCD “natural”, que consiste simplemente en representar cada

dígito decimal por su binario equivalente. Así tenemos

Ejemplo 45: Expresar 937.2510 en BCD.

937.2510 = 1001 0011 0111 . 0010 0101BCD

Ejemplo 46: Expresar el número N=

(10010110010111)BCD escrito en código BCD8421,

en decimal.

Tabla 11. Código BCD.

Separando los LSB a MSB en grupos de 4: N =(10,0101,1001,0111)BCD = 259710

Código BCD exceso-3.

El código BCD exceso-3 se obtiene a partir del código BCD natural, simplemente sumando 310 (00112) a cada

código BCD de cada dígito decimal. Esto se resume en la tabla 12.

Este código resulta de utilidad en aplicaciones donde se requiere realizar operaciones aritméticas usando

complementos. Este código es llamado autocomplementario porque el complemento a 9 de un numero decimal

puede ser obtenido complementando cada bit individualmente y el resultado sigue siendo un código válido en

BCD exceso 3.

Page 26: Introducción al Diseño Lógico

SISTEMAS Y CÓDIGOS NUMÉRICOS

Página 26

Tabla 12. Código BCD exceso 3.

Ejemplo 47: Representar el número 90710 en BCD exceso-3 y usar el complemento a 1 para encontrar el

complemento a 9 del número:

90710 = 1100 0011 1010exc-3

0011 1100 0101exc-3 complemento a 1

= 09210 complemento a 9

Código BCD 2421.

Este es otro código BCD autocomplementario, y su nombre (2421) indica la ponderación de sus bits para

obtener su equivalente en decimal y viceversa. En la siguiente tabla se ilustra este código

Ejemplo 48: Representar el número 90710 en BCD

2421 y usar el complemento a 1 para encontrar el

complemento a 9 del número:

90710 = 1111 0000 11012421

0000 1111 00102421

complemento a 1

= 09210

complemento a 9 Tabla 13. Código BCD 2421.

Código ASCII.

Muchas aplicaciones de sistemas digitales (especialmente las computadoras o la transmisión de textos)

requieren del procesamiento de datos como números, letras y símbolos especiales. Para manejar estos datos

usando dispositivos digitales, cada símbolo debe estar representado por un código binario. El código

alfanumérico más generalizado en la actualidad es el denominado ASCII (American Standard Code for

Information Interchange). Este es un código de 7 bit. La tabla 14, muestra una parte del código ASCII.

Ejemplo 49: La palabra “Start” se representa en código ASCII como sigue

En resumen, el código ASCII consta entre otros, de los siguientes grupos de caracteres:

Page 27: Introducción al Diseño Lógico

SISTEMAS Y CÓDIGOS NUMÉRICOS

Página 27

Los caracteres ASCII, se observan en la tabla 14.

Código Gray.

Este es un código binario no ponderado y tiene la propiedad de que los códigos para dígitos decimales sucesivos

difiere en un sólo bit. Al código Gray también se le llama autorreflejado, o cíclico. En la siguiente tabla se

muestra dicho código para los números del 0 al 15.

Conversión Binario-Gray

Para convertir de Binario a Gray puede seguirse el siguiente

procedimiento.

Algoritmo.

1.- El MSB se deja igual.

2.- Avanzando de MSB a LSB se suma cada bit con el siguiente

despreciando el acarreo para obtener el siguiente bit del código

Gray.

Tabla 15. Código Gray.

Ejemplo 50. Escribir en Código Gray el número 4510

Como 4510 = 1011012 Al aplicar el algoritmo a este número binario, tenemos:

Es decir, 4510=1 1 1 0 1 1gray

Conversión Gray-Binario

Para convertir de Gray a Binario puede seguirse el siguiente procedimiento

Algoritmo.

1.- El MSB se deja igual.

2.- Avanzando de MSB a LSB a cada bit obtenido en binario se le suma sin acarreo el siguiente bit de

código Gray.

Page 28: Introducción al Diseño Lógico

SISTEMAS Y CÓDIGOS NUMÉRICOS

Página 28

Ejemplo 51. Obtener el equivalente decimal del siguiente código gray: N= 011011gray

Al aplicar el algoritmo a este número binario, tenemos:

Es decir, N= 0100102 = 1810

Tabla 14. Código ASCII.

Page 29: Introducción al Diseño Lógico

SISTEMAS Y CÓDIGOS NUMÉRICOS

Página 29

Aplicación a sensores ópticos.

La principal característica del código gray (que sólo cambia un bit entre dos códigos consecutivos) es muy

utilizada en sensores ópticos para codificar la posición (angular o lineal) mediante discos o cintas codificadas

en gray, dependiendo del caso.

Códigos para detección y corrección de errores.

Los sistemas digitales pueden cometer errores de vez en cuando. Aunque los dispositivos en circuito integrado

tales como microprocesadores, puertas lógicas o circuitos de memoria carecen de partes móviles y por lo tanto

tienen alta confiabilidad. Pero los dispositivos que tienen interacción con partes móviles son menos confiables.

Se pueden producir errores por polvo en las cabezas lectoras de una unidad de disco. También es muy común

la ocurrencia de errores en la transmisión de datos a distancia. Los datos que se transmiten por modem (a través

de línea telefónica) pueden recibirse incorrectamente si la línea tiene ruidos. También las perturbaciones en el

suministro de energía eléctrica pueden producir errores. En resumen, cuando se leen, escriben o transmiten

caracteres de un sitio a otro, pueden producirse errores. En esta sección se ilustran algunos códigos que permiten

detectar errores y, en algunos casos, incluso corregirlos.

Código de paridad.

Un método muy simple, pero ampliamente utilizado por su sencillez para detectar errores en transmisión de

datos consiste en añadir un bit de paridad (p) a cada carácter, normalmente en la posición más significativa.

En el código de paridad par, el bit de paridad (p) se elige de manera que el número de bits 1’s del dato sea un

número par incluyendo el bit de paridad. En el código de paridad impar, el bit de paridad se elige de modo

que el número de bits 1’s (incluyendo el de paridad) del dato sea impar.

De esta manera, cuando cambia un bit durante la transmisión, el número de unos en el carácter recibido tendrá

la paridad equivocada y el receptor sabrá que se ha producido un error.

Ejemplo 52: En la tabla 16 se muestra un código de paridad par de 8 bits para los caracteres ASCII “FIE.”

Ejemplo 53. Si un transmisor envía la información

anterior y hay errores en la transmisión, suponiendo

que el receptor recibe la siguiente información (ver

tabla 17) se anota los datos que llegaron erróneos y

si se detectó o no el error, agrega en la columna vacía

cuantos bits cambiaron en la transmisión.

Tabla 16. Ejemplo de un código de paridad par para los caracteres FIE en código ASCII.

Tabla 17. Ejemplo de un código de paridad par para los caracteres FIE para detectar

errores.

Page 30: Introducción al Diseño Lógico

SISTEMAS Y CÓDIGOS NUMÉRICOS

Página 30

Código 2 de 5 (biquinario).

El código 2 de 5 es un código multibit no ponderado, es decir, los códigos no pueden obtenerse usando una

expresión polinomial; este código está diseñado para la detección de errores en diferentes tipos de cálculos

y operaciones con registros de corrimiento. Se usan cinco bits para representar los dígitos decimales (0-9).

Como el nombre lo indica, sólo dos de los cinco bits son 1.

Ejemplo 54: Representar el numero decimal 23710 en

código 2 de 5.

23710 = 00110 01001 100102 de 5

Tabla 18. Código biquinario.

Código de Hamming.

Richard Hamming (1950) ideó un método no sólo para detectar errores sino también para corregirlos, y se

conoce como código Hamming. En él se añaden k bits de paridad a un carácter de n bits, formando un nuevo

carácter de n + k bits. Los bits se enumeran empezando por 1, no por 0, siendo el bit 1, el de la izquierda, el

más significativo. Todo bit cuyo número sea potencia de 2 es un bit de paridad y todos los demás se utilizan

para datos.

Para un carácter ASCII de 7 bits, se añaden 4 bits de paridad. Los bits 1, 2, 4 y 8 son bits de paridad; 3, 5, 6, 7,

9, 10 y 11 son los 7 bits de datos. Cada bit de paridad comprueba determinadas posiciones de bit y se ajusta de

modo que el número total de unos en las posiciones comprobadas sea par, si se trata de paridad par.

Las posiciones de los bits comprobados por los de paridad son:

El bit 1 comprueba los bits 1, 3, 5, 7, 9 y 11.

El bit 2 comprueba los bits 2, 3, 6, 7, 10 y 11.

El bit 4 comprueba los bits 4, 5, 6 y 7.

El bit 8 comprueba los bits 8, 9, 10 y 11.

En general, el bit n es comprobado por los bits b1, b2,....,bj, tales que b1 + b2 + .... + bj = n.

Por ejemplo, el bit 5 es comprobado por los bits 1 y 4 porque 1 + 4 = 5. El bit 6 es comprobado por los bits 2 y

4 porque 2 + 4 = 6.

Ejemplo 55: Usando paridad par, construir el código de Hamming para el carácter "b".

Código ASCII para "b"

Código de Hamming para "b"

Page 31: Introducción al Diseño Lógico

SISTEMAS Y CÓDIGOS NUMÉRICOS

Página 31

El carácter ASCII "b" se representa por el número binario 1100010. El código de Hamming para "b" en binario

es 00111001010.

Considérese que pasaría si el bit 1 se modificara durante la transmisión. El carácter recibido sería 10111001010

en lugar de 00111001010. El receptor comprobaría los 4 bits de paridad con los resultados siguientes:

Bit de paridad 1 incorrecto (los bits 1, 3, 5, 7, 9 y 11 contienen tres unos).

Bit de paridad 2 correcto (los bits 2, 3, 6, 7, 10 y 11 contienen dos unos).

Bit de paridad 4 correcto (los bits 4, 5, 6 y 7 contienen dos unos).

Bit de paridad 8 correcto (los bits 8, 9, 10 y 11 contienen dos unos).

El número total de unos en los bits 1, 3, 5, 7, 9 y 11 debería de ser par, ya que se está usando paridad par. El bit

incorrecto debe ser uno de los bits comprobados por el bit de paridad 1, es decir, uno de los bits 1, 3, 5, 7, 9 u

11. Como el bit de paridad 2 es correcto, sabemos que los bits 2, 3, 6, 7, 10 y 11 son correctos, de forma que el

error no estaba en los bits 3, 7 u 11. Esto deja los bits 1, 5 y 9. El bit de paridad 4 es correcto, lo cual significa

que los bits 4, 5, 6 y 7 no contienen errores. Esto reduce la elección al 1 ó 9. El bit de paridad 8 también es

correcto y, por lo tanto, el bit 9 es correcto. Por consiguiente, el bit incorrecto debe ser el 1. Dado que se recibió

como un 1, debería haberse transmitido como un 0. En esta forma se pueden corregir los errores.

Para resolver:

1. Representar los siguientes números en sistema decimal.

a) 3478=

b) 22013=

c) AF216=

d) 101112=

2. Expresar los siguientes números binarios en hexadecimal.

a) 01011010111110112=

b) 100100011100001012=

c) 11110000111100002=

3. Expresar los siguientes números hexadecimales en binario.

a) FFFF16=

b) 01AC16=

c) 55AA16=

d) 321016=

4. Realizar las siguientes operaciones binarias.

1010+ 0111

1010− 0111

1010+ 0101

1010− 0101

Page 32: Introducción al Diseño Lógico

SISTEMAS Y CÓDIGOS NUMÉRICOS

Página 32

5. Representar la palabra “TAREA” en código ASCII.

Carácter

Código ASCII

A6 A5 A4 A3 A2 A1 A0

T

A

R

E

A

6. Se desea transmitir la frase “COMPUTADORA” a través de un dispositivo electrónico. El dispositivo

solo es capaz de reconocer el código Gray. Determinar la palabra “COMPUTADORA” en código

ASCII:

- C

- O

- M

- P

- U

- T

- A

- D

- O

- R

- A

¿Cuál es el correspondiente código Gray para cada una de las letras?

7. Construir el código Hamming utilizando paridad par para la letra inicial de su nombre (Si su nombre

es Juan, la letra es ”J”).