viernes, 15 de mayo de 2015

Trabajo Final






INTRODUCCION

En este trabajo final el grupo ha desarrollado previamente los momento 1, 2 y 3 se continua con el proceso de desarrollo del momento 4 en el que se consolidan los diseños de la momentos antes mencionados y dan solución al caso de estudio.

En este trabajo final se pretende desarrollar los conceptos propios de la microelectrónica y la creación de circuitos integrados. Desarrollando el blog como parte de la interacción del grupo y solución a las propuestas de diseño junto con las normas APA y estructuras de informes.

Anexo los links de los momentos trabajos anteriores:

Trabajo uno : http://microelectronika.blogspot.ca/2015/03/momento-uno.html

Trabajo Dos : http://microelectronika.blogspot.ca/2015/03/trabajodos.html

Trabajo Tres:  http://microelectronika.blogspot.ca/2015/04/trabajo-colaborativo-3.html


Resumen de las actividades desarrolladas 








Objetivos 
Generales

Desarrollar las prácticas requeridas en la etapa 4 finales del curso de Micro electrónica, lo que incluye leer y analizar el caso de estudio planteado en la guía de actividades

Específicos

Ø  Utilizar como referencia  de materiales,
Ø  Participar activamente dentro del foro de trabajo colaborativo – fase 4
Ø  Plantear posibles alternativas de solución a las fases anteriores
Ø  Retroalimentar a los compañeros de grupo
Ø  Analizar las temáticas de la unidad de aplicación de dispositivos lógicos programables
Ø  Aplicación de dispositivos lógicos programables,
Ø  Análisis y posible solución a la segunda etapa del caso de estudio
Ø  Desarrollar video que dé solución a la segunda etapa del caso de estudio
Ø  Video donde muestren el diseño en DSCH 3 y layout en Microwind
Ø  Participación en el foro.
Ø  Verificación de los resultados con los integrantes del grupo.
Ø  El grupo de trabajo colaborativo analizará el caso de estudio planteado dentro de esta guía integradora de actividades y discutirán dentro del foro de trabajo colaborativo las posibles soluciones que puedan surgir mediante las lecturas de referencias complementarias y sugeridas como también utilizando la rúbrica TIGRE.

Ø  Cada estudiante hará mínimo tres intervenciones respecto a las conclusiones y aspectos más relevantes que encontró según las lecturas de la unidades, y usando la rúbrica TIGRE retroalimentara mínimo a dos compañeros junto con sus aportes.


MARCO TEORICO


DISEÑO CON LOGICA PROGRAMABLE
El procesamiento digital de señales o DSP (sigla en inglés de digital signal processing).  Es la manipulación matemática de una señal de información para modificarla o mejorarla en algún sentido. Este está caracterizado por la representación en el dominio del tiempo discreto, en el dominio frecuencia discreta, u otro dominio discreto de señales por medio de una secuencia de números o símbolos y el procesado de esas señales.

 Esto se puede conseguir mediante un sistema basado en un procesador o microprocesador que posee un juego de instrucciones, un hardware y un software optimizados para aplicaciones que requieran operaciones numéricas a muy alta velocidad. Debido a esto es especialmente útil para el procesado y representación de señales analógicas en tiempo real: en un sistema que trabaje de esta forma (tiempo real) se reciben muestras (samples en inglés), normalmente provenientes de un conversor analógico/digital (ADC). Se puede trabajar con señales analógicas, pero es un sistema digital, por lo tanto necesitará un conversor analógico/digital a su entrada y digital/analógico en la salida.
Como todo sistema basado en procesador programable necesita una memoria donde almacenar los datos con los que trabajará y el programa que ejecuta.  Uno de los beneficios principales del DSP es que las transformaciones de señales son más sencillas de realizar. Una de las más importantes transformadas es la transformada de Fourier discreta (TFD). Esta transformada convierte la señal del dominio del tiempo al dominio de la frecuencia. La TDF permite un análisis más sencillo y eficaz sobre la frecuencia, sobre todo en aplicaciones de eliminación de ruido y en otros tipos de filtrado (filtros de paso bajo, de paso alto, de paso banda, de rechazo de banda, etc.).  Otra de las transformadas importantes es la transformada de coseno discreta, que es similar a la anterior en cuanto a los cálculos requeridos para obtenerla, pero esta convierte a las señales en componentes del coseno trigonométrico. Esta transformada es una de las bases del algoritmo de compresión de imágenes JPEG.  Un DSP está diseñado teniendo en cuenta las tareas más habituales del procesado digital: sumas, multiplicaciones y retrasos (almacenar en memoria).


Los DSP abandonan la arquitectura clásica de Von Neumann, en la que datos y programas están en la misma zona de memoria, y apuestan por la denominada Arquitectura Harvard. En una arquitectura Harvard existen bloques de memoria físicamente separados para datos y programas. Cada uno de estos bloques de memoria se direcciona mediante buses separados (tanto de direcciones como de datos), e incluso es posible que la memoria de datos tenga distinta anchura de palabra que la memoria de programa (como ocurre en ciertos microcontroladores).  Los elementos básicos que componen un DSP son:   Conversores en las entradas y salidas. Memoria de datos, memoria de programa y DMA. MACs: multiplicadores y acumuladores. ALU: Unidad aritmético-lógica. Registros. PLL: Bucles enganchados en fase. PWM: Módulos de control de ancho de pulso.

Los dispositivos Field Programable Gate Arrays, en español Arreglos de Compuertas Programable en el Campo, tal como su nombre lo indica son un arreglo (arrays) matricial de bloques lógicos (gates) programables (programable) en cualquier espacio físico (Field).

ALTERNATIVAS DE DISEÑO DE CIRCUITOS INTEGRADOS
Full Custom Tradicionalmente, un diseño Full Custom (FC) se entiende que es aquel en el que el layout  e optimiza a mano. Por ejemplo: Utilizar lógicas no estándar, es posible que no haya librerías con los componentes adecuados, y se hace necesario diseñar específicamente los bloques a utilizar. Otra razón puede ser la modificación manual de algunos bloques para mejorar sus prestaciones, dimensionando específicamente los transistores que lo componen. El resultado es un circuito  normalmente de altas prestaciones y de área muy reducida, pero el inconveniente es un coste de diseño muy elevado (sobre todo en personas-tiempo).

Actualmente la alta complejidad de los sistemas que se diseñan hace impracticable la estrategia FC para el chip completo, pero muchos sistemas siguen teniendo partes críticas optimizadas manualmente, con lo que los diseños FC son en realidad en parte FC y en parte un diseño basado en librerías (Standard Cell).  Standard Cell Un diseño Standard Cell (SC) se basa en una librería de celdas (componentes funcionales), todas con la misma altura. Esto permite disponerlas de forma contigua formando un conjunto de las y espacios entre ellas. Es posible generar una librería SC o añadir elementos a una librería existente con bloques que sean necesarios para un diseño concreto. En este caso, los bloques deben diseñarse con la altura correcta para que se puedan usar en el entorno de diseño SC.
Gate Array Un circuito Gate Array (GA) o matriz de puertas, se basa en la interconexión de bloques pre-colocados consistentes en primitivas de diseño (por ejemplo, puertas NAND y biestables). Con las primitivas de diseño se puede realizar cualquier sistema digital mientras se interconecte adecuadamente.
El proceso de diseño consiste en definir las interconexiones, lo cual es sencillo desde el punto de vista de la automatización del proceso. Además, el proceso de fabricación es también más sencillo, ya que sólo las capas de metalización son diferentes para diferentes diseños. Por tanto, se parte de obleas prefabricadas, en donde ya se han fabricado los transistores que forman las primitivas y su interconexión local que define los bloques, y sólo se añaden las capas de interconexión entre primitivas.
Las ventajas de esta alternativa son su rapidez en el diseño, la reducción de costes de fabricación, ya que parte del proceso es común para cualquier diseño y por tanto se distribuyen los costes entre muchos diseños diferentes, y también un menor tiempo de fabricación. Por contra, el circuito resultante no está optimizado ni en área ni en prestaciones, por lo que es una alternativa de bajo coste usada sobre todo para prototipos o en aplicaciones poco exigentes.

FPGA Las FPGA (del inglés Field Programmable Gate Array), también conocidas genéricamente como dispositivos programables, son una evolución del concepto de GA. Consisten a grandes rasgos en un chip completamente fabricado en el cual hay una matriz de bloques, cada uno conteniendo un conjunto de primitivas lógicas.
La interconexión entre bloques se realiza no en la etapa de fabricación como en las GA, sino a base de multiplexores que conectan un conjunto de bloques con otro. En función del valor de selección de los multiplexores de conexión, se define la conexión del sistema global y por tanto, su definición. El conjunto de valores de selección para todos los multiplexores de conexión se guarda en una memoria no volátil, y cambiando el contenido de la memoria se cambia la funcionalidad del chip (se personaliza). Dentro de la familia de dispositivos programables existen muchas subfamilias en función de su arquitectura (número y tipo de bloques lógicos) y del tipo de memoria (OTP o programable una sola vez, reprogramable, programable en campo). Las ventajas de esta alternativa son su gran flexibilidad y el hecho de que la personalización del chip es prácticamente inmediata.
Por otra parte, sus inconvenientes son, al igual que con las GA, la falta de optimización de prestaciones y área. Otro inconveniente a mencionar es que el proceso de personalización debe hacerse por cada dispositivo, por lo que es una opción para volúmenes de producción poco elevados.
Un FPGA es un dispositivo que un diseñador de sistemas digitales puede programar, después que está soldado en el circuito impreso, para que funcione de un modo determinado. Los FPGAs son fabricados con conexiones y lógica programables. El diseñador desarrolla su sistema digital usando herramientas tipo EDA (Electronics Design Automation), sean dibujos esquemáticos o lenguaje de descripción de hardware (como VHDL), para poder plasmar el sistema en lógica digital.  Luego de simular satisfactoriamente el sistema digital comprobando su funcionalidad se usan herramientas específicas del vendedor del FPGA para crear un archivo de configuración del FPGA, el cual describe todas las conexiones, interconexiones y lógica que necesita ser programada dentro del FPGA para poder implementar el sistema digital desarrollado.


Entonces, a través de un cable USB se conecta el FPGA o el circuito impreso en cual está soldado el FPGA, a una PC y usando el software de configuración del FPGA se descarga el archivo de configuración. Una vez comprobado el correcto funcionamiento del sistema en el FPGA se graba el archivo de configuración en una memoria no volátil que el FPGA leerá y usará para auto-configurarse cada vez que se aplica la tensión de alimentación al FPGA o cada vez que se desee re-configurar el FPGA.


Desarrollo de la actividad de la fase 4 
(Complementado con las fases 1, 2 y 3) 



CIRCUITO INTEGRADO CON LAS TRES ETAPAS
ETAPA 1: 
Para la primera etapa se diseñara el sistema de apertura y cierre de las puertas de acceso del laboratorio, teniendo en cuenta que son dos salones, estos estarán interconectados por una puerta de acceso y otra puerta estará definida como ingreso al laboratorio, en cuyo caso serán dos puertas en total, una de interconexión y otra de acceso general; según el historial de participación e ingreso a recinto de los estudiantes se deben automatizar las puertas tal que el ingreso de los estudiantes sea coordinado con las clases y con las prácticas de investigación según sea el caso, en la siguiente tabla se muestra el esquema de apertura y cierre de las puertas y encendido y apagado de un led según las condiciones dadas anteriormente:


Un monitor de laboratorio solo tiene la manipulación de la puerta principal, las demás condiciones dadas en la tabla anterior se deben generar según sea el caso, si por ejemplo la puerta de acceso principal se abre la puerta de interconexión entre los salones también se abre y el led de indicación de puerta de interconexión se enciende y el led de puerta de acceso principal se apaga, para ello de sebe diseñar y desarrollar el circuito integrado que permita la realización de esta etapa.

SOLUCION: Lógica de control
R= (A&B) + (~A&B)  ==>    R = B (A +~A)  ==>  R = B. 1   ==> R = B

S = (~A & ~B) + (A & ~B)  ==>  S = (~A +A) & (~B) ==>   1 & ~B ==>  S = ~B









ETAPA 2:

Para la etapa 2, los diseñadores deberán crear un circuito integrado capaz de controlar la temperatura del laboratorio, para ello tendrán un sensor de grados de ocho estados en los que se destacan mayormente las temperaturas más alcanzadas, también contaran con un techo movedizo de apertura y cierre y dos ventiladores para la ayuda de refrigeración del laboratorio, y dos led de indicación de estados caliente o frio según la temperatura del laboratorio, para poder comenzar con el diseño del circuito integrado se ha diseñado la siguiente tabla con las condiciones predefinidas:


Si por ejemplo la temperatura alcanza los 10º C, el panel de techo se cierra, el ventilador 1 se apaga y el ventilador 2 se apaga, pero el led de indicación de temperatura promedio estará apagado, indicando la temperatura más baja, para ello se deberá diseñar el circuito integrado que satisfaga estas condiciones.
SOLUCION LOGICO DE CONTROL
ENTRADAS
TEMP = TEMPERATURE = CELSIUS = ESCALA 10 – 60  - ANALOGA
SALIDAS
PT =         ABRIR PANEL TECHO
VENT1=   VENTILADOR 1 ON
VENT2 = VENTILADOR 2 ON
LED =       LED TEMPERATURA PROMEDIO ON
LOGICA DE CONTROL
PT =                 (TEMP >= 40 & TEMP <= 60).
VENT1 =          (TEMP >=25  & TEMP <=40)  + ( TEMP>=52  & TEMP <= 60)
VENT2 =          (TEMP>=18  & TEMP <= 25) + (TEMP >=32  & TEMP <= 40) +(TEMP >= 48 & TEMP <= 52) + (TEMP >=60)

LED =               (TEMP>=25 & TEMP <= 52)











SIMULACIÓN DE LA ETAPA 3:
ETAPA 3:

En la etapa 3, los diseñadores deberán crear el último integrado capaz de controlar las cámaras de vigilancia, dado que solo se tienen cuatro cámaras, se deberán mover en un rango de derecha a izquierda según un tiempo dado, para  ello se ha establecido un led de indicación de vigilancia en el salón 1 y el salón 2, para ello de a creado la siguiente tabla con las condiciones que se deberán diseñar para obtener el circuito integrado:


LOGICA  DE CONTROL
 C1= Cámara 1

  C2= Cámara 2

 C3= Cámara 3

 C4= Cámara 4

 L1= Led Vigilancia Salón 1
  L2= Led Vigilancia Salón 2


  

C1= T1 + T3 + T4 + T5
      C1 = (A&~B&~C) + (A&B+~C) + (~A~B&C) + (A&~B&C)
      C1= (A & ~C) (~B + B) + (~B & C) (~A + A)
      C1= (A& ~C) + (~B& C)
C2 = T2 + T3 + T5
      C2 = (~A&B&~C) + (A&B&~C) + (A&~B&C)
      C2= (B&~C) (~A+A) + (A&~B&C)
      C2= (B&~C) + (A&~B&C)
C3= T4 + T5 + T6
     C3= (~A&~B&C) + (A&~B&C) + (~A&B&C)
     C3= ~BC (~A+A) + (~A&B&C)
     C3= ~BC + (~A&B&C)
     C3= C (~B + ~AB)
C4 = T4 + T5 +T6 + T7
        C4 = (~A~BC) + (A~BC) + (~ABC) + (ABC)
        C4 = C

L1= T1 + T2 + T3 + T4
     L1 = (A~B~C) + (~AB~C) + (AB~C) + (~A~BC)
     L1 = ~C (A~B + ~AB + AB) + (~A~BC)
     L1 = ~C +  (~A~BC)
L2= T4 + T5 + T6 + T7
       L2 = (~A~BC) + (A~BC) + (~ABC) + (ABC)
       L2 = C




















Simulacion en Microwind software













Programa en Verilog:

module trabajo_finalV3( in1,clk1,in2,T0s10,T1s18,T2s25,T3s32,T4s40,
 T5s48,T6s52,T7s60,Puerta_interconexion,digit2,digit3,digit4,Cam1,
 Cam3,Cam4,Led_salon1,Led_Salon2,Cam2,Led_temperatura,Vent_uno,Panel_techo,
 Vent_dos,Puerta_interconexionLed,Puerta_PrincipalLed);
 input in1,clk1,in2,T0s10,T1s18,T2s25,T3s32,T4s40;
 input T5s48,T6s52,T7s60,Puerta_interconexion;
 output digit2,digit3,digit4,Cam1,Cam3,Cam4,Led_salon1,Led_Salon2;
 output Cam2,Led_temperatura,Vent_uno,Panel_techo,Vent_dos,Puerta_interconexionLed,Puerta_PrincipalLed;
 wire w3,w5,w6,w20,w21,w22,w23,w24;
 wire w26,w27,w28,w30,w32,w33,w43,w44;
 wire w45,w46,w47,w48,w49,w50,w51,w52;
 wire w53,w54,w55,w56,w57,w58,w59,w60;
 wire w61,w62,w63;
 or #(37) or2_1(w3,w6,in2);
 assign Cam1=((~digit2)&digit4)|((~digit3)&digit2);
 assign Cam2=(digit3&(~digit2))|(digit4&(~digit3)&digit2);
 assign Cam3=(digit2&(~digit3|((~digit4)&digit3)));
 assign Cam4=digit2;
 assign Led_salon1=~digit2 | ((~digit4)&(~digit3)&digit2);
 assign Led_Salon2=digit2;
 assign Panel_techo=(w20|w21|w22|w23);
 assign Vent_uno=((w26|w27)&(~w20))|w22;
 assign Vent_dos=(w30|(w27&(~w20))|(w21&(~w22)));
 assign w30=((w32&(~w26))|w23);
 assign Led_temperatura=(w26&(~w22));
 and #(44) and2_2(w32,T1s18,T0s10);
 and #(72) and2_3(w26,T2s25,w32);
 and #(58) and2_4(w27,T3s32,w26);
 and #(72) and2_5(w20,T4s40,w27);
 and #(58) and2_6(w21,T5s48,w20);
 and #(86) and2_7(w22,T6s52,w21);
 and #(44) and2_8(w23,T7s60,w22);
 not #(10) inv_9(Puerta_PrincipalLed,Puerta_interconexionLed);
 mux #(24) mux2x4_1_10(w50,w5,w43,w44,w45,w46,vss,vss,vss,vss,w47,w48,w49);
 mux #(20) mux_1_2_11(w49,w43,vss,w5);
 mux #(20) mux_2_3_12(w48,w44,vss,w5);
 mux #(20) mux_3_4_13(w47,w45,vss,w5);
 mux #(20) mux_4_5_14(w50,w46,vss,w5);
 dreg #(3) dreg_1_6_15(w6,w52,w49,w3,w51);
 dreg #(3) dreg_2_7_16(digit2,w53,w48,w3,w51);
 dreg #(3) dreg_3_8_17(digit3,w54,w47,w3,w51);
 dreg #(3) dreg_4_9_18(digit4,w55,w50,w3,w51);
 not #(50) inv_5_10_19(w51,clk1);
 xor #(21) xor2_1_11_20(w44,digit2,w56);
 and #(27) and2_2_12_21(w57,w56,digit2);
 xor #(21) xor2_3_13_22(w43,w6,w57);
 and #(2) and2_4_14_23(w58,w57,w6);
 xor #(21) xor2_5_15_24(w45,digit3,w59);
 and #(27) and2_6_16_25(w56,w59,digit3);
 xor #(21) xor2_7_17_26(w46,digit4,in1);
 and #(27) and2_8_18_27(w59,in1,digit4);
 and #(15) and2_1_19_28(w61,w60,w6);
 and #(15) and2_2_20_29(w63,digit4,w62);
 not #(13) inv_3_21_30(w60,digit2);
 not #(13) inv_4_22_31(w62,digit3);
 and #(57) and2_5_23_32(w5,w63,w61);
endmodule


module counter10( enable,rst,clk,equal9,q3,q2,q1,q0);
 input enable,rst,clk;
 output equal9,q3,q2,q1,q0;
 wire w3,w4,w5,w6,w7,w8,w9,w10;
 wire w18,w19,w20,w21,w22,w23,w24,w25;
 wire w26,w27,w28,w29,w30;
 mux #(20) mux2x4_1(w10,equal9,w3,w4,w5,w6,vss,vss,vss,vss,w7,w8,w9);
 mux #(12) mux_1_2(w9,w3,vss,equal9);
 mux #(12) mux_2_3(w8,w4,vss,equal9);
 mux #(12) mux_3_4(w7,w5,vss,equal9);
 mux #(12) mux_4_5(w10,w6,vss,equal9);
 dreg #(6) dreg_1_6(q3,w19,w9,rst,w18);
 dreg #(6) dreg_2_7(q2,w20,w8,rst,w18);
 dreg #(6) dreg_3_8(q1,w21,w7,rst,w18);
 dreg #(6) dreg_4_9(q0,w22,w10,rst,w18);
 not #(44) inv_5_10(w18,clk);
 xor #(14) xor2_1_11(w4,q2,w23);
 and #(25) and2_2_12(w24,w23,q2);
 xor #(14) xor2_3_13(w3,q3,w24);
 and #(4) and2_4_14(w25,w24,q3);
 xor #(14) xor2_5_15(w5,q1,w26);
 and #(25) and2_6_16(w23,w26,q1);
 xor #(14) xor2_7_17(w6,q0,enable);
 and #(25) and2_8_18(w26,enable,q0);
 and #(15) and2_1_19(w28,w27,q3);
 and #(15) and2_2_20(w30,q0,w29);
 not #(12) inv_3_21(w27,q2);
 not #(12) inv_4_22(w29,q1);
 and #(43) and2_5_23(equal9,w30,w28);
endmodule


Video link :  https://plus.google.com/u/0/photos?pids=6149129313194392786&oid=110228555657568794897&pid=6149129313194392786



Anexo los links de los momentos trabajos anteriores:



Conclusiones 

  • Facilidad de diseño y programación con los FPGA, estas nuevas herramientas permiten expresar la lógica de los circuitos utilizando formas variadas de entrada tales como; ecuaciones, tablas de verdad, procedimientos para máquinas de estados, esquemas, etc. La simulación digital posibilita la depuración de los diseños antes de la programación de los dispositivos.  Todo el equipo de diseño se reduce a un software de bajo coste que corre en un PC, y a un programador.
  • Los PLDs TTL tienen tiempos de conmutación tan rápidos como los circuitos integrados de función fija más veloces. Los PLDs ECL son todavía más rápidos. El incremento de velocidad obtenido con los dispositivos CMOS, que ya han igualado o superado en prestaciones a los dispositivos TTL, está provocando el abandono de la tecnología bipolar por parte de los fabricantes. 
  • En cuanto al consumo de potencia, los PLDs generalmente consumen menos que el conjunto de chips a los que reemplazan.
  • v  Para los FPGAs sus características se tiene: Field Programable Gate Arrays (Matrices de puertas programables en campo), Superan las limitaciones en tamaño de las CPLDs, mediante arquitecturas avanzadas, ofrecen mayor variedad de recursos lógicos: Lógica combinacional, Lógica secuencial, Memoria RAM, Conformadores de reloj, Señales globales, Multiplicadores,
  • v  Estos bloques lógicos e interconexiones pueden ser programados después del proceso de manufactura por el usuario/diseñador, así que el FPGA puede desempeñar cualquier función lógica necesaria.
  • v  La reducción del área de las placas de circuito impreso obtenida gracias a que cada PLD sustituye a varios circuitos integrados de función fija. Muchas veces se consigue reducir el número de placas de circuito impreso economizándose en conectores.
  • v  Las memorias ROM resultan de menor coste que las EPROM, las HAL (Hard Array Logic) o PLDs programados por el fabricante proporcionan ahorros adicionales en grandes cantidades.
  • v  En términos de Seguridad. Los PLDs tienen fusibles de seguridad que impiden la lectura de los dispositivos programados, protegiendo los diseños frente a copias.
  • v  Además de los puntos mencionados, podemos añadir que los PLDs facilitan el ruteado de las placas de circuito impreso debido a la libertad de asignación de patillas que proporcionan. Permiten realizar modificaciones posteriores del diseño y en ocasiones hacen posible la reutilización de circuitos impresos con algunos fallos, mediante una reasignación de los PLDs.
  •  
  • v  Muchos FPGA modernos soportan la reconfiguración parcial del sistema, permitiendo que una parte del diseño sea reprogramada, mientras las demás partes siguen funcionando. Este es el principio de la idea de la «computación reconfigurable», o los «sistemas reconfigurables».
  • v  Un PLA es un bloque funcional que se utiliza para implementar multifunciones booleanas. Existe una gran relación entre su estructura interna y el conjunto de funciones que realiza. Un PLA está constituido básicamente por dos submatrices o planos denominados plano AND y OR, respectivamente. La realización física de un PLA se lleva a cabo mediante la conexión de cada una de las celdas que pertenecen a las regiones anteriores (buffers de entrada, plano AND, transistores de pull-up del plano AND, conexión AND-OR, plano OR, transistores de pull-up del plano OR y buffers de salida). De todas estas celdas, sólo las de los planos AND y OR están relacionadas con las funciones lógicas que definen el circuito. El resto hace referencia a otros factores externos ajenos a la lógica propiamente dicha.
  • v  La Programación de FPGA tiene celdas que se configuran con una función específica ya sea como memoria (FLIP-FLOP tipo D), como multiplexor o con una función lógica tipo AND, OR, XOR. La labor del "programador" es describir el hardware que tendrá la FPGA. La tarea del "programador" es definir la función lógica que realizará cada uno de los CLB, seleccionar el modo de trabajo de cada IOB e interconectarlos.
  • v  El diseñador cuenta con la ayuda de entornos de desarrollo especializados en el diseño de sistemas a implementarse en un FPGA.  Un diseño puede ser capturado ya sea como esquemático, o haciendo uso de un lenguaje de programación especial. Estos lenguajes de programación especiales son conocidos como HDL o Hardware Description Language (lenguajes de descripción de hardware). Los HDLs más utilizados son: VHDL, Verilog, ABEL.
  • v  El ciclo de diseño con PLDs es mucho más rápido que los de las matrices de puertas o las células normalizadas. En determinadas aplicaciones, un PLD puede sustituir desde unos pocos hasta unas decenas de CI de función fija, mientras que los grandes ASICs pueden sustituir a cientos e incluso miles de CI.
  • v  Los PLD se utilizan para realizar prototipos que posteriormente se llevarán a un ASIC más complejo. El trabajo con PLDs proporciona: facilidad de diseño, prestaciones, fiabilidad, economía y seguridad.
  • v  Tanto los CPLDs como las FPGAs contienen un gran número de elementos lógicos programables. Si medimos la densidad de los elementos lógicos programables en puertas lógicas equivalentes (número de puertas NAND equivalentes que podríamos programar en un dispositivo) podríamos decir que en un CPLD hallaríamos del orden de decenas de miles de puertas lógicas equivalentes y en una FPGA del orden de cientos de miles hasta millones de ellas.
  • v  Las diferencias en densidad entre ambos tipos de dispositivos, la diferencia fundamental entre las FPGAs y los CPLDs es su arquitectura. La arquitectura de los CPLDs es más rígida y consiste en una o más sumas de productos programables cuyos resultados van a parar a un número reducido de biestables síncronos (también denominados flip-flops).
  •  v  La arquitectura de las FPGAs, por otro lado, se basa en un gran número de pequeños bloques utilizados para reproducir sencillas operaciones lógicas, que cuentan a su vez con biestables síncronos. La enorme libertad disponible en la interconexión de dichos bloques confiere a las FPGAs una gran flexibilidad.
  • v  Otra diferencia importante entre FPGAs y CPLDs es que en la mayoría de las FPGAs se pueden encontrar funciones de altos niveles (como sumadores y multiplicadores) embebidas en la propia matriz de interconexiones, así como bloques de memoria.
  • v  El conocimiento previo de lógica digital y control de circuitos ayuda considerablemente a la reducción de circuitos lógicos, y poder realizarlos en el software Dsch.
  • v  La participación con los miembros del grupo permite la interacción y clarificación de conceptos.
  • v  El software Dsch y el Microwind son herramientas muy amigables para su uso.






Referencias Bibliográficas


·         Robayo, F. (2009). Introducción a la Microelectrónica y Procesos de Fabricación. Bogotá D.C.: Universidad Nacional Abierta y/a Distancia. Disponible en:  http://datateca.unad.edu.co/contenidos/299008/299008_AVA/Entorno_de_Conocimiento/Unidad_1/Introduccion_a_la_Electronica_y_procesos_de_fabricacion_.pdf
·         Robayo, F. (2009). Repaso de Electrónica Digital y Circuitos Combinacionales. Bogotá D.C.: Universidad Nacional Abierta y/a Distancia. Disponible en:  http://datateca.unad.edu.co/contenidos/299008/299008_AVA/Entorno_de_Conocimieto/Unidad_1/Repaso_de_Electronica_Digital_y_Circuitos_Combinacionales.pdf
·         Sola, J. A. R. (2003). Diseño de circuitos y sistemas integrados. Consultado en 10, 18, 2014 en http://books.google.es/books?hl=es&lr=&id=4AtUxr5u6JMC&oi=fnd&pg=PT16&dq=Procesos+de+fabricaci%C3%B3n+de+circuitos+integrados&ots=spJDCPZPo9&sig=Y8FgZlHm ZBAKGn8-
·         3GNnbxjqy8E#v=onepage&q=Procesos%20de%20fabricaci%C3%B3n%20de%20circuitos%20integrados&f=false.
·         Tocci, R. J., &Widmer, N. S. (2003). Sistemas Digitales Principios y Aplicaciones.
·         Robayo, F. (2009). Diseño con Lógica Programables y Estructura de los FPGAs. Bogotá D.C.: Universidad Nacional Abierta y/a Distancia. Disponible en:http://datateca.unad.edu.co/contenidos/299008/299008_AVA/Entorno_de_Conocimiento/Unidad_3/Diseno_con_logica_programable_y_estructura_de_los_FPGAs.pdf
·          Robayo, F. (2009). Otros Dispositivos Programables y Familias FPAAs. Bogotá D.C.:Universidad Nacional Abierta y/a Distancia. Disponible en:http://datateca.unad.edu.co/contenidos/299008/299008_AVA/Entorno_de_Conocimiento/Unidad_3/Otros_dispositivos_programables_y_familias_FPAAs.pdf
·          Robayo, F. (2009). Otras Aplicaciones. Bogotá D.C.: Universidad Nacional Abierta y/a Distancia. Disponible en: http://datateca.unad.edu.co/ contenidos/299008/299008_AVA/Entorno_de_Conocimiento/Unidad_3/Otras_Apliaciones.pdf
·          Magdaleno, E., Rodríguez, M., Ayala, A., Mendoza, B., & Rodríguez, S. (2004). Metodología para el Aprendizaje de Sistemas Electrónicos Digitales y su Diseño. Consultado en 10, 18, 2014 en http://espacio.uned.es/fez/eserv.php?pid=taee:congreso-2004-1133&dsID=SP102.pdf.
·          Pérez, E. M., Acevedo, J. M., & Silva, C. F. (2009). Autómatas programables y sistemas de automatización. Consultado en 10, 18, 2014 en http://books.google.es/books?hl=es&lr=&id=5jp3bforBB8C&oi=fnd&pg=PA1&dq=

·         Dispositivos+l%C3%B3gicos+Programables&ots=g0Bv8_5kYa&sig=C96Lo0qnl7 1HSeAXhQgDpm_5DUE#v=onepage&q=Dispositivos%20l%C3%B3gicos%20Pr

miércoles, 22 de abril de 2015

TRABAJO COLABORATIVO 3




Instructor : Nestor Javier Rodriguez





Introducción

El Incremento de popularidad y de utilización de los dispositivos lógicos programables o PLDs está siguiendo un proceso solamente comparable al que hace algunos años acompañó a los microprocesadores. Los PLDs se utilizan en casi todos los nuevos equipos electrónicos de control, industriales, de consumo, de oficina, de comunicaciones, etc.

Desde finales de la década de los sesenta, los equipos electrónicos digitales se han construido utilizando circuitos integrados de función lógica fija, realizados en pequeña o mediana escala de integración. Para las realizaciones muy complejas que exigirían un número elevado de circuitos integrados (CI) de función fija, se utilizan circuitos diseñados a medida que sólo sirven para una aplicación. Son los llamados CI específicos a una aplicación o ASIC (Application Specific Integrated Circuit). Por regla general, los ASICs los producen los fabricantes de CI con las especificaciones proporcionadas por el usuario. Los equipos realizados con ASICs ocupan menos espacio, son más fiables, consumen menos energía y en grandes series resultan más baratos que los equipos equivalentes realizados con CI de función fija. Por otro lado, estos circuitos son muy difíciles de copiar.  Diferentes modalidades de ASICs son; los Circuitos a Medida (Full Custom), las Matrices de Puertas (Gate Arrays), las Células Normalizadas (Standard Cell) y los FPICs (Field Programmable Integrated Circuits); estos últimos son circuitos programables por el usuario final.
El siguiente grafico representa la arquitectura general del FPGA.




Objetivos


Principal
  • ·   Leer y analizar el caso de estudio ejercicio planteado en la guía de actividades y desarrollar  Análisis y posible solución a la segunda etapa del caso de estudio


Secundarios
  • ·         Utilizar como referencia  de materiales,
  • ·         Participar activamente dentro del foro de trabajo colaborativo – fase 3
  • ·         Plantear posibles alternativas de solución a la segunda etapa del caso
  • ·         Retroalimentar a los compañeros de grupo
  • ·         Analizar las temáticas de la unidad de aplicación de dispositivos lógicos programables
  • ·         Aplicación de dispositivos lógicos programables,
  • ·         Desarrollar video que dé solución a la segunda etapa del caso de estudio
  • ·         Video donde muestren el diseño en DSCH 3 y layout en Microwind



MARCO TEORICO

Clases de Dispositivos Lógicos Programables.

Circuitos integrados a medida. Los Circuitos Integrados a Medida (Full Custom), se diseñan a petición de un cliente para que resuelvan una determinada aplicación. Conllevan un alto coste de desarrollo y su empleo sólo se justifica para volúmenes de producción muy elevados. El tiempo necesario para la construcción de un CI a medida es considerable ya que puede oscilar de unos meses a unos años.

Matrices de puertas. Las Matrices de puertas (Gate Arrays) son pequeños trozos de silicio pendientes de algún proceso de metalización que defina las conexiones entre un importante número de puertas o transistores que poseen en su interior. Las matrices de puertas proporcionan densidades superiores a las 100.000 puertas, con un aprovechamiento del 80 al 90 por 100 para los dispositivos pequeños y del 40 por 100 para los grandes. Los fabricantes de silicio ponen a disposición de sus potenciales clientes abundante documentación sobre estos Gate Arrays, con una serie de macros que pueden utilizar de forma inmediata y otras que pueden construirse ellos mismos.

Los macros son agrupaciones de un número de células básicas que realizan funciones comunes como; sumadores; puertas NOT, AND, NAND, NOR XOR, etc.; latches y flip-flops S-R, J-K, D; buffer; osciladores; registros, decodificadores, multiplexores, etc. Junto a esta documentación, los fabricantes aportan un software que contabiliza el número de células básicas utilizadas por todas las macros, sugiere el Gate Array adecuado para la aplicación, calcula la potencia disipada por el Gate Array que alojará el diseño del cliente, proporciona información sobre los tiempos de propagación de las señales y permite verificar el funcionamiento del circuito.

Una vez superadas todas las etapas previas, el cliente envía la documentación generada al fabricante para que éste ultime los procesos de metalización y fabrique un primer prototipo. El diseño con Gate Arrays puede durar semanas o meses. Requiere un volumen alto de circuitos para justificar sus costes. 


Células normalizadas. Las células normalizadas (Standard Cell) son, en cierta forma, similares a las matrices de puertas. Su principal ventaja sobre ellas es que en lugar de trabajar con simples puertas o transistores, se dispone de colecciones de diferentes partes de circuitos que han sido depurados (puertas lógicas, circuitos MSI, RAM estáticas, ficheros de registro, etcétera).

El usuario tiene que ensamblar estos circuitos, verificarlos y finalmente enviar documentación al fabricante de silicio para el desarrollo del primer prototipo. A pesar del concepto de célula normalizada, los períodos y los costes de desarrollo son superiores a los de las matrices de puertas.

En las matrices de puertas sólo hay que realizar la máscara final que define las conexiones entre las puertas, mientras que en las células normalizadas, hay que realizar máscaras para todos los procesos de producción de los CI. Una vez más, el volumen de fabricación deberá ser los suficientemente alto como para amortizar la inversión económica realizada en el desarrollo.




FPICs.
Los FPICs (Field Programmable Integrated Circuits): son chips programables por el usuario mediante programadores comerciales. El término FPIC también incluye a los CI no destinados a las aplicaciones lógicas. Son las memorias, los microcontroladores, los PLD (Programmable Logic Device), las FPGA (Field  Programmable  Gate Array) y los ASPLD (Aplication Specific Programmable Logic Devices). 

Los FPIC ofrecen soluciones de bajo coste, de tiempo de desarrollo corto y con menor riesgo que los circuitos a medida, las matrices de puertas y las células normalizadas.



PLDs. Los PLDs (Programmable Logic Devices) son pequeñas ASICs configurables por el usuario capaces de realizar una determinada función lógica. La mayoría de los PLD consisten en una matriz de puertas AND seguida de otra matriz de puertas OR.

Mediante esta estructura, puede realizarse cualquier función como suma de términos productos. Aunque las memorias PROM, EPROM y EEPROM son PLDs, muchas veces se las excluye de esta denominación debido a que su contenido se define utilizando elementos de desarrollo propios de microprocesadores, tales como; ensambladores, emuladores y lenguajes de programación de alto nivel.

Otras veces, cuando estas memorias se usan para realizar una función lógica y no para guardar un programa de un microprocesador, se las incluye dentro del término PLD.



ASPLDs. 
Los ASPLDs (Application Specific Programmable Logic Devices) son PLDs diseñados para realizar funciones específicas como, decodificadores de alta velocidad, secuenciadores, interfaces para buses particulares, periféricos programables para microprocesadores, etc.

Partes del ASPLD son programables permitiendo la adaptación del circuito a una aplicación determinada, pero manteniendo su función básica; así, por ejemplo, un decodificador lo personaliza el usuario, pero sigue siendo un decodificador. 


FPGAs. Las FPGAs (Field Programmable Gate Arrays) contienen bloques lógicos relativamente independientes entre sí, con una complejidad similar a un PLD de tamaño medio. Estos bloques lógicos pueden interconectarse, mediante conexiones programables, para formar circuitos mayores.


Existen FPGAs que utilizan pocos bloques grandes (Pluslogic, Altera y AMD) y otras que utilizan muchos bloques pequeños (Xilinx, AT&T, Plessey, Actel). A diferencia de los plds, no utilizan arquitectura de matriz de puertas AND seguida de la matriz de puertas OR y necesitan un proceso adicional de ruteado del que se encarga un software especializado. La primera FPGA la introdujo Xilinx en el año 1985.

La programación de las FPGAs de Xilinx basadas en RAM estática es diferente a la programación de los PLDs. Cada vez que se aplica la tensión de alimentación, se reprograma con la información que lee desde una PROM de configuración externa a la FPGA. Una FPGA basada en SRAM (RAM estática) admite un número ilimitado de reprogramaciones sin necesidad de borrados previos. 


En general la complejidad de una FPGA es muy superior a la de un PLD. Los PLD tienen entre 100 y 2000 puertas, las FPGAs tienen desde 1200 a 20.000 puertas y la tendencia es hacia un rápido incremento en la densidad de puertas. El número de flip-flops de las FPGA generalmente supera al de los PLD. Sin embargo, la capacidad de la FPGA para realizar lógica con las entradas suele ser inferior a la de los PLD.

Por ello: "los diseños que precisan lógica realizada con muchas patillas de entrada y con pocos flip-flops, pueden realizarse fácilmente en unos pocos PLDs, mientras que en los diseños en los que intervienen muchos registros y no se necesita generar combinaciones con un elevado número de entradas, las FPGAs pueden ser la solución óptima".





DESARROLLO DEL TRABAJO ETAPA 3: 

En la etapa 3, los diseñadores deberán crear el último integrado capaz de controlar las cámaras de vigilancia, dado que solo se tienen cuatro cámaras, se deberán mover en un rango de derecha a izquierda según un tiempo dado, para ello se ha establecido un led de indicación de vigilancia en el salón 1 y el salón 2, para ello de a creado la siguiente tabla con las condiciones que se deberán diseñar para obtener el circuito integrado:




LOGICA  DE CONTROL
C1= Camara 1
C2= Camara 2
C3= Camara 3
C4= Camara 4
L1= Led Vigilancia Salon 1
L2= Led Vigilancia Salon 2

C1= T1 + T3 + T4 + T5
      C1 = (A&~B&~C) + (A&B+~C) + (~A~B&C) + (A&~B&C)
      C1= (A & ~C) (~B + B) + (~B & C) (~A + A)
      C1= (A& ~C) + (~B& C)

C2 = T2 + T3 + T5
      C2 = (~A&B&~C) + (A&B&~C) + (A&~B&C)
      C2= (B&~C) (~A+A) + (A&~B&C)
      C2= (B&~C) + (A&~B&C)

C3= T4 + T5 + T6
     C3= (~A&~B&C) + (A&~B&C) + (~A&B&C)
     C3= ~BC (~A+A) + (~A&B&C)
     C3= ~BC + (~A&B&C)
     C3= C (~B + ~AB)

C4 = T4 + T5 +T6 + T7
        C4 = (~A~BC) + (A~BC) + (~ABC) + (ABC)
        C4 = C

L1= T1 + T2 + T3 + T4
     L1 = (A~B~C) + (~AB~C) + (AB~C) + (~A~BC)
     L1 = ~C (A~B + ~AB + AB) + (~A~BC)
     L1 = ~C +  (~A~BC)

L2= T4 + T5 + T6 + T7
       L2 = (~A~BC) + (A~BC) + (~ABC) + (ABC)
       L2 = C














Video link : https://plus.google.com/u/0/110228555657568794897/posts/Ca44iGhjZ41?pid=6140728534

Video v1==> https://www.youtube.com/watch?v=VI0iEd6UvMc&edit=vd

Video V2==> https://www.youtube.com/watch?t=16&v=xW54MJJZFtg

Video p2==>  https://youtu.be/VF8PmOq1xlg


Programa Modulo de conteo

module counter10( enable,rst,clk,equal9,q3,q2,q1,q0);
 input enable,rst,clk;
 output equal9,q3,q2,q1,q0;
 wire w3,w4,w5,w6,w7,w8,w9,w10;
 wire w18,w19,w20,w21,w22,w23,w24,w25;
 wire w26,w27,w28,w29,w30;
 mux #(20) mux2x4_1(w10,equal9,w3,w4,w5,w6,vss,vss,vss,vss,w7,w8,w9);
 mux #(12) mux_1_2(w9,w3,vss,equal9);
 mux #(12) mux_2_3(w8,w4,vss,equal9);
 mux #(12) mux_3_4(w7,w5,vss,equal9);
 mux #(12) mux_4_5(w10,w6,vss,equal9);
 dreg #(6) dreg_1_6(q3,w19,w9,rst,w18);
 dreg #(6) dreg_2_7(q2,w20,w8,rst,w18);
 dreg #(6) dreg_3_8(q1,w21,w7,rst,w18);
 dreg #(6) dreg_4_9(q0,w22,w10,rst,w18);
 not #(44) inv_5_10(w18,clk);
 xor #(14) xor2_1_11(w4,q2,w23);
 and #(25) and2_2_12(w24,w23,q2);
 xor #(14) xor2_3_13(w3,q3,w24);
 and #(4) and2_4_14(w25,w24,q3);
 xor #(14) xor2_5_15(w5,q1,w26);
 and #(25) and2_6_16(w23,w26,q1);
 xor #(14) xor2_7_17(w6,q0,enable);
 and #(25) and2_8_18(w26,enable,q0);
 and #(15) and2_1_19(w28,w27,q3);
 and #(15) and2_2_20(w30,q0,w29);
 not #(12) inv_3_21(w27,q2);
 not #(12) inv_4_22(w29,q1);
 and #(43) and2_5_23(equal9,w30,w28);
endmodule
(30 lines)

492364226&oid=110228555657568794897




ELABORACION CON MICROWIND DEL FPGA









Aspectos importantes y relevantes de las lecturas unidad 3

Debido a la creciente evolución que experimentan continuamente los circuitos lógicos programables, el estudio completo de estos circuitos abarcaría la totalidad de los créditos de la asignatura, sobre todo si se abordan los más recientes, que son a su vez los más evolucionados tanto en complejidad como en nivel de integración.
Por ello, se hace un repaso de la evolución de los mismos partiendo de las estructuras básicas tales como PLA, introduciendo paulatinamente, a medida que aumentamos en complejidad, conceptos y arquitecturas más complejas y evolucionadas.
Los nuevos circuitos lógicos programables permiten lógica discreta, circuitos integrados a medida (ASIC, Application Specific Integrated Circuits), circuitos programables (PLD, Programmable Logic Devices) tal clasificación como  simples tenemos:

  • PROM: Programmable Read Only Memory          PLA: Programmable Logic Array
  • PAL: Programmable Array Logic                          GAL: Generic Array Logic

Y del tipo complejos como:

  • CPLD: Complex Programmable Logic Device
  •  FPGA: Field Programmable Gate Array

Las tecnologías más usadas tenemos:

  •  Transistor MOS de puerta flotante (EPROM-FLASH):  • Transistores que, al aplicarles sobretensión, pueden mantener su tensión de puerta (conexiones programables)
  • Memoria RAM estática (SRAM): La memoria permite implementar funciones lógicas, • Se usan LUTs (Look-Up Tables) de 4 o 5 entradas.
  • Anti fusibles: Al fundirse un anti fusible se produce un cortocircuito. Los cortocircuitos tienen menor resistencia que los diodos fusibles, proporcionando mayores prestaciones.




METODOLOGÍA DE DISEÑO. 

La metodología de diseño el método top-down, haciendo énfasis en la relación entre los diferentes niveles de abstracción existentes en el diseño lógico, jerarquía y modularidad del lenguaje. Habitualmente todos estos conceptos derivados de este método son nuevos como ejemplos un semisumador, un sumador completo y una unidad aritmético-lógica.




En los lenguajes de descripción hardware, concretamente en el VHDL  y la relación de éste con los niveles de abstracción.  Los conceptos y conocimientos de sintaxis adquiridos son los suficientes para realizar los diseños propuestos en prácticas. 



Aplicaciones.

Técnicamente hablando, un FPGA puede ser utilizado para solucionar cualquier problema que es computable. Esto se trivialmente probado por el hecho FPGA se puede utilizar para poner en práctica un microprocesador Soft.

Su ventaja reside en que a veces son significativamente más rápido para algunas aplicaciones debido a su naturaleza paralelo y optimalidad en términos del número de puertas utilizado durante un determinado proceso.  

Aplicaciones específicas de FPGAs incluyen el procesamiento de señal digital, radio definida por software, ASIC prototipos, imágenes médicas, visión artificial, reconocimiento de voz, la criptografía, la bioinformática, la emulación de hardware de la computadora, la radioastronomía, detección de metales y una gama cada vez mayor de otras áreas.

FPGAs comenzó originalmente como competidores a CPLDs y compitió en un espacio similar, el de cola lógica para los PCB. A medida que su tamaño, capacidades, y aumento de la velocidad, comenzaron a hacerse cargo de las funciones más y más grandes en el estado en que algunos están ahora comercializan como sistemas completos en chips (SoC).

En particular, con la introducción de los multiplicadores dedicados en arquitecturas FPGA a finales de 1990, las solicitudes que habían sido tradicionalmente la única reserva de DSP comenzaron a incorporar FPGAs lugar. [26] [27]

Tradicionalmente, las FPGAs se han reservado para aplicaciones verticales específicas en que el volumen de la producción es pequeño. Para estas aplicaciones de bajo volumen, la prima que las empresas pagan en costos de hardware por unidad para un chip programable es más asequible que los recursos de desarrollo invertidos en la creación de un ASIC para una aplicación de bajo volumen.
Hoy, nuevo costo y la dinámica de rendimiento se han ampliado la gama de aplicaciones viables.Aplicaciones FPGA comunes: Aeroespacial y Defensa, Aviónica / DO-254, Comunicaciones, Misiles y Municiones, Secure Solutions, Espacio, Electrónica Médica, Prototipos ASIC, Audio, Soluciones de Conectividad, Electrónica Portátil, Radio, Procesamiento de Señal Digital (DSP). Automotor, Vídeo de alta resolución, Procesamiento De Imágenes, Redes de Vehículos y Conectividad, Broadcast, Real-Time Video Engine, EdgeQAM, Codificadores, Switches y Routers, Electrónica de Consumo, Pantallas digitales, Cámaras Digitales, Impresoras multifunción, Electrónica Portátil, Set-top boxes, Centro De Datos, Servidores, Seguridad, Routers, Interruptores, Gateways, Balanceo De Carga, Computación de Alto Rendimiento


3. Análisis y aportes de aplicaciones de los circuito lógicos programables


CARACTERÍSTICAS DEL DISEÑO CON PLDs .

v  Los PLDs están situados en una zona intermedia entre los dispositivos a medida y la lógica de catálogo formada por los CI de función fija.
v  Tienen casi todas las ventajas de los ASICs sin estar penalizados por un costo elevado para pequeñas series. Además el ciclo de diseño con PLDs es mucho más rápido que los de las matrices de puertas o las células normalizadas.
v  En determinadas aplicaciones, un PLD puede sustituir desde unos pocos hasta unas decenas de CI de función fija, mientras que los grandes ASICs pueden sustituir a cientos e incluso miles de CI.
v  En ocasiones, los PLD se utilizan para realizar prototipos que posteriormente se llevarán a un ASIC más complejo.
v  El trabajo con PLDs proporciona: facilidad de diseño, prestaciones, fiabilidad, economía y seguridad.



Facilidad de diseño.
v  Las herramientas de soporte al diseño con PLDs facilitan enormemente este proceso.
v  Las hojas de codificación que se utilizaban en 1975 han dejado paso a los ensambladores y compiladores de lógica programable (PALASM, AMAZE, ABEL, CUPL, OrCAD/PLD, etc.).
v  Estas nuevas herramientas permiten expresar la lógica de los circuitos utilizando formas variadas de entrada tales como; ecuaciones, tablas de verdad, procedimientos para máquinas de estados, esquemas, etc.
v  La simulación digital posibilita la depuración de los diseños antes de la programación de los dispositivos.
v  Todo el equipo de diseño se reduce a un software de bajo coste que corre en un PC, y a un programador.

Prestaciones.

v  Los PLDs TTL que hay en el mercado tienen tiempos de conmutación tan rápidos como los circuitos integrados de función fija más veloces.
v  Los PLDs ECL son todavía más rápidos.
v  El incremento de velocidad obtenido con los dispositivos CMOS, que ya han igualado o superado en prestaciones a los dispositivos TTL, está provocando el abandono de la tecnología bipolar por parte de los fabricantes.
v  En cuanto al consumo de potencia, los PLDs generalmente consumen menos que el conjunto de chips a los que reemplazan.

Fiabilidad.

v  Cuanto más complejo es un circuito, más probabilidades hay que alguna de sus partes falle.
v  Puesto que los PLDs reducen el número de chips en los sistemas, la probabilidad de un fallo disminuye.
v  Los circuitos impresos con menor densidad de CI son más fáciles de construir y más fiables.
v  Las fuentes de ruido también se reducen.

Economía.

v  En este apartado, hay aspectos que resultan difíciles de cuantificar. Por ejemplo, los costes de pérdida de mercado por una introducción tardía de un producto.
v  Otros son más claros, por ejemplo, la reducción del área de las placas de circuito impreso obtenida gracias a que cada PLD sustituye a varios circuitos integrados de función fija.
v  Muchas veces se consigue reducir el número de placas de circuito impreso economizándose en conectores.
v  La reducción de artículos en almacén también aporta ventajas económicas.
v  De la misma manera que para altos volúmenes de producción las memorias ROM resultan de menor coste que las EPROM, las HAL (Hard Array Logic) o PLDs programados por el fabricante proporcionan ahorros adicionales en grandes cantidades.

Seguridad.
v  Los PLDs tienen fusibles de seguridad que impiden la lectura de los dispositivos programados, protegiendo los diseños frente a copias.
v  Además de los puntos mencionados, podemos añadir que los PLDs facilitan el ruteado de las placas de circuito impreso debido a la libertad de asignación de patillas que proporcionan.
v  Permiten realizar modificaciones posteriores del diseño y en ocasiones hacen posible la reutilización de circuitos impresos con algunos fallos, mediante una reasignación de los PLDs.


Estructura básica de un PLA.

Un PLA es un bloque funcional que se utiliza para implementar multifunciones booleanas. Existe una gran relación entre su estructura interna y el conjunto de funciones que realiza. Un PLA está constituido básicamente por dos submatrices o planos denominados plano AND y OR, respectivamente.

Ambos planos están separados entre sí por una pequeña zona divisoria denominada zona de conexión.
Tanto el plano AND como el plano OR disponen, a su vez, de dos zonas externas denominadas buffers o separadores de entrada y de salida. Las señales de entrada del PLA (Dispositivos lógicos programables) llegan a los buffers de entrada del plano AND y producen las señales invertidas (Dispositivos lógicos programables).

Ambos tipos de señales (Dispositivos lógicos programables) penetran verticalmente en el plano AND y generan los términos producto pi.

Estos últimos discurren horizontalmente por ambos planos, atravesando previamente la zona de conexión, y producen finalmente las salidas del PLA mediante la realización de sumas lógicas entre los términos productos anteriores.

Además de las zonas mencionadas, existen otras dos regiones especiales. Una de ellas está situada a la izquierda del plano AND y la otra en la parte superior del plano OR.
Estas regiones están constituidas por transistores del "pull-up", que actúan como resistencia de carga, a través de los cuales se alimentan las líneas de los términos producto y las líneas de salida del PLA respectivamente.

La realización física de un PLA se lleva a cabo mediante la conexión de cada una de las celdas que pertenecen a las regiones anteriores (buffers de entrada, plano AND, transistores de pull-up del plano AND, conexión AND-OR, plano OR, transistores de pull-up del plano OR y buffers de salida).

De todas estas celdas, sólo las de los planos AND y OR están relacionadas con las funciones lógicas que definen el circuito. El resto hace referencia a otros factores externos ajenos a la lógica propiamente dicha.

En algunos casos, estos factores han de ser tenidos en cuenta si se quiere hacer una estimación realista del área final ocupada por el PLA. Esto ocurre, por ejemplo, cuando se aplican técnicas de optimización en las que se modifica el número de entradas y/o salidas (técnicas de partición).

Representación matricial. Los PLA's sirven para representar multifunciones booleanas expresadas mediante dos niveles de puertas. Sea, pues, una multifunción F formada por s funciones simples fi cada una de ellas dependiente de m variables distintas Dispositivos lógicos programables.

Supongamos también que es necesario desarrollar n productos lógicos distintos con las variables dependientes xi para expresar todas y cada una de las funciones fi mediante sumas de productos.

Entonces, el PLA asociado a la multifunción F, puede representarse por una matriz, C, formada por n filas y m+s columnas. Cada una de estas filas Ci se define del modo siguiente:

·         j : 1..m (plano AND).
·         Cij = 0 si xj está complementada en el término producto Ci.
·         Cij = 1 si xj no está complementada en el término producto Ci.
·         Cij = 2 si xj no aparece en el término producto Ci.
·         "j : m + 1... m + s (plano OR).
·         Cij = 3 si Ci no forma parte de la función Fj· m
·         Cij = 4 si Ci forma parte de la función Fj· m

De la definición anterior se deduce que todos los 2's de la matriz C representan elementos vacíos en las m primeras columnas pertenecientes al plano AND o su matriz de entradas.

 Igualmente ocurre con los 3's en las columnas restantes del plano OR o su matriz de salidas. Por elemento vacío se entiende aquella posición del PLA en la que no existen conexiones.


Programación.

En la FPGA no se realiza programación tal cual como se realiza en otros dispositivos como DSP, CPLD o microcontroladores. La FPGA tiene celdas que se configuran con una función específica ya sea como memoria (FLIP-FLOP tipo D), como multiplexor o con una función lógica tipo AND, OR, XOR. La labor del "programador" es describir el hardware que tendrá la FPGA.

Por consiguiente, la tarea del "programador" es definir la función lógica que realizará cada uno de los CLB, seleccionar el modo de trabajo de cada IOB e interconectarlos.

El diseñador cuenta con la ayuda de entornos de desarrollo especializados en el diseño de sistemas a implementarse en un FPGA. 

Un diseño puede ser capturado ya sea como esquemático, o haciendo uso de un lenguaje de programación especial. Estos lenguajes de programación especiales son conocidos como HDL o Hardware Description Language (lenguajes de descripción de hardware).
Los HDLs más utilizados son: VHDL, Verilog, ABEL.

En un intento de reducir la complejidad y el tiempo de desarrollo en fases de prototipaje rápido, y para validar un diseño en HDL, existen varias propuestas y niveles de abstracción del diseño.

Los niveles de abstracción superior son los funcionales y los niveles de abstracción inferior son los de diseño al nivel de componentes hardware básicos.

Entre otras, National Instruments LabVIEW FPGA propone un acercamiento de programación gráfica de alto nivel.





Conclusiones

v  Circuitos programables complejos tenemos: CPLD: Complex Programmable Logic Devices, FPGA: Field Programmable Gate Array, Diferencias con los PLDs simples.

v  La ventaja de estos son la Arquitectura,  y la cantidad de recursos lógicos y el gran número de fabricantes  de CPLDs/FPGAs tales como  Xilinx, Altera,  Actel,  Atmel,  Lattice y  Cypress.

v  Para el PLD: resumen de características tenemos: Estructura de PAL con registros y lógica de interconexión, Capacidad media (hasta 25000 puertas), Velocidad media/alta, Consumo alto, Tecnología EPROM (reprogramable, no volátil), Precio bajo, La matriz de interconexión global limita el tamaño, ISP (In-System Programming). JTAG.

v  Para los FPGAs sus características se tiene: Field Programable Gate Arrays (Matrices de puertas programables en campo), Superan las limitaciones en tamaño de las CPLDs, mediante arquitecturas avanzadas, ofrecen mayor variedad de recursos lógicos: Lógica combinacional, Lógica secuencial, Memoria RAM, Conformadores de reloj, Señales globales, Multiplicadores, Fabricantes:  Xilinx,  Altera, Actel,  Atmel.

v  La jerarquía de interconexiones programables permite a los bloques lógicos de un FPGA ser interconectados según la necesidad del diseñador del sistema, algo parecido a un breadboard (es una placa de uso genérico reutilizable o semi permanente) programable. Estos bloques lógicos e interconexiones pueden ser programados después del proceso de manufactura por el usuario/diseñador, así que el FPGA puede desempeñar cualquier función lógica necesaria.

v  Muchos FPGA modernos soportan la reconfiguración parcial del sistema, permitiendo que una parte del diseño sea reprogramada, mientras las demás partes siguen funcionando. Este es el principio de la idea de la «computación reconfigurable», o los «sistemas reconfigurables».


v  Tanto los CPLDs como las FPGAs contienen un gran número de elementos lógicos programables. Si medimos la densidad de los elementos lógicos programables en puertas lógicas equivalentes (número de puertas NAND equivalentes que podríamos programar en un dispositivo) podríamos decir que en un CPLD hallaríamos del orden de decenas de miles de puertas lógicas equivalentes y en una FPGA del orden de cientos de miles hasta millones de ellas.

v  Las diferencias en densidad entre ambos tipos de dispositivos, la diferencia fundamental entre las FPGAs y los CPLDs es su arquitectura. La arquitectura de los CPLDs es más rígida y consiste en una o más sumas de productos programables cuyos resultados van a parar a un número reducido de biestables síncronos (también denominados flip-flops).

v  La arquitectura de las FPGAs, por otro lado, se basa en un gran número de pequeños bloques utilizados para reproducir sencillas operaciones lógicas, que cuentan a su vez con biestables síncronos. La enorme libertad disponible en la interconexión de dichos bloques confiere a las FPGAs una gran flexibilidad.

v  Otra diferencia importante entre FPGAs y CPLDs es que en la mayoría de las FPGAs se pueden encontrar funciones de altos niveles (como sumadores y multiplicadores) embebidas en la propia matriz de interconexiones, así como bloques de memoria.


·          
Referencias Bibliográficas


  • Robayo, F. (2009). Diseño con Lógica Programables y Estructura de los FPGAs. Bogotá D.C.: Universidad Nacional Abierta y/a Distancia. Disponible en:  http://datateca.unad.edu.co/contenidos/ 299008/ 299008_AVA/ Entorno_de_Conocimiento/Unidad_3/ Diseno_con_logica_programable_y_estructura_de_los_FPGAs.pdf
  • Robayo, F. (2009). Otros Dispositivos Programables y Familias FPAAs. Bogotá D.C.: Universidad Nacional Abierta y/a Distancia. Disponible en: http://datateca.unad.edu.co/contenidos/299008/ 299008_AVA/Entorno_de_Conocimiento/Unidad_3/Otros_dispositivos_programables_y_familias_FPAAs.pdf
  • Robayo, F. (2009). Otras Aplicaciones. Bogotá D.C.: Universidad Nacional Abierta y/a Distancia. Disponible en: ttp://datateca.unad.edu.co/contenidos/299008/299008_AVA/Entorno_de_Conocimie
  • nto/Unidad_3/Otras_Apliaciones.pdf
  • Magdaleno, E., Rodríguez, M., Ayala, A., Mendoza, B., & Rodríguez, S. (2004). Metodología para el Aprendizaje de Sistemas Electrónicos Digitales y su Diseño.Consultado en 10, 18, 2014 en http://espacio.uned.es/fez/eserv.php?pid=taee:congreso-2004-1133&dsID=SP102.pdf.
  • Pérez, E. M., Acevedo, J. M., & Silva, C. F. (2009). Autómatas programables y sistemas de automatización. Consultado en 10, 18, 2014 en http://books.google.es/ books?hl=es&lr=&id=5jp3bforBB8C&oi= fnd&pg=PA1&dq= dispositivos+l%C3%B3gicos+Programables&ots= g0Bv8_5kYa&sig=C96Lo0qnl7
  • 1HSeAXhQgDpm_5DUE#v=onepage&q=Dispositivos%20l%C3%B3gicos%20Pr
  • Vallejo, M. L., & Rodrigo, J. A. (2004). Nociones básicas e implementación. Laboratorio de Diseño Microelectrónico. Consultado en 10, 18, 2014 en http://www.lsi.die.upm.es/~marisa/docencia/ fpga_a2_2004.pdf.
  • Caicedo Grueso, R., & Velasco Medina, J (2003). Diseño de Circuitos Análogos Usando FPAAs. In IX Workshop Iberchip.. Consultado en 10, 25, 2014 en http://www.iberchip.net/IX/Articles/PAP-073.pdf.
  • Webs de fabricantes: • Xilinx: www.xilinx.com • Altera: www.altera.com • Actel: www.actel.com • Lattice: www.latticesemi.com
  • “Fundamentos de Sistemas Digitales”. Thomas L. Floyd. Pearson Prentice Hall
  • “Sistemas digitales: principios y aplicaciones”, Tocci, Ronald J. Pearson Prentice Hall
  • “Dispositivos lógicos programables (PLD): diseño práctico de aplicaciones”. García Iglesias, José Manuel. RaMa
  • Luis Entrena, Celia López, Mario García, Enrique San Millán. Universidad Carlos III de Madrid, 2008 http://es.wikipedia.org/wiki/Field_Programmable_Gate_Array