lunes, 19 de abril de 2010

Circuitos Integrados - Compuertas Lógicas

Circuitos digitales
Son circuitos electrónicos que trabajan con números, y que con la tecnología con la que están realizados, estos números están representados en binario. En la figura 1 se muestra el esquema general de un circuito digital, que tiene m bits de entrada y n bits de salida.
Si tomamos un circuito genérico y miramos en su interior, podemos ver que está constituido por otros circuitos más simples, interconectados entre sí. En la figura 2 hay un ejemplo de un circuito con 4 bits de entrada y 3 de salida, constituido por otros dos circuitos más simples e interconectados entre ellos.
Estos subcircuitos se pueden clasificar en dos tipos:

  • Circuitos combinacionales
  • Circuitos secuenciales

Figura 1: Un circuito digital, con m bits de entrada y n de salida

Figura 2: Un circuito digital constituido por otros dos circuitos interconectados

Así, podemos decir que todo circuito digital genérico tendrá una parte combinacional y otra parte secuencial. Nos centraremos en los circuitos combinacionales, que no tienen parte secuencial. Estos circuitos se caracterizan porque NO almacenan información.
Las salidas están relacionadas con las entradas a través de una función booleana. Los circuitos secuenciales son capaces de “recordar” números que han recibido anteriormente.

En un circuito combinacional, las salidas dependen directamente del valor de las entradas, y no pueden por tanto almacenar ningún tipo de información, sólo realizan transformaciones en las entradas. Estos circuitos quedan caracterizados mediante funciones booleanas.

Cada bit de salida de un circuito combinacional, se obtiene mediante una función booleana aplicado a las variables de entrada. Así, si un circuito tiene n salidas, necesitaremos n funciones booleanas para caracterizarlo.

COMPUERTAS LÓGICAS

Las computadoras digitales utilizan el sistema de números binarios, que tiene dos dígitos 0 y 1. Un dígito binario se denomina un bit. La información está representada en las computadoras digitales en grupos de bits. Utilizando diversas técnicas de codificación los grupos de bits pueden hacerse que representen no solamente números binarios sino también otros símbolos discretos cualesquiera, tales como dígitos decimales o letras de alfabeto. Utilizando arreglos binarios y diversas técnicas de codificación, los dígitos binarios o grupos de bits pueden utilizarse para desarrollar conjuntos completos de instrucciones para realizar diversos tipos de cálculos.
La información binaria se representa en un sistema digital por cantidades físicas denominadas señales, Las señales eléctricas tales como voltajes existen a través del sistema digital en cualquiera de dos valores reconocibles y representan una variable binaria igual a 1 o 0. Por ejemplo, un sistema digital particular puede emplear una señal de 3 volts para representar el binario "1" y 0.5 volts para el binario "0". La siguiente ilustración muestra un ejemplo de una señal binaria.
Como se muestra en la figura, cada valor binario tiene una desviación aceptable del valor nominal. La región intermedia entre las dos regiones permitidas se cruza solamente durante la transición de estado. Los terminales de entrada de un circuito digital aceptan señales binarias dentro de las tolerancias permitidas y los circuitos responden en los terminales de salida con señales binarias que caen dentro de las tolerancias permitidas.
La lógica binaria tiene que ver con variables binarias y con operaciones que toman un sentido lógico. La manipulación de información binaria se hace por circuitos lógicos que se denominan Compuertas.
Las compuertas son bloques del hardware que producen señales en binario 1 ó 0 cuando se satisfacen los requisitos de entrada lógica. Las diversas compuertas lógicas se encuentran comúnmente en sistemas de computadoras digitales. Cada compuerta tiene un símbolo gráfico diferente y su operación puede describirse por medio de una función algebraica. Las relaciones entrada - salida de las variables binarias para cada compuerta pueden representarse en forma tabular en una tabla de verdad.
A continuación se detallan los nombres, símbolos, gráficos, funciones algebraicas, y tablas de verdad de las compuertas más usadas.

Compuerta AND:

Cada compuerta tiene dos variables de entrada designadas por A y B y una salida binaria designada por x.
La compuerta AND produce la multiplicación lógica AND: esto es: la salida es 1 si la entrada A y la entrada B están ambas en el binario 1: de otra manera, la salida es 0.
Estas condiciones también son especificadas en la tabla de verdad para la compuerta AND. La tabla muestra que la salida x es 1 solamente cuando ambas entradas A y B están en 1.
El símbolo de operación algebraico de la función AND es el mismo que el símbolo de la multiplicación de la aritmética ordinaria (*).
Las compuertas AND pueden tener más de dos entradas y por definición, la salida es 1 si todas las entradas son 1.

Compuerta OR:
La compuerta OR produce la función sumadora, esto es, la salida es 1 si la entrada A o la entrada B o ambas entradas son 1; de otra manera, la salida es 0.
El símbolo algebraico de la función OR (+), es igual a la operación de aritmética de suma.
Las compuertas OR pueden tener más de dos entradas y por definición la salida es 1 si cualquier entrada es 1.

Compuerta NOT:
El circuito NOT es un inversor que invierte el nivel lógico de una señal binaria. Produce el NOT, o función complementaria. El símbolo algebraico utilizado para el complemento es una barra sobra el símbolo de la variable binaria.
Si la variable binaria posee un valor 0, la compuerta NOT cambia su estado al valor 1 y viceversa.
El círculo pequeño en la salida de un símbolo gráfico de un inversor designa un inversor lógico. Es decir cambia los valores binarios 1 a 0 y viceversa.

Compuerta Separador (yes):
Un símbolo triángulo por sí mismo designa un circuito separador, el cual no produce ninguna función lógica particular puesto que el valor binario de la salida es el mismo de la entrada.
Este circuito se utiliza simplemente para amplificación de la señal. Por ejemplo, un separador que utiliza 5 volt para el binario 1, producirá una salida de 5 volt cuando la entrada es 5 volt. Sin embargo, la corriente producida a la salida es muy superior a la corriente suministrada a la entrada de la misma.
De ésta manera, un separador puede excitar muchas otras compuertas que requieren una cantidad mayor de corriente que de otra manera no se encontraría en la pequeña cantidad de corriente aplicada a la entrada del separador.

Compuerta NAND:

Es el complemento de la función AND, como se indica por el símbolo gráfico, que consiste en una compuerta AND seguida por un pequeño círculo (quiere decir que invierte la señal).
La designación NAND se deriva de la abreviación NOT - AND. Una designación más adecuada habría sido AND invertido puesto que es la función AND la que se ha invertido.
Las compuertas NAND pueden tener más de dos entradas, y la salida es siempre el complemento de la función AND.

Puerta XOR

Fijándonos en esta tabla podemos ver lo que hace: esta operación devuelve ’0’ cuando los dos bits sobre los que operan son iguales, y ’1’ cuando son distintos.




miércoles, 7 de abril de 2010

Bibliografía

Bibliografía:
Los microprocesadores Intel avanzados. Barry B. Brey
Organización de computadoras. Un enfoque estructurado. Andrew S. Tanenbaum – Prentice Hall
Organización y arquitectura de computadoras. Garza Rodríguez – Prentice Hall

BIBLIOGRAFIA RECOMENDADA
- M. Morris Mano : Arquitectura de Computadoras
- M.C. Guinzburg : Técnicas Digitales con Circuitos Integrados
- Taub - Schilling : Electrónica Digital Integrada
- A.M. Rojas Lagarde : Diseño Lógico de Circuitos Binarios
- Tokheim : Introducción a los Microprocesadores
- Loewenthal : Introducción a los Microprocesadores
- M.C. Guinzburg : Operación y Programación de Micros, Minis y Grandes Computadoras
- M.C. Guinzburg : Operación y Programación de Computadoras (Edición 4)
- W.A. Triebel - B. Skar : El microprocesador 80386 DX
- Barry B. Brey : Los microprocesadores Intel
- B. B. Brey : Los microprocesadores Intel Avanzados
- R. Martinez Tomas : Lenguajes Ensambladores
- J. Terry Godfrey : Lenguaje Ensamblador para Microcomputadora IBM
- Andrew S. Tanenbaum : Organización de Computadoras
- Peterson : Sistemas Operativos
- Donovan : Introducción a los Sistemas Operativos
- Salas Parrilla : Sistemas Operativos y Compiladores
- Peter Abel : Lenguaje Ensamblador y Programación para PC IBM y Compatibles

Unidad 1

Sistema Binario
Es el Sistema de numeración que utiliza internamente el hardware de las computadoras actuales. Se basa en la representación de cantidades utilizando los dígitos 1 y 0. Por lo tanto, es base es 2 (Numero de dígitos del sistema).
Cada dígito de un número representado en este sistema se denomina Bit (Contracción de Binary Digit).

Operaciones del Álgebra de Boole:
Las propiedades del Algebra de Boole son las siguientes:
CONMUTATIVAS
A+B = B+A
A.B = B.A
ELEMENTO NEUTRO
A+0 = A
A.1 = A
DISTRIBUTIVA
A + (B.C) = (A+B).(A.C)
A.(B+C) = A.B + A.C
ELEMENTO INVERSO
A + A = 1
A . A = 0
NEGACION
0 = 1
1 = 0

Terminología

Unidades de Almacenamiento ó Memoria

1 Bit (es la unidad mínima de almacenamiento, 0/1)
8 Bits = 1 Byte
1024 Bytes = 1 Kilobyte (un archivo de texto plano, 20 kb)
1024 Kilobytes = 1 Megabyte (un mp3, 3 mb)
1024 Megabytes = 1 Gigabyte (una película en DivX, 1 gb)
1024 Gigabytes = 1 Terabyte (800 películas, 1 tb)
1024 Terabytes = 1 Petabyte (toda la información de Google, entre 1 y 2 petabytes)
1024 Petabytes = 1 Exabyte (Internet ocupa entre 100 y 300 Exabytes)
1024 Exabytes = 1 Zettabyte (a partir de aqui no existen comparativas reales)
1024 Zettabytes = 1 YottaByte
1024 YottaBytes = 1 Brontobyte
1024 Brontobytes = 1 GeopByte
1024 GeopBytes = 1 Saganbyte
1024 Saganbytes = 1 Jotabyte

Significado de los términos CISC y RISC:

CISC (complex instruction set computer) Computadoras con un conjunto de instrucciones complejo.
RISC (reduced instruction set computer) Computadoras con un conjunto de instrucciones reducido.

sábado, 3 de abril de 2010

Unidad 1 - Técnicas Digitales

Técnicas Digitales
Desde la época primitiva el hombre sintió la necesidad de contar y realizar cálculos numéricos, los cuales con el transcurso del tiempo resultaban cada vez más complejos y en cuya realización empleó los más diversos métodos. La forma más elemental consistió en contar con los dedos de las manos, que tiene el inconveniente de no poder enumerar conjuntos de más de diez elementos. Como «solución» existía la posibilidad de utilizar a otras personas!!!.
El siguiente paso lo realizaron las antiguas civilizaciones de Egipto y de los valles asiáticos, que consistió en representar los números por grupos de guijarros en montones de diez. Este método con el tiempo derivó en el ábaco, que más evolucionado ha llegado a nuestros días.
Hasta el momento, los documentos más antiguos que se conocen fueron descubiertos en los años 3000 – 2800 ADNE, cerca del antiguo estuario del Eufrates, en Mesopotamia, pudiendo afirmarse que representaban el soporte físico del primer sistema para el control económico de que se tiene noticia: se trata de libros de cuentas y de inventarios redactados en escritura cuneiforme arcadiana en tablillas de arcilla. Paralelamente, aparece en Egipto la escritura jeroglífica, destinada originalmente a inscripciones en monumentos y edificios.
Ya en los años 79 – 78 ADNE, se construye en Roma el Tabularium, adoptándose los rollos de papiro empleados por griegos y egipcios, que pueden considerarse como uno de los primeros archivos centrales de un estado.
En el 868 ya se imprimían libros en China, existiendo como prueba de tal aseveración el Sutra del Diamante, versión china de un texto budista sánscrito.
Los diseñadores de sistemas informativos en cada época histórica se vieron favorecidos por la alta estima y consideración de los gobernantes que valoraban significativamente sus servicios.
Así, el diseñador de sistemas utilizó para almacenar información piedras (India y Tibet), monumentos (Egipto, Mesoamérica), cuerdas (Europa, Tibet, Imperio Inca), madera (Europa) e incluso el cuerpo humano mediante tatuajes (Benin), utilizando siempre en su trabajo la técnica disponible en su tiempo, reflejando el desarrollo de la ciencia en la época que les tocó vivir.

GENERACION 0 Computadoras mecánicas 1642-1945
Del ábaco a la primera calculadora mecánica pasaron varios siglos, atribuyéndose este hecho al físico y matemático Blaise Pascal (1623-62) quien dijo al respecto: "Ofrezco al público una pequeña máquina de mi iniciativa, con la cual, usted sólo, podrá realizar todas las operaciones aritméticas sin esfuerzo y se sentirá aliviado del trabajo que con harta frecuencia ha fatigado su espíritu cuando trabajaba con el ábaco y la pluma".
El siguiente paso lo dio el matemático alemán Liebnitz (1646-1716), quien introdujo a la máquina de Pascal la multiplicación de forma directa con la rueda dentada escalonada y no mediante sumas reiteradas como su predecesora.
Un nuevo avance se logró con los trabajos de Charles Babbage (1792-1817) quien estableció los conceptos básicos de las estructuras de las computadoras digitales y en 1812 propuso la idea de una máquina para tabular funciones matemáticas tales como logaritmos, etc., mediante aproximaciones de polinomios. En 1822 terminó un modelo que podía calcular diferencias con seis dígitos de precisión y posteriormente propuso construir una que utilizaba diferencias de 6to orden con 20 dígitos de precisión, pero perdió el interés en ésta cuando concibió su máquina analítica, conceptualmente más avanzada, pero recibida con escepticismo por sus contemporáneos y que a su muerte pasó al olvido.
La continuación de los trabajos de Babbage lo realizó su colaboradora Augusta Ada (1815-52) -condesa de Lovelace e hija de Lord Byron- la cual desarrolló varios programas para resolver problemas matemáticos avanzados, lo que la convierte en la primera programadora en la Historia de la Computación. Igualmente contribuyó a exponer, incluso con más claridad, las ideas de Babbage entre las que pueden señalarse las siguientes:
La Máquina Analítica no pretende, en absoluto, crear nada. Puede realizar lo que nosotros le mandamos.
En relación con el empleo de ciclos repetitivos y las instrucciones de salto expresó: "La máquina es capaz de hacer un examen, en ciertas circunstancias, para averiguar si se ha producido una contingencia posible, dos o más, y seguir después el rumbo que convenga.
En 1888 tiene lugar otro avance significativo, cuando el estadístico norteamericano Herman Hollerith inventó una máquina que contaba automáticamente los huecos perforados en una tarjeta de papel, lo que permitió utilizar este soporte para introducir información a los sistemas, que estuvo vigente hasta la década de los 70-80 del siglo XX.

Primera generación – bulbos 1945 – 1955
A partir del desarrollo de la electricidad a mediados del siglo XIX y los avances en la electrónica en el siglo XX, la Mecánica comienza a ceder terreno en este tipo de aplicaciones y surgen computadoras que emplean dispositivos electrónicos (diodos de vacío constituidos por dos electrodos encapsulados en una ampolla de vidrio al vacío entre los cuales circula una corriente y las más evolucionadas válvulas de vacío que disponen de rejillas colocadas entre los electrodos para regular la magnitud de la corriente), las cuales aventajan en velocidad, tamaño y fiabilidad a las mecánicas.
Posteriormente, el inglés George Boole desarrolló un sistema algebraico para la representación de operaciones lógicas, que constituyó el germen para el diseño de los circuitos lógicos y de cálculo en las computadoras, y la base matemática en que se apoyan algunos métodos actuales de diseño de sistemas informáticos y de bases de datos.

John Von Neumann (era el matemático más eminente en el mundo) hablaba muchos idiomas y tenía conocimientos de física y podía citar textos completos –se le podía comparar a Leonardo da Vinci. Para él fue obvio que programar computadoras con un gran número de interruptores como lo era EDVAC/ENIAC era lento, tedioso e inflexible. Se dio cuenta que el programa podía representarse en forma digital en la memoria de la computadora, junto con los datos. Percibió también que la torpe aritmética decimal en serie utilizada por ENIAC, en la que cada dígitio estaba representado por 10 bulbos (uno encendido y 9 apagados) podía ser sustituida por una aritmética binaria.

El diseño básico que el presentó por primera vez, se conoce como máquina de von Neumann. Se usó en EDSAC, la primera computadora de programa almacenado y sigue siendo la base de casi todas las computadoras digitales, aún ahora, más de medio siglo después.
La máquina de von Neumann tenía 5 partes básicas: la memoria, la unidad aritmética lógica, la unidad de control y el equipo de entrada salida.

En la década del 40, von Newman culmina la configuración de la arquitectura básica de las computadoras, al combinar los conceptos de programa almacenado y ruptura de la secuencia del programa mediante la toma de decisiones, en tanto en los 50 los trabajos empleando semiconductores condujeron al descubrimiento del transistor, base del desarrollo de los circuitos integrados, lo que permitió el tránsito de las computadoras de válvulas a las basadas en microprocesadores, cuyo surgimiento en los 70 originó una profunda transformación, tanto desde el punto de vista de la arquitectura de los sistemas de cómputo como de las técnicas de cómputo y la informática en su conjunto.

Segunda generación – transitores 1955 1965
El transitor fue inventado en los Bell Labs en 1948 por John Bardeen, Walter Brattain y William Schockley, que fueron galardonados con el premio Nobel de física en 1956. El transitor revolucionó a las computadoras, dejando a las computadoras de bulbos obsoletas.
Así se crearon las PDP-1 tenía la capacidad de graficar puntos en diferentes sitios. Los estudiantes utilizaron las PDP-1 para jugar guerras espaciales, el mundo tuvo su primer juego de video. Luego DEC (digital equipment corporation) introdujo la PDP-8 tenía una importante innovación: un bus único (omnibus) (Bus es un conjunto de alambres en paralelo que sirve para conectar los componentes de una computadora). IBM tenía la versión transitorizada la 7090 y la 7094. También tenía una pequeña máquina orientada hacia los negocios la 1401, que podía leer y grabar intas magnéticas, leer y perforar tarjetas e imprimir salidas. Era muy mala para la computación científica, pero era perfecta para la contabilidad comercial.

En 1964 una nueva compañía CDC (control data corporation) introdujo la 6600, más rápida y poderosa que la 7094 de IBM. El diseñador de la 6600 Seymour Cray, fue una figura legendaria similar a von neumann. Dedicó su vida a crear las supercomputadoras (6600, 7600, Cray-1).

En esta era también sobresale LA BURROUGHS B5000 que intentó incluir el software en el hardware, pero la idea cayó en el olvido, aunque luego surgiría más adelante.
Tercera generación – circuitos integrados 1965-1980
La invención del circuito integrado de silicio ROBERT NOYCE en 1958, hizo posible colocar docenas de transitores en un solo chip. Este empaquetamiento permitió construir computadoras más pequeñas, más rápidas y menos costosas que sus predecesores transitoriados. Algunas computadoras más importantes de esta generación son:
System/360 de IBM diseñada para computación científica como comercial. Contenía muchas innovaciones: la compatibilidad con otros modelos de IBM y la multiprogramación (tener varios programas en la memoria a la vez de modo que mientras no estaba esperando el término de una operación de entrada salida, otro podía realizar cálculos.
Fue también la primera máquina que podía emular (simular) otras computadoras.
Otra característica importante de la 360 fue un espacio de direcciones enormes (16 megabytes) pero luego IBM tuvo que reformular esta forma de direccionar la memoria y cambió a 232 o sea 4 GB de memoria (ahora ya existe de 64) en el libro ya está desactualizado y ya se habla de mas también.

Tercera generación – circuitos integrados 1965-1980
La invención del circuito integrado de silicio ROBERT NOYCE en 1958, hizo posible colocar docenas de transitores en un solo chip. Este empaquetamiento permitió construir computadoras más pequeñas, más rápidas y menos costosas que sus predecesores transitoriados. Algunas computadoras más importantes de esta generación son:
System/360 de IBM diseñada para computación científica como comercial. Contenía muchas innovaciones: la compatibilidad con otros modelos de IBM y la multiprogramación (tener varios programas en la memoria a la vez de modo que mientras no estaba esperando el término de una operación de entrada salida, otro podía realizar cálculos. Fue también la primera máquina que podía emular (simular) otras computadoras. Otra característica importante de la 360 fue un espacio de direcciones enormes (16 megabytes) pero luego IBM tuvo que reformular esta forma de direccionar la memoria y cambió a 232 o sea 4 GB de memoria (ahora ya existe de 64) en el libro ya está desactualizado y ya se habla de mas también.

Cuarta generación – integración a muy grande escala (1980….)
Ya se colocaban millones de transitores en un solo chip. Este avance se dio en computadoras pequeñas y más rápidas. Ya se podía hablar de “computadora personal”
Apple y Apple II diseñadas por Steve Jobs y Steve Wozniak se convirtieron en protagonistas para usuarios caseros y escuelas.
IBM introdujo entones la Personal Computer IBM, que fue la computadora más vendida. IBM no mantuvo el diseño en secreto y fue así como salieron muchos clones de la PC a costos mucho menores (Commodore, Apple, Amiga y Atari), aunque el ímpetu de la IBM PC fue tan grande que las demás fueron arrolladas.
IBM PC venía provisto del sistema operativo MS-DOS provisto en aquel entones por la pequeña corporación Microsoft. Luego pudieron producir un sucesor OS/2 que no tuvo mucha acogida. IBM y Microsoft se separan y Microsoft se dedica a hacer de windows un enorme éxito.
Intel y Microsoft lograron destronar luego a IBM.
A mediados de los 80 sale una nueva idea RISC reemplazando a arquitecturas complejas (CISC)
La industria de las computadoras sigue avanzando.
La rapidez del progreso tecnológico puede moderarse de acuerdo con una observación llamada Ley de Moore, (Gordon Moore, cofundador y director de Intel en 1965). Moore se dio cuenta de que cada nueva generación de chips de memoria se estaba introduciendo 3 años después de la anterior. Cada nueva generación tenía 4 veces mas memoria que su predecesora. Moore se percató de que el número de transitores de un chip estaba aumentando de forma constante y predijo que este crecimiento continuaría durante varias décadas. Hoy en día suele expresarse como que el número de transitores se duplica cada 18 meses (60 % en el nro. de transitores cada año). La ley se sigue cumpliendo.