1 ELECTRONICA DIGITAL DISCRETA Y PROGRAMABLE (10 Hrs) CAPITULO 5 Objetivo: El estudiante enunciará los fundamentos del diseño de circuitos lógicos y sus aplicaciones más comunes. Conocerá y aplicara la electrónica digital programable enfocada al uso de un microcontrolador. 5.1 Sistemas de numeración: decimal, binario y hexadecimal. Numeración Sistema de símbolos o signos utilizados para expresar los números. Numeración Arábiga El sistema corriente de notación numérica que es utilizado hoy y en casi todo el mundo es la numeración arábiga. Este sistema fue desarrollado primero por los hindúes y luego por los árabes que introdujeron la innovación de la notación posicional. Notación posicional. La notación posicional solo es posible si existe un número para el cero. El guarismo 0 permite distinguir entre 11, 101 y 1001 sin tener que agregar símbolos adicionales. En la notación posicional los números cambian su valor según su posición, por ejemplo el digito 2 en el número 20 y el mismo digito en el 2,000 toma diferente valor. Formula General Los sistemas numéricos que utilizan la notación posicional se pueden describir con la siguiente fórmula: N = a ir i N a i-1r i 1 ...a 2 r 2 a1r 1 a 0 r 0 i 0 aRi i n1 N = Numero i = Posición a = coeficiente n = el número de dígitos R = Raíz ó Base Ejemplo de notación posicional 1. Subíndice para indicar a que base pertenecen los números de notación posicional se usa el subíndice. 385(10) es el numero trescientos ochenta y cinco de base diez, el subíndice (10) indica que pertenece al sistema decimal. 2. Identificación de la posición de cada digito, símbolo o coeficiente i En el número 82457.319 para asignar el valor de la posición se toma de referencia el punto decimal de manera que con el punto decimal hacia la izquierda asignamos el valor de cero incrementándose en uno por cada digito hacia la izquierda hasta llegar a +n y del punto decimal a la derecha iniciaremos asignando al primer digito el valor de menos uno (-1) y decrementándose en una unidad por cada dígito a la derecha hasta llegar a –n, como lo muestra la figura Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 2 Aplicación de la Formula General Ejemplo 385(10) En donde el digito 5 ocupa la posición cero, el 8 la uno y el 3 la posición dos, como lo indica la figura. Al aplicar la fórmula general obtenemos: N = 3 102 8 101 5 100 300 80 5 385 N i 0 aRi i n 1 En donde se puede observar que el número adquiere valor dependiendo la posición que guarde, como el 3 que está en la posición 2 se multiplica por 100 que es 102como lo llamamos tradicionalmente centenas, al 8 de posición uno por 101, o decenas al 5 de posición cero 100 unidades. Además del sistema decimal existen otras bases de notación posicional que son empleadas en los sistemas digitales como: Binario o base 2 que consta de solo dos símbolos 0 y 1. Octal o base 8 consta de ocho símbolos (0, 1, 2, 3, 4, 5, 6, 7) y es una representación corta del binario y por ejemplo 111101110(2) = 756(8). Para las máquinas es más fácil trabajar con unos y ceros que representarían voltaje o no voltaje mientras que para nosotros es más cómodo decir solo 756 en lugar de todo el número binario. Hexadecimal o base 16 consta de 16 símbolos (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F), es la representación corta más usada del binario y Ejemplo 111101111010(2) = F7A(16). 5.1.1 Números binarios Solo dispone de símbolos “1” y “0” se le llama bit Bit (Binary unit).Mínima cantidad de información que se puede representar. Tiene 2 valores: 0 y 1. Para representar más información hay que usar conjuntos de bits. Agrupaciones de bits: Nibble (4 bits), Byte (8 bits). Kilobit (Kbit) (1024 bits), Kilobyte (Kbyte) (1024 bytes). 64 Kbytes (65536 bytes). www.fim.umich.mx Facultad de Ingeniería Mecánica Ignacio Franco Torres 2012-2013 Edificio W Ciudad Universitaria Email: fim@umich.mx ifranco@correo.fie.umich.mx Morelia, Michoacán Tel: 4433223500 ext 3107, 3109, 3111 3 Representación de datos mediante bits: Colores = {Blanco, Amarillo, Rojo, Verde, Azul, Negro} Blanco => 000; Verde => 100; Amarillo => 010; Azul => 101; Rojo => 011; Negro => 111; ¿Cuál es número de bits mínimo que se necesita para representar un conjunto de datos? 1 bit. 2 combinaciones:(0, 1). Hasta 2 datos. 2 bits. 4 combinaciones: (00, 01, 10, 11). Hasta 4 datos. 3 bits. 8 combinaciones: (000, 001, 010, 011, 100, 101, 110, 111). Hasta 8 datos. N bits: 2N combinaciones. Hasta 2N datos. Dado un conjunto de datos de M elementos se necesitan al menos N bits, donde M ≤ 2N, para codificarlo en binario. Representación de números en punto fijo. Se supone el punto decimal fijo en una posición. Normalmente los números se describen en base decimal ó base 10: En cualquier otra base “r”: En base 2: Los términos ai corresponden a los dígitos del número mientras que los términos r(10ió 2i) corresponden al peso del dígito en el número. Números en base 10 Números en base 2 Paso de la parte entera de base 10 a base 2 por división iterativa: al dividir un número por la base aparece el coeficiente más bajo en el resto de la división. Dividir iterativamente hasta que el cociente de la división sea 0. Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 4 (an ... a3 a2 a1 a0 )/ r = (an ... a3 a2 a1 . a0 ) 23/2=11. 11/2=5 5/2=2. 2/2=1. 1/2=0. Resto 1; Resto 1; Resto 1; Resto 0; Resto 1; a0 = 1 a1 = 1 a2 = 1 a3 = 0 a4 = 1. Fin de División (23)10 = (10111)2 = 16 + 4 + 2 + 1 Paso de la parte fraccionaria de base 10 a base 2 por división iterativa: al multiplicar un número por la base aparece el coeficiente más bajo en la parte entera del producto. Multiplicar iterativamente hasta que la parte fraccionaria del producto sea 0. (0.a1 a2 a3..an )* r = (a1.a2 a3 .. an ) 0.34375 * 2 = 0.6875. 0.6875 * 2 = 1.375. 0.375 * 2 = 0.750. 0.75 * 2 = 1.50. 0.50 * 2 = 1.00. Parte fraccionaria es 0. Parte entera 0; a-1 = 0 Parte entera 1; a-2 = 1 Parte entera 0; a-3 = 0 Parte entera 1; a-4 = 1 Parte entera 1; a-5 = 1 Fin de Multiplicación (0.34375)10 = (0.01011)2 5.1.2 Formato Octal y Hexadecimal El uso de estas bases reduce el número de dígitos para representar un número binario. La base 8 (octal) utiliza dígitos de 0 a 7. Se pasa de base 2 a base 8 agrupando los bits de 3 en 3, y de base 8 a base 2 desagrupando los dígitos de 3 en 3 bits: (101001110011)2 => (101)(001)(110)(011) => (5 1 6 3)8 (2704)8 => (010)(111)(000)(100) => (10111000100)2 La base 16 (hexadecimal) utiliza dígitos de 0 a 15, para ello toma 0-9, A (10), B (11), C (12), D (13), E (14) y F (15). Se pasa de base 2 a base 16 agrupando los bits de 4 en 4 y de base 16 a base 2 desagrupando los dígitos de 4 en 4 bits: (101001110011)2 => (1010)(0111)(0011) => (A 7 3)16 (E51C)16 => (1110)(0101)(0001)(1100) => (1110010100011100)2 5.2Aritmética binaria. (Suma, resta, multiplicación y división por la base) 5.2.1 Suma Binaria Cuando sumamos dos operandos A y B de 1 bit se genera la siguiente tabla según los valores de A y B. En ella 1 + 1 = 2, que debe codificarse en dos bits. Luego hay dos bits de salida: Suma S de peso 1. Acarreo de salida Co (“carryout”) de peso 2. Cuando sumamos dos operandos A y B de más de 1 bit, su primer bit se suma mediante un semisumador. El resto de los bits requieren tres bits de suma: los dos bits de los operandos y la salida de acarreo del bit Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 5 anterior que opera como acarreo de entrada Ci (“carry in”). El máximo valor de la salida es 3 luego se requieren dos bits de salida como en el semisumador. Ahora se puede sumar bit por bit desde el menos significativo (LSB, menor peso) hacia el más significativo (MSB, mayor peso) 0+0=0 0+1=1 1+0=1 1+1=0 y llevamos (Carry) 1 ó sea 1+1=10 Reglas de la Suma 11 +10 101 111 +101 1100 1011 11110 111111 1111101 +1101 +10101 +010101 +1111000 11000 110011 1010100 11110101 Ejemplos 5.2.2 Resta Binaria Suponemos una resta M-S con dos operandos: Minuendo (M) y Sustraendo (S), donde M ≥S. Al restar de LSB a MSB en 1 bit puede pasar que S > M (0-1), lo que obliga a pedir un bit de préstamo B (“Borrow”) al siguiente bit, para realizar 10-1 = 1. En el bit que ha realizado el préstamo, se tiene que hacer primero M-B, (con la posibilidad de generar préstamo de salida), al resultado se le resta S. Ahora se puede restar bit por bit desde el menos significativo (LSB, menor peso) hacia el más significativo (MSB, mayor peso) 11 -10 001 111 +101 0010 1011 11110 111111 1111101 +1101 +10101 +010101 +1111000 11110 01001 101010 0001000 Ejemplos 5.2.3 Multiplicación Binaria Cuando se multiplican dos operandos A y B de 1 bit se genera un resultado de 1 bit según los valores de A y B. Para multiplicar operandos de más de 1 bit se utiliza el mismo algoritmo que en la multiplicación decimal, se generan los productos parciales y luego se suman. Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 6 Ejemplo 5.2.4 División Binaria Igual que en el producto, la división es muy fácil de realizar, porque no son posibles en el cociente otras cifras que UNOS y CEROS. Consideremos el siguiente ejemplo, 42 / 6 = 7, en binario: Se intenta dividir el dividendo por el divisor, empezando por tomar en ambos el mismo número de cifras (100 entre 110, en el ejemplo). Si no puede dividirse, se intenta la división tomando un dígito más (1001 entre 100). Si la división es posible, entonces, el divisor sólo podrá estar contenido una vez en el dividendo, es decir, la primera cifra del cociente es un UNO. En ese caso, el resultado de multiplicar el divisor por 1 es el propio divisor. Restamos las cifras del dividendo del divisor y bajamos la cifra siguiente. El procedimiento de división continúa del mismo modo que en el sistema decimal. 5.3 Elementos del álgebra Booleana. Funciones Booleanas. 5.3.1 Funciones básicas y derivadas. Funciones en la que las variables independientes son variables lógicas, y el valor de la función o variable dependiente también es una variable lógica. Z=f(A,B,C,…,N) Donde: Z,A,B,C,…, N son variables lógicas Sirven para la representación de problemas lógicos Una función lógica es una expresión matemática que evalúa cuando una variable lógica toma el valor lógico Verdadero en función de los valores (Verdadero o Falso) de otras variables lógicas operados mediante las operaciones AND, OR y NOT. Normalmente, para escribir las funciones lógicas se usan los valores (0, 1) y los operadores típicos (- , •, +) del álgebra de conmutación (de mayor a menor prioridad). Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 7 Puertas Lógicas • Para una representación circuital de las funciones lógicas se utilizan puertas lógicas. Los circuitos lógicos se generan como una conexión de puertas lógicas. Existen: Funciones lógicas de 1 variable Funciones lógicas de 2 variables Se les llama funciones lógicas básicas o puertas lógicas básicas a las funciones: NOT, AND y OR y funciones lógicas derivadas o puertas lógicas derivadas a las: BUFFER, NAND, NOR, EXOR, EXNOR ó NEXOR. Se les llama funciones lógicas universales o puertas lógicas universales: a las NAND y NOR porque con ellas se pueden construir todas las funciones que se deseen. Funciones lógicas de más variables como la mostrada para alarma del auto 5.3.2 Algebra Booleana. Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 8 Leyes básicas del Álgebra de Boole: Leyes conmutativas de la suma y multiplicación. Leyes asociativas de la suma y multiplicación. Ley distributiva. • Son las mismas que las del álgebra ordinaria. Leyes Conmutativas •El orden en que se aplica a las variables la operación OR es indiferente: Ley conmutativa de la suma para dos variables: • El orden en que se aplica a las variables la operación AND es indiferente: Ley conmutativa de la multiplicación para dos variables: Leyes Asociativas • Al aplicar la operación OR a más de dos variables, el resultado es el mismo independientemente de la forma en que se agrupen las variables: Ley asociativa de la suma para tres variables: • Al aplicar la operación AND a más de dos variables, el resultado es el mismo independientemente de la forma en que se agrupen las variables: Ley asociativa de la multiplicación para tres variables: Ley Distributiva • Aplicar la operación OR a dos o más variables y luego aplicar la operación AND al resultado de la operación y a otra variable aislada, es equivalente a aplicar la operación AND a la variable aislada con cada uno de los sumandos y luego aplicar la operación OR a los productos resultantes. • Esta ley también expresa el proceso de sacar factor común, en el que la variable común se saca como factor de los productos parciales. Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 9 Ley distributiva para tres variables: Reglas Básicas del Álgebra de Boole • Muy útiles para la manipulación y simplificación de expresiones booleanas. 1 2 3 4 5 6 =1 7 =A 8 =0 9 =A Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 10 10 11 12 =A =A Regla 4 =A+(A+ )B =A+1 B =A+B =A+AC+AB+BC =(A+AC)+AB+BC =A+AB+BC =(A+AB)+BC =A+BC 5.3.3 Funciones booleanas. Un problema lógico se corresponde con un enunciado en el que se puede describir el problema mediante relaciones (funciones) entre variables que se pueden definir mediante los valores verdadero y falso (variables lógicas). La alarma de un coche se enciende cuando se cierran las puertas sin ajustar los cinturones de seguridad, ó cuando se enciende el motor estando las puertas abiertas. Al (alarma encendida) Encendida (V=1), Apagada (F=0) Pu (puertas cerradas) Cerrada (V=1), Abierta (F=0) Ci (cinturón ajustado) Ajustado (V=1), Suelto (F=0) Mo (motor encendido) Encendido (V=1), Apagado (F=0) Para la resolución del problema hay que plasmar el enunciado de forma que se pueda expresar como una serie de entradas y salidas de tipo lógico. Hay dos representaciones de los problemas: Tabla de Verdad para el problema 5.3.4 Reducción de funciones booleanas. Consiste en aplicar las reglas del algebra booleana para reducir la función a una mínima expresión Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 11 Para reducir las funciones booleanas se puede usar el algebra de boole o mapas de Karnaugth que es un método que ayuda a simplificar funciones de muchas variables de una manera más rápida que con el algebra de boole Mapa de Karnaugh Ejemplo de mapa de Karnaugh. POS F=A/D+A/C+A/B+BC/D = A SOP F=A(B+C+/D)(/B+/C+/D)= Un mapa de Karnaugh (también conocido como tabla de Karnaugh o diagrama de Veitch, abreviado como Mapa-K o Mapa-KV) es un diagrama utilizado para la simplificación de funciones algebraicas Booleanas. El mapa de Karnaugh fue inventado en 1950 por Maurice Karnaugh, un físico y matemático de los laboratorios Bell. Los mapas de Karnaugh reducen la necesidad de hacer cálculos extensos para la simplificación de expresiones booleanas, aprovechando la capacidad del cerebro humano para el reconocimiento de patrones y otras formas de expresión analítica, permitiendo así identificar y eliminar condiciones muy inmensas. El mapa de Karnaugh consiste en una representación bidimensional de la tabla de verdad de la función a simplificar. Puesto que la tabla de verdad de una función de N variables posee 2N filas, el mapa K correspondiente debe poseer también 2N cuadrados. Las variables de la expresión son ordenadas en función de su peso y siguiendo el código Gray, de manera que sólo una de las variables varía entre celdas adyacentes. La transferencia de los términos de la tabla de verdad al mapa de Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 12 Karnaugh se realiza de forma directa, albergando un 0 ó un 1, dependiendo del valor que toma la función en cada fila. Las tablas de Karnaugh se pueden utilizar para funciones de hasta 6 variables. Hay dos formas de obtención de función cuando se agrupan los “1” se le conoce como suma de productos (SOP) y cuando se agrupan los “0” se le llama producto de sumas, también se les llama formas CANONICAS, como se muestra en la figura del ejemplo anterior mostrado 5.4 Lógica Programable. Se pretende dar un panorama general de la tecnología digital programable 5.4.1 Flip-Flop. Estos circuitos son la base de los Circuitos secuenciales Los circuitos digitales que hasta ahora se han considerado, han sido combinacionales, esto es, las salidas en cualquier momento dependen por completo de las entradas presentes en ese tiempo. Aunque cualquier sistema digital es susceptible de tener circuitos combinacionales, la mayoría de los sistemas que se encuentran en la práctica también incluyen elementos de memoria, los cuales requieren que el sistema se describa en términos de Lógica Secuencial. Un diagrama en bloques de un circuito secuencial consta de un circuito combinacional al que se conectan elementos de memoria para formar una trayectoria de retroalimentación. Los elementos de memoria son dispositivos capaces de almacenar dentro de ellos información binaria. La información binaria almacenada en los elementos de memoria se define como el estado del circuito secuencial. En los circuitos combinacionales las Figura 1.1: Modelo de Huffman para un circuito secuencial. salidas son funciones que dependen únicamente de las entradas actuales al circuito. Pero sin embargo, en muchos sistemas digitales esto no es suficiente, siendo necesario además circuitos capaces de almacenar información, puesto que en ellos las salidas no quedan definidas únicamente por las entradas actuales, sino que dependen también de cuáles fueron los valores de éstas en el pasado. Se trata de los circuitos secuenciales. Ejemplos de la utilización de circuitos secuenciales podemos encontrarlos en la vida diaria: relojes digitales, sistemas de control de semáforos en rutas y líneas férreas, marcadores (deportes). Todos estos sistemas se caracterizan porque pueden ser descritos utilizando el llamado modelo de Huffman. Se trata de un modelo estructural que permite la descripción de un circuito secuencial genérico. Según el modelo, el circuito consta de dos partes: un circuito combinacional C y un conjunto de elementos de memoria M, como muestra la figura. Pues bien, el valor de las salidas depende, a través de la función de salida que implementa el circuito combinacional, no sólo de los valores actuales de las entradas, sino también del contenido actual de los elementos de memoria, En estos elementos, lo que se almacena es el llamado estado actual del sistema secuencial, que puede considerarse como su registro histórico, ya que da cuenta de su evolución anterior. El paso desde el estado actual del sistema a un estado siguiente, viene a su vez definido por la llamada función de Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 13 transición de estados, que también dependerá no sólo de los valores actuales de las entradas, sino también del propio estado actual. Centrándonos en la arquitectura de los computadores, componentes básicos como los registros, memorias y la unidad de control, constituyen circuitos secuenciales, aunque de muy diverso grado de complejidad. Los Flip-Flop o biestables. Clasificación. Un circuito flip-flop puede mantener un estado binario en forma indefinida (en cuanto se suministre potencia al circuito) hasta que recibe la dirección de una señal de entrada para cambiar de estado. La diferencia principal entre los diversos tipos de flip-flops está en el número de entradas que poseen y en la manera en la cual las entradas afectan el estado binario. Las células elementales de memoria de los circuitos secuenciales se denominan biestables o FlipFlop. Se caracterizan por ser capaces de adoptar dos estados estables, que se corresponden a los niveles lógicos "0" y "1", que perduran en el tiempo de un modo indefinido, aunque haya desaparecido la excitación que los originó. Es decir: son capaces de memorizar un bit de información. Una estructura con puertas lógicas que consigue el propósito anterior, es un biestable elemental que tiene únicamente dos posibilidades de almacenamiento: estado 0 (Q=O) y estado 1 (Q=1). La realimentación entre las salidas y las entradas garantiza la permanencia de la información almacenada (memorizada) en todo momento del funcionamiento electrónico normal (tensión y corrientes de alimentación adecuadas). Esto no ocurre en los sistemas combinacionales, donde la información a la salida de las puertas se desvirtúa necesariamente al eliminar las excitaciones de entrada. A las señales de control de los biestables se les llama CK (Clock). Estas señales son generalmente periódicas (aunque pueden no serlo) y gobiernan la transición de un estado a otro. Son señales de "sincronismo" que miden el tiempo del circuito. La sincronización es la técnica principal para hacer evolucionar un circuito secuencial, podemos añadir dos entradas asíncronas de reset o CLR o CLEAR y set o PRE. El objetivo de estas señales, es que al tener estos dispositivos información almacenada que en un momento dado puede ser desconocida, se hace necesario el poderlos inicializar a un valor conocido. Así con la señal CLEAR ponemos a 0 la salida y con la señal PRE a 1. Flip Flop tipo SET-RESET (SR) Como ya se menciono anteriormente, estos circuitos pueden construirse con compuertas NAND o dos compuertas NOR. Cada circuito forma un flip-flop básico, La conexión y el acoplamiento cruzado mediante la salida de una compuerta a la entrada de otra constituye una trayectoria de retroalimentación. Por esta razón los circuitos se clasifican como secuenciales asíncronos. Cada flipflop tiene dos salidas Q y Q negada, y dos entradas, SET para ajustar y RESET para restaurar. A este tipo de flip-flop se les llama SR. La operación del FF SR disparado por flanco es similar a la operación analizada anteriormente, con la diferencia de que el cambio de estado se efectúa en el flanco de bajada del pulso de reloj. El estado S=R=1 es un estado prohibido. La tabla característica resume el comportamiento del FF tipo SR disparado por flanco negativo. Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 14 Flip Flop tipo J K Un flip-flop JK es un refinamiento del SR ya que el estado indeterminado del SR se soluciona en el JK. Las entradas J y K se comportan como las entradas S y R para ajustar y despejar el flip-flop. Cuando se aplican señales de entrada en forma simultánea a J como a k, el flip-flop cambia a su estado complementario, esto es si Q=1, cambia a Q=0 y viceversa. La operación de un FF tipo J K es muy similar a la de un FF SR. La única diferencia es que no tiene un estado inválido. Para la condición J=K=1 el FF complementa el estado presente. La tabla característica resume el comportamiento del FF tipo JK disparado por flanco negativo. Flip Flop tipo D El flip-flop tipo D recibe esta denominación debido a su capacidad de transferir "datos" en el flipflop. En forma básica es un flip-flop SR con un inversor en la entrada R, El inversor agregado reduce el número de entradas de dos a uno. La operación de un FF tipo D es mucho más simple. Sólo posee una entrada además de la del reloj. Se le denomina "data" y es muy útil cuando queremos almacenar un dato de un bit (0 o 1). Si hay un 1 en la entrada D cuando se aplica el pulso de reloj la salida Q toma el valor de 1 (SET) y lo almacena. Si hay un 0 en la entrada D, cuando se aplica el pulso de reloj la salida toma el valor de 0 (RESET) y lo almacena. El cambio en la salida del FF se efectúa en el flanco de bajada del reloj. La tabla característica resume el comportamiento del FF tipo D disparado por flanco negativo. Flip Flop tipo T Sólo posee una entrada además de la del reloj. Se le denomina "toggle". Si hay un 0 en la entrada T, cuando se aplica el pulso de reloj la salida mantiene el valor del estado presente. Si hay un 1 se complementa. El flip-flop tipo T es una versión de una sola entrada del flip-flop JK, el flip-flop T se obtiene mediante un tipo JK si ambas entradas se unen. La denominación T proviene de la capacidad del flip-flop para conmutar (toggle), o cambiar de estado. Sin importar el estado presente del flipflop, asume el estado complementario cuando ocurre el pulso de reloj mientras la entrada T es lógica 1 Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 15 La tabla característica resume el comportamiento del FF tipo T disparado por flanco negativo. Para el caso de los FF disparados por flanco positivo la diferencia es que el cambio de estado ocurre en la subida del pulso de reloj. La diferencia básica entre flip flops disparados por flanco y los disparados por nivel, es que en los disparados por flanco los cambios se efectúan en el frente de bajada o en el de subida del pulso de reloj, y aunque las entradas cambien de valor durante la duración del pulso, no se efectúan cambios hasta el siguiente pulso de reloj. En los flip-flops disparados por nivel en cambio, el flip flop responde a los cambios de las entradas mientras el pulso de reloj está en 1. En cuanto a la representación los FF disparados por nivel no poseen el símbolo > en la entrada de reloj. El estado de un flip-flop cambia por un cambio momentáneo en sus entradas. Este cambio se denomina disparo. En los básicos (RS con compuertas NAND o NOR) se necesitaba un disparo de entrada definido por un cambio de nivel. Este nivel debe regresar a su nivel inicial antes de aplicar otro disparo. Los FF con reloj eran disparados por pulsos. La realimentación entre la circuitería combinacional y el elemento de memoria puede producir inestabilidad, haciendo que el FF pueda cambiar varias veces durante la duración de un pulso de reloj por lo que el intervalo de tiempo desde la aplicación del pulso hasta que ocurre la transición de la salida, es un factor crítico. Una manera de resolver este problema es hacer que los FF sean sensitivos a la transición del pulso más que a la duración. Una manera de hacerlo da origen los flip flops maestro esclavo. Flip-Flop maestro-esclavo Un flip flop maestro-esclavo se construye con dos FF, uno sirve de maestro y otro de esclavo. Durante la subida del pulso de reloj se habilita el maestro y se deshabilita el esclavo. La información de entrada es transmitida hacia el FF maestro. Cuando el pulso baja nuevamente a cero se deshabilita el maestro lo cual evita que lo afecten las entradas externas y se habilita el esclavo. Entonces el esclavo pasa al el mismo estado del maestro. El comportamiento del flip-flop maestroesclavo que acaba de describirse hace que los cambios de estado coincidan con la transición del flanco negativo del pulso. Este tipo de biestables controlados por flanco se diseñan a partir de dos biestables elementales RS sin entrada de control, conectados en cascada, más cierta lógica combinacional, como se muestra en la figura. Uno de los biestables trabaja como maestro, y el otro como esclavo. Cuando CK está a 1, la información de entrada pasa al biestable maestro, mientras que el esclavo permanece cerrado, con lo que la salida no sufre variación. Cuando CK baja a 0 (flanco de bajada), la información del maestro pasa al esclavo y se cierra el maestro, con lo cual, los datos que en este instante estén en la entrada no pueden progresar, mientras que los datos que capturó el maestro y que ahora se transfieren al esclavo, son los que aparecen a la salida. Cuando CK vuelva a pasar a 1, se cerrará el esclavo con la Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 16 información transferida anteriormente del maestro y que será la que esté presente en la salida, y éste se volverá a abrir. Luego la transferencia completa de la información, desde la entrada a la salida, sólo tendrá lugar durante los flancos de bajada de la señal CK. Flip-Flop disparado por flanco: Otro tipo de FF que sincroniza el cambio de estado durante la transición del pulso de reloj es el flip flop disparado por flanco. Cuando la entrada de reloj excede un nivel de umbral específico, las entradas son aseguradas y el FF no se ve afectado por cambios adicionales en las entradas hasta tanto el pulso de reloj no llegue a cero y se presente otro pulso. Algunos FF cambian de estado en la subida del pulso de reloj, y otros en el flanco de bajada. Los primeros se denominaran Flip flop disparados por flanco positivo y los segundos Flip-flops disparados por flanco negativo. La distinción entre unos y otros se indicará con la presencia o ausencia de una negación en la entrada de reloj como se muestra en la figura. El FF JK puede considerarse como el flip flop universal puesto que puede configurarse para obtener los demás flip-flops. En el cuadro a continuación se muestra el equivalente de cada uno de los tipos de flip-flop en función del J K. Circuitos sincrónicos y asincrónicos Hay dos tipos principales de circuitos secuenciales. Su clasificación depende del temporizado de sus señales. Un circuito secuencial asíncrono es un sistema cuyo comportamiento puede definirse por el conocimiento de sus señales en instantes discretos de tiempo. El comportamiento de un circuito secuencial asíncrono depende del orden en el cual cambian sus señales de entrada y puede afectarse en cualquier instante de tiempo. Los elementos de memoria que por lo común se utilizan en los circuitos secuenciales asíncronos son dispositivos de retardo de tiempo. La capacidad de memoria de un dispositivo de retardo de tiempo se debe al hecho de que toma un tiempo finito para que la señal se propague a través del dispositivo. Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 17 Un sistema lógico secuencial asíncrono, por definición, debe emplear señales que afecten los elementos de memoria solo en instantes discretos de tiempo. Una forma de lograr este objetivo es usar pulsos de duración limitada a través del sistema, de modo que una amplitud de pulso represente la lógica 1 y otra amplitud (o la ausencia de pulso) represente la lógica 0. Los sistemas lógicos secuenciales asíncronos utilizan amplitudes fijas, como niveles de voltaje para señales binarias. La sincronización se logra a través de un dispositivo sincronizador llamado reloj maestro generador, el cual genera un tren periódico de pulsos de reloj. Los pulsos de reloj se distribuyen a través del sistema de tal forma que los elementos de memoria están afectados solo por la llegada del pulso de sincronización. Ejercitación: Complete el diagrama de tiempos para un flip-flop JK: 5.4.2 Memorias: RAM, ROM, PROM, EPROM. EEPROM. RAM son las siglas de random access memory, un tipo de memoria de ordenador a la que se puede acceder aleatoriamente; es decir, se puede acceder a cualquier byte de memoria sin acceder a los bytes precedentes. La memoria RAM es el tipo de memoria más común en ordenadores y otros dispositivos como impresoras. Hay dos tipos básicos de memoria RAM RAM dinámica (DRAM) RAM estática (SRAM) Los dos tipos de memoria RAM se diferencian en la tecnología que utilizan para guardar los datos, la memoria RAM dinámica es la más común. La memoria RAM dinámica necesita actualizarse miles de veces por segundo, mientras que la memoria RAM estática no necesita actualizarse, por lo que es más rápida, aunque también más cara. Ambos tipos de memoria RAM son volátiles, es decir, que pierden su contenido cuando se apaga el equipo. Coloquialmente el término RAM se utiliza como sinónimo de memoria principal, la memoria que está disponible para los programas, por ejemplo, un ordenador con 8M de RAM tiene aproximadamente 8 millones de bytes de memoria que los programas puedan utilizar. ROM La memoria ROM, (read-only memory) o memoria de sólo lectura, es la memoria que se utiliza para almacenar los programas que ponen en marcha el ordenador y realizan los diagnósticos. La Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 18 mayoría de los ordenadores tienen una cantidad pequeña de memoria ROM (algunos miles de bytes). Aplicaciones de ROM Tipos De ROM: Hay 5 tipos básicos de ROM, los cuales se pueden identificar como: ROM: De un modo similar a la memoria RAM, los chips ROM contienen una hilera de filas y columnas, aunque la manera en que interactúan es bastante diferente. Mientras que RAM usualmente utiliza transistores para dar paso a un capacitador en cada intersección, ROM usa un diodo para conectar las líneas si el valor es igual a 1. Por el contrario, si el valor es 0, las líneas no se conectan en absoluto. PROM: Crear chips desde la nada lleva mucho tiempo. Por ello, los desarrolladores crearon un tipo de ROM conocido como PROM (programmable read-only memory). Los chips PROM vacíos pueden ser comprados económicamente y codificados con una simple herramienta llamada programador. La peculiaridad es que solo pueden ser programados una vez. Son más frágiles que los chips ROM hasta el extremo que la electricidad estática lo puede quemar. Afortunadamente, los dispositivos PROM vírgenes son baratos e ideales para hacer pruebas para crear un chip ROM definitivo. EPROM: Trabajando con chips ROM y PROM puede ser una labor tediosa. Aunque el precio no sea demasiado elevado, al cabo del tiempo puede suponer un aumento del precio con todos los inconvenientes. Los EPROM (Erasable programmable read-only memory) solucionan este problema. Los chips EPROM pueden ser regrabados varias veces. Borrar una EEPROM requiere una herramienta especial que emite una frecuencia determinada de luz ultravioleta. Son configuradas usando un programador EPROM que provee voltaje a un nivel determinado dependiendo del chip usado. Para sobrescribir una EPROM, tienes que borrarla primero. El problema es que no es selectivo, lo que quiere decir que borrará toda la EPROM. Para hacer esto, hay que retirar el chip del dispositivo en el que se encuentra alojado y puesto debajo de la luz ultravioleta comentada anteriormente. EEPROM y Memoria Flash: Aunque las EPROM son un gran paso sobre las PROM en términos de utilidad, siguen necesitando un equipamiento dedicado y un proceso intensivo para ser retirados y reinstalados cuando un cambio es necesario. Como se ha dicho, no se pueden añadir cambios a la EPROM; todo el chip sebe ser borrado. Aquí es donde entra en juego la EEPROM (Electrically erasable programmable read-only memory). La memoria EEPROM es programable y borrable eléctricamente y su nombre proviene de la sigla en inglés Electrical Erasable Programmable Read Only Memory. Actualmente estas memorias se construyen con transistores de tecnología MOS (Metal Oxide Silice) y MNOS (Metal Nitride-Oxide Silicon). Las memorias EEPROM son memorias no volátiles y eléctricamente borrables a nivel de bytes. La posibilidad de programar y borrar las memorias a nivel de bytes supone una gran flexibilidad, pero también una celda de memoria más compleja. 5.4.3 Contadores (ascendentes, descendente). Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 19 Definición • Un contador es un circuito digital capaz de contar sucesos electrónicos, tales como impulsos, avanzando a través de una secuencia de estados binarios. • Contador síncrono es un tipo de contador en el que todas las etapas utilizan el mismo impulso de reloj. Hay contadores ascendentes y descendentes con salidas en binario de n bits Un contador ascendente/descendente (up/down) es aquel capaz de procesar en cualquier dirección a lo largo de una cierta secuencia. Un contador ascendente/descendente, algunas veces también denominado contador bidireccional, puede tener cualquier secuencia de estados especificada. Un contador binario de 3 bits que avanza en modo ascendente a través de la secuencia (0,1,2,3,4,5,6,7) y que luego pueda invertirse para recorrer la secuencia en sentido contrario (7,6,5,4,3,2,1,0) es un ejemplo de un modo de operación secuencial ascendente/descendente. La figura muestra un contador síncrono ascendente/descendente básico de 3 bits. El FF0 bascula con cada impulso de reloj. Luego las entradas J0 y K0 de FF0 son: J0=K0=1 Esquema lógico de un contador UP/DOWN síncrono de 3 bits. Para la secuencia ascendente, Q1 cambia de estado en el siguiente impulso de reloj cuando Q0=1. Para la secuencia descendente, Q1 cambia en el siguiente impulso de reloj cuando Q0=0. Por lo tanto, las entradas J1 y K1 del FF1 tienen que ser igual a 1, para las condiciones expresadas en la siguiente ecuación: Para la secuencia ascendente, Q2 cambia de estado en el siguiente impulso de reloj cuando Q0=Q1=1. Para la secuencia descendente, Q2 cambia en el siguiente impulso de reloj cuando Q0=Q1=0. Por lo tanto, las entradas J2 y K2 de FF2 tienen que ser igual a 1, para las condiciones expresadas en la siguiente ecuación: Cada una de las condiciones para las entradas J y K de cada flip-flop produce una basculación en el punto apropiado de la secuencia del contador. 5.4.4 Sumadores. Para aprender a sumar, con cinco o seis años de edad, tuviste que memorizar las 100 combinaciones posibles que pueden darse al sumar dos dígitos decimales. La tabla de sumar, en binario, es mucho más sencilla que en decimal. Sólo hay que recordar cuatro combinaciones posibles: Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 20 + 0 1 0 0 1 1 1 0+1 Las sumas 0+0, 0+1 y 1+0 son evidentes: 0+0 = 0 0+1 = 1 1+0 = 1 Pero la suma de 1+1, que sabemos que es 2 en el sistema decimal, debe escribirse en binario con dos cifras (10) y, por tanto 1+1 es 0 y se arrastra una unidad, que se suma a la posición siguiente a la izquierda. Veamos algunos ejemplos: Suma Binaria 010 + 101 = 111 001101 + 100101 = 110010 1011011 + 1011010 = 10110101 110111011 + 100111011 = 1011110110 Suma decimal 210 + 510 = 710 1310 + 3710 = 5010 9110 + 9010 = 18110 44310 + 31510 = 75810 Ejercicio 1: Realiza las siguientes sumas de números binarios: 111011 + 110 ____________________ 111110111 + 111001 ____________________ 10111 + 11011 + 10111 ____________________ Suma con puertas lógicas Si planteamos la suma a nivel de tabla de verdad para un sumador de dos bits tendríamos la siguiente tabla donde se muestra el resultado de la suma y del acarreo Entrada A Entrada B Acarreo Suma 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 Por lo que las funciones de Suma y Acarreo se pueden implementar usando puertas lógicas básicas Dos Implementaciones de semisumador SUMADOR COMPLETO Hasta aquí se ha logrado implementar una suma de dos números de un bit, pero en una computadora las sumas de hacen con un número mayor de bits. Si cada par de sumandos binarios puede producir un bit de acarreo, también debe tener la capacidad de reconocer cuando viene un bit de acarreo del sumador de nivel inferior (digamos cuando en el sistema decimal hay un "llevo" debido a la suma de las unidades y hay que pasarla a las decenas) Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 21 Para lograr este propósito se implementa el siguiente circuito con su tabla de verdad: El circuito anterior es un poco complicado de graficar así que se puede reemplazar por una caja negra con tres entradas y dos salidas (ver la tabla de verdad) ENTRADAS SALIDAS A B Cin Cout S 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 Con lo anteriormente mencionado se puede implementar un sumador de "n" bits. Conectando sumadores completos de 2 bits en cascada. Nota: Cin=acarreo entrante, Cout= acarreo saliente 5.4.5 Codificadores/decodificadores. En un sentido general, se puede decir que un codificador es un circuito hecho para pasar información de un sistema a otro con clave diferente, y en tal caso un decodificador sería el circuito o dispositivo que retorne los datos o información al primer sistema. Debido a que el caso que nos ocupa es el de la lógica digital, y en especial la aritmética binaria, hemos de dar sentido más directo a los términos "codificador" y "decodificador". Un codificador es un bloque combinacional hecho para convertir una entrada no binaria en una salida de estricto orden binario. En otras palabras, es un circuito integrado por un conjunto de componentes electrónicos con la habilidad para mostrar en sus terminales de salida un word binario (01101, 1100, etc.), equivalente al número presente en sus entradas, pero escrito en un código diferente. Por ejemplo, un Octal-to-binary encoder es un circuito codificador con ocho entradas (un terminal para cada dígito Octal, o de base 8) y tres salidas (un terminal para cada bit binario). Los codificadores pueden, también, proporcionar otras operaciones de conversión, tal como ocurre en las calculadoras de bolsillo con el teclado: El Keyboard (teclas, llaves) encoder convierte la posición de cada tecla (No. 9, No. 3, No. 5, + , %, etc.) en su correspondiente word asignado previamente. Un ejemplo de lo anterior es el teclado codificador en ASCII (American Standard Code for Information Interchange), que genera el word de 7 bits 0100101 cuando es presionada la tecla del porcentaje (%). El decodificador es un circuito combinacional diseñado para convertir un número binario (entrada) en word de "unos" y "ceros" (niveles altos y bajos de voltaje) con un orden distinto, para ejecutar un trabajo especial. En otras palabras, el word que sale es diferente al word que entró, aunque tenga la misma cantidad de bits. En Electrónica Digital es a menudo necesario pasar un número binario a otro formato, tal como el requerido para energizar los siete segmentos de los display hechos con Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 22 diodos emisores de luz, en el orden adecuado para que se ilumine la figura de un individual número decimal. Los decodificadores son también usados en los microprocesadores para convertir instrucciones binarias en señales de tiempo, para controlar máquinas en procesos industriales o implementar circuitos lógicos avanzados. El decodificador convierte números binarios en sus equivalentes Octales (base 8), decimales (base 10) y Hexadecimales. Los codificadores nos permiten “compactar” la información, generando un código de salida a partir de la información de entrada. Y como siempre, lo mejor es verlo con un ejemplo. Imaginemos que estamos diseñando un circuito digital que se encuentra en el interior de una Equipo de música. Este circuito controlará el equipo, haciendo que funcione correctamente. Una de las cosas que hará este circuito de control será activar la radio, el CD, la cinta o el Disco según el botón que haya pulsado el usuario. Imaginemos que tenemos 4 botones en la cadena, de manera que cuando no están pulsados, generan un ’0’ y cuando se pulsan un ’1’ (Botones digitales). Los podríamos conectar directamente a nuestro circuito de control del equipo de música, como se muestra en la figura Circuito de control de un equipo de música, y 4 botones de selección de lo que se quiere escuchar Sin embargo, a la hora de diseñar el circuito de control, nos resultaría más sencillo que cada botón tuviese asociado un número. Como en total hay 4 botones, necesitaríamos 2 bits para identificarlos. Para conseguir esta asociación utilizamos un codificador, que a partir del botón que se haya pulsado nos devolverá su número asociado: Fijémonos en las entradas del codificador, que están conectadas a los botones. En cada momento, sólo habrá un botón apretado, puesto que sólo podemos escuchar una de las cuatro fuentes. Bien estaremos escuchando el CD, bien la cinta, bien la radio o bien un disco, pero no puede haber más de un botón pulsado1. Tal y como hemos hecho las conexiones al codificador, el CD tiene asociado el número 0, la cinta el 1, la radio el 2 y el disco el 3 (Este número depende de la entrada del codificador a la que lo hayamos conectado). A la salida del codificador obtendremos el número del botón apretado. La tabla de verdad será así: E3 E2 E1 E0 C1 C0 Botón 0 0 0 1 0 0 CD 0 0 1 0 0 1 TAPE 0 1 0 0 1 0 RADIO 1 0 0 0 1 1 DISCO Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 23 El circuito de control del equipo ahora sólo tendrá 2 bits de entrada para determinar el botón que se ha pulsado. Antes necesitábamos 4 entradas. El codificador que hemos usado tiene 4 entradas y 2 salidas, por lo que se llama codificador de 4 a 2. Existen codificadores de mayor número de entradas, como el que vamos a ver en el siguiente ejemplo. A continuación deduciremos las ecuaciones de un codificador de 4 a 2. Las ecuaciones las obtenemos siguiendo el mismo método de siempre: primero obtendremos la tabla de verdad completa y aplicaremos el método de Karnaugh. Con ello obtendremos las ecuaciones más simplificadas para las salidas C1 y C0. Al hacer la tabla de verdad, hay que tener en cuenta que muchas de las entradas NO SE PUEDEN PRODUCIR. En las entradas de un decodificador, una y sólo una de las entradas estará activa en cada momento. Utilizaremos esto para simplificar las ecuaciones. Se ha utilizado una X para indicar que esa salida nunca se producirá: E3 E2 E1 E0 C1 C0 0 0 0 0 X X 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 1 X X 0 1 0 0 1 0 0 1 0 1 X X 0 1 1 0 X X 0 1 1 1 X X 1 0 0 0 1 1 1 0 0 1 X X 1 0 1 0 X X 1 0 1 1 X X 1 1 0 0 X X 1 1 0 1 X X 1 1 1 0 X X 1 1 1 1 X X C1 y C0 siempre valen ’X’ excepto para 4 filas. Los mapas de Karnaugh que obtenemos son: Las casillas que tienen el valor ’X’ podemos asignarles el valor que más nos convenga, de forma que obtengamos la expresión más simplificada. Las ecuaciones de un decodificador de 4 a 2 son: La manera “rápida” de obtenerlas es mirando la tabla simplificada, como la que se muestra en el ejemplo del equipo de música. Sólo hay que fijarse en los ’1’ de las funciones de salida (como si estuviésemos desarrollando por la primera forma canónica) y escribir la variable de entrada que vale ’1’. Habrá tantos sumandos como ’1’ en la función de salida. Decodificadores Un decodificador es un circuito integrado por el que se introduce un número y se activa una y sólo una de las salidas, permaneciendo el resto desactivadas. Y como siempre, lo mejor es verlo con un ejemplo sencillo. Imaginemos que queremos realizar un circuito de control para un semáforo. El semáforo puede estar verde, amarillo, rojo o averiado. Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 24 En el caso de estar averiado, se activará una luz interna “azul”, para que el técnico sepa que lo tiene que reparar. A cada una de estas luces les vamos a asociar un número. Así el rojo será el 0, el amarillo el 1, el verde el 2 y el azul (averiado) el 3. Para controlar este semáforo podemos hacer un circuito que tenga 4 salidas, una para una de las luces. Cuando una de estas salidas esté a ’1’, la luz correspondiente estará encendida. Sin embargo, ocurre que NO PUEDE HABER DOS O MAS LUCES ENCENDIDAS A LA VEZ. Por ejemplo, no puede estar la luz roja y la verde encendidas a la vez!!!!. Si utilizamos un decodificador de 2 a 4, conseguiremos controlar el semáforo asegurándonos que sólo estará activa una luz en cada momento. Además, el circuito de control que diseñemos sólo tiene que tener 2 salidas. El nuevo esquema se muestra en la figura 6.3. El funcionamiento es muy sencillo. Si el circuito de control envía el número 2 (E1 = 1, E0 = 0), _se encenderá la luz verde (que tiene asociado el número 2) y sólo la luz verde!!!. Un decodificador activa sólo una de las salidas, la salida que tiene un número igual al que se ha introducido por la entrada. En el ejemplo del semáforo, si el circuito de control envía el número 3, se activa la salida O3 y se encenderá la luz azul (y sólo esa!! E1 0 0 1 1 E0 0 1 0 1 03 0 0 0 1 02 0 0 1 0 01 0 1 0 0 00 1 0 0 0 ,, Y las ecuaciones las podemos obtener desarrollando por la primera forma canónica. Puesto que por cada función de salida sólo hay un ’1’, no se podrá simplificar (No hace falta que hagamos Karnaugh) , , 5.4.6 Multiplexores/Demultiplexores Un Multiplexor o “Selector de datos” es un circuito lógico que acepta varias entradas de datos y permite que sólo una de ellas pase a un tiempo a la salida. El enrutamiento de la entrada de datos hacia la salida está controlado por las entradas de selección (a las que se hace referencia a veces como las entradas de dirección). El multiplexor, también conocido como MUX, actúa como un conmutador multiposicional controlado digitalmente, donde el código digital aplicado a las entradas de selección controla cuáles entradas de datos serán conmutadas hacia la salida. Por ejemplo, la salida será igual a la entrada de datos, llamémosle D0 para el código de entrada de selección que sea cero (ABC=000 en el diagrama de abajo); la salida será igual D1 para cuando el código de selección sea uno y así sucesivamente. Establecido de otra manera, un multiplexor selecciona 1 de N fuentes de datos y transmite los datos seleccionados a un solo canal de salida. Esto se llama multiplexión o multiplexaje. Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 25 Los multiplexores son representados en diagramas de bloques como trapezoides isósceles. A continuación muestro el esquemático de un multiplexor de dos entradas y una salida con su respectivo bit de selección: Ó Un ejemplo de multiplexores (aunque no digitales como los que vemos aquí) se ve en las líneas telefónicas. Éstas usan exactamente este principio. Transmiten varias llamadas telefónicas (señales de audio) a través de un único par cableado usando la técnica de “multiplexado” y cada señal de audio va únicamente al receptor al que está destinado. Una aplicación común para los MUX es encontrado en las computadoras, en las cuales la memoria dinámica usa las mismas líneas de dirección para el direccionamiento tanto de las filas como de las columnas. Un grupo de multiplexores es usado para primero seleccionar las direcciones de la columna y luego cambiar para seleccionar la de la fila. Este esquema permite que grandes cantidades de memoria sean incorporadas dentro de una computadora mientras se limita a la vez la cantidad de conexiones de cobre requeridas para conectar la memoria al resto del circuito. Por eso es que también se les conoce a veces como “selectores de datos”. Ya se vio el símbolo esquemático del multiplexor de 2 entradas y una salida pero los multiplexores no están limitados a 2 entradas. Si las líneas de selección son dos podemos alternar entre 4 datos de entrada, si son 3 entre 8 y así sucesivamente. A continuación se muestran los símbolos esquemáticos de los multiplexores de “4 a 1” (cuatro entradas y una salida), “8 a 1” (ocho entradas y una salida) y “16 a 1” (dieciséis entradas y una salida) con sus respectivas líneas de selección, respectivamente. En todos los casos la salida es Z, las entradas de selección S y el resto es la entrada que será multiplexada. El Multiplexor es típicamente usado para combinar dos o más señales digitales en una sola línea pero no es la única forma. También puede conseguirse de otras características pero aquí mencionaré sólo un par de ejemplos de multiplexores: 1. De dos entradas de 4 bits y una salida de 4 bits. Éste selecciona uno de los nibbles de entrada (internamente son 4 multiplexores de 2 a 1 en un solo encapsulado) y lo refleja en la salida. 2. De dos entradas de 4 bits a una salida de dos bits que representan un bit direccionado en cada nibble reflejado a la salida (internamente son 2 multiplexores de 4 a 1). Algunas designaciones para multiplexores de la familia TTL son: 74153 que son dos MUX 4 a 2, 74157 que son cuatro MUX 2 a 1 y el 74151 que es un MUX 8 a 1. Los circuitos multiplexores pueden incluir también una línea de habilitación indicado con una E por Enable. Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 26 Como último comentario de lo multiplexores quiero agregar que estos pueden ser organizados en cascada (tal como los sumadores que vimos en el tema anterior) para implementar multiplexores más grandes. Por ejemplo podemos usar multiplexores de 2 a 1 para implementar un multiplexor de 4 a 1 (o de 4 a 2 que si lo piensan se darán cuenta de que es elemental) o incluso para implementar multiplexores de más entradas. Veamos específicamente el ejemplo de implementación de un multiplexor de 16 a 1 usando sólo multiplexores de 4 a 1. El dato de entrada es X formado por los 16 bits x0, x1,...,x14 y x15. Las líneas de selección vienen dadas por S. OJO con este ejemplo. Analícelo y entiéndalo. En los multiplexores vemos también la entrada de enable E (que además son de lógica negativa que quiere decir que los IC's se activaran con un cero). Ese es el bit de habilitación que les dije veremos en el próximo tema. Ejemplos de Circuitos con Multiplexores Demultiplexores. Es lo inverso a un multiplexor. Los demultiplexores o DEMUX tienen una entrada que es transferida a una de las m posibles líneas de salida. La línea m vendrá direccionada por los n bits de Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 27 selección donde lo normal es que 2n=m. Se podría decir que, cada salida del demultiplexor corresponde con el término mínimo del número binario que se encuentra en las líneas de selección. Un uso popular del DEMUX es como decodificador y por eso suele usarse el término Demultiplexor/Decodificador indistintamente. El propósito principal de un decodificador no es tanto transferir una entrada a una de las salidas sino llevar un valor binario (el de la entrada de selección) a una representación de una única línea a la salida. Esta función es de gran utilidad en la decodificación de la dirección en los microprocesadores por ejemplo cuando involucra la selección de uno de múltiples dispositivos (como por ejemplo la memoria). De hecho, la mayoría de los decodificadores son de lógica invertida (o negativa) debido a que la mayoría de los dispositivos periféricos de los microprocesadores son activados por una señal baja (como el pin E' que vimos en los multiplexores en cascada hace un par de párrafos). Los DEMUX también suelen incluir un bit de entrada de habilitación. Algunos DEMUX de la familia TTL son: el 74139 que son dos DEMUX de 1 a 4 con salidas invertidas (lógica negada), el 74156 que son dos DEMUX de 1 a 4 con salida de colector abierto (Open Collector), el 74138 que es un DEMUX de 1 a 8 con salida invertida, el 74156 que es un DEMUX de 1 a 16 y el 74159 que es de 1 a 16 con salida a colector abierto. Entrada s A B C 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 Salidas S0 1 0 0 0 0 0 0 0 S1 0 1 0 0 0 0 0 0 S2 0 0 1 0 0 0 0 0 Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán S3 0 0 0 1 0 0 0 0 S4 0 0 0 0 1 0 0 0 S5 0 0 0 0 0 1 0 0 S6 0 0 0 0 0 0 1 0 S7 0 0 0 0 0 0 0 1 Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 28 5.4.7 PAL. GAL. PLD; FPGA, FPGAA. La lógica programable, como el nombre implica, es una familia de componentes que contienen conjuntos de elementos lógicos (AND, OR, NOT, LATCH, FLIP-FLOP) que pueden configurarse en cualquier función lógica que el usuario desee y que el componente soporte. Hay varias clases de dispositivos lógicos programables: ASICs, FPGAs, PLAs, PROMs, PALs, GALs, y PLDs complejos. ASIC: Significa Circuitos Integrados de Aplicación Específica y son dispositivos definibles por el usuario. Los ASICs, al contrario que otros dispositivos, pueden contener funciones analógicas, digitales, y combinaciones de ambas. En general, son programables mediante máscara y no programables por el usuario. Esto significa que los fabricantes configurarán el dispositivo según las especificaciones del usuario. Se usan para combinar una gran cantidad de funciones lógicas en un dispositivo. Sin embargo, estos dispositivos tienen un costo inicial alto, por lo tanto se usan principalmente cuando es necesario una gran cantidad. PLD Familia de los PLD Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Estructura básica de un PLD Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 29 Un dispositivo programable por el usuario es aquel que contiene una arquitectura general predefinida en la que el usuario puede programar el diseño final del dispositivo empleando un conjunto de herramientas de desarrollo. Las arquitecturas generales pueden variar pero normalmente consisten en una o más matrices de puertas AND y OR para implementar funciones lógicas. Muchos dispositivos también contienen combinaciones de flip-flops y latches que pueden usarse como elementos de almacenaje para entrada y salida de un dispositivo. Los dispositivos más complejos contienen macrocélulas. Las macrocélulas permiten al usuario configurar el tipo de entradas y salidas necesarias en el diseño. CRONOLOGIA DE LOS PLD´S 1948 Se inventa el transistor de contacto puntual en los Laboratorios Bell Telephone en Estados Unidos, resultado de una investigación sobre semiconductores llevada a cabo por Walter Brattain, John Bardeen y William Shockley, quienes recibirían el premio Nobel por su enorme contribución en 1956. 1951 Se logra un transistor con una estructura como la que se conoce actualmente. 1957 John Wallmark de RCA patenta el FET ( Field Effect Transistor ). 1959 Se concibe el primer Circuito Integrado Digital en la compañía Texas Instruments y es Jack Kilby quién desarrolla un Flip-Flop sobre una base de substrato de Germanio y contenía solo cuatro transistores. 1961 Se presenta la primera familia de Circuitos Integrados Digitales comerciales, denominada R.T.L. ( Resistor - Transistor - Logic ) y que fue introducida por Fairchild Semiconductor bajo la serie 900, está familia operaba a 3.2 Voltios, poco tiempo después nace otra familia denominada D.T.L. ( Diode - Transistor - Logic ). 1962 Aparece la familia T.T.L. ( Transistor - Transistor - Logic ), con características como el de ser más rápida que sus predecesoras, los primeros trabajos hechos en TTL los realizó James Buie de Pacific Semiconductor ( hoy subsidiaria de TRW ). En ese mismo año Steven Hofstein y Frederick Heiman de RCA, desarrollan el MOSFET y a finales del mismo, fabrican el primer Circuito Integrado MOS ( Metal - Oxide - Silicon ) que contenía 16 transistores sobre una pastilla de silicio de 0.063 mm por lado. 1963 La compañía RCA producía un Circuito Integrado con cientos de MOSFET´S en un área muy reducida, al mismo tiempo nacían familias como la MOS de canal N y de canal P, NMOS y PMOS respectivamente y así como la CMOS ( Complementary MOS ). La CMOS se impuso con el tiempo bajo la serie 40XX lanzada por RCA. Y poco tiempo después la 74CXX de National Semiconductor. A mediados Surge el primer PLD, una matriz de diodos configurables y fusibles desarrollado por de los 60´s Harris Semiconductor ( conocida en ese tiempo como Radiation, Inc. ). 1967 Fairchild lanza al mercado una ROM de 64 bits con tecnología MOS. 1969 Nace el primer PLA, desarrollado por IBM y descrito como ROAM ( Read -Only Associative - Memory ). 1970 La compañía Harris crea la PROM, que combinaba la tecnología de fusibles de nicromo con una simplificación en la estructura de la ROM. En este mismo año Texas Instruments fabrica el TMS 200 y era un Circuito Integrado de máscara programable basado en el ROAM de IBM, este manejaba diecisiete entradas y ocho salidas, contenía ocho Flip-Flops JK como elementos de memoria. 1971 Collins Radio ofrece otro PLA de máscara programable denominado CRC 3506/7, similar al TMS 200. Intel hace una innovación tecnológica al introducir la EPROM borrable con rayos UV. General Electric abre una puerta más con una nueva tecnología PROM, desarrollada por David Greer, donde la estructura consistía de un Plano-Or y señales que van hacia un Plano-And; permitiendo el uso de lógica de multinivel sin desperdicio de pines I/O. 1971 Al mismo tiempo General Electric hace experimentos con PLD´s de tecnología MOS, Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 30 1972 1973 1974 1975 1978 1980 1981 1982 1983 1983 1984 usando las características de los PLA y con la tecnología de borrado con rayos UV. En junio Intel ofrece al mercado el primer microprocesador MOS ( el 4004, de 4 bits ) que contenía 2300 transistores. MOSTEK Corporation lanza la primera Memoria de Alta Densidad (una RAM dinámica de 1024 bits) e Intel ofrece los primeros microprocesadores de 8 bits (el 8008 y el 8080). National Semiconductor crea su propio PLA de máscara programable similar al TMS 200 pero con catorce entradas y ocho salidas sin elementos de memoria. El mérito a este dispositivo consistió en su menor complejidad en el diseño, mostrando así un avance en la nueva tecnología. Este dispositivo fue conocido como DM7575/DM8575. Monolithic Memories fabrica un dispositivo denominado PALA ( Programable Associative Logic Array ) bajo el número de parte MMT 5760/6760 implementaba multiniveles y circuitos secuenciales de más de 100 compuertas e incorporó bajo acuerdo de General Electric innovaciones en el dispositivo de máscara programable. Intersil anuncia el IM5200 un FPLA; poco después, Signetics hace lo mismo con el 82S100 que logró encabezar la carrera de los PLD´s durante un tiempo. En el verano de este año nace el dispositivo PAL, como un proyecto de MMI encabezado por John Birkner, en el que se pretendían satisfacer varias necesidades del mercado, entre ellas las de reemplazar la lógica estándar, mejorar los tamaños y la velocidad de los ya existentes; bajo esta idea los PAL invaden el mercado. El PAL que conocemos actualmente se basa en un diseño de H.T. Chua. MMI ofrece soporte para el manejo de los nuevos dispositivos en el “ PAL Handbook “ escrito por John Birkner y que en el mismo se acompañaba de un programa hecho en Fortran para ayudar a programar los dispositivos. Se propone y presenta el primer formato JEDEC para los PLD´s. Signetics registra FPLA´s con aplicaciones para máquinas de estados. En el verano de este año Bill Wiley Smith de Signetics crea una muestra de lo que sería el soporte para la programación de PLD´s, llamado BEE ( Boolean Equation Entry ); cuyas características eran las Ecuaciones Booleanas, notación de estados, tablas de verdad, minimización lógica en forma automática así como la simulación de los diseños. En diciembre de este año se anuncia el proyecto ABEL ( Advanced Boolean Expression Language ) para un número limitado de PLD’s de diferentes manufacturas y que fue un Software muy bien recibido por el mercado. Se crea otra herramienta denominada CUPL (Common Universal tool for Programable Logic) desarrollado por Bob Osann de Assited Technology. En Marzo se crea una segunda versión de CUPL soportando a todos los PAL´s soportados por PALASM y un número limitado de FPLAS combinacionales de Signetics con características similares al BEE. Poco después surge la segunda versión de ABEL que soportaba virtualmente a todos los PLD´s de esa época y esto toma por sorpresa a los diseñadores de otras herramientas de Software. En seguida National Semiconductor lanza el Software llamado PLAN ( Programable Logic Analysis by National ). Cypress Semiconductor crea un PAL que se hace popular por su alta velocidad. Lattice Semiconductor compañía especializada en tecnología borrable CMOS crea un PAL borrable eléctricamente al que llamaron Generic Array Logic o GAL, pero esta compañía tuvo problemas legales con MMI hoy parte de AMD quién obtuvo el derecho de producir el GAL pero bajo otro nombre, en seguida Lattice crea el GAL 39V18 conocido hoy como Lattice 6001. International CMOS Technology (I.C.T.) desarrolla un dispositivo llamado PEEL (Programable Electrically Erasable Logic) con tecnología de Lattice y fue llevado a primera producción en 1986. Se anuncia un nuevo concepto en cuanto a la tecnología de los PLD´s y es encabezado Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 31 1988 1989 1995 por Xilinix Corporation, el dispositivo desarrollado es el LCA (Logic Cell Array) compuesto de pequeñas celdas lógicas, similares a la arquitectura de una PROM, donde cada celda es capaz de crear cuatro o cinco funciones de entrada y dos de salida. Poco después Exel Microelectronic´s crece el XL78C800 Erasic, este dispositivo creado bajo arreglo de multiniveles de lógica y tardo aún más el diseño del Software y programación en estar disponible. Actel Corporation introduce un FPGA diferente al de los dispositivos de Xilinix. El Act 1 de densidad comparable al arreglo de compuertas de máscara programable al igual que el LCA requiere de el trazado de rutas de funciones lógicas para ser usado efectivamente. Plessey Semiconductor introduce un FPGA con características similares, pero con una mejor arquitectura. Lattice Semiconductor Corporation, anuncia el 7 de Agosto, la introducción de WorldÆ fastest 3.3 Volt 22V10, cuya máxima velocidad de operación es de 7.5 ns (133.33 Mhz). Que permite la utilización del dispositivo con baterías. Lattice Semiconductor Corporation, anuncia una actualización para los Programadores Universales en septiembre de ese año. La actualización responde a que sus nuevos productos, el GAL16LV8D-3LJ y el GAL16V8D-5LJ son lanzados al mercado. Las nuevas cualidades de estos dispositivos son : velocidades desde 3.5 ns (286 Mhz ); además de operar a un voltaje de alimentación de 3.3 Volts. PROM: Son memorias programables de sólo lectura. Aunque el nombre no implica la lógica programable, las PROM, son de hecho lógicas. La arquitectura de la mayoría de las PROM consiste generalmente en un número fijo de términos AND que alimenta una matriz programable OR. Se usan principalmente para decodificar las combinaciones de entrada en funciones de salida. PAL: Son dispositivos de matriz programable. La arquitectura interna consiste en términos AND programables que alimentan términos OR fijos. Todas las entradas a la matriz pueden ser combinadas mediante AND entre sí, pero los términos AND específicos se dedican a términos OR específicos. Las PAL tienen una arquitectura muy popular y son probablemente el tipo de dispositivo programable por usuario más empleado. Si un dispositivo contiene macrocélulas, comúnmente tendrá una arquitectura PAL. Las macrocélulas típicas pueden programarse como entradas, salidas, o entrada/salida (e/s) usando una habilitación tri-estado. Normalmente tienen registros de salida que pueden usarse o no conjuntamente con el pin de e/s asociado. Otras macrocélulas tiene más de un registro, varios tipos de retroalimentación en las matrices, y ocasionalmente realimentación entre macrocélulas. GAL. Las GAL son dispositivos de matriz lógica genérica. Están diseñados para emular muchas PAL pensadas para el uso de macrocélulas. Si un usuario tiene un diseño que se implementa usando varias PAL comunes, puede configurar varias de las mismas GAL para emular cada de uno de los otros dispositivos. Esto reducirá el número de dispositivos diferentes en existencia y aumenta la Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 32 cantidad comprada. Comúnmente, una cantidad grande del mismo dispositivo debería rebajar el costo individual del dispositivo. Estos dispositivos también son eléctricamente borrables, lo que los hace muy útiles para los ingenieros de diseño. PLA. Las PLA son matrices lógicas programables. Estos dispositivos contienen ambos términos AND y OR programables lo que permite a cualquier término AND alimentar cualquier término OR. Las PLA probablemente tienen la mayor flexibilidad frente a otros dispositivos con respecto a la lógica funcional. Normalmente poseen realimentación desde la matriz OR hacia la matriz AND que puede usarse para implementar máquinas de estado asíncronas. La mayoría de las máquinas de estado, sin embargo, se implementan como máquinas síncronas. Con esta perspectiva, los fabricantes crearon un tipo de PLA denominado Secuencial (Sequencer) que posee registros de realimentación desde la salida de la matriz OR hacia la matriz AND. PLDs complejos. Dispositivos Complejos de Lógica Programable. Se consideran PAL muy grandes que tienen algunas características de las PLA. La arquitectura básica es muy parecida a la PAL con la capacidad para aumentar la cantidad de términos AND para cualquier término OR fijo. Esto se puede realizar quitando términos AND adyacentes o empleando términos AND desde una matriz expandida. Esto permite que cualquier diseño pueda ser implementado dentro de estos dispositivos. FPGA. Las FPGA son Campos de Matrices de Puertas Programables. Simplemente son matrices de puertas eléctricamente programables que contienen múltiples niveles de lógica. Las FPGA se caracterizan por altas densidades de puerta, alto rendimiento, un número grande de entradas y salidas definibles por el usuario, un esquema de interconexión flexible, y un entorno de diseño similar al de matriz de puertas. No están limitadas a la típica matriz AND-OR. Por contra, contienen una matriz interna configurable de relojes lógicos (CLBs) y un anillo de circunvalación de bloques de e/s (IOBs). Cada CLB contiene lógica programable combinacional y registros de almacenamiento. La sección de lógica combinacional es capaz de implementar cualquier función booleana de sus variables de entrada. Cada IOB puede programarse independientemente para ser una entrada, y salida con control triestado o un pin bidireccional. También contiene flip-flops que pueden usarse como buffers de Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 33 entrada y salida. Los recursos de interconexión son una red de líneas que corren horizontalmente y verticalmente las filas y columnas entre el CLBS. Los interruptores programables conectan las entradas y salidas de IOBS y CLBS a líneas cercanas. Las líneas largas recorren la anchura o longitud entera del dispositivo, estableciendo intercambios para proporcionar una distribución de señales críticas con la mínima demora o distorsión. Los diseñadores que usan FPGAs pueden definir funciones lógicas en un circuito y revisar estas funciones como sea necesario. Así, las FPGAs pueden diseñarse y verificarse en unos días, a diferencia de las varias semanas necesarias para las matrices de puerta programables 5.4.8 Microprocesador El microprocesador, o simplemente el micro, es el cerebro de la computadora. Es un chip, un tipo de componente electrónico en cuyo interior existen miles (o millones) de elementos llamados transistores, cuya combinación permite realizar el trabajo que tenga encomendado el chip. Los micros, como los llamaremos en adelante, suelen tener forma de cuadrado o rectángulo negro, y van o bien sobre un elemento llamado zócalo (socket en inglés) o soldados en el board, en el caso del Pentium II, metidos dentro de una especie de cartucho que se conecta al mother board (aunque el chip en sí está soldado en el interior de dicho cartucho). A veces al micro se le denomina "la CPU" (Central Process Unit, Unidad Central de Proceso), aunque este término tiene cierta ambigüedad, pues también puede referirse a toda la caja que contiene al mother board, el micro, las tarjetas y el resto de los circuitos principales de la computadora. La velocidad de un micro se mide en megahertz (MHz), aunque esto es sólo una medida de la fuerza bruta del micro; un micro simple y anticuado a 200 MHz puede ser mucho más lento que uno más complejo y moderno (con más transistores, mejor organizado...) que vaya a "sólo" 150 MHz. Es lo mismo que ocurre con los motores de coche: un motor americano de los años 60 puede tener 5.000 cm3, pero no tiene nada que hacer contra un multiválvula actual de "sólo" 2.000 cm3. Debido a la extrema dificultad de fabricar componentes electrónicos que funcionen a las inmensas velocidades de MHz habituales hoy en día, todos los micros modernos tienen 2 velocidades: Velocidad interna: la velocidad a la que funciona el micro internamente (200, 333, 450... MHz). Velocidad externa o de bus: o también "FSB"; la velocidad con la que se comunican el micro y el mother board, para poder economizar el precio de ésta. Típicamente, 33, 60, 66 ó 100 MHz. 5.4.8.1 Por el tipo de Instrucciones que pueden realiza: RISC y CISC Veamos primero cual es el 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. Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 34 Los atributos complejo y reducido describen las diferencias entre los dos modelos de arquitectura para microprocesadores solo de forma superficial. Se requiere de muchas otras características esenciales para definir los RISC y los CISC típicos. Aun más, existen diversos procesadores que no se pueden asignar con facilidad a ninguna categoría determinada. Así, los términos complejo y reducido, expresan muy bien una importante característica definitiva, siempre que no se tomen solo como referencia las instrucciones, sino que se considere también la complejidad del hardware del procesador. Con tecnologías de semiconductores comparables e igual frecuencia de reloj, un procesador RISC típico tiene una capacidad de procesamiento de dos a cuatro veces mayor que la de un CISC, pero su estructura de hardware es tan simple, que se puede realizar en una fracción de la superficie ocupada por el circuito integrado de un procesador CISC. Esto hace suponer que RISC reemplazará al CISC, pero la respuesta a esta cuestión no es tan simple ya que: Para aplicar una determinada arquitectura de microprocesador son decisivas las condiciones de realización técnica y sobre todo la rentabilidad, incluyendo los costos de software. Existían y existen razones de compatibilidad para desarrollar y utilizar procesadores de estructura compleja así como un extenso conjunto de instrucciones. La meta principal es incrementar el rendimiento del procesador, ya sea optimizando alguno existente o se desee crear uno nuevo. Para esto se deben considerar tres áreas principales a cubrir en el diseño del procesador y estas son: La arquitectura. La tecnología de proceso. El encapsulado. La tecnología de proceso, se refiere a los materiales y técnicas utilizadas en la fabricación del circuito integrado, el encapsulado se refiere a cómo se integra un procesador con lo que lo rodea en un sistema funcional, que de alguna manera determina la velocidad total del sistema. Aunque la tecnología de proceso y de encapsulado son vitales en la elaboración de procesadores más rápidos, es la arquitectura del procesador lo que hace la diferencia entre el rendimiento de una CPU (Control Process Unit) y otra. Y es en la evaluación de las arquitecturas RISC y CISC donde centraremos nuestra atención. Dependiendo de cómo el procesador almacena los operandos de las instrucciones de la CPU, existen tres tipos de juegos de instrucciones: Juego de instrucciones para arquitecturas basadas en pilas. Juego de instrucciones para arquitecturas basadas en acumulador. Juego de instrucciones para arquitecturas basadas en registros. Las arquitecturas RISC y CISC son ejemplos de CPU con un conjunto de instrucciones para arquitecturas basadas en registros. Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 35 ARQUITECTURAS CISC La microprogramación es una característica importante y esencial de casi todas las arquitecturas CISC. Como por ejemplo: Intel 8086, 8088, 80286, 80386, 80486. Motorola 68000, 68010, 68020, 68030, 6840. o La microprogramación significa que cada instrucción de máquina es interpretada por un microprograma localizado en una memoria en el circuito integrado del procesador. o En la década de los sesentas la microprogramación, por sus características, era la técnica más apropiada para las tecnologías de memorias existentes en esa época y permitía desarrollar también procesadores con compatibilidad ascendente. En consecuencia, los procesadores se dotaron de poderosos conjuntos de instrucciones. Las instrucciones compuestas son decodificadas internamente y ejecutadas con una serie de microinstrucciones almacenadas en una ROM interna. Para esto se requieren de varios ciclos de reloj (al menos uno por microinstrucción). ARQUITECTURAS RISC Buscando aumentar la velocidad del procesamiento se descubrió en base a experimentos que, con una determinada arquitectura de base, la ejecución de programas compilados directamente con microinstrucciones y residentes en memoria externa al circuito integrado resultaban ser mas eficientes, gracias a que el tiempo de acceso de las memorias se fue decrementándose conforme se mejoraba su tecnología de encapsulado. Debido a que se tiene un conjunto de instrucciones simplificado, éstas se pueden implantar por hardware directamente en la CPU, lo cual elimina el microcódigo y la necesidad de decodificar instrucciones complejas. En investigaciones hechas a mediados de la década de los setentas, con respecto a la frecuencia de utilización de una instrucción en un CISC y al tiempo para su ejecución, se observó lo siguiente: Alrededor del 20% de las instrucciones ocupa el 80% del tiempo total de ejecución de un programa. Existen secuencias de instrucciones simples que obtienen el mismo resultado que secuencias complejas predeterminadas, pero requieren tiempos de ejecución más cortos. Las características esenciales de una arquitectura RISC pueden resumirse como sigue: Estos microprocesadores siguen tomando como base el esquema moderno de Von Neumann. Las instrucciones, aunque con otras características, siguen divididas en tres grupos: a) Transferencia. b) Operaciones. c) Control de flujo. Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 36 Reducción del conjunto de instrucciones a instrucciones básicas simples, con la que pueden implantarse todas las operaciones complejas. Arquitectura del tipo load-store (carga y almacena). Las únicas instrucciones que tienen acceso a la memoria son 'load' y 'store'; registro a registro, con un menor número de acceso a memoria. Casi todas las instrucciones pueden ejecutarse dentro de un ciclo de reloj. Con un control implantado por hardware (con un diseño del tipo load-store), casi todas las instrucciones se pueden ejecutar cada ciclo de reloj, base importante para la reorganización de la ejecución de instrucciones por medio de un compilador. Pipeline (ejecución simultánea de varias instrucciones). Posibilidad de reducir el número de ciclos de máquina necesarios para la ejecución de la instrucción, ya que esta técnica permite que una instrucción puede empezar a ejecutarse antes de que haya terminado la anterior. El hecho de que la estructura simple de un procesador RISC conduzca a una notable reducción de la superficie del circuito integrado, se aprovecha con frecuencia para ubicar en el mismo, funciones adicionales: o Unidad para el procesamiento aritmético de punto flotante. o Unidad de administración de memoria. o Funciones de control de memoria cache. o Implantación de un conjunto de registros múltiples. La relativa sencillez de la arquitectura de los procesadores RISC conduce a ciclos de diseño más cortos cuando se desarrollan nuevas versiones, lo que posibilita siempre la aplicación de las más recientes tecnologías de semiconductores. Por ello, los procesadores RISC no solo tienden a ofrecer una capacidad de procesamiento del sistema de 2 a 4 veces mayor, sino que los saltos de capacidad que se producen de generación en generación son mucho mayores que en los CISC. Por otra parte, es necesario considerar también que: o La disponibilidad de memorias grandes, baratas y con tiempos de acceso menores de 60 ns en tecnologías CMOS. o Módulos SRAM (Memoria de acceso aleatorio estática) para memorias cache con tiempos de acceso menores a los 15 ns. o Tecnologías de encapsulado que permiten realizar más de 120 terminales. o Esto ha hecho cambiar, en la segunda mitad de la década de los ochentas, esencialmente las condiciones técnicas para arquítecturas RISC. APLICACIONES DE LOS PROCESADORES RISC Las arquitecturas CISC utilizadas desde hace 15 años han permitido desarrollar un gran número de productos de software. Ello representa una considerable inversión y asegura a estas familias de procesadores un mercado creciente. Sin embargo, simultáneamente aumentan las aplicaciones en las cuales la capacidad de procesamiento que se pueda obtener del sistema es más importante que la compatibilidad con el hardware y el software anteriores, lo cual no solo es válido en los subsistemas de alta capacidad en el campo de los sistemas llamados "embedded", en los que siempre dominaron las soluciones especiales de alta capacidad de procesamiento sino también para las estaciones de trabajo ("workstations"). Esta clase de equipos se han introducido poco a poco en oficinas, en la medicina y en bancos, debido a los cada vez mas voluminosos y complejos paquetes de Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 37 software que con sus crecientes requerimientos de reproducción visual, que antes se encontraban solo en el campo técnico de la investigación y desarrollo. En este tipo de equipos, el software de aplicación, se ejecuta bajo el sistema operativo UNIX, el cual es escrito en lenguaje C, por lo que las arquitecturas RISC actuales están adaptadas y optimizadas para este lenguaje de alto nivel. Por ello, todos los productores de estaciones de trabajo de renombre, han pasado en pocos años, de los procesadores CISC a los RISC, lo cual se refleja en el fuerte incremento anual del número de procesadores RISC, (los procesadores RISC de 32 bits han visto crecer su mercado hasta en un 150% anual). En pocos años, el RISC conquistará de 25 al 30% del mercado de los 32 bits, pese al aparentemente abrumador volumen de software basado en procesadores con el estándar CISC que se ha comercializado en todo el mundo. La arquitectura MIPS-RISC ha encontrado, en el sector de estaciones de trabajo, la mayor aceptación. Los procesadores MIPS son fabricados y comercializados por cinco empresas productoras de semiconductores, entre las que figuran NEC y Siemens. Los procesadores de los cinco proveedores son compatibles en cuanto a las terminales, las funciones y los bits. CONCLUSIONES Cada usuario debe decidirse a favor o en contra de determinada arquitectura de procesador en función de la aplicación concreta que quiera realizar. Esto vale tanto para la decisión por una determinada arquitectura CISC o RISC, como para determinar si RISC puede emplearse en forma rentable para una aplicación concreta. Nunca será decisiva únicamente la capacidad de procesamiento del microprocesador, y sí la capacidad real que puede alcanzar el sistema en su conjunto. Los costos, por su parte, también serán evaluados. Supongamos por ejemplo, que el precio de un procesador sea de $500.00 USD, éste será secundario para un usuario que diseña una estación de trabajo para venderla después a un precio de $100 000.00 USD. Su decisión se orientará exclusivamente por la potencialidad de este procesador. RISC ofrece soluciones atractivas donde se requiere una elevada capacidad de procesamiento y se presente una orientación hacia los lenguajes de alto nivel. En el campo industrial existe un gran número de aplicaciones que ni siquiera agotan las posibilidades de los controladores CISC de 8 bits actuales. Si bien el campo de aplicaciones de las arquitecturas RISC de alta capacidad crece con fuerza, esto no equivale al fin de otras arquitecturas de procesadores y controladores acreditadas que también seguirán perfeccionándose, lo que si resulta dudoso es la creación de familias CISC completamente nuevas. Adoptando técnicas típicas de los procesadores RISC en las nuevas versiones de procesadores CISC, se intenta encontrar nuevas rutas para el incremento de la capacidad de las familias CISC ya establecidas. Entre tanto, los procesadores RISC han conquistado el sector de las estaciones de trabajo, dominado antes por los procesadores Motorola 68 000, y es muy probable que acosen la arquitectura Intel en el sector superior de las PC's. Las decisiones en el mercado las toman los usuarios, y aquí, el software o la aplicación concreta juega un papel mucho más importante que las diferencias entre las estructuras que son inapreciables para el usuario final. Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 38 4.3.8.2. Por su arquitectura: Von Neumann y Harvard ARQUITECTURA VON NEUMANN Es una familia de arquitecturas de computadoras que utilizan el mismo dispositivo de almacenamiento tanto para las instrucciones como para los datos. La mayoría de computadoras modernas están basadas en esta arquitectura, aunque pueden incluir otros dispositivos adicionales. ARQUITECTURA HARVARD Arquitecturas de computadoras que utilizaban dispositivos de almacenamiento físicamente separados para las instrucciones y para los datos. El término proviene de la computadora Harvard Mark I, que almacenaba las instrucciones en cintas perforadas y los datos en interruptores. VON NEUMANN VS HARVARD Una de las principales diferencias es que en la arquitectura Von Neumann los datos y los programas se almacenan en la memoria y son gestionados por el mismo sistema de manejo de información, en cambio, en la arquitectura Harvard, los datos y programas se almacenan en dispositivos de memoria independientes y manejados por diferentes subsistemas. Un equipo que utiliza la arquitectura Von Neumann, sin caché, la CPU puede ser la lectura/instrucción/escritura, es decir, ambas operaciones no pueden realizarse simultáneamente; en cambio, en la arquitectura Harvard la CPU puede ser una instrucción y los datos de acceso a la memoria el mismo tiempo sin memoria caché. Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 39 Hoy en día la gran mayoría de los equipos son construidos con la arquitectura Von Neumann debido a las capacidades dinámicas del diseño, como la implementación y operación de un programa en vez de dos, aunque puede ser mas lenta para determinadas tareas, es más flexible. 5.4.9 Microcontrolador 5.4.9.1 Que es un Microcontrolador La analogía de un microcontrolador con una computadora va más allá de su programación. Los microcontroladores son circuitos integrados que encierran en un solo chip un CPU (unidad central de procesamiento), las memorias RAM y ROM, los diversos periféricos especiales y los puertos de entrada/salida. Diagrama de bloques de un microcontrolador Los microcontroladores actuales tienden a usar la arquitectura Harvard y RISC Hay muchas marcas de microcontroladores en el mercado. 5.4.9.2 El microcontrolador PIC de Microchip. Sin lugar a dudas, son los microcontroladores que han fascinado al mundo en los últimos años. Su facilidad de uso, comodidad y rapidez en el desarrollo de aplicaciones, abundante información y libre disposición de herramientas software proporcionada por Microchip le han permitido ganar terreno rápidamente en el mercado de los microcontroladores a nivel mundial, hasta convertirse en los microcontroladores más vendidos en la actualidad. El nombre actual no es un acrónimo. En realidad, el nombre completo es PICmicro, aunque generalmente se utiliza como PIC (Peripheral Interface Controller) (controlador de interfaz periférico). Los buenos resultados que le dieron a Microchip la estrategia de proveer libremente a los usuarios de muchas herramientas software para el desarrollo de proyectos con sus productos hicieron que los otros fabricantes de microcontroladores también la adoptaran, aunque parece que la ventaja de Microchip en el mercado está ya marcada y tal vez se acentúe más en el futuro. Por qué empezar con los PICS Por su fácil adquisición. Se pueden conseguir en casi cualquier tienda de electrónica. Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 40 Por su pequeño set de instrucciones, que no logra ser igualado por ningún otro microcontrolador. Es casi mágica la forma cómo se pueden implementar fácilmente casi cualquier algoritmo de programa con solo sus 35 instrucciones básicas. Por su bajo costo. Los PICs son tal vez los microcontroladores más baratos con las características que poseen. Por su fácil aprendizaje. Los PICs cuentan con el menor conjunto de instrucciones, y no por ello menos eficientes, que los convierten de lejos en los de mejor aprendizaje. Por la disponibilidad de herramientas. Las herramientas de hardware y software son de amplio alcance. Eso nos permitirá empezar muy pronto con la experimentación sin la preocupación por mayores recursos. Características de los PICS Algunas de las características y recursos generales y comunes a casi todos los PICs son: Están fabricados con tecnología CMOS. Aunque los dispositivos CMOS son más lentos que los TTL, son ideales para los microcontroladores porque requieren de menor consumo de energía. Es posible implementar sistemas que solo se alimenten de baterías corrientes. La tecnología CMOS, como sabemos, también significa que los transistores, al ser mucho menos, ocupan mucho menor espacio en el chip. Memorias de programa (FLASH, OTP o ROM), memoria de datos estática (SRAM) y memoria EEPROM internas. Puertos de E/S bidireccionales configurables independientemente pin por pin. Suministro de alta corriente en los puertos de E/S. Timer’s. Temporizadores de alta precisión o contadores de pulsos externos. WatchDog. Monitoriza que el PIC funcione adecuadamente a lo que se esperaba y no se cuelgue. ICSP (In Circuit Serial Programming). Permite realizar la programación del PIC utilizando una interface serial con muy pocos pines. Bits de Configuración. A veces llamados fuses, permiten establecer un determinado modo de funcionamiento del PIC, como el tipo de oscilador que utilizará o si el código grabado podrá o no ser leído después de la programación. Otros recursos, más avanzados, son específicos a cada familia de PICs y pueden ser: Módulos PWM. Generadores de ondas PWM (Pulse Width Modulation). Son particularmente útiles para controlar la velocidad de los motores DC. Conversores Analógico-Digital, ADC. Para recibir señales del mundo analógico. Puerto Serial Síncrono, MSSP. Para la comunicación con dispositivos que utilizan los buses I2C o SPI. Puerto Paralelo Esclavo, SPP. Por ejemplo, para conectarse directamente con el puerto paralelo del PC. USART, Transmisor Receptor Síncrono Asíncrono Universal. Para comunicarse mediante los protocolos RS232 con cualquier dispositivo que también lo soporte. Por ejemplo, podemos conectar nuestro PIC al puerto serie del PC o a cualquier otro microcontrolador con USART. Módulo Comparador Analógico. Nos puede ahorrar un OP-AMP y algo más. Módulo CAN. Para facilitarle al PIC su conexión con otros microcontroladores en una pequeña red LAN con un protocolo robusto para trabajar en condiciones extremas. Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 41 Módulo USB. Casi todos los dispositivos digitales modernos presentan interface USB. Con esto podemos diseñar sistemas que no tengan nada que envidiarles. Etc., etc. Clasificación de los PICS Considerando solo a los microcontroladores de 8 bits, Microchip establece una división en cuatro grandes familias: La familia Baseline. Conformada por los grupos PIC10, PIC12, algunos PIC16 y el PIC14000. Todos tienen instrucciones de 12 bits. La mayoría presenta un set de 33 instrucciones y opera a 1MIPS, en tanto que otros cuantos tienen 35 instrucciones y alcanzan los 5MIPS. Tienen muy poca memoria y en cuanto a recursos periféricos, son los menos dotados. La familia Mid-range. Es la familia más distintiva de los PICs. Engloba los PIC16 y algunos PIC12. Todos tienen 35 instrucciones de 14 bits y ninguno supera los 5MIPS. Sus memorias pueden alcanzar las 8092 palabras de 14 bits. En general, en ellos se pueden encontrar casi todos los recursos hardware buscados en un microcontrolador de 8 bits, por eso se suele tomar de aquí algunos modelos como punto de partida de aprendizaje. La familia High-end. Compuesta por los PIC17, esta familia no llegó a tener gran difusión. La pronta aparición de los PIC18 ni siquiera le dejó tiempo a Microchip para pensar en los modelos con memoria flash. El hecho es que los medios hardware y software de desarrollo requeridos han sido relegados y, por tanto, no vale la pena preocuparse por ellos. La familia High-performance o Enhanced. Está formada por los PIC18. Para un mejor trabajo con los compiladores de alto nivel, su repertorio básico consta de 75 instrucciones, de 16 bits, y algunos modelos incluyen un pequeño conjunto de instrucciones extendidas. De todos modos, siempre se mantiene la compatibilidad con las 35 instrucciones de los PICs Mid-range. Todos alcanzan velocidades de operación de hasta 10 MIPS y los PIC18 con USB están optimizados para trabajar hasta a 12 MIPS. Están provistos de un modelo de memoria plano, con lo que se ahorran las tediosas operaciones de cambio de banco. A la vez, puede haber varias decenas de PICs dentro de cada familia, pero las diferencias entre ellos son cada vez menores, como tener algunos pines de E/S más o menos, tener algo de memoria más o menos, tener un Timer más o menos, emplear otro tipo de memoria, y demás detalles de ese tipo.. Algunos PIC de Microchip Viejos PIC16F84A PIC16F628 PIC16F874 PIC16F877 PIC16F887 Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Nuevos PIC16F1826, PIC16F1827 PIC16F1826, PIC16F1827 PIC16F1937 PIC16F1937 PIC16F1937 Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111 42 Diagrama a bloques del más popular PIC el PIC16F84 Facultad de Ingeniería Mecánica Edificio W Ciudad Universitaria Morelia, Michoacán Ignacio Franco Torres 2012-2013 ifranco@correo.fie.umich.mx www.fim.umich.mx Email: fim@umich.mx Tel: 4433223500 ext 3107, 3109, 3111