Por ERICK BETANCOURT
viernes, 15 de octubre de 2010
INTRODUCCION
En el vocabulario de la electrónica actual se manejan dos términos muy relacionados y que representan técnicas distintas para resolver procesos electrónicos: Analógico y Digital. La primera denominación se origina en el vocablo griego ¨Ana-logos¨ y que puede traducirse como ¨relación exacta¨; la segunda se basa en el vocablo del latín ¨digitus¨ y que traduce como ¨dedo¨.
Un ejemplo práctico destinado a graficar lo señalado precedentemente es el siguiente: Un multímetro o tester es el instrumento mayoritariamente utilizado en electrónica para medir parámetros eléctricos básicos y del cual existen dos versiones: el analógico, que señala las magnitudes medidas mediante el desplazamiento de una aguja, y el digital, que entrega el resultado numéricamente a través de un display. Obviamente ambos son los mejores representantes que podemos señalar para establecer la diferencia entre ambas técnicas.
Para darnos una idea de que es un circuito logico podemos ver algunos videos... sobre estos
circuitos.
¿QUE ES UN CIRCUITO LOGICO?
Circuito lógico es aquel que maneja la información en forma de "1" y "0", dos niveles lógicos de voltaje fijos.
"1" nivel alto o "high" y "0" nivel bajo o "low".
Los circuitos lógicos están compuestos por elementos digitales como la compuerta AND (Y), compuerta OR (O), compuerta NOT (NO)......y combinaciones poco o muy complejas de los circuitos antes mencionados.Estas combinaciones dan lugar a otros tipos de elementos digitales como los compuertas, entre otros.
- compuerta nand (No Y)
- compuerta nor (No O)
- compuerta or exclusiva (O exclusiva)
- mutiplexores o multiplexadores
- demultiplexores o demultiplexadores
- decodificadores
- codificadores
- memorias
- flip-flops
- microprocesadores
- microcontroladores
- etc.
La electrónica moderna usa electrónica digital para realizar muchas funciones.
Aunque los circuitos electrónicos podrían parecer muy complejos, en realidad se construyen de un número muy grande de circuitos muy simples.
En un circuito lógico digital se transmite información binaria (ceros y unos) entre estos circuitos y se consigue un circuito complejo con la combinación de bloques de circuitos simples.
- "0" ó "1",
- "abierto" ó "cerrado" (interruptor),
- "On" y "Off",
- "falso" o "verdadero", etc.
Los circuitos lógicos se pueden representar de muchas maneras. En los circuitos de los gráficos anteriores la lámpara puede estar encendida o apagada ("on" o "off"), dependiendo de la posición del interruptor. (apagado o encendido)
Los posibles estados del interruptor o interruptores que afectan un circuito se pueden representar en una tabla de verdad.
Un circuito lógico es una máquina que recibe una o más señales de entradas y produce una señal de salida.
http://www.articuloweb.com/articles.php?art_id=493&start=1
REALIZAN
Los circuitos cuyos componentes realizan operaciones análogas a las que indican los operadores lógicos se llaman "circuitos lógicos" o "circuitos digitales".
Los operadores lógicos básicos son "Y", "O" y "N", los cuales se representan respectivamente con los símbolos: ^, V y -. Por eso, los componentes que realizan operaciones análogas se llaman "componentes básicos". Los componentes que resultan de la combinación de dos o más componentes básicos se llaman "componentes combinados".
Todos los componentes arrojan una señal de salida, pero pueden recibir una o dos señales de entrada. En general, se los llama "compuertas" (en inglés, gates). Las compuertas se construyen con resistores, transistores, diodos, etc., conectados de manera que se obtengan ciertas salidas cuando las entradas adoptan determinados valores. Los circuitos integrados actuales tienen miles de compuertas lógicas.
En el cuadro siguiente se presenta la lista completa de los componentes de los circuitos lógicos. (En letras negritas están los nombres en castellano y en letras normales los nombres en inglés.)
De la asociación de componentes resultan elementos más complejos que ya no se llaman "componentes" sino, por ejemplo: "sumadores" (adders); "decodificadores" (decoders); "multiplexores" (multiplexers); "memorias" (memories); "microprocesadores" (microprocessors). Para representar un circuito lógico se pueden emplear símbolos para componentes (básicos y combinados) y elementos complejos, pero siempre esa representación se puede reducir a otra que sólo incluya los componentes básicos.
A continuación se presenta un applet de Java creado por C. E. Efstathiou, del Departamento de Química de la Universidad de Atenas (Grecia), con el cual el lector puede:
(1) comprobar la validez de las tablas de verdad de los componentes presentada en el cuadro anterior, y experimentar el uso de elementos más complejo.
(1) comprobar la validez de las tablas de verdad de los componentes presentada en el cuadro anterior, y experimentar el uso de elementos más complejo.
Se demuestra que el componente XOR (equivalente al operador "O, en sentido exclusivo") puede ser obtenido por combinación de éstos.
El componente AMORTIGUADOR ("BUFFER") tiene por función cambiar la intensidad de la señal (adaptarla) pero no modifica su interpretación: sigue siendo 0 o 1. Se lo podría llamar "YES" ("SÍ") y representar como NOT NOT (en términos de operadores lógicos,. Por su función en el circuito, un buffer no difiere de un conector (conductor).La palabra compuerta ha sido elegida porque los componentes tienen la función de regular el flujo de información en el circuito.
El componente AMORTIGUADOR ("BUFFER") tiene por función cambiar la intensidad de la señal (adaptarla) pero no modifica su interpretación: sigue siendo 0 o 1. Se lo podría llamar "YES" ("SÍ") y representar como NOT NOT (en términos de operadores lógicos,. Por su función en el circuito, un buffer no difiere de un conector (conductor).La palabra compuerta ha sido elegida porque los componentes tienen la función de regular el flujo de información en el circuito.
DOMINIO LOGICO
El funcionamiento del computador se basa en el dominio de las señales que se describieron en el ejemplo anterior, pero también un computador es mucho más complejo que aquellas señales, el sólo hecho de mirar la pantalla y ver la metáfora del mundo que aquella representa, hace surgir preguntas tales: ¿cómo funciona esto? O sí algo ya se sabe ¿cómo de un dominio tan pequeño, el de las señales, es posible obtener otro tan complejo como lo que se observa en la pantalla?
Para responder aquellas preguntas se debe partir desde el mismo dominio simple de los dos estado originales, el cual es posible representar por un conjunto de símbolos como { 0, 1 } o { V, F }, símbolos que describen a { -1.5 volts, +4.0 volts } respectivamente.
Pero se está frente a la misma situación anterior, sólo se ha cambiado la forma, pero ese conjunto de símbolos no tiene ninguna potencialidad, de ninguna forma es posible construir algo con aquellos símbolos.
Existe, en las matemáticas, un álgebra llamada Algebra de Boole. Fue desarrollada originalmente por George Boole, alrededor de 1850. La importancia de esta álgebra deriva de los trabajos de Claude Shannon en 1937, quién la utiliza para describir los circuitos digitales.
Un álgebra es posible definirla, muy simplificadamente, como un dominio en que además de un conjunto de elementos existe un conjunto de operadores u operaciones que permiten operar con aquellos elementos, generando elementos del propio dominio o de otros.
Así, el Algebra de Boole se describe como el siguiente dominio = ( { 0, 1 }, { And, Or, Not } ), donde el conjunto { And, Or, Not } corresponde al conjunto de operadores. Los símbolos con qué se representan estas operaciones son propios de esta visión simplificada del álgebra, ya que en el original son { ^, v, ~ } o desde el punto de vista del diseño de circuitos en ingeniería los símbolos que se utilizan son { ·, +, - }.
Otra propiedad de un Algebra es la utilización de variables que permiten representar, en general, cualquiera de los elementos del conjunto. Esta característica permite definir nuevas operaciones a partir de las originales o primitivas del álgebra. Así, una variable X definida sobre le Algebra de Boole puede tomar valores { 0, 1 }, por ejemplo X = 1, o X = 0. Para que sea más simple de entender se recomienda considerar 0 = falso y 1 = verdadero.
OPERACIONES BASICAS
And. La operación And requiere que todas las señales sean simultáneamente verdaderas para que la salida sea verdadera. Así, el circuito de la figura necesita que ambos interruptores estén cerrados para que la luz encienda.
Los estados posibles del circuito se pueden modelar en la Tabla de Verdad que tiene asociada. Sabemos que los interruptores sólo pueden tener dos estados, abiertos o cerrados, si el interruptor abierto se representa mediante el cero (0 o falso) y el cerrado mediante el valor uno (1 o verdadero) entonces en la tabla de verdad asociada se puede ver la situación que se describía en el párrafo anterior, cuando se decía que la luz sólo prende cuando ambos interruptores están cerrados, es decir, si A = 1 y B = 1 entonces L = 1.
La compuerta lógica es una forma de representar la operación And pero en el ámbito de los circuitos electrónicos, para ese caso A y B son las señales de entrada (con valores = 0 1) y L es la señal de salida.
Para efectos de este curso, la operación And la representaremos como la función And( A, B ), donde A y B serían los parámetros de entrada (los mismos valores de A y B en el circuito) y L = And( A, B ), correspondería a la forma de asignación de valor a L. En este caso el parámetro de salida es la misma función And.
Or. La operación Or tiene similares características a la operación And, con la diferencia que basta que una señal sea verdadera para que la señal resultante sea verdadera. En la figura se puede ver tal situación.
Note que en el circuito los interruptores están en paralelo, por lo cual basta que uno de ellos esté cerrado para que el circuito se cierre y encienda la luz.
La operación Or también tiene una representación funcional como Or( A, B ) donde A y B serían los parámetros de entrada (los mismos valores de A y B en el circuito) y L = Or( A, B ), correspondería a la forma de asignación de valor a L. En este caso, el parámetro de salida es la misma función Or.
La operación Or también tiene una representación funcional como Or( A, B ) donde A y B serían los parámetros de entrada (los mismos valores de A y B en el circuito) y L = Or( A, B ), correspondería a la forma de asignación de valor a L. En este caso, el parámetro de salida es la misma función Or.
Not: La última de la tres operaciones fundamentales, la cual también se conoce como negación, complemento o inversión, es mucho más simple que las anteriores. En la figura se puede observar el circuito, que en este caso tiene la particularidad de que al estar el interruptor abierto la luz enciende, cuando él está en posición de cerrado la luz permanecería apagada.
La notación funcional para esta operación será Not( A ), donde A corresponde a la señal de entrada y Not( A ) corresponde al valor complementario de A.
Con las operaciones básicas ya definidas es posible redefinir el Algebra de una manera más formal, por ejemplo, dándole el nombre de Dominio Lógico y caracterizandolo de la siguiente manera:
Dominio Lógico ( l ð Dominio Lógico ) = ( { 0, 1 }, { l: And( l, l ), l:Or( l, l ), l:Not( l ) } )
Note que cada una de las operaciones o funciones de este dominio se ha explicitado claramente la cantidad y el tipo de parámetros con los cuales ellas operan (operandos) y el tipo de valor que la operación devuelve, en este caso todos los parámetros son del tipo lógico ( l ).
Así, cuando se habla del dominio del computador al resolver un problema, este dominio tiene como base el dominio recién descrito. Los circuitos electrónicos que dan vida al computador pueden ser representados todos mediante este Dominio Lógico.
OPERACIONES COMPUESTAS
El conjunto de las operaciones del dominio básico se puede extender mediante un mecanismo de composición de operaciones, por ejemplo, se quiere agregar la operación XOR, que corresponde a un OR Exclusivo mediante el cual: si ambas entradas son iguales el resultado es cero (0 o falso) y si ambas son distintas, entonces el resultado es uno (1 o verdadero). Graficamente se puede ver la implementación de la compuesta XOR en la figura:
Es claro, en la figura, la forma de composición de la operación XOR a partir de las operaciones básicas and, or y not en el formalismo gráfico de las compuertas lógicas. También es posible usar el formalismo funcional, que se consideró en la definición el Domino Lógico, para componer la operación XOr:
Or( And( Not( A ), B ), And( A, Not( B ))); donde A, B ð Dominio Lógico
De hecho, si se quiere extender el conjunto de las operaciones del Dominio Lógico sería necesario expresar, la operación XOr, en el mismo formato que las operaciones primitivas; sin ser muy rigurosos bastaría con una asignación para que con ello se tenga una forma de definir nuevas operaciones en base a las ya existentes:
XOr( A, B ) ð Or( And( Not( A ), B ), And( A, Not( B ))) ; donde A, B, XOr ð Dominio Lógico
El símbolo ð permitiría trasladar toda la funcionalidad de la expresión a la nueva operación, incluidos los parámetros de entrada y salida (A, B como parámetros de entrada y el nombre de la operación XOr como parámetro de salida). Con la operación XOr ya definida es posible, entonces, ampliar la definición del Dominio Lógico:
Dominio Lógico ( l ð Dominio Lógico ) = ( { 0, 1 }, { l: And( l, l ), l:Or( l, l ), l:Not( l ) l:XOr( l, l ), } )
Por lo cual XOr podría ser utilizado para componer nuevas operaciones de este mismo dominio o, eventualmente, de otros..
CONSTRUCCION DE NUEVOS DOMINIOS
Pese a que se ha formalizado un dominio básico y, además, se ha creado nuevas operaciones dentro de ese dominio, aún no se cumple el objetivo de poder aproximar el mundo de señales del computador a nivel de complejidad actual observado.
En los puntos anteriores se revisó la forma de representación de los números enteros, la cual se basaba en una memoria organizada en palabras de 8 bits. Es decir, si se considera que cada una de las señales básicas puede ser utilizada para componer un bit, entonces sería necesario 8 señales para poder componer un número, donde cada una de estas señales podría tomar los dos estados posibles y, dependiendo de la posición en que ella esté -recuerden lo hablado sobre sistemas numéricos posicionales- tendría más o menos incidencia en el valor del número a representar, por ejemplo, el siguiente número binario, representa al 165 decimal -según la transformación estudiada:
xb = 10100101
X10 = V(xb) = 1× 27+0× 26+1× 25+0× 24+0× 23+1× 22+0× 21+1× 20 = 165
X10 = V(xb) = 1× 27+0× 26+1× 25+0× 24+0× 23+1× 22+0× 21+1× 20 = 165
Con esta forma de representación es posible entonces sintetizar un conjunto de números enteros a partir de las señales originales, combinándolas. En este caso el conjunto de enteros puede ser uno que vaya desde 0 a 255, pero si se amplia el número de señales paralelas consideradas, este espectro se puede aumentar o, considerando el signo, se pueden incluir números negativos.
Así, para crear el conjunto de los números enteros a partir del conjunto de las señales se debe organizar éstas en cadenas paralelas -la forma usual de los buses dentro del computador- donde la posición de cada una tiene un peso específico en la síntesis del número que se está representando. En la notación que se está propugnando, un conjunto de estas cadenas puede ser visto de la siguiente forma:
Dominio Enteros Binarios ( nb Î Dominio Enteros Binarios) = ( { Ln...L7L6L5L4L3L2L1L0 / Li Î Dominio Lógico} )
Ahora, si bien existe una representación factible de números enteros a partir de las señales primitivas, un dominio de los enteros (que en este caso se ha denominado enteros binarios por no estar expresados en base decimal) no está completo si es que no existen operaciones que permitan manejarlos, por lo cual es necesario componer tales operaciones a partir de del dominio lógico o de las mismas operaciones ya desarrolladas para este dominio.
SUMA EN LOS ENTEROS BINARIOS
La suma de dos números binarios se realiza de la misma manera que la suma en los números decimales. Por ejemplo, la siguiente es una suma decimal:
3 7 6 los números en negrillas corresponden a los dígitos menos significativos + 4 6 1
8 3 1
8 3 1
Los dígitos en las posiciones menos significativos son operados primero, produciendo la suma 7. Luego, los dígitos en la segunda posición son sumados para dar el resultado 13, que produce un acarreo de 1 hacia la tercera posición, lo que produce la suma 8.
Los mismos pasos generales son seguidos en la suma binaria. Sin embargo, aquí sólo hay que considerar cuatro casos al sumar dos dígitos binarios:
0 + 0 = 0
1 + 0 = 1
1 + 1 = 0 + acarreo de 1 (uno) a la siguiente posición
1 + 1 + 1 = 1 + acarreo de 1 (uno) a la siguiente posición
1 + 0 = 1
1 + 1 = 0 + acarreo de 1 (uno) a la siguiente posición
1 + 1 + 1 = 1 + acarreo de 1 (uno) a la siguiente posición
El último caso ocurre cuando dos bit de una cierta posición tienen 1 (uno) y además hay un acarreo desde la posición previa. Los siguientes son varios ejemplos de sumas de dos números binarios:
011 (3) 1001 (9) 11,011 (3,375) +110 (6) +1111 (15) +10,110 (2,750)
1001 (9) 11000 (24) 110,001 (6.125)
1001 (9) 11000 (24) 110,001 (6.125)
No es necesario considerar la suma de más de dos números binarios al mismo tiempo, ya que todos los sistemas de circuitos digitales que actualmente ejecutan la suma sólo pueden manejar dos números a la vez. La suma es una de las operaciones aritméticas más importantes en los sistemas digitales, de hecho, las operaciones de resta, multiplicación y división pueden ser definidas en base a la suma.
Si se quiere entonces sumar dos números enteros binarios en un computador, es necesario para ello que exista la operación suma de enteros binarios. De manera análoga a como se definió la operación XOr, es posible definir ahora una operación de suma.
LA UNIDAD ARITMETICA
Todas las operaciones aritméticas se realizan en la unidad aritmética, también conocida como unidad aritmético-lógica -ver punto 1.2 de este apunte-, de un computador. La Figura No. 9 es un diagrama de bloques que describe los principales elementos incluidos en una unidad aritmética típica. El principal propósito de una unidad aritmética es aceptar datos binarios que están almacenados en memoria y ejecutar las operaciones aritméticas sobre aquellos datos de acuerdo a las instrucciones dadas desde la unidad de control.
La unidad aritmética tiene al menos dos registros de flip-flops: el registro B y el registro acumulador. Además contiene los circuitos lógicos que permiten ejecutar las operaciones sobre los números binarios almacenados en ambos registros. La típica secuencia de ejecución para una suma (ADD) puede ser la siguiente:
- La unidad de control recibe una instrucción (desde la unidad de memoria) indicando que un número almacenado en una ubicación particular de memoria (dirección) deberá ser sumado a el número actualmente almacenado en el acumulador.
- El número a ser sumado es transferido desde la memoria al registro B.
- El número en el registro B y el número en el acumulador son sumados en los circuitos lógicos (comandados desde la unidad de control). La suma resultante en enviada al acumulador para ser almacenada.
- Al nuevo número en el acumulador se le puede sumar otro, o si el proceso aritmético en particular ha terminado, el número puede ser transferido a memoria para almacenarlo.
Estos pasos demuestran de donde el registro acumulador deriva su nombre. Este registro "acumula" los valores que resultan de ejecutar sucesivas sumas entre nuevos números extraídos desde memoria y el resultado de las sumas anteriores almacenado en el acumulador. Para cualquier problema aritmético que contienen varios pasos, el acumulador siempre contiene el resultado de los pasos intermedios, así como el resultado final cuando la ejecución ha terminado.
jueves, 14 de octubre de 2010
UN SUMADOR BINARIO EN PARALELO
Los computadores y calculadoras implementan la operación de suma sobre dos números binarios al mismo tiempo, donde cada numero binario puede tener varios dígitos binarios. En la tabla se muestra la suma de dos números binarios de cinco bits. Uno de los operandos es almacenado en el acumulador; esto es, el acumulador contienen cinco Flip-Flops, almacenando, en cada uno, los dígitos 10101. De la misma forma el otro de los operandos, el que será sumado al primero, es almacenado en el registro B (en este caso, 00111).
El proceso de suma comienza por la suma de los bit menos significativos de ambos operandos. Así, 1+1 = 10, que significa que la suma para esa posición es 0 y el acarreo es 1.
| 1º Operando, almacenado en el acumulador | 1 | 0 | 1 | 0 | 1 |
| 2º Operando, almacenado en el Registro B | 0 | 0 | 1 | 1 | 1 |
| Suma | 1 | 1 | 1 | 0 | 0 |
| Acarreo (para ser agregado a la siguiente posición) | 0 | 0 | 1 | 1 | 1 |
A cada paso en el proceso de suma se realiza la adición de tres bits; los dos de los operandos y el de carry que viene de la posición previa. El resultado de la suma de estos 3 bits produce 2 bits: un bit de suma y otro de carry que deberá ser sumado a la siguiente posición. Este mismo proceso es usado para cada posición. Ahora, si se quiere diseñar un circuito lógico que permita implementar este proceso, entonces simplemente se deberá usar el mismo circuito para cada una de las posiciones. Esto se ilustra en la Figura No. 10.
En este diagrama las variables Ai representan los bits del operando almacenados en el acumulador (que también puede ser llamado el registro A). Las variables Bi representan los bits del segundo operando almacenados en el registro B. Las variables Ci representan los bits de carry entre las correspondientes posiciones. Las variables Si son los bits de la suma para cada posición.
Los circuitos Full-Adder usados en cada posición tienen tres entradas: un bit A, un bit B y un bit C; y producen dos salidas: un bit de suma (S) y un bit de carry (C). Por ejemplo, el Full-Adder No. 0 tienen como entradas A0, B0 y C0, y produce las salidas S0 y C1. Lo anterior se repite para todos los bits de los operandos. Actualmente los computadores usan palabras de 32 y 64 bits, al contrario del de la figura que sólo es un sumador de 5 bitsLo.
Diagrama de Bloques de un sumador paralelo de 5-bits usando full-adders.
El arreglo de la figura No. 10 se llama sumador paralelo (parallel adder) por que todos los bits de los operandos se usan simultáneamente en todos los circuitos. Esto significa que la suma en cada posición ocurre al mismo tiempo. Que es distinto de las sumas que se hacen en papel. Ya que se toma cada posición una a la vez, comenzando desde las posiciones menos significativas.
El diseño de un Full-Adder
El diseño de un Full-Adder es un típico problema de ingeniería -en este caso de electrónica- y resulta muy interesante y didáctico seguirlo paso a paso, se recomienda para ello consultar el libro "Digital Systems: Principles and Applications" de Ronald J. Tocci en las páginas 146 y 147.
Lo primero que se hará es construir una Tabla de Verdad que muestre los valores de entrada y salida para todos los casos (recuerde que sólo se intenta diseñar un Full-Adder). En la siguiente tabla se puede ver aquello, con tres entradas (A, B y Cin) y dos salidas (S y Cout). Existen ocho posibles casos para las tres entradas, y para cada caso se desea la salida listada en los valores de salida. Por ejemplo, considere el caso A = 1, B = 0, y Cin = 1. Un Full-Adder (que abreviaremos FA) puede sumar estos bits para obtener las salidas S = 0 y Cout = 1.
A | B | Cin | S | Cout |
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 0 |
0 | 1 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 1 |
1 | 1 | 0 | 0 | 1 |
1 | 1 | 1 | 1 | 1 |
Como existen dos salidas, se puede diseñar el circuito por cada salida individualmente, comenzando con la salida de la suma S. Por la tabla de verdad se ve que hay cuatro casos donde S tiene valor 1. Si se compone una expresión para ello, usando el Dominio Lógico, y luego de refinarla, según un método que no es el caso desarrollar acá, se obtienen la siguiente expresión final:
S = Xor( A, Xor( B, Cin )) (a)
Si se considera ahora la salida Cout, también se puede componer una operación, en el dominio lógico, que permita realizarla:
Cout = Or( And( B, Cin ), Or( And( A, Cin ), And( A, B ))) (b)
Las expresiones a y b pueden ser implementadas como se muestra en la Figura No. 11, cada Full-Adder de la Figura No. 10 puede ser implementado según el circuito lógico que aparece en esta figura.
Para desarrollar este circuito en términos del formato que se ha estado propugnando para los dominios, es necesario ampliar a la capacidad de definición de operaciones. Para ello es necesario que las nuevas operaciones, además de permitir combinaciones directas de las ya definidas, permitan otro tipo de combinaciones con más poder de cómputo. Ese es el objetivo de los lenguajes de Programación, permitir ampliar la capacidad de definición de nuevos dominios y operaciones, de manera que esta ampliación permita ampliar a su vez el espectro de los problemas posibles de abordar mediante el uso de un computador.
Suscribirse a:
Comentarios (Atom)







