Escolar Documentos
Profissional Documentos
Cultura Documentos
Instituto de Computacin
Notas de Terico
Notas de Terico
Notas de Terico
Contenido:
1 SISTEMAS DE NUMERACIN ....................................................................................................... 5 1.1 Introduccin .............................................................................................................................. 5 1.2 Sistemas posicionales .............................................................................................................. 5 1.3 Sistemas con base ................................................................................................................... 5 1.4 Conversin de base de enteros ................................................................................................ 6 1.5 Conversin de nmeros con parte fraccionaria........................................................................ 8 1.6 Caso Particular bases 8 y 16 .................................................................................................... 9 CODIGOS Y ERRORES................................................................................................................ 11 2.1 Introduccin ............................................................................................................................ 11 2.2 Deteccin y correccin de errores .......................................................................................... 11 2.3 Paridad.................................................................................................................................... 12 2.4 Distancia ................................................................................................................................. 13 2.5 Bits de Redundancia............................................................................................................... 15 2.6 Cdigos de Hamming ............................................................................................................. 15 2.7 Cdigos de Redundancia Cclica............................................................................................ 16 REPRESENTACION INTERNA DE DATOS ................................................................................. 17 3.1 Introduccin ............................................................................................................................ 17 3.2 Tipo Carcter .......................................................................................................................... 17 3.3 Tipo String............................................................................................................................... 20 3.4 Tipo Entero sin signo .............................................................................................................. 20 3.5 Tipo entero con signo ............................................................................................................. 21 3.5.1 Valor absoluto y signo ..................................................................................................... 21 3.5.2 Complemento a uno ........................................................................................................ 22 3.5.3 Desplazamiento............................................................................................................... 22 3.5.4 Complemento a dos ........................................................................................................ 23 3.6 Tipo decimal y decimal empaquetado .................................................................................... 26 3.7 Representacin Punto Fijo ..................................................................................................... 27 3.8 Tipo Moneda........................................................................................................................... 27 3.9 Representacin Punto Flotante .............................................................................................. 27 3.9.1 Estndar IEEE 754 de punto flotante .............................................................................. 27 3.9.2 Operaciones en Representacin Punto Flotante............................................................. 28 3.9.3 Perdida de Precisin ....................................................................................................... 28 ALGEBRA DE BOOLE.................................................................................................................. 30 4.1 Introduccin. ........................................................................................................................... 30 4.2 Axiomas. ................................................................................................................................. 30 4.3 Modelo aritmtico. .................................................................................................................. 31 4.4 Propiedades............................................................................................................................ 31 4.5 Modelo lgico.......................................................................................................................... 33 4.6 Modelo circuital. ...................................................................................................................... 34 4.7 Expresiones booleanas. ......................................................................................................... 34 4.8 Funciones booleanas.............................................................................................................. 35 4.9 Conectivas binarias................................................................................................................. 35 4.9.1 OR exclusivo. .................................................................................................................. 35 4.9.2 Suma de productos cannicos. ....................................................................................... 36 4.9.3 Productos de sumas cannicas. ..................................................................................... 37 4.10 Operadores lgicamente completos....................................................................................... 37 4.11 Simplificacin.......................................................................................................................... 37 4.11.1 Mtodo algebraico. .......................................................................................................... 37 4.11.2 Mtodos sistemticos. ..................................................................................................... 38 4.11.2.1 Diagrama de Karnaugh. ........................................................................................... 38 CIRCUITOS COMBINATORIOS ................................................................................................... 41 5.1 Introduccin ............................................................................................................................ 41 5.2 Transistores ............................................................................................................................ 41 5.3 Lgicas.................................................................................................................................... 44 5.3.1 Lgica RTL ...................................................................................................................... 44 5.3.2 Lgica TTL....................................................................................................................... 45 5.3.3 Lgicas TTL S/LS/ALS .................................................................................................... 45 5.3.4 Tecnologa CMOS ........................................................................................................... 46
Notas de Terico
5.4 Compuertas ............................................................................................................................ 47 5.5 Circuitos Lgicos Combinatorios ............................................................................................ 48 5.6 Sntesis de Circuitos Combinatorios....................................................................................... 48 5.6.1 Circuito Mayora............................................................................................................... 49 5.6.2 Circuito Semi-sumador de 2 bits ..................................................................................... 49 5.7 Bloques Constructivos ............................................................................................................ 52 5.7.1 Circuito Decodificador ..................................................................................................... 52 5.7.2 Circuito Multiplexor .......................................................................................................... 54 5.7.3 Circuito Demultiplexor ..................................................................................................... 55 5.7.4 Circuito Sumador Completo de 1 bit................................................................................ 57 5.8 Tiempo (Retardo) de Propagacin ......................................................................................... 59 6 MEMORIAS ROM.......................................................................................................................... 61 6.1 Introduccin ............................................................................................................................ 61 6.2 Caractersticas........................................................................................................................ 61 6.3 Circuito Interno........................................................................................................................ 62 6.4 Variantes Tecnolgicas .......................................................................................................... 62 6.4.1 PROM .............................................................................................................................. 62 6.4.2 EPROM ........................................................................................................................... 63 6.4.3 EEPROM ......................................................................................................................... 64 6.4.4 Flash EEPROM / Flash EPROM / Flash Memory ........................................................... 64 6.5 Capacidad y Organizacin...................................................................................................... 65 6.6 Arreglos de Memorias............................................................................................................. 65 6.6.1 Memoria de mayor tamao de Palabra ........................................................................... 65 6.6.2 Memoria de mayor cantidad de Palabras........................................................................ 65 6.7 Chip Select.............................................................................................................................. 67 6.7.1 Aplicacin del Chip Select (CS) a Arreglos de Memorias ............................................... 68 6.8 Lgica de Tercer Estado (Tri-state) ........................................................................................ 68 6.8.1 Aplicacin de Lgica Tri-state con Output Enable (OE) a Arreglos de Memorias........... 69
Notas de Terico
1
1.1
SISTEMAS DE NUMERACIN
Introduccin
En este captulo expondremos brevemente (a modo de repaso) conceptos bsicos sobre los sistemas de numeracin. No por sencillo el tema deja de ser importante pues nos permite comenzar a acostumbrarnos a los sistemas de numeracin utilizados en computacin, especialmente el binario y el hexadecimal, tarea no trivial si tenemos en cuenta el "lastre" que significan aos y aos de prctica con el sistema decimal exclusivamente. Podemos entender un sistema de numeracin como un conjunto de smbolos y un conjunto de reglas de combinacin de dichos smbolos que permiten representar los nmeros enteros y/o fraccionarios. Dentro de los sistemas de numeracin posibles un conjunto importante, y destacado, es el constituido por los sistemas de numeracin posicionales.
1.2
Sistemas posicionales
En estos sistemas la representacin de un nmero se realiza mediante un conjunto de smbolos y su posicin relativa dentro de la expresin. Como ejemplo de un sistema posicional podemos citar al Romano, en el cual es claro que la posicin relativa de los smbolos influye en la representacin. Ej.: VI corresponde al 6 y IV al 4. Dentro de los sistemas posicionales estn incluidos los que sern objeto de nuestro estudio: los sistemas con base.
1.3
N = a n bn + ... + a 0 b 0 + a -1 b -1 + ...
donde ai es un smbolo del sistema, al que llamamos dgito, y b es la base. La base es igual a la cantidad de smbolos del sistema. Notando que los dgitos son la representacin en el sistema de los nmeros enteros menores que la base, tenemos que se cumple la condicin b > ai 0. La base b la representamos siempre, por convencin, en el sistema decimal (si la representramos en el sistema del cual es base su representacin sera, naturalmente, 10). Habitualmente la representacin omite las potencias de la base y coloca un punto (o coma) para separar la parte de potencias positivas de la parte con potencial negativas, quedando:
n 1
...a
.a
Sistema decimal: El sistema de numeracin utilizado en la vida cotidiana es el decimal, cuya base es diez, utilizando los conocidos diez smbolos 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9 . Sistema binario: Es el sistema de base 2 en el cual los dos smbolos utilizados son el 0 y el 1, los que reciben el nombre de bit (binary digit).
Notas de Terico
Sistema Octal: Es el sistema de base 8 en el cual se usan los smbolos 0, 1, 2, 3, 4, 5, 6, 7. Sistema Hexadecimal: Es el sistema de base 16 en el cual se usan los smbolos 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F . La base del sistema en el que est representado un nmero se suele indicar con un subndice al final del nmero y en los casos particulares de base 2 (binario), base 8 (octal), base 16 (hexadecimal) con un subfijo con las letras b, o ( q) y h respectivamente. En el caso de base 16 tambien se utiliza el prefijo 0x. Si no se indica nada se asume base 10. Ejemplos:
Estudiaremos a continuacin los algoritmos para que, dada la representacin de un nmero en una cierta base, podamos hallar la correspondiente representacin en otra base dada.
1.4
se desea hallar su expresin en una base b En definitiva lo que buscamos es hallar los valores de am , am-1 , . . . , a0 Caso A: Conversin de una base B a una base b usando la aritmtica de la base b (muy til para pasar de cualquier base a la base 10). La conversin se hace a travs del polinomio caracterstico, expresando los smbolos An . . . A0 y la base B en la base b y evaluando el polinomio, realizando las operaciones en la base b. Ejemplo: Convertir A2Fh a decimal.
A 2 Fh = 10 16 2 + 2 16 1 + 15 16 0 = 2607
Caso B: Conversin de una base B a una base b usando la aritmtica de la base B (muy til para pasar de base 10 a cualquier base)
Notas de Terico
N = b N1 + a0 N 1 = b N 2 + a1 . . . Nn-1 = b N n + a n
Por lo que los valores a0 . . . an son los restos de las divisiones de N entre b realizadas en la aritmtica de la base B.
N |b a0 N 1 | b a1 N2 Nn | b an 0
Ejemplo: Convertir 653 a binario.
653 = 1010001101b
Notas de Terico
1.5
Sea un nmero N = Ne + Nf = an b +...+ a1 b + a0 + a-1 b + ... donde Ne y Nf son la parte entera y la parte fraccionaria respectivamente. La parte fraccionaria sigue siempre a la parte entera en cualquier base. Por lo tanto Ne puede convertirse igual que antes y Nf se convierte por separado Estudiaremos entonces como convertir partes fraccionarias. Sean
Nf = A-1 B-1 + A-2 B-2 + ... en base B Nf = a-1 b-1 + a-2 b-2 + ... en base b Caso A:
Conversin de base B a una base b usando la aritmtica de la base b (muy til para pasar de cualquier base a base 10 ) Sea Nf = A-1 B + A-2 B + ...+ A-m B
-1 -2 -m
lo que hago es desarrollar el polinomio equivalente. Sea P(x) = A-1 x1 + A-2 x2 + ...+ A-m xm Si se calcula el valor numrico de P(x) para x = B usando aritmtica b obtendremos el valor buscado. Ejemplo : pasar 0.2138 a base decimal
-1
x=
1 ser: 8
Notas de Terico
Caso B:
Conversin de una base B a una base b operando con la aritmtica de la B (lo que la hace muy til para pasar de base 10 a cualquier base) Para determinar los coeficientes a-1, a-2, etc. para la base b se observa que cada uno de tales coeficientes es, en si mismo un entero. Primero se multiplica por b (con aritmtica B):
b (b Nf - a-1) = a-2 + a-3 b-1 + ... determinando as a-2. Se sigue este proceso hasta que se obtengan tantos coeficientes como se deseen. En el siguiente procedimiento puede ocurrir que el proceso no termine.
Ejemplo: Convertir 653.61 a base 2
2 (0.61) = 1.22 a-1 = 1 2 (0.22) = 0.44 a-2 = 0 2 (0.44) = 0.88 a-3 = 0 2 (0.88) = 1.76 a-4 = 1 2 (0.76) = 1.52 a-5 = 1 653 = 1010001101b 653.61 = 1010001101.10011...b 1.6 Caso Particular bases 8 y 16
La base 8 (octal) y la base 16 (hexadecimal) tienen una ntima relacin con la base 2. Puesto que 8 = 23 cada dgito octal corresponde a 3 dgitos binarios. El procedimiento entonces para convertir un nmero binario en nmero octal es dividir en grupos de 3 bits a partir del punto binario y asignando el dgito octal correspondiente a cada grupo. Ejemplo: convertir 11001010011.1111100112 a base 8
La conversin de base 8 a base 2 se hace a la inversa, convirtiendo en binario cada dgito octal, as:
Notas de Terico
Ejemplo :
Anlogamente se realiza para pasar de hexadecimal a binario. La tabla 1 presenta la combinacin binaria equivalente a cada uno de los smbolos del sistema hexadecimal.
0 1 2 3 4 5 6 7
8 9 A B C D E F
10
Notas de Terico
2
2.1
CODIGOS Y ERRORES
Introduccin
En el prximo captulo estudiaremos la forma en que se representan los distintos tipos de objetos con que trabajamos en computacin. En los lenguajes de alto nivel manejamos distintos tipos de datos: caracteres, strings, nmeros enteros, nmeros reales. Para trabajar con ellos, en general slo nos interesa saber que son, como se opera con cada uno y esto se estudia en los cursos de programacin. En esta materia nos ocuparemos de otro aspecto: como estn implementados, a nivel interno, los distintos tipos de datos. La unidad elemental de informacin que se usa en computacin es un objeto que toma solo 2 valores posibles (0, 1): el BIT (dgito binario) Los distintos tipos de datos se construyen en base a estructuras de bits, los cuales sern en general arrays de n elementos que reciben el nombre de palabra de largo n. En el caso particular de n = 8 el array se denomina byte. Estudiaremos entonces, la representacin interna de los datos como la expresin de los distintos tipos en funcin de estructuras de bits. Por lo anterior resulta que los distintos tipos de datos se representan a travs de cdigos binarios. Es decir existe un proceso de codificacin de los objetos de informacin en funcin de otros (las estructuras de bits) con los que se trabajar en realidad. Por esta razn es interesante estudiar, aunque sea brevemente, un problema fundamental en la manipulacin de cdigos binarios: la deteccin y correccin de errores. No nos referiremos aqu a errores en la codificacin de los objetos sino a los que aparecen cuando se manipula con ellos. Usualmente los objetos de informacin se almacenan y/o se transmiten. Estas dos operaciones comunes se realizan, en definitiva, utilizando medios fsicos (memorias, discos, canales de comunicacin, etc.) los cuales no estn libres de errores. Por tanto es de particular inters el estudio de la posibilidad de detectar o corregir errores en cdigos binarios. De esta manera nos aseguraramos que un dato recuperado de una unidad de almacenamiento es correcto (coincide con el almacenado) o que un dato recibido por un canal de comunicaciones lo es (coincide con el enviado por el emisor).
2.2
Todos los sistemas de codificacin que permiten deteccin y correccin de errores se basan en una misma idea: redundancia. El fundamento es sencillo: para poder distinguir si un valor es correcto o no (o sea representa un objeto vlido del sistema o no) debo agregar informacin adicional al cdigo. Entonces en todo sistema de codificacin con capacidad de detectar errores el nmero de objetos representados es siempre menor que el nmero de valores posibles del cdigo binario utilizado. Esta afirmacin quedar ms clara cuando veamos las distintas estrategias utilizadas. De todas formas un ejemplo puede ser de utilidad: supongamos que tenemos 16 objetos a representar; en principio, con un cdigo binario de 4 bits alcanzara (24 = 16), pero con 4 bits no estaramos en condiciones de detectar errores puesto que todos los valores posibles del cdigo binario utilizado corresponderan a objetos vlidos. De esta manera si por ejemplo hubiera un error en un bit del cdigo que representa a un objeto A se transformara en el cdigo que representa a un objeto B por lo que no habra posibilidad de detectarlo.
11
Notas de Terico
Para disponer, en este caso de la posibilidad de distinguir un cdigo binario correcto de uno incorrecto, deberamos utilizar un cdigo binario de, por ejemplo, 6 bits. Con 6 bits tendramos 64 valores posibles de los cuales slo 16 representaran objetos reales. Si elegimos convenientemente los cdigos asociados a cada objeto estamos en condiciones de detectar errores producidos por el cambio de un bit en el cdigo que representa un objeto.
2.3
Paridad
Uno de los mecanismos para generar sistemas de codificacin con capacidad de detectar errores es el de la paridad, o codificacin con bit de paridad. La idea es agregar a cada cdigo binario de n bits que representan objetos vlidos, un nuevo bit calculado en funcin de los restantes. La forma en que se calcula el bit de redundancia (de paridad) es tal que la cantidad de unos en el cdigo completo (original + bit de paridad) ser par (en cuyo caso hablamos de paridad par) o impar (en cuyo caso se trata de paridad impar). Cuando se genera el cdigo (se almacena o se transmite) se calcula este bit mediante uno de los dos criterios expuestos a partir de los n bits originales. Cuando se recupera el cdigo (se lee o se recibe) se recalcula el bit y se chequea con el almacenado o transmitido. En caso de no coincidir estamos ante un error, si el chequeo cierra podemos decir que para nuestro sistema no hubo errores. Notemos que no podemos afirmar en forma absoluta la ausencia de error aunque el bit de paridad recalculado coincida con el recuperado. Esto es una regla general para todo sistema de codificacin y en este caso se ve claramente: si cambian a la vez 2 bits del cdigo o, en general, un nmero par de ellos, el sistema de deteccin de errores por paridad no funciona, en el sentido que no reporta el error. Los sistemas de codificacin con capacidad de deteccin (o deteccin y correccin) de errores funciona correctamente dentro de ciertos lmites, si se cumplen ciertas hiptesis de trabajo. Un conjunto de supuestos que de cumplirse aseguran el buen funcionamiento de los sistemas que estamos analizando es: (a) La probabilidad de que falle un bit es baja. (b) Las fallas de bits son sucesos independientes (la posibilidad que un bit falle no tiene relacin alguna con la falla de otro bit del cdigo). En esta hiptesis la probabilidad de que fallen 2 bits a la vez es igual al cuadrado de la probabilidad que falle uno (por la segunda hiptesis) que ya era un valor pequeo (por la primera) por lo que da un valor muy bajo. Por lo tanto en estas hiptesis el sistema de deteccin por paridad funciona bien: cuando no detecta error es altamente probable que el cdigo sea efectivamente el correcto. Es importante sealar que las hiptesis efectuadas se ajustan al caso de las memorias de las computadoras modernas. No ocurre lo mismo con los dispositivos de almacenamiento que graban la informacin en forma serial (un bit a continuacin del otro) ni con los sistemas de transmisin de datos seriales ya que en estos casos el hecho que falle un bit est vinculado, en forma no despreciable, a la falla de otro ( en particular del vecino "anterior"), por lo cual la hiptesis b) no se cumple para estos sistemas, de donde el control por paridad no sera demasiado efectivo en estos casos. Volviendo al mecanismo de bit de paridad y recordando la definicin de la operacin lgica XOR y su propiedad asociativa es fcil ver que el bit de paridad se puede expresar como:
P = b0 b1 . . . bn
P = ( b0 b1 . . . bn )
12
Notas de Terico
El chequeo de la correccin de un cdigo recuperado se puede realizar evaluando la expresin (para paridad par):
P b0 b1 . . . bn
con los valores de P, b0 entonces se detect un error.
...
Una variante de este sistema es el mecanismo de paridad horizontal/vertical. Este mtodo se puede aplicar cuando se almacenan o transmiten varias palabras de cdigo. Cada palabra de n bits de cdigo tiene su bit de paridad (que se denomina paridad horizontal) y cada n palabras almacenadas/transmitidas se agrega una palabra de paridad generada como el XOR (bit a bit, incluyendo el de paridad horizontal) que recibe el nombre de paridad vertical. Por ejemplo para n=8 sera algo as:
a0 a1 b0 b1 v0 v1
a2 a3 b2 b3 v2 v3
a4 b4 v4
a5 b5 v5
a6 b6 v6
a7 b7 v7
ah bh vh
............. .............
La distancia entre dos representaciones binarias se define como el nmero de bits distintos entre los dos cdigos. Es decir si tenemos dos cdigos binarios a y b
(a0
, a1, . . ., an)
(a0 b0 , a1 b1 , . . . an bn)
Por ejemplo, los cdigos:
01101 10110
tienen una distancia 4 (cuatro) La "distancia" tal cual la hemos definido tiene las siguientes propiedades (que no vamos a demostrar): 1) d(a,b) = d(b,a) 3) d(a,b) + d(b,c) d(a,c)
2) d(a,b) = 0 si y slo si a = b
13
Notas de Terico
Se pueden generar sistemas de codificacin en binario que tengan una determinada distancia. En el caso de un sistema de cdigos se llama "distancia" del cdigo a la mnima distancia que exista entre dos valores vlidos del cdigo. Por ejemplo el cdigo "2 de 5" tiene la forma:
11000 10100 10010 10001 01100 01010 01001 00110 00101 00011
Como vemos este cdigo tiene distancia 2 ya que todos los elementos del cdigo difieren por lo menos en 2 bits (ej: 11000 y 10100). De los 32 posibles objetos que permiten representar 5 bits, este cdigo permite representar tan solo 10 objetos. La posibilidad de detectar y corregir errores est fuertemente vinculada, como es de suponer, a la distancia del cdigo (sistema de codificacin) utilizado. Consideremos un cdigo de distancia "d" y dos objetos vlidos del cdigo M y N. Consideremos el conjunto de valores posibles del cdigo (no necesariamente vlidos) que se obtienen de modificar hasta "t" bits del valor "M". Idem para los del valor "N". Estos conjuntos se pueden visualizar como "esferas" en el espacio de "n" dimensiones (siendo n la cantidad de bits del cdigo) rodeando a cada uno de los valores. d M N
t t
Como se puede ver si estos conjuntos no tienen puntos en comn, podemos afirmar que, no solo podemos detectar un error, sino que adems podemos afirmar, siempre que la cantidad de bits que suponemos se puede alterar es a lo sumo t, a qu cdigo correcto corresponde un valor "degenerado" dado, permitiendo por tanto la "correccin" del error. Si los conjuntos tienen puntos en comn no podremos corregir, pero si detectar errores, siempre y cuando dentro del conjunto de puntos asociado al valor M no incluya al valor N, puesto que si no, la alteracin de un cdigo vlido puede conducir a otro vlido, impidiendo as detectar el error. Es decir que la condicin para que se puedan detectar errores es que:
t<d
la condicin para que se puedan corregir es:
t<
d 2
Por ejemplo para poder corregir errores de hasta un bit, hay que utilizar un cdigo de distancia 3 por lo menos.
14
Notas de Terico
2.5
Bits de Redundancia
Se puede demostrar que para generar cdigos de distancia 3 para objetos representables en "k" bits, se necesitan utilizar "p" bits adicionales, llamados bits de redundancia, tal que se cumpla:
2p p + k + 1
Por ejemplo, supongamos que queremos disear un sistema de memoria de una computadora de 16 bits, de manera que sea capaz de corregir errores de hasta 1 bit. De acuerdo a la expresin necesitamos agregar 5 bits de redundancia para que esto sea posible.
Los cdigos de Hamming son una forma prctica de generar cdigos de distancia 3. Los veremos a travs de un ejemplo en concreto. Supongamos que tenemos 16 objetos representados, en principio, en binario:
a4 a3 a2 a1
de acuerdo a lo visto antes precisamos 3 bits de redundancia (ya que 23 = 8 3 + 4 + 1 = 8)
p3 p2 p1
Si armamos el cdigo (que tendr entonces 7 bits) de la siguiente manera:
a4 a3 a2 p3 a1 p2 p1
y convenimos que las representaciones vlidas de los 16 objetos a representar son aquellas en los cuales los bits de redundancia se calculan de la siguiente manera:
p1 = a4 a2 a1 p2 = a4 a3 a1 p3 = a4 a3 a2
podemos al recuperar el cdigo calcular los bits "s" que estn vinculados, al igual que los "p" a la posicin de los distintos bits en el cdigo:
S0 S1 S2
a4 a3 a2 p3 a1 x x x X x x X x x x
p2 p1 x x
s0 = p1 a4 a2 a1 s1 = p2 a4 a3 a1 s2 = p3 a4 a3 a2
estos bits "s" representan, en binario, un nmero "S"
S = S2 S1 S0
15
Notas de Terico
Si al calcular "S" se da que es cero no hay errores (por lo menos para nuestro sistema de codificacin). Si "S" da distinto de 0, el nmero que de me indica el bit que esta errado (siendo el 1 el de ms a la derecha, o sea p1). De esta manera es posible reconstruir el valor correcto del cdigo, cambiando el bit que identificamos como corrupto (si esta en 0 lo pasamos a 1 y viceversa).
2.7
Como fue mencionado los sistemas de deteccin por paridad son aptos para trabajar en la hiptesis que la falla de un bit es un suceso probabilsticamente independiente de la falla de un bit "vecino". Los cdigos de Hamming tambin se apoyan en esta hiptesis para asegurar eficacia en la deteccin y correccin del error de un bit. Esta hiptesis se cumple muy bien en dispositivos como ser las memorias de las computadoras (RAM). Sin embargo en los sistemas de almacenamiento masivo en base a discos magnticos u pticos, o en sistemas de transmisin serie, la hiptesis no es cierta y por tanto estos mecanismos de manejo de errores no son del todo efectivos. Para estos casos se utilizan otros mtodos, diseados para ser capaces de manejar "errores en rfaga". Uno muy difundido es el Cdigo de Redundancia Cclica (CRC), que se basa en la aritmtica de mdulo aplicada a los polinomios. Consideremos un "mensaje" a transmitir (o almacenar) de m bits. Llamamos M(x) al polinomio de grado m-1 cuyos coeficientes coinciden con los bits del mensaje. Se define un polinomio G(x) de grado r de coeficientes binarios (0 1), que es caracterstico del sistema. Consideremos el r polinomio x M(x), en otras palabras elevamos el grado del polinomio M(X) en r. Dividamos dicho polinomio entre G(x): x M(x) = Q(x)G(x) + R(x)
r
Consideremos ahora el polinomio T(x) definido por la expresin: T(x) = x M(x) - R(x) Es sencillo comprobar que T(x) es divisible por G(x). T(x) es el polinomio que se transmite (o almacena). En realidad los que se transmiten (o almacenan) son los bits coeficientes de T(x). Notemos que los primeros m bits de T(x) son los mismos que M(x), ya que R(x) es a lo sumo de grado r-1 y por tanto no afecta ninguno de los coeficientes de xrM(x). El receptor del mensaje modificado T(x) (o el sistema que lo recupera del almacenamiento) puede verificar la correctitud del mensaje comprobando que T(x) es dividible por G(x). Lo mas interesante de este mtodo es que, a pesar de las apariencias, es sumamente sencillo de implementar, incluso en hardware, por tratarse de coeficientes binarios. La eleccin del polinomio G(x) (denominado "generador") no es un tema menor, ya que de acuerdo a sus coeficientes tendr mejores propiedades de deteccin. Los sistemas CRC que tienen polinomios G(x) con grado r y contienen termino independiente pueden detectar errores de rfagas de hasta r bits. Tener en cuenta que estos sistemas son muy buenos para rfagas, pero no tanto para errores aislados si estos aparecen mas de una vez en el mensaje. Un ejemplo de polinomio que se usa es: CRC-16 -> x
16
r
+x
15
+x +1
16
Notas de Terico
3
3.1
Como ya adelantamos en este captulo analizaremos como se construyen las representaciones de los distintos tipos de datos en funcin de los codigos binarios, formados por estructuras de bits.
3.2
Tipo Carcter
Comenzaremos viendo cmo se representan los caracteres mediante cdigos binarios. Entendemos por caracteres los smbolos que se utilizan en el lenguaje natural escrito: letras, nmeros, smbolos de puntuacin, smbolos especiales, etc. La forma en que se codifican los caracteres ha ido evolucionando con el tiempo y han existido, y existen actualmente, mltiples formas distintas de hacerlo. Los sistemas de codificacin de caracteres muchas veces dependen de los idiomas y por tanto difieren segn las geografas donde se apliquen y su popularidad depende en parte de la importancia geopoltica y econmica de dichas regiones. Durante los 80 y los 90 la forma ms difundida de representar estos smbolos es la establecida por el denominado cdigo ISO-8859-1 para los idiomas de Europa Occidental. Este cdigo fue diseado por la International Standard Organization en forma original como ISO/IEC 88591 (que tena menos caracteres definidos), adoptado en forma oficial por la IANA (Internet Assigned Numbers Authority = organismo que regula actualmente la actividad en internet) y fue utilizado por los sistemas operativos UNIX (o derivados). Una variante del ISO/IEC 8859-1 es el Windows-1252, utilizado por el sistema operativo Windows. Actualmente la tendencia es hacia la utilizacin del UCS (Universal Character Set), que es la parte de especificacin de caracteres del proyecto Unicode, el cul se diseo para ser un estndar universal de cmo representar texto en mltiples idiomas y de mltiples tipos (ej: frmulas matemticas) en las computadoras. El Unicode fue adoptado por la ISO bajo la denominacin ISO 10646. Existen distintos sistemas de codificacin del Unicode. Los ms difundidos son el UTF-8, el UTF-16 y el UTF-32. El UTF-8 es un sistema de codificacin de largo variable, compatible con el ASCII (American Standard Code for Information Interchange), origen tambin del ISO-8589 y muchos otros sistemas de codificacin de caracteres. El ASCII es un cdigo de 7 bits que especifica la representacin de las letras y smbolos especiales usados en el idioma Ingls (ms exactamente Ingls norteamericano) adems de los nmeros, y es muy similar al alfabeto nmero 5 del CCITT (Comit Consultivo Internacional sobre Telefona y Telecomunicaciones), actualmente ITU (International Telecomunication Union), organismo que, entre otras funciones, establece propuestas de estandarizacin en materia de comunicaciones. De los 128 valores posibles del cdigo (7 bits) 10 se utilizan para los dgitos decimales (del 30h al 39h), 26 para las letras maysculas (del 41h al 5Ah), 26 para letras minsculas (del 61h al 7Ah), 34 para smbolos especiales (espacio, !, #,$,%,/,&,+,-,*, etc.) y los 32 primeros se denominan genricamente "caracteres de control" y se utilizan bsicamente en la comunicacin de datos y con fines de dar formato a los textos en impresoras y pantallas de video. Algunos de estos caracteres de control son: 00h NUL (Null) Es la ausencia de informacin, se utiliza como carcter de relleno. 02h STX (Start of Text) Muchos protocolos de comunicacin lo utilizan para indicar el comienzo de un texto. 03h ETX (End of Text) Idem para fin de texto. 06h ACK (Acknowledge) Se utiliza en comunicaciones para contestar afirmativamente la recepcin correcta de un mensaje. 15h NAK (Negative acknowledge) Idem para recepcin incorrecta. 0Ah LF (Line Feed) Indica pasar a la siguiente lnea (en una impresora o pantalla).
17
Notas de Terico
0Ch FF (Form Feed) Indica pasar a pgina siguiente. 0Dh CR (Carriage Return) Indica volver a la primera posicin dentro de la lnea. 11h DC1 (Data Control 1) Indica dispositivo libre (disponible). 12h DC2 (Data Control 2) Indica dispositivo ocupado (no disponible). Supongamos que enviamos caracteres a una impresora y sta no est en condiciones de recibir ms (ha llenado su "buffer") entonces la impresora enva el carcter DC2 al computador (para indicarle que no enve ms caracteres), cuando queda en condiciones de recibir nuevos caracteres, enva el carcter DC1. Cuando se utilizan caracteres con este fin, se dice que se hace uso de un protocolo XON/XOFF (Transmit on/Transmit off). 1Bh ESC (Escape) Indica el comienzo de una "secuencia de escape". Los caracteres que vienen a continuacin tienen un significado especial. Estas secuencias se usan tpicamente para enviar comandos a las impresoras y/o terminales de visualizacin. Por ejemplo, para posicionar el cursor en la pantalla, cambiar el tipo de letra en una impresora. La forma ms habitual de representar el cdigo ASCII, y en general todos los sistemas de codificacin de caracteres, es a travs de una matriz cuyas columnas estn asociadas a los 3 bits ms significativos del cdigo, y sus filas a los 4 bits menos significativos tal como se muestra en la siguiente tabla: 0 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI 1 DLE DC1 DC2 DC DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US 2 SP ! " # $ % & ' ( ) * + , . / 3 0 1 2 3 4 5 6 7 8 9 : ; < = > ? 4 @ A B C D E F G H I J K L M N O 5 P Q R S T U V W X Y Z [ \ ] ^ _ 6 ` a b c d e f g h i j k l m n o 7 p Q R S T U V W X Y Z { | } ~ DEL
0 1 2 3 4 5 6 7 8 9 A B C D E F
Tabla 2 - Cdigo ASCII Como ya hemos establecido, el ASCII codifica los caracteres utilizados para escribir textos en idioma Ingls y los signos de puntuacin y smbolos especiales propios de dicha lengua. Qu pasa entonces con otras lenguas como el espaol, en particular?. Cmo se puede observar, la , por ejemplo, no est codificada, tampoco las letras acentuadas, as como signos de puntuacin caractersticos de nuestro idioma como "?" y "!". La situacin en este campo fue confusa hasta la ltima dcada del pasado siglo y existieron distintas propuestas de codificacin aceptadas. Se propusieron dos mecanismos bsicos para atacar el problema: uno fue modificar el ASCII de 7 bits adaptndolo a cada lengua; el otro fue utilizar un cdigo de 8 bits, que en sus primeros 128 valores coincidiera con el ASCII y los restantes utilizarlos para representar los caracteres propios de un conjunto relativamente grande de idiomas. Un ejemplo del mecanismo de modificacin del ASCII es el que fue utilizado por EPSON en sus impresoras y que se convirti en un "estndar de facto" en el mundo de las computadoras personales al ser aceptado y soportado por la casi totalidad de los otros fabricantes de impresoras. El mecanismo consiste en sustituir caracteres (en general smbolos especiales) por los caracteres que le "faltan" al ASCII para adaptarse a cada lengua en particular. As tenemos un "ASCII espaol", un "ASCII francs", un "ASCII ingls (de Inglaterra)", etc.
18
Notas de Terico
Un ejemplo de cdigo de 8 bits es el que utiliz por IBM en sus primeras computadoras personales, el cual puede considerarse tambin un "estndar de facto". Utiliza los 128 valores ms altos para letras y smbolos de otros idiomas y para caracteres grficos (que permiten dibujar recuadros y cosas similares). Posee tambien algunas versiones adaptadas a distintas regiones del mundo. La utilizada para la mayora de los idiomas de Occidente es la IBM437 (o CP437, por Code Page 437). En la tabla 3 se muestran los caracteres "agregados" al ASCII (incompleta) para esta variante. El cdigo ISO-8859-1 est representado en la tabla 4, incluyendo los caracteres agregados por la codificacin Windows-1252 (tambin conocida como Windows Latin-1). Finalmente mencionaremos los cdigos de 16 bits que dan soporte a los idiomas de Oriente (Chino, Japons, Coreano). De estos cdigos el ms aceptado es el ISO 10646 el cual coincide con la parte de representacin de caracteres del Proyecto Unicode. El Unicode pretende codificar texto (no solamente caracteres) y toda clase de smbolos dando soporte a reas tales como las matemticas, la lingstica y los lenguajes de programacin, entre otras.
19
Notas de Terico
Tabla 4 - ISO-8859-1 (en las filas 80 y 90 estn los caracteres agregados por Windows-1252).
3.3
Tipo String
El tipo STRING es una sucesin de caracteres. Existen varias formas de representacin interna. Lo principal a saber es dnde termina la sucesin. Una primera manera es emplear largo fijo. Esta representacin es demasiado rgida. Una segunda manera es reservar un cdigo especial para fin de string. Este cdigo especial no podr formar parte del string. Por ejemplo, el lenguaje "C" utiliza el NULL para fin de string. Una tercera manera consiste en convertir los strings en un registro donde el primer campo tiene el largo y el segundo tiene el contenido. El nico inconveniente es que la estructura es ms compleja. En BASIC se pueden encontrar ejemplos de esta representacin.
3.4
Los enteros sin signo (siempre positivos) poseen la representacin ms simple: su cdigo binario coincide con su expresin en base 2 restringida a un nmero fijo de bits. Se utilizan para contadores, direcciones, punteros y para derivar otros tipos. Las operaciones elementales de este tipo son las cuatro usuales para los nmeros enteros (+ - * / ).
20
Notas de Terico
Por ejemplo en la suma de 2 enteros sin signo, se aplica el algoritmo usual para los nmeros binarios. Veamos un par de casos considerando representaciones de 8 bits Ejemplo 1:
25 + 74 99
Ejemplo 2:
25 +234 259
Los bits de carry (acarreo) de las operaciones anteriores (000110000 y 111110000) se presentan en la primera lnea de la operacin. Notar que si el ultimo bit de acarreo (es el denominado bit de acarreo o carry de la operacin) es 1, el codigo binario resultante no representa al resultado de la operacin. En ese caso (carry = 1) ha sucedido un overflow, que significa que nos hemos salido del rango de la representacin. El problema principal en esta representacin, que es comn a todas las basadas en un tamao fijo de palabra, es que estamos restringidos en el tamao y las operaciones pueden, por tanto, dar overflow (en este caso indicado por el carry en 1). Los tamaos usuales para esta representacin son: el byte ( 0 a 255 ), la palabra de 2 bytes (16 bits, 0 a (216)-1 ), la palabra de 4 bytes (32 bits, 0 a (232)-1) y, actualmente, la palabra de 8 bytes (64 bits, 0 a (264)-1). En general el rango de la representacin para n bits ser:
0 N 2n 1
3.5
3.5.1
Si tenemos n bits para representar el nmero, tomamos uno para el signo y el resto representa el valor absoluto del nmero en binario (expresin del numero en base 2). Msb lsb
bn-1
bn-2
...
b1
b0
0110 6 1110 -6
21
Notas de Terico
( 2 n1 1) N 2 n 1 1
En esta representacin tenemos dos formas de representar el cero, 1000 y 0000 (para n=4). Esto puede verse como un inconveniente. Adems las operaciones no trabajan directamente con la representacin sino que deben interpretarse en base a los signos relativos. 3.5.2 Complemento a uno
Los nmeros positivos se representan en binario, y los nmeros negativos se representan como el valor absoluto complementado bit a bit. Para n bits el rango del nmero representado es:
( 2 n1 1) N 2 n 1 1
n=8
msb Lsb
-7 -6 -5 -4 -3 -2 -1 0 0 1 2 3 4 5 6 7
1000 1001 1010 1011 1100 1101 1110 0000 1111 0001 0010 0011 0100 0101 0110 0111
El orden en binario (interpretando los codigos como si fueran numeros en base 2, aunque no lo son) no corresponde al orden de los nmeros que representa. Otra desventaja, es que hay 2 representaciones distintas para el cero (0000 y 1111). 3.5.3 Desplazamiento
La representacin por desplazamiento supone un corrimiento de los valores a representar segn un valor d (llamado desplazamiento), y posteriormente se la aplica el mdulo para que se pueda almacenar en el tamao de la representacin deseada. Para el desplazamiento, se supone que el valor codificado (resultado de la operacin N + d), es un nmero que para n bits es un valor entre 0
22
Notas de Terico
y 2n-1, por lo que permite representar valores desde d a 2n-d-1.En general para representar 2n n-1 n-1 n nmeros diferentes, se asigna a d el valor 2 , o 2 -1 aplicando un mdulo de 2 .
Los nmeros positivos se representan directamente en binario y para conseguir el cdigo de los negativos, se complementa el valor absoluto y se los incrementa en uno.
N N2 N not (N2 ) + 1 = N
si N 0 si N <0
Por ejemplo, para nmeros de 8 bits se tiene: Si 70 = 01000110, entonces para lograr -70 hago el complemento a uno (negacin bit a bit) de esta configuracin y luego le sumo uno, luego:
23
Notas de Terico
repr( 0 ) = repr( -0 ) Se pierde la relacin de orden. El algoritmo de comparacin de A con B depende de los signos de A y de B. La resta se hace sumando el negativo del sustraendo, con lo que tambien se mantiene. A - B = A + ( -B ) = A + not B + 1 Al igual que en toda representacin de largo fijo las operaciones pueden generar overflow. Pero a diferencia del caso de la representacin binaria (entero sin signo) en este caso el bit de carry no indica por s solo esta condicin. Veamos algunos ejemplos ilustrativos de los distintos casos posibles: Ejemplo 1:
25 74 99
Ejemplo 2:
25 + -22 3
Ejemplo 3:
25 + 114 139
Ejemplo 4:
011100000 carry final = 0 00011001 01110010 10001011 -117 representacin incorrecta (overflow = 1)
100010100 carry final = 1 10001000 11101010 01110010 114 representacin incorrecta (overflow = 1)
En esta repreentacin para saber si hubo overflow al final de la operacin hay que verificar la existencia de acarreo en los dos bits ms significativos. Dejamos a cargo del lector determinar la expresin lgica del overflow en funcin de dichos acarreos. Para el caso de la multiplicacin sucede algo paradjico: si bien la representacin mantiene tambin dicha operacin, la forma usual de implementar la operacin no lo hace. Veamos primero con ejemplos la primer parte de la afirmacin: Ejemplo 1:
24
Notas de Terico
25 3 15 6 75
Ejemplo 2:
-22 3 6 6 -66
El problema es que la multiplicacin binaria se implementa normalmente dando el resultado en el doble de bits que los operandos. Esto es: si los operandos son de n bits, el resultado de la multiplicacin se calcula en 2n bits. Esto es porque de otra manera rpidamente nos iramos de representacin aunque multiplicramos operandos pequeos. Al extender el resultado de la operacin a 2n bits, la propiedad de mantener la multiplicacin deja de ser cumplida por la representacin complemento a 2. De all es que se diga habitualmente que la representacin complemento a 2 mantiene la suma pero no la multiplicacin (aunque estrictamente no sea correcta la afirmacin). De hecho la propiedad del mantenimiento de ambas operaciones (suma y multiplicacin) se desprende del hecho que en el fondo la aritmtica de la representacin de complemento a 2 tiene un vnculo muy estrecho con la aritmtica del mdulo. Veamos este punto. Primero observemos que para n bits, el complemento a 1 de un numero cumple con: N+N=2 -1 Por tanto: N+N+1=2 o sea: N+N=2
n n n
-N = -1 x 2n + N
n
dicho de otra manera el complemento a 2 de un nmero es lo que le falta para llegar a 2 (por ejemplo en 8 bits, el complemento a 2 de 22 es 234, el complemento a 2 de 117 es 139 y as). La segunda parte es una forma equivalente de plantear la primera, de forma de evidenciar lo que viene a continuacin. Consideremos ahora la representacin de un nmero N cualquiera. Si N es positivo se cumple siempre que: N=0x2 +N y si fuera negativo se cumplir que: -N = -1 x 2n + N Entonces en ambos casos la representacin del nmero coincide con el resto de la divisin
n
25
Notas de Terico
entera del numero entre 2n. Es una propiedad conocida que la aritmtica del resto (aritmtica de mdulo) mantiene las operaciones de suma y multiplicacin, siempre que se tenga la precaucin de tomar el mdulo (resto de la divisin entera) de la operacin realizada entre los mdulos. Esto equivale a quedarse con los n bits menos significativos del resultado. Como vimos esto se hace en la prctica con la suma, pero no se hace con la multiplicacin (ya que se extiende a 2n bits), por lo que la propiedad solo se aplica a la suma en el caso prctico.
3.6
Se usan para sumar cantidades de muchos dgitos donde no se puede perder precisin. En aplicaciones comerciales se tiene un caso tpico. Pueden ser del largo que se quiera y se representan internamente en forma similar a un string. type DECIMAL is array (1..LARGO) of DIGITO; type DIGITO is (0,1,2,3,4,5,6,7,8,9); Los algoritmos son similares a los empleados en las operaciones decimales hechas a mano. Observamos que en la representacin en 8 bits para dgitos, se usan 10 de los 256 cdigos. La codificacin tpica es:
12545 00010010010101000101 {{ {{ {
1 2 5 4 5
Veamos un ejemplo de operacin suma en el caso de dos dgitos. La suma binaria es:
7 00000111 (bcd) + 5 00000101 (bcd) 12 00001100 como no es vlido le sumo 6 + 6 0110 12 00010010 (bcd)
El algoritmo de suma para decimales empaquetados es: sumar binario, dgito a dgito del menos al ms significativo, si se encuentra un dgito no valido o hay un carry, sumar 6 y obtener el dgito correcto (en los cuatro bits menos significativos) y el carry (un 1 a sumar a los siguientes dgitos).
26
Notas de Terico
3.7
Para representar numeros con parte fraccional se puede utilizar tambin un nmero determinado de bits (ej: 16, 32, 64), asignando un cierto nmero fijo de bits para representar la parte entera del nmero y el resto para la parte fraccional. La parte entera siempre ocupa los bits ms significativos del cdigo. Para este tipo de representacin la parte entera se puede representar en binario (para nmeros sin signo) en complemento a 2 (para nmeros con signo). La parte fraccional siempre se representa en binario (expresin en base 2 de la parte fraccional del nmero).
3.8
Tipo Moneda
Para representar cantidades monetarias se suele utilizar una representacin del tipo "punto fijo", con un numero suficiente de dgitos luego de punto fraccional de forma de darle cierta precisin a las operaciones financieras hasta el nivel de los "centavos". Una forma alternativa de verlo es pensar que lo que se almacena es la parte entera de la cantidad multiplicada por una potencia de 10. Por ejemplo el BASIC de Microsoft define el tipo "currency" como un entero de 64 bits que resulta de multiplicar la cantidad original por 10.000. Es importante tener en cuenta que representaciones con precisin variable, como el Punto Flotante que veremos a continuacin, no son buenas representaciones para este tipo de informacin.
3.9
En las distintas arquitecturas de computadoras se han utilizado diversas representaciones para expresar nmeros reales, todas ellas basadas en la siguiente notacin :
N = (1) s .b e .M
donde: s es el signo e es el exponente M es la mantisa b es la base de representacin Las bases utilizadas han sido, normalmente, 10 y 2. Dado que esta representacin es ambigua (existen varias representaciones para un mismo numero) se utiliza una versin ms restringida que se llama normalizada. Los nmeros normalizados son aquellos en que el bit ms significativo de la mantisa es distinto de cero o, que es equivalente, que la mantisa sea mxima. 3.9.1 Estndar IEEE 754 de punto flotante
Para que los nmeros representados en punto flotante fueran posibles intercambiar entre distintas arquitecturas se establece el estndar IEEE 754 que define el formato y las operaciones con estos. El estndar define tres formatos : s (bits) 1 1 1 e (bits) 8 11 15 F (bits) 23 52 64 Total (bytes) 4 8 10
27
Notas de Terico
donde el exponente se representa usando desplazamiento. En el curso usaremos tambin la "Media Precisin" (no se usa en la prctica) que tiene: s (bits) 1 e (bits) 5 F (bits) 1 Total (bytes) 2
Madia Precisin
Los nmeros normalizados son de la forma : 1,F. donde el bit ms significativo de la mantisa es un 1. Como todos los nmeros normalizados tienen un uno en el bit ms significativo el estndar define una representacin diferente que omite este bit. Este consiste en: un 1 implcito, una coma implcita y luego la parte "fraccional" de la mantisa. Por lo tanto la representacin a utilizar es de la forma :
N = (1) s .2 e+127.(1, F ) para nmeros de simple precisin N = (1) s .2 e+1023.(1, F ) para nmeros de doble precisin
Adems de operar con nmeros normalizados el estndar opera con nmeros desnormalizados : Normalizados Desnormalizados Cero Infinito Not a Number 0 < Exp < Max 0 0 1111..................................1 1111..................................1 Cualquier combinacin
0
0 0
Los nmeros desnormalizados sirven para operar con nmeros menores que el menor numero normalizado representable. Estos nmeros asumen un 0 implcito en vez del 1 implcito de los nmeros normalizados. Por lo tanto cuando tenemos un nmero en notacin punto flotante desnormalizado estamos representando el nmero:
Las operaciones (suma, resta, multiplicacin) se realizan mediante algoritmos especializados para la representacin. Para la suma se debe: - alinear los exponentes (llevando el menor al mayor), adecuando concordamentemente la mantisa (teniendo en cuenta el 1 omitido) - sumar las mantisas teniendo en cuenta los signos - normalizar, acomodando la mantisa y el exponente, si corresponde Para la multiplicacin se debe: - determinar el signo en base a los signos de los operandos - sumar los exponentes - multiplicar las mantisas - normalizar, acomodando la mantisa y el exponente, si corresponde 3.9.3 Perdida de Precisin
28
Notas de Terico
Una caracterstcia de esta representacin es que el conjunto de nmeros representados no es contnuo, pudiendo existir "huecos" importantes. Esto lleva que en una suma puede suceder que el resultado coincida con el mayor de los operandos. Es fcil de ver si se piensa qu pasa si el numero de bits a correr hacia la derecha (para alinear los exponentes) hace que el bit ms significativo sea menos significante que el bit menos significativo de la otra mantisa: al sumar y tomar los bits mas significativos slo se estarn considerando los bits de la mantisa del nmero mayor.
29
Notas de Terico
4
4.1
ALGEBRA DE BOOLE
Introduccin.
El lgebra de Boole es una herramienta de fundamental importancia en el mundo de la computacin. Las propiedades que se verifican en ella sirven de base al diseo y la construccin de las computadoras que trabajan con objetos cuyos valores son discretos, es decir las computadoras digitales, en particular las binarias (en las cuales los objetos bsicos tienen solo 2 valores posibles) las que son, en definitiva, la casi totalidad de las computadoras de uso corriente. Desde ya adelantemos que no se vern aqu detalles formales de la construccin algebraica, ni todas las propiedades que se verifican, as como tampoco todos los mtodos de sntesis de funciones booleanas que habitualmente se incluyen en este tema en cursos de lgica y/o diseo lgico. Como toda lgebra, la de Boole parte de un cuerpo axiomtico, el cual puede adquirir diversas formas, variando la cantidad y calidad de los axiomas. Aqu en particular tomaremos uno: el propuesto por Huntington en 1904 que tiene la ventaja de ser consistente e independiente.
4.2
Axiomas.
1. Existe un conjunto G de objetos, sujetos a una relacin de equivalencia, denotada por "=" que satisface el principio de sustitucin. Esto significa que si a = b, b puede sustituir a a en cualquier expresin que la contenga, sin alterar la validez de la expresin. 2. (a) Se define una regla de combinacin "+" en tal forma que a + b est en G siempre que al menos a o b lo estn. (b) Se define una regla de combinacin "" en tal forma que a b est en G siempre que tanto a como b lo estn. 3. Neutros. (a) Existe un elemento 0 en G tal que para cada a de G: a + 0 = a (b) Existe un elemento 1 en G tal que para cada a de G: a 1 = a 4. Conmutativos. Para todo par de elementos a y b pertenecientes a G se cumple:
(a) a + b = b + a (b) a b = b a
5. Distributivos. Para toda terna de elementos a, b, c pertenecientes a G se cumple:
(a) a + (b c) = (a + b) (a + c) (b) a (b + c) = a . b + a c
6. Complemento. Para cada elemento a de G existe un elemento a tal que:
aa = 0
a + a =1
7. Existen por lo menos dos elementos x, y en G tal que x <> y
30
Notas de Terico
Existe similitud de muchos de estos postulados con los del lgebra comn. Sin embargo, la primera de las reglas distributivas (sobre la suma) y la existencia del complemento diferencian en forma fundamental esta lgebra de la comn.
4.3
Modelo aritmtico.
El ejemplo ms simple del lgebra de Boole se compone de un conjunto G de 2 elementos: "0" y "1". Como es natural estos dos elementos deben coincidir con los neutros de las reglas de combinacin para satisfacer el axioma 3. Las reglas de combinacin debemos definirlas de manera de satisfacer los axiomas. As de acuerdo al axioma 3 :
0+0 = 0 1+ 0 = 1
0 1 = 0 1 1 = 1
1 0 = 0
(a (a
De acuerdo al axioma 4
0 +1 = 1
1 + (1 0) = (1 + 1) (1 + 0) 1 + 0 = (1 + 1) 1 1 = 1+1 0 (0 + 1) = 0 0 + 0 1 0 1 = 0 0 + 0 0 = 00
Por lo tanto las reglas completas son:
0+0= 0 0 +1 = 1 1+ 0 = 1 1+1 = 1
00 = 0 0 1 = 0 1 0 = 0 1 1 = 1
4.4
Propiedades.
Dualidad
Si analizamos los postulados veremos que los mismos se presentan de a pares y en tal forma que uno de la pareja se obtiene de otro cambiando "0" por "1" junto con "+" por "" (y viceversa). Esto asegura que cada propiedad que se demuestre en esta lgebra tiene una "dual" que tambin es cierta (para demostrar la dual bastara con repetir la demostracin realizada sustituyendo cada postulado o propiedad utilizada por su dual). Asociativa a) b)
a + (b + c) = (a + b) + c a (b c) = (a b) c
31
Notas de Terico
Si bien las leyes asociativas son muchas veces incluidas dentro del cuerpo axiomtico, de hecho son demostrables a partir de los axiomas aqu presentados (demostracin que no haremos) por lo cual las presentamos como propiedades. Idempotencia Para todo elemento en G se cumple:
a+a =a aa = a
Demostracin:
a + a = (a + a ) (a + a ) (6)
(Dualidad)
a +1 = 1 a0 = 0
Demostracin:
a + 1 = a + (a + a ) a + 1 = (a + a ) + a a +1 = a + a a +1 = 1 a0 = 0
(Dualidad)
Entonces los axiomas 1, 2, 3, 4, 5 y 7 se satisfacen por definicin y es fcil verificar que el G (complemento) tambin es cierto. Construimos por lo tanto un modelo "aritmtico" de lgebra de Boole que podemos denominar "binario" y es en definitiva con la que trabajaremos. Muchas veces las reglas de combinacin se presentan como tablas (como las funciones booleanas ms generales que veremos ms tarde)
a
0 0 1 1
b
0 1 0 1
a+b
0 1 1 1
a
0 0 1 1
b
0 1 0 1
ab
0 0 0 1
32
Notas de Terico
En general notaremos ab como ab, adems la operacin tendr mayor precedencia que la operacin +. Complemento de complemento Para cada elemento de G se cumple :
a=a
a + ab = a a (a + b) = a
Para todo par de elementos de G se cumple :
a + ab = a + b a (a + b) = ab
Ley de De Morgan Para todo par de elementos de G se cumple :
( a + b ) = ab (ab) = a + b
Estas reglas de De Morgan pueden generarse para cualquier nmero de variables.
Los valores que pueden asignarse a un juicio, desde el punto de vista lgico, son dos: verdadero (V) o falso (F). Un juicio al cual se le aplica el operador lgico no (negacin) forma un nuevo juicio. Dos juicios pueden combinarse para formar un tercero mediante los operadores lgicos "o" e "y". Si vinculamos los valores booleanos 0 y 1 con los valores lgicos F y V respectivamente, encontramos que las operaciones del lgebra de Boole "binaria" asigna correctamente los valores lgicos del juicio combinacin. Esto se comprueba observando que: verdadero o verdadero es verdadero verdadero o falso es verdadero falso o verdadero es verdadero falso o falso es falso verdadero y verdadero es verdadero verdadero y falso es falso falso y verdadero es falso falso y falso es falso
33
Notas de Terico
Por lo cual se puede concluir que el modelo "lgico" es isomorfo con el "aritmtico" (binario) realizando la correspondencia.
F0 V 1 + .
Es posiblemente consecuencia de este isomorfismo que las reglas de combinacin "+" y "." del lgebra de Boole reciban los nombres de OR ("o" en ingls) y AND ("y" en ingls) respectivamente.
4.6
Modelo circuital.
Otro modelo posible es el que surge de considerar llaves elctricas y asociar el valor A a la llave abierta (no pasa corriente, circuito abierto) y el valor C con la llave cerrada (pasa corriente, circuito cerrado). Es fcil comprobar que la combinacin de llaves en paralelo o en serie cumplen las mismas reglas definidas en el modelo aritmtico para "+" y "." respectivamente. LL1 A A C C LL2 A C A C Circuito PQ + A C C C LL1 A A C C LL2 A C A C Circuito PQ A A A C
Entonces existe tambin un isomorfismo entre el modelo "circuital" y el "aritmtico" si hacemos la asociacin
A0 C 1 paralelo + serie
Este isomorfismo es de fundamental importancia para la construccin prctica de las computadoras binarias.
4.7
Expresiones booleanas.
Llamamos constante a todo elemento del conjunto G que define al lgebra. Las variables podrn tomar como valor cualquier elemento de G ( 0 o 1 en el caso en que trabajamos). Una expresin la podemos definir recursivamente como 1) las constantes y las variables 2) el complemento de una expresin booleana 3) el OR (+) o el AND () de dos expresiones booleanas.
34
Notas de Terico
4.8
Funciones booleanas.
Una funcin "F" de n variables x1 ... x n booleanas es una aplicacin del espacio Gn sobre el espacio G de tal forma que para cada valor posible de la n-upla x 1 ... x n, donde cada variable puede tomar cualquier valor del conjunto (en nuestro caso {0, 1} ), se asocia un valor del recorrido G. Una de las formas de expresar F es a travs de las denominadas tablas de verdad que indican el resultado de F para cada valor posible de la n-upla; por ejemplo :
a
0 0 0 0 1 1 1 1
b
0 0 1 1 0 0 1 1
c
0 1 0 1 0 1 0 1
F 0 1 0 0 1 1 0 1
Otras formas de representar F incluyen el mtodo de indicar slo los puntos en los cuales F vale 1 o slo los puntos en los cuales vale 0 (representaciones y respectivamente). Para indicar los puntos en que la funcin vale 1 puede usarse la notacin en lugar de . Por ejemplo, la funcin anterior se puede expresar :
f ( a , b , c ) = (1, 4,5,7 )
sera:
f ( a , b , c ) = ( 0 ,2,3,6 )
Otra forma de expresar las funciones es a travs de expresiones; ejemplo, la funcin anterior
f = ac + ab + abc
4.9 Conectivas binarias.
Un caso interesante de estudiar es el de las funciones booleanas de 2 variables. Por ser dos variables las combinaciones posibles son 4, es decir "F" tiene 4 duplas (4 puntos) por tanto existen 16 funciones booleanas de dos variables posibles. Algunas de ellas no son de interes, veamos las tablas de verdad de las ms tiles. a 0 0 1 1 B 0 1 0 1 or 0 1 1 1 and 0 0 0 1 xor 0 1 1 0 nor 1 0 0 0 nand 1 1 1 0 Equiv. 1 0 0 1 Idemp 0 0 0 0 Tautol. 1 1 1 1
Nota : la NOR es el complemento de la OR la NAND es el complemento de AND la XOR ("O" exclusivo) puede definirse como:
a b = ab + ab
4.9.1 OR exclusivo.
El XOR es una funcin muy importante (es la suma aritmtica binaria mdulo 2) y cumple las propiedades :
35
Notas de Terico
Desarrollaremos a continuacin un mtodo sistemtico para encontrar una expresin algebraica para una funcin cualquiera dada. Definamos producto cannico de n variables x1 ... xn al producto de todas ellas en el cual cada variable aparece una y slo una vez, en forma simple o complementada. Una suma de productos cannicos es una expresin formada sumando productos cannicos. Existe un teorema (que no demostraremos) que afirma que toda funcin f de n variables puede expresarse como:
f (x1 , x 2 ,...., x n ) = x1 x 2 x3 ... x n f (1,1,1,...,1) + x1 x 2 x3 ... x n f (0,1,1,...,1) + x1 x 2 x3 ... x n f (1,0,1,...,1) + .............. + x1 x 2 x3 ... xn f (0,0,0,...,0)
Es decir toda funcin de n variables puede expresarse como la suma de todos sus productos cannicos afectado cada producto cannico por un coeficiente. Este coeficiente es el valor de la funcin evaluado en el punto tal que las variables que en el producto cannico asociado aparecen simples tengan el valor 1 y las que aparecen complementadas el valor 0. Este teorema, de fundamental importancia nos permite enunciar un mtodo de construccin de una expresin que represente una funcin dada. El mtodo es el siguiente: se tienen en cuenta slo los puntos en los que la funcin vale 1 (por el teorema los productos asociados con los puntos en los que la funcin vale 0 desaparecen por estar afectados por un coeficiente nulo: el propio valor de la funcin); en esos puntos se busca el producto cannico asociado que es aquel donde la variable aparece simple si en el punto vale 1 o complementada si vale 0. De esta manera la funcin puede expresarse como suma de los productos cannicos as elegidos. Por ejemplo sea la funcin de tres variables:
a
0 0 0 0 1 1 1 1
b
0 0 1 1 0 0 1 1
c
0 1 0 1 0 1 0 1
F
0 1 0 1 1 0 0 0
abc
abc a bc
36
Notas de Terico
4.9.3
Como todo en el lgebra de Boole, existe un mtodo dual del anterior: el producto de sumas cannicas. En este caso deben considerarse los puntos en los que la funcin vale 0 y buscar las sumas cannicas asociadas que son aquellas en las que la variable aparece simple si tiene valor 0 y complementada si tiene valor 1.
( ab) = a + b
(por De Morgan) a b = (a + b)
Ms interesante an es mostrar que un solo operador, como el NAND, es lgicamente completo. Debemos ver como implementar el NOT y el AND y el OR (representaremos con # el NAND):
a # a = ( a.a ) = a
4.11 Simplificacin.
Hasta ahora hemos visto un mtodo sistemtico de expresar las funciones booleanas como expresin de sus variables. Pero este mtodo no asegura que la expresin lograda sea la ms simple posible. El hecho que la expresin de una funcin sea lo ms simple posible no es algo trivial o caprichoso, es de fundamental importancia en la construccin prctica de circuitos lgicos, por eso analizaremos algunos mtodos para simplificar expresiones booleanas, de manera de aplicarlos a las expresiones obtenidas como sumas de productos cannicos.
4.11.1 Mtodo algebraico. El mtodo consiste en la aplicacin, ms o menos ingeniosa, de transformaciones algebraicas de manera de lograr expresiones ms sencillas. Por supuesto que este no es un mtodo sistemtico, pero es la base, al fin, de los mtodos sistemticos. Resumamos aqu algunas propiedades vistas del lgebra que sern de utilidad en la tarea de simplificar: 1) 2)
f f =0
f + f =1
37
Notas de Terico
3) 4) 5)
g f + gf = f g f + f = f
f + f g = f + g
Veamos un par de ejemplos de como se aplican estas propiedades para reducir expresiones: a) Sea
Por la aplicacin de la propiedad 3 a los primeros dos trminos y a los dos ltimos queda
f 1 = ab + bc
b) Sea
f 2 = bc + abc + abc
f 2 = b(c + a c ) + abc (por la propiedad distributiva)
f 2 = b(c + a ) + abc
f 2 = c(b + ab) + ab
(por la propiedad 5 al parntesis) (por distributiva aplicada dos veces) (por propiedad 5 al parntesis)
f 2 = c ( a + b) + a b
f 2 = ab + ac + bc
Esta sin embargo no es la expresin ms reducida de f2. Vemos como hubiera quedado aplicando la propiedad 3 al primer y cuarto miembro y al segundo y tercero
f 2 = ac + ab
siendo esta s, la expresin ms reducida. Como vemos entonces el procedimiento descrito no asegura reducir la expresin a un mnimo ya que depende de como se elijan las propiedades a aplicar y los trminos sobre los que se aplican.
4.11.2
Mtodos sistemticos.
Los modelos sistemticos se basan en la propiedad 3 g f + g f = f y son bsicamente uno "grfico" (Diagrama de Karnaugh) y otro "algortmico" o "numrico" (Mtodo de QuineMcKlusky) A continuacin veremos una introduccin al mtodo grfico
4.11.2.1
Diagrama de Karnaugh.
Este mtodo consiste en representar en forma grfica una funcin como suma de productos cannicos y hacerlo de tal forma que sea sencillo establecer procedimientos sistemticos para hallar las agrupaciones de trminos ms convenientes para simplificar la expresin. Esto se logra utilizando una cuadrcula en la cual a cada cuadrado elemental corresponde un producto cannico posible y tal
38
Notas de Terico
que al pasar de uno a otro cualquiera de sus cuatro adyacentes solo cambie el valor de una de las variables en juego. Por ejemplo para tres variables la cuadrcula es:
c\ab 00 0 1
01
11
10
En esta cuadrcula se marcan con "1" los lugares para los cuales la combinacin de valores de las variables hace que la funcin valga 1 y el mtodo consiste en buscar agrupar los "unos" formando los rectngulos ms grandes posibles (que tengan todos 1 en su interior), repitiendo este proceso hasta que todos los puntos donde la funcin vale "1" estn comprendidos en algn rectngulo (siendo la cantidad total de rectngulos utilizados la menor posible). Es necesario aclarar que la cantidad de elementos agrupados debe ser una potencia de 2. Nota: el diagrama es circular (los de cada borde son adyacentes con los del borde simtrico) Ejemplos:
cd\ab 00 01 11 10 cd\ab 00 01 11 10
00 1 1
01 1 1
11 1
10
00 1 1
01 1
11 1
10 1
Una vez realizado el proceso anterior la mnima expresin de la funcin se obtiene sumando los trminos asociados a cada rectngulo los cuales son el producto de las variables (simples o complementadas) cuyo valor no cambia en l. Por ejemplo en los diagramas anteriores sera 1) 2)
f 3 = a c + bcd
f 4 = a d + abc + a cd
39
Notas de Terico
c\ab 00 01 11 10 0 1 1 1 1 1
Entonces la funcin queda f 2 = ac + ab la cual coincide, como era de esperar, con la expresin ms reducida hallada por el mtodo "algebraico". La primer expresin de f2 hallada con dicho mtodo tena adems el trmino bc que corresponde al rectngulo formado por los dos extremos inferiores del diagrama que aqu queda evidente que no era necesario puesto que con los otros dos trminos cubrimos todos los puntos donde la funcin vale "1".
40
Notas de Terico
5
5.1
CIRCUITOS COMBINATORIOS
Introduccin
En este captulo presentaremos los elementos bsicos para la implementacin en hardware de las funciones lgicas y ejemplos de cmo se pueden sintetizar funciones ms complejas en base a operaciones ms simples disponibles como "bloques". En general trabajaremos con los "Circuitos Combinatorios", que los definimos como aquellos cuya salida est determinada, en todo instante, por el valor de sus entradas actuales. Antes de presentar la forma de representar las funciones lgicas bsicas, veremos brevemente como se implementan las mismas en trminos electrnicos.
5.2
Transistores
Ya dijimos que el Modelo Circuital del lgebra de Boole permite la construccin mediante "llaves elctricas" de un lgebra isomrfica con el Modelo Binario. Para ello necesitamos que estas llaves puedan ser controladas (es decir accionadas) por los valores que adoptan las variables (que en el modelo estn representados por 0 = no circula corriente y 1 = circula corriente). Para ello el primer mecanismo que se us (de hecho en la computadora MARK I en la dcada del 40) fue el rel (llave electromagntica). El diagrama de un dispositivo de estas caractersticas es:
Al circular una corriente i por el circuito de la izquierda la bobina genera un campo electromagntico que acciona el interruptor, el cul permite el pasaje de la corriente I por el circuito de la derecha. Este esquema corresponde a un rel "normalmente abierto". Existen tambin los rels "normalmente cerrados", en los cuales el mecanismo electromagntico funciona a la inversa: la induccin de la bobina provoca la apertura del interruptor. Si en un sistema con rels tomamos el estado "circula corriente" como 1 y "no circula corriente" como 0, es directo observar que un rel normalmente cerrado implementa la funcin NOT. En ese modelo tambin es sencillo de observar que el siguiente circuito implementa la funcin AND entre dos corrientes ia e ib:
ia
ib
41
Notas de Terico
Los rels fueron luego reemplazados por las vlvulas de vaco. Estos dispositivos fueron los primeros completamente electrnicos utilizados en una computadora: la ENIAC.
Tomado
de
Wikipedia
En el caso de la vlvula de vaco tipo "Triodo" (como la mostrada en el diagrama) la diferencia de potencial entre la "rejilla" y el "ctodo" controlan el pasaje de electrones entre el "nodo" y el "ctodo", con lo cual el triodo es una llave controlada por diferencia de potencial ( "tensin", "voltaje"). A fines de la dcada del 50 se inventa el transistor, el cul, con algunas variantes, es el que se utiliza hasta ahora y que ha permitido alcanzar densidades de millones de unidades por centmetro
cuadrado.
Tomado de Wikipedia (http://es.wikipedia.org/wiki/Imagen:Transistor-photo.jpg)
El funcionamiento de un transistor bipolar aplicado a la lgica digital es bsicamente el de una llave electrnica muy similar a un rel.
B i
C I E
Los transistores se pueden definir, en principio, como "amplificadores de corriente" ya que al circular una corriente i entre la base (B) y el emisor (E) del transistor se produce la circulacin de una corriente I entre el colector (C) y el emisor (E), cumpliendo la relacin:
I = hFE * i
siendo
Notas de Terico
proporcionalidad es vlida en el denominado modo de funcionamiento "lineal" y es utilizada por ejemplo en los dispositivos que trabajan con seales analgicas, como equipos de audio, televisores, etc. El funcionamiento en modo "lineal" depende, bsicamente, del circuito donde el transistor se coloca. Sin embargo en las aplicaciones de lgica digital a los transistores se los hace trabajar en el modo de funcionamiento "saturacin", donde la corriente I alcanza su valor mximo (determinado por otros parmetros del circuito). Por otra parte, y al igual que en las aplicaciones analgicas, la magnitud elctrica que se considera es la diferencia de potencial elctrico (o "voltaje") en lugar de la corriente. Dada la conocida relacin entre diferencia de potencial y corriente elctrica dada por la Ley de Ohm:
V = R * I
Como muchas veces se consideran las diferencias de potencial V con respecto a una referencia comn (denominada "tierra lgica") es que se aplica la relacin anterior en la forma:
V = R * I
Entonces veamos como queda el transistor cuando agregamos resistencias en su base y en su colector:
Ve (diferencia de
potencial o voltaje de entrada) es tal que la corriente entre base y emisor (IBE) genera una corriente entre colector y emisor (ICE) tal que la cada de potencial en la resistencia RC colocada entre el colector y la fuente de alimentacin coincide con la diferencia de potencial de sta. Esto equivale a decir que la diferencia de potencial entre colector y emisor es 0. En realidad en la prctica dicha diferencia nunca puede llegar a ser menor que un cierto valor denominado "voltaje de saturacin colector emisor" (VCEsat), por lo que la condicin de saturacin se da cuando se cumple la relacin:
Ve - VBE = RB * IBE
despejando IBE y sustituyendo resulta:
43
Notas de Terico
En definitiva si se eligen correctamente los valores de las resistencias de base y colector para que el sistema funcione en saturacin para cuando el valor de la entrada sea Ve = VCC se cumplir que: si Ve = VCC entonces Vs = 0 Por otra parte si no circula corriente entre base y emisor tampoco circular corriente entre colector y emisor. Esto significa que no circular corriente por la resistencia de colector y, de acuerdo a la ley de Ohm, no habr entonces cada de potencial entre los extremos de la misma, por lo que se cumplir que: si Ve = 0 entonces Vs = VCC Si consideramos que el voltaje 0 corresponde a un 0 lgico y el voltaje igual al de la fuente VCC corresponde a un 1 entonces vemos que el circuito anterior implementa la operacin NOT.
5.3
5.3.1
Lgicas
Lgica RTL
En base a las ideas manejadas en el circuito del NOT hecho en base a un transistor y resistencias se pueden construir las dems conectivas binarias. En particular dado que el NOR es un operador lgicamente completo alcanza con mostrar como se puede construir con transistores y resistencias para poder afirmar que es posible construir cualquier funcin lgica binaria de esta forma. La construccin de funciones lgicas con esta tcnica, empleando transistores y resistencias, se denomina RTL (Resistor Transistor Logic). Veamos el siguiente circuito en RTL:
Es simple de verificar que el circuito cumple que: si Va = 0 y Vb = 0 entonces Vs = VCC si Va = 0 y Vb = VCC entonces Vs = 0 si Va = VCC y Vb = 0 entonces Vs = 0 si Va = VCC y Vb = VCC entonces Vs = 0 ya que la conduccin de cualquiera de los dos transistores provocar que la cada de potencial en la resistencia de colector lleve el voltaje de salida a 0. Dicho comportamiento en voltajes equivale a la tabla de verdad del NOR. Por tanto hemos logrado mostrar que es posible construir cualquier funcin lgica en base a un diseo RTL.
44
Notas de Terico
5.3.2
Lgica TTL
En la prctica la lgica RTL no se usa porque la utilizacin de las resistencias en la forma que aparecen en el circuito genera una disipacin de calor muy grande (la energa disipada por una resistencia es proporcional al valor de sta y al cuadrado de la corriente que circula por ella de acuerdo a la Ley de Joule). Para mejorar la situacin se busca agregar transistores de forma de utilizar la capacidad de amplificar corriente que poseen para disminuir la corriente circulante por las resistencias. Esta tcnica si bien sigue empleando resistencias, tiene una fuerte dependencia de los transistores para lograr su cometido por lo que se denomina tecnologa TTL (Transistor Transistor Logic). El circuito del NOR queda de la siguiente manera en TTL:
La ms famosa familia de circuitos integrados construidos con lgica TTL se identific con nmeros de 4 5 dgitos que comienzan con 74. Ejemplos: 7400 -> circuito integrado con 4 circuitos NAND de dos entradas 7402 -> circuito integrado con 4 circuitos NOR de dos entradas 7406 -> circuito integrado con 6 circuitos NOT 7408 -> circuito integrado con 4 circuitos AND de dos entradas 7432 -> circuito integrado con 4 circuitos OR de dos entradas 74193 -> circuito contador sincrnico de 4 bits 5.3.3 Lgicas TTL S/LS/ALS
Uno de los problemas de la lgica TTL sigue siendo el relativo alto consumo de energa y su relativa baja performance en alta frecuencia. Esto se mejor con la utilizacin de transistores de mejores prestaciones, denominados Schottky (en honor a su inventor). Esto dio lugar a variantes de la familia 74, conocidas como 74S, 74LS y 74ALS. Las letras adicionales significan: S = Schottky LS = Low power Schottky ALS = Advanced Low power Schottky
45
Notas de Terico
5.3.4
Tecnologa CMOS
La tecnologa Schottky no modific el hecho que siguieran siendo transistores bipolares, los cuales tienen una caracterstica inherente de consumir energa an cuando estn en reposo (sus corrientes de "fuga" son relativamente elevadas). Tambin el hecho de poseer una resistencia interna equivalente cuando est en modo conduccin genera una disipacin de calor alta dependiendo del estado de la salida (es decir cuando conducen no son un conductor perfecto y presentan una resistencia significativa al pasaje de corriente). Por eso luego de algunas dcadas de predominancia de este tipo de transistores en los circuitos integrados, los mismos fueron reemplazados por transistores FET (Field Effect Transistor) construidos en base a tecnologa CMOS (Complementary Metal Oxide Semiconductor). Los transistores construidos con esta tecnologa tienen corrientes de fuga prcticamente nulas por lo que su consumo es despreciable en reposo, y por la forma que se construyen los circuitos con ellos slo disipan energa cuando conmutan (sus salidas pasan de un valor a otro respondiendo al cambio de sus entradas). Por otro lado su resistencia interna es prcticamente nula en modo de conduccin. La desventaja inicial que tenan de mala respuesta a cambios rpidos de sus entradas (o sea mala respuesta en frecuencia) fue superada con el tiempo con lo que han terminado por reemplazar totalmente a los transistores bipolares. Un transistor IGFET (Insulated Gate Field Effect Transistor, tambin conocido como MOSFET) se puede considerar como una llave electrnica controlada por voltaje casi perfecta, cuyo smbolo es:
Los MOSFET de canal-n tienen "lgica positiva", mientras que los canal-p tienen "lgica negativa", ya que funcionan de acuerdo al siguiente esquema:
46
Notas de Terico
La caracterstica sealada de disipar energa solamente en la conmutacin (cambio de estado) se puede observar analizando en el circuito del NOT. Como el voltaje de entrada no cambia inmediatamente de 0 a Vcc o viceversa, hay una fraccin de tiempo durante la cual el voltaje est en valores intermedios que hacen conducir simultneamente a ambos transistores. Ese estado de conduccin intermedio presenta valores de resistencia interna bajos (aunque superiores a la resistencia nula de la conduccin plena). Este fenmeno genera picos importantes de corriente, los cuales circulan por los transistores en un modo de conduccin intermedio, lo que representa, en definitiva, la generacin de calor. Este fenmeno hace que los circuitos integrados fabricados con CMOS tengan una disipacin de calor proporcional a la frecuencia de trabajo del circuito. Por su lado el circuito del NOR es:
5.4
Compuertas
La implementacin en circuitos de las conectivas binarias bsicas se denominan habitualmente "compuertas". As tendremos compuertas AND, OR, NAND, NOR, XOR y NOT.
47
Notas de Terico
Las compuertas se representan por smbolos grficos. Existen dos grandes familias de smbolos, los tradicionales (smbolos "redondeados") y los propuestos por el estndar ANSI/IEEE 911984 / IEC Publication 617-12 (smbolos "rectangulares").
5.5
Los circuitos lgicos combinatorios, o simplemente circuitos combinatorios, son circuitos elaborados a partir de compuertas o de otros circuitos del mismo tipo (usados como "bloque constructivo") cuya salida es una funcin lgica de sus entradas y por tanto las salidas actuales slo dependen del valor actual de las entradas. Los circuitos combinatorios son, en definitiva, la implementacin en hardware de funciones lgicas (funciones booleanas). Los circuitos se representan como "cajas negras" de las cuales se especifican las entradas, las salidas y la funcin booleana que las vincula.
5.6
Una forma siempre aplicable (aunque en algunos casos ms trabajosa) para construir un circuito lgico parte de la funcin booleana a implementar representada, por ejemplo, mediante su tabla de verdad. A partir de ella y mediante Diagrams de Karnaugh (u otro mtodo) se realiza la minimizacin (en dos niveles) de la misma. De esa forma se llega a una expresin de la funcin en base a operaciones NOT y ANDs y ORs (multipuerta). Una alternativa es identificar partes del circuito que se puedan realizar con otros "bloques constructivos" de mayor nivel, tales como sumadores de n bits, multiplexores, decodificadores, comparadores, selectores, etc. Luego se renen y conectan adecuadamente estos bloques minimizando, de ser necesario, la lgica de dichas conexiones mediante Diagrams de Karnaugh. Veremos a continuacin un par de ejemplos de aplicacin de la metodologa.
48
Notas de Terico
5.6.1
c\ab 00 01 11 10 0 1 1 1 1 1
La funcin minimizada queda: M = ab + ac + bc Entonces el circuito en base a compuertas AND, OR y NOT tiene la forma:
5.6.2
Consideremos ahora la funcin booleana determinada por la tabla de verdad, donde s1s0 representa la suma en binario de las entradas a1a0 y b1b0. La salida c es el Carry (acarreo):
a1
0 0 0 0 0 0 0 0
a0 b1 b0
0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1
s1
0 0 1 1 0 1 1 0
s0
0 1 0 1 1 0 1 0
c
0 0 0 0 0 0 0 1
49
Notas de Terico
a1
1 1 1 1 1 1 1 1
a0 b1 b0
0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1
s1
1 1 0 0 1 0 0 1
s0
0 1 0 1 1 0 1 0
c
0 0 1 1 0 1 1 1
00
01 1
00 01 11 10
s0 b1b0\ a1a0
11 1 1
10 1 1
1 1
00 1 1
00 01 11 10
c b1b0\ a1a0
01 1
11 1
10 1 1
00
01
11 1 1 1
10
00 01 11 10
1 1
Por lo que las expresiones mnimas de las salidas son: b v s1 = a1b1b0 + a1a0b1 + a1a0b1b0 + a1a0b1b0 + a1a0b1 + a1b1b0 s0 = a0 0 + 0b0 s0 = a0b0 + a0b0 c = a1a0b0 + a0b1b0 + a1b1 Los esquemas de los circuitos basados en compuertas para las tres salidas en funcin de sus expresiones mnimas se presentan a continuacin.
50
Notas de Terico
Dado que los tres circuitos corresponden al mismo sistema y tienen las mismas entradas, tambin puede considerarse un circuito que reutiliza las compuertas NOT y genera las tres salidas como en el siguiente esquema.
51
Notas de Terico
5.7
Bloques Constructivos
A continuacin veremos algunos ejemplos de circuitos combinatorios tiles para ser utilizados como parte de diseos ms complejos. De hecho estos circuitos, o algunas variantes de ellos, estn disponibles como circuitos integrados independientes, pensando en dicho propsito. Conforman la base del concepto de re-utilizacin que introdujo la electrnica digital hace ms de 4 dcadas y que la industria del software imit con los conceptos de modularidad, re-usabilidad de cdigo y orientacin a objetos.
5.7.1
Circuito Decodificador
N
El circuito decodificador es un circuito con N entradas y 2 salidas. Para el caso de N = 3 tiene el siguiente smbolo:
52
Notas de Terico
A
0 0 0 0 1 1 1 1
B
0 0 1 1 0 0 1 1
C
0 1 0 1 0 1 0 1
Y7 0 0 0 0 0 0 0 1
Y6 0 0 0 0 0 0 1 0
Y5 0 0 0 0 0 1 0 0
Y4 0 0 0 0 1 0 0 0
Y3 0 0 0 1 0 0 0 0
Y2 0 0 1 0 0 0 0 0
Y1 0 1 0 0 0 0 0 0
Y0 1 0 0 0 0 0 0 0
es decir dada una combinacin de unos y ceros a la entrada todas las salidas estarn en 0 salvo la que corresponda al nmero binario coincidente con la combinacin de entradas. En la prctica este circuito est disponible con lgica negativa (las salidas son 1 salvo la seleccionada) y con entradas adicionales funcionando como un demultiplexor (circuito que veremos ms adelante). El circuito "interno" de un decodificador es simple:
53
Notas de Terico
5.7.2
Circuito Multiplexor
El circuito multiplexor es un circuito con N + 2N entradas y 1 salida. Para el caso de N = 3 tiene el siguiente smbolo:
A
0 0 0 0 1 1 1 1
B
0 0 1 1 0 0 1 1
C
0 1 0 1 0 1 0 1
Y D0 D1 D2 D3 D4 D5 D6 D7
es decir que la salida Y toma el valor de la entrada D cuyo ndice coincida con el nmero binario representado por las entradas A, B y C. Las entradas A, B y C se llaman entradas de "control" y las entradas D se llaman de "datos". Se denomina multiplexor porque es capaz de presentar en una sola variable Y cualquiera de N las 2 entradas. Esto tiene aplicaciones cuando la salida Y es un "canal principal de comunicacin", mientras que las entradas D son "sub-canales de comunicacin". Este circuito permite que variando en el tiempo las entradas de control logremos dividir la utilizacin del canal principal entre los subcanales. Esta tcnica se denomina TDM (Time Division Multiplexing). De all que el circuito se denomine multiplexor. Una caracterstica distintiva del circuito multiplexor es su aplicabilidad para la realizacin de funciones lgicas. Consideremos el siguiente circuito basado en un multilexor 8 a 1:
54
Notas de Terico
a
0 0 0 0 1 1 1 1
b
0 0 1 1 0 0 1 1
c
0 1 0 1 0 1 0 1
M 0 0 0 1 0 1 1 1
que coincide con la tabla de verdad del circuito Mayora (a, b, c). Si observamos nuevamente la tabla de verdad resumida del circuito multiplexor constataremos que asignando un valor apropiado a cada una de las entradas del datos D, estamos en condiciones de generar el valor 0 1 correspondiente a cada una de las combinaciones de los bits de control (entradas A, B, C). Esto permite construir cualquier funcin lgica de n variables con un multiplexor de n entradas de control. Los circuitos integrados disponibles (como el 74251) disponen de salida "tri-state" (el concepto de tri-state se ver ms adelante) controlada por una entrada adicional G y una salida de lgica invertida W:
El circuito demultiplexor realiza la tarea inversa al multiplexor. Posee 1 entrada de datos, N entradas de control y 2N salidas, segn el smbolo:
55
Notas de Terico
Su tabla de verdad es muy similar a la del decodificador, con la diferencia que el valor de la salida seleccionada depende de la entrada G:
A
0 0 0 0 1 1 1 1
B
0 0 1 1 0 0 1 1
C
0 1 0 1 0 1 0 1
Y7 0 0 0 0 0 0 0 G
Y6 0 0 0 0 0 0 G 0
Y5 0 0 0 0 0 G 0 0
Y4 0 0 0 0 G 0 0 0
Y3 0 0 0 G 0 0 0 0
Y2 0 0 G 0 0 0 0 0
Y1 0 G 0 0 0 0 0 0
Y0 G 0 0 0 0 0 0 0
En la prctica solamente se consiguen circuitos integrados demultiplexores y no existen decodificadores "puros", ya que con ellos es muy simple construir un decodificador (basta poner la entrada G en 1). Es el caso, por ejemplo, del circuito 74138, el cual tiene las salidas con lgica negada y adems posee dos entradas adicionales de lgica negada (que estn en AND con la entrada de lgica directa):
56
Notas de Terico
Por ms informacin ver el documento: http://www.fairchildsemi.com/ds/DM/DM74ALS138.pdf 5.7.4 Circuito Sumador Completo de 1 bit
Veremos a continuacin un circuito que puede ser utilizado para construir sumadores de n bits, mediante su conexin en "cascada". Para ello deberemos construir un sumador de dos nmeros de 1 bit cada uno con entrada y salida de acarreo (carry). La tabla de verdad de este circuito es:
a
0 0 0 0 1 1 1 1
b
0 0 1 1 0 0 1 1
cin S cout
0 1 0 1 0 1 0 1 0 1 1 0 1 0 0 1 0 0 0 1 0 1 1 1
cin \ab 0 1
cout
00 01 11 10 1 1 1 1
cin \ab 0 1
00 01 11 10 1 1 1 1
(Nota: observar que cout tiene el mismo diagrama que el circuito Mayora) Con esto quedan las ecuaciones: S = cin + b in + abcin + a in S = abcin + abcin + abcin + abcin cout = ab + acin + bcin
57
Notas de Terico
Este es un caso donde se puede observar que el mtodo de Karnaugh permite hallar un circuito mnimo en dos niveles, pero no necesariamente el circuito que tenga el menor nmero de compuertas. Si observamos la expresin de S: S = cin + b in + abcin + a in v S = abcin + abcin + abcin + abcin y trabajamos con ella resulta: S = cin + b i in S = (ab+ab)cin + (ab+ab)cin
El segundo parntesis corresponde a la expresin del xor entre a y b. El primero a la negacin de dicho exor: S = b in v S = (ab)cin + (ab)cin Podemos observar en la expresin anterior que ahora queda el exor entre el exor de a y b con cin. S = (ab)cin Por otra parte la expresin del carry de salida es: cout = ab + acin + bcin que podemos agrupar como: cout = ab + (a+b)cin y esto es equivalente a: cout = ab + (ab)cin (esto se debe a que el nico caso donde a+b es distinto de ab es cuando a y b son 1 simultneamente y all ab es 1 y por tanto el or general da 1 de todos modos).
58
Notas de Terico
que, como se puede observar directamente, posee muchas menos compuertas que la versin anterior. Como nada es "gratis" tambin se observa que el circuito tiene un nivel ms de compuertas (normalmente el nivel de compuertas "not" no se cuenta, por lo que el circuito original tiene 2 niveles y este tiene 3). Esto desde el punto de vista lgico no presenta dificultades. Pero en la prctica existe un fenmeno (tiempo de setup o propagacin) que desaconseja el incorporar ms niveles de compuertas en los circuitos. Este fenmeno lo estudiaremos ms detenidamente en el siguiente punto. Antes de pasar a l veamos como quedara un sumador de 4 bits en base a sumadores de 1 bit:
5.8
tiene su salida siempre en 0. Sin embargo dicho comportamiento terico no se cumple en la realidad, ya que los circuitos electrnicos que implementan las distintas compuertas (y en el caso particular el NOT) no cambian su salida en forma instantnea frente a un cambio en su(s) entrada(s). Existe un cierto tiempo que se requiere para que las distintas etapas del circuito se acomoden al nuevo estado de conduccin y generen las magnitudes (voltaje, corriente) necesarias para llevar la salida al nivel lgico acorde a la
59
Notas de Terico
expresin lgica. Este tiempo recibe distintos nombres, tales como "tiempo de propagacin", "retardo de propagacin", "retardo de conmutacin" o "tiempo de setup". Este tiempo puede ir de menos de 1 ns (nanosegundo, 1 ns = 10E-9 segundos) a ms de 1 s (microsegundo, 1s = 10E-6 segundos), dependiendo de la tecnologa y caractersticas de los circuitos de las compuertas. El efecto que produce el fenmeno se puede visualizar en el siguiente diagrama de tiempo:
Tp
t E
t En el diagrama se ha omitido considerar el retardo de propagacin de la compuerta AND, porque de hecho no interesa a los efectos de analizar el problema. El retardo de propagacin en la compuerta NOT produce que cuando la entrada E cambia a 1, la salida del NOT demora en pasar a 0 un cierto tiempo Tp. Durante ese tiempo ambas entradas del AND estn en 1 con lo cual su salida pasar a 1 (en vez de quedarse en 0 que sera su estado lgico de acuerdo al circuito, si ste fuera ideal). Recin cuando la salida del NOT cambie la salida del AND ir a su valor correcto. El fenmeno produjo un "pulso" a la salida que no debera haber existido. El fenmeno se puede compensar con tcnicas apropiadas de diseo de los circuitos lgicos, las que se basan en compensacin de recorridos de las distintas seales y en agregar compuertas, asociadas a rectngulos redundantes en los diagramas de Karnaugh, de modo de evitar la generacin de estas salidas espreas. Estos fenmenos se denominan genricamente "azares estticos".
Por este fenmeno es que normalmente se prefieren circuitos con pocos niveles de compuertas entre sus entradas y sus salidas. Si pensamos que el circuito de sumador completo de 1 bit que usamos para generar el circuito sumador de 4 bits tiene un retardo Tp, entonces el sumador de 4 bits tendr 4xTp, o en general NxTp, siendo N el nmero de bloques en cascada que se conecten. Al crecer el retardo de propagacin, las salidas demoran ms en ser vlidas y poder ser consideradas como entradas para etapas siguientes. Adems la velocidad a la que podemos cambiar las seales (frecuencia de conmutacin) estar en relacin inversa al tiempo de propagacin, ya que cuanto ms alto este tiempo menor ser la velocidad a la que podr cambiar las entradas (para darle tiempo a que las salidas se estabilicen antes de cambiar nuevamente las entradas).
60
Notas de Terico
6
6.1
MEMORIAS ROM
Introduccin
En este captulo analizaremos un circuito combinatorio especial, que por su variedad de aplicaciones merece un tratamiento diferenciado del resto. Este circuito tiene m entradas y n salidas. Para el caso de m = 14 y n = 8 el smbolo que lo representa es:
Las entradas se identifican por A0 a A13 y las salidas por D0 a D7 (en este caso). Para un caso genrico sera: A0 a Am-1 y D0 a Dn-1. Ms adelante veremos que son y para qu se usan las entradas CS y OE.
6.2
Caractersticas
La tabla de verdad de un circuito ROM est formado por 2m filas y n columnas:
Am1
Am2
Am3
Entradas . .
. . . . . . . . . . . . . . . .
A2 0 0 0 . . 1 1 1
A1 0 0 1 . . 0 1 1
A0 0 1 0 . . 1 0 1
Dn-1 Dn-2 0 1 0 . . 1 0 1 0 0 0 . . 1 1 1
Salidas
. . . . . . . .
D1 0 1 0 . . 1 0 1
D0 0 0 0 . . 1 1 1
0 0 0 . . 1 1 1
0 0 0 . . 1 1 1
0 0 0 . . 1 1 1
La coleccin de 0 y 1 que hemos colocado en las salidas es una cualquiera de las posibles. De hecho podemos representar genricamente una de las salidas como: Dij siendo 0 < i < 2m - 1 0<j<n-1
Esta tabla de verdad puede verse como la descripcin del contenido de un "array" de 2m elementos que tienen n bits cada uno. Como es un circuito combinatorio, los valores concretos de los bits de los elementos (los Dij) son fijos, predeterminados. Por estas dos caractersticas a estos
61
Notas de Terico
circuitos se los llama Read Only Memory (Memoria de Solo Lectura), o, ms brevemente, ROM. Es fcil observar que con una ROM se puede implementar cualquier funcin lgica de m variables de entrada y n salidas. Basta con especificar el "contenido" de la ROM de manera que los n bits de cada palabra (posicin del array) correspondan al valor de la funcin en el punto (que coincide con el ndice del array).
6.3
Circuito Interno
El circuito interno de una ROM tiene, para cada bit de salida, la siguiente forma:
El fabricante de la ROM coloca la entrada de la AND asociada a Dij en 0 en 1, en funcin de la tabla de verdad que le especifiquemos. Para ello conecta la entrada a "tierra" o a "Vcc".
6.4
Variantes Tecnolgicas
Las ROMs as construidas tienen el inconveniente que una vez que se fabrican no es posible cambiar su contenido. Esto no sera un problema significativo cuando usamos las ROMs como circuito combinatorio. Sin embargo el uso habitual de las ROMs es el de almacenar programas fijos (ej: las rutinas de inicio de un computador, el programa almacenado de un controlador de un semforo, un ascensor, un lavarropas, etc). Los programas tienen correcciones y mejoras constantes, por lo que es poco prctico (y poco rentable) tener que producir nuevas ROMs cada vez que hay un cambio. Por ello se fueron desarrollando con el tiempo nuevos circuitos que dieran respuesta a esta situacin: por un lado fueran memorias permanentes (no perdieran su contenido al quedar sin energa elctrica) y por otro pudiera ser modificado su contenido de alguna forma. 6.4.1 PROM
Las PROM son Programmable ROM. Una PROM es una ROM cuyo contenido puede ser definido a posteriori de construida, mediante una actividad de programacin que se realiza utilizando un circuito electrnico especial (un Programador de PROMs).
62
Notas de Terico
En esencia son ROMs que tienen en su entrada Dij a las ANDs de seleccin una conexin tanto a ground (0) como a Vcc (1). Esta conexin est realizada mediante un fusible, el cual se quema al momento de "programar" el contenido de la PROM. Si quiero grabar un 0 quemo el fusible de la conexin a Vcc y si quiero grabar un 1 quemo el fusible de la conexin a tierra. Estos fusibles no pueden reconstruirse. Cuando se graba una PROM con un cierto contenido no hay marcha atrs. 6.4.2 EPROM
Si bien las PROMs significaron un avance, el hecho de no tener "vuelta atrs" an significaba una restriccin para el uso intensivo de PROMs en el almacenamiento de programas. De esa necesidad no del todo satisfecha surgi la tecnologa de las EPROM (Erasable PROM). Una EPROM es una ROM que puede ser borrada. El mecanismo de borrado es totalmente distinto al de programacin e implica un proceso de exposicin del circuito a luz ultravioleta por varios minutos. La gran ventaja es que puede reutilizar las EPROMs muchas veces borrando su contenido y grabando uno nuevo. Para ello las EPROM disponen de una ventana transparente en el encapsulado cermico plstico del circuito integrado.
Esa ventana expone el propio chip de silicio, de forma de poder irradiar adecuadamente el material con luz ultravioleta de forma de revertir las modificaciones fsico-qumicas producidas por el proceso de grabacin por impulsos elctricos, mediante un dispositivo especfico: Programador de EPROMs. Esta ventana est normalmente tapada de forma de evitar exponer el silicio a la luz normal (que contiene componentes ultravioletas) para que el contenido de la EPROM no se altere.
63
Notas de Terico
De todos modos como el fenmeno tambin se produce ante la presencia de otro tipo de radiaciones (como los rayos csmicos) que no pueden detenerse con una etiqueta, el contenido de las EPROMs termina alterndose con el tiempo (aunque, por suerte, este tiempo es sumamente largo, de varias decenas de aos). Como se dijo su principal uso es el almacenamiento de los programas permanentes de un sistema. Su capacidad de desde algunos kilobits hasta del orden de 8 Megabits. Muchas veces estn organizadas en palabras de 8 bits (byte). 6.4.3 EEPROM
Las EPROM si bien solucionan el problema de la re-usabilidad de este tipo de memorias, todava tienen el inconveniente que este proceso es sumamente lento, complejo y requiere retirar la EPROM del sistema para realizar el borrado. Es as que surgieron las EEPROM (Electrical EPROM), o sea una EPROM cuyo proceso de borrado se hace elctricamente y puede efectuarse sin retirar el circuito integrado del sistema. Posee otra diferencia importante con la EPROM: una EEPROM normalmente tiene la capacidad de borrar cada bit en forma individual (tambin hay implementaciones que borran una palabra completa en cada operacin de borrado). Tpicamente se utilizan para almacenar los datos de configuracin de un sistema. Tienen una capacidad de hasta del orden de 128 kbits. Es frecuente que estn organizadas en palabras de un solo bit. 6.4.4 Flash EEPROM / Flash EPROM / Flash Memory
Este tipo de memoria es una variante de las EEPROM que se desarroll con el objetivo de mejorar el tiempo de borrado, de forma de habilitar su uso para aplicaciones de almacenamiento masivo. Si bien el nombre est asociado al concepto de velocidad (lo que se corresponde con lo antedicho), el nombre se origina en la similitud que uno de sus creadores vea entre el proceso de borrado y el destello del flash de una cmara de fotos. Su aplicacin ms difundida es la de almacenamiento masivo (reemplazo de discos duros o disquetes), ya que su tiempo de acceso es varios rdenes de magnitud menor que la de dichos dispositivos. Las capacidades de los chips llegan en la actualidad a del orden de 1 Gbit, y estn organizados en palabras de 8 , ms habitualmente, 16 bits.
Tomado de Intel
En la foto siguiente se puede ver la parte interna de una Memoria USB, que actualmente se usa para almacenar informacin en forma transportable (lo que antes se haca con disquetes).
64
Notas de Terico
6.5
Capacidad y Organizacin
Las memorias ROM estn caracterizadas por una cierta capacidad, que se mide en bits ( Kilobits Megabits) y una determinada organizacin, que se expresa en cantidad de palabras de tantos bits. Ejemplos: - ROM de 8 Kbits, con organizacin de 1Kx8 (1 Kilo palabras de 8 bits) - ROM de 8 Kbits, con organizacin de 4Kx2 (4 Kilo palabras de 2 bits) - ROM de 1 Kbits, con organizacin de 1Kx1 (1 Kilo palabras de 1 bit)
6.6
Arreglos de Memorias
Las memorias se utilizan en combinaciones (arreglos) normalmente denominados "bancos de memoria". Estos bancos permiten la construccin de memorias del tamao requerido por el sistema en base a circuitos integrados disponibles (es habitual que se requiera ms memoria de la que puede suministrar un nico circuito integrado, o que el tamao de palabra necesario sea otro). Es de destacar que estas ideas que estamos desarrollando en el contexto de memorias ROM tambin se aplican a otro tipo de memorias (RAM) que veremos en otro captulo y, en particular, a los modulos de memoria (tipo SIMM, DIMM o similar).
Tomado de www.crucial.com
El los prximos diagramas circuitales aparecern las entradas CS y OE. Como ya hemos mencionado el significado y utilizacin de dichas entradas se ver ms adelante en este mismo captulo. Por ahora consideremos que son entradas que existen en todas las ROMs y deben, por tanto, existir en las ROMs "compuestas" que vamos a disear. 6.6.1 Memoria de mayor tamao de Palabra
En este caso el objetivo es lograr una memoria ROM de n bits de salida a partir de memorias de menor cantidad de bits (su tamao de palabra es menor que el requerido). Veamos como se construye un banco as utilizando un ejemplo: supongamos que queremos construir una ROM de 1Kx8 y disponemos solamente de ROMs de 1Kx4. Lo primero es determinar la cantidad de memorias requeridas. En este caso vemos que la memoria solicitada tiene una capacidad de 8 Kbits y las disponibles de 4 Kbits. Esto da que se necesitaran 2. Por otro lado el anlisis de la organizacin solicitada y la disponible, confirma esta cantidad. No es difcil concluir que el circuito de la ROM de 1Kx8 equivalente es el representado por el diagrama esquemtico a continuacin:
6.6.2
En este caso el objetivo es lograr una memoria ROM de m bits de entrada a partir de memorias de menor cantidad de bits de direccin. Veamos como se construye un banco as utilizando un ejemplo: supongamos que queremos
65
Notas de Terico
construir una ROM de 2Kx8 y disponemos solamente de ROMs de 1Kx8. Al igual que en caso anterior lo primero es determinar la cantidad de memorias requeridas. En este caso vemos que la memoria solicitada tiene una capacidad de 16 Kbits y las disponibles de 8 Kbits. Esto da que se necesitaran 2 al igual que en el ejemplo anterior. Por otro lado el anlisis de la organizacin solicitada y la disponible, confirma esta cantidad. En el caso anterior cada ROM contribua con una parte de los bits de salida. En este caso cada ROM contribuir con una parte del rango de direcciones. La ROM a construir tiene 11 bits de entrada, con un rango de direcciones de 0 a 2047. Cada ROM disponible tiene 10 bits de entrada, con un rango de direcciones de 0 a 1023. Por tanto cada ROM contribuir con la mitad de las posiciones: una de ellas aportar las posiciones de 0 a 1023 y la otra las posiciones de 1024 a 2047. Para seleccionar qu ROM se conecta a la salida utilizamos multiplexores de 2x1, controlados por el bit ms significativo de las entradas de direccin. El circuito que implementa este funcionamiento es:
En el siguiente diagrama los multiplexores se han explicitado en sus equivalentes AND y OR (se ha omitido la repeticin de la estructura de compuertas de forma de no sobrecargar el dibujo):
66
Notas de Terico
6.7
Chip Select
La entrada CS (Chip Select) permite ahorrar en la implementacin la estructura de ANDs que estamos colocando a la salida de las ROMs para elegir cual de ellas conecta a la salida en funcin del bit ms significativo de la direccin. En otras palabras las compuertas ANDs estn incluidas dentro del chip de la ROM y el selector es la entrada CS. Si CS = 0 todas las salidas de la ROM estn en 0, con independencia de las entradas de direccin y del "valor" almacenado en la "posicin" de la ROM indicada por dicha direccin y si CS = 1 las salidas presentan el contenido de la ROM en la posicin sealada por la direccin. En las ROMs ms modernas la entrada CS en 0 tiene un efecto un poco distinto por el cual el circuito interno de la ROM pasa a un estado de bajo consumo de energa y el estado de sus salidas tiene un comportamiento similar al "tri-state" que veremos en el prximo punto. A los efectos del curso consideraremos que el comportamiento es el primero de los descriptos (las salidas pasan a estado lgico 0).
67
Notas de Terico
6.7.1
Aplicacin del Chip Select (CS) a Arreglos de Memorias El circuito de la ROM de 2Kx8 queda simplificado por el uso del CS de esta manera:
6.8
En el ejemplo anterior se ve que las ORs que se colocan a la salida en realidad siempre tienen una de sus entradas en 0. Esto es por la forma de funcionamiento del circuito en donde se utilizan como salida lgica de un selector. Dada esa propiedad alguien podra verse tentado de quitar las OR y unir las salidas. Eso desde el punto de vista lgico no es posible porque sera equivalente a igualar dos variables de valor en principio distinto (una de ellas con valor 0 y la otra con 0 1). Desde el punto de vista del circuito provocara un cortocircuito que posiblemente dae las salidas que se unieran de esa forma. Para poder implementar ORs "cableadas" (sin necesidad de utilizar compuertas) se disearon los circuitos de manera que tuvieran salidas con tres estados posibles (en lugar de los 2 estados lgicos habituales): 0, 1 y Z. El estado Z se denomina tambin "tercer estado", "estado de alta impedancia", "estado indiferente" "tri-state". Los circuitos que tienen este tipo de salida disponen tambin de una entrada denominada OE (Output Enable) o similar. Cuando dicha entrada de control est en 0, la salida pasa al "estado de alta impedancia" y cuando la entrada de control est en 1, la salida est en estado lgico 0 1. Un caso tpico de uso de esta tecnologa es en los "buffers", ya sean directos o inversores:
68
Notas de Terico
6.8.1
Veamos a continuacin como queda del circuito de la ROM de 2Kx8 simplificado por el uso de la lgica de tres estados a travs de la entrada de control OE:
69