Download TESIS Emmanuel Zamora 15Marzo
Document related concepts
no text concepts found
Transcript
1. PRESENTACIÓN ........................................................................................ 8 1.1 Introducción........................................................................................... 8 1.1.1 1.1.1.1 Objetivo General ...................................................................... 8 1.1.1.2 Objetivos Específicos ............................................................... 8 1.1.2 1.2 2. Objetivos......................................................................................... 8 Justificación .................................................................................... 9 Estado del Arte...................................................................................... 9 MARCO TEÓRICO ................................................................................... 11 2.1 Introducción a los Dispositivos Lógicos Programables (PLD) [Maxínez, 2005]............................................................................................................. 11 2.2 Dispositivos Lógicos Programables de Alto Nivel de Integración. ....... 13 2.2.1 Dispositivos Lógicos Programables Complejos (CPLD). .............. 14 2.2.2 Arreglos de Compuertas Programables en Campo (FPGA) ......... 16 2.3 Campos de aplicación de la lógica programable [Maxínez, 2005]. ..... 18 2.4 Familia XC9500XL de Xilinx [Xilinx, 2013] . ........................................ 19 2.4.1 Bloque de funciones ..................................................................... 21 2.4.2 Macroceldas ................................................................................. 22 2.5 Familia Spartan II de Xilinx [Xilinx, 2012] ........................................... 23 2.5.1 3. Características Especiales ........................................................... 24 2.5.1.1 Bloque de Entrada/Salida....................................................... 25 2.5.1.2 Bancos de Entrada/Salida...................................................... 26 2.5.1.3 Bloques de Lógica Configurable (CLB: Configurable Logic Block). 27 2.5.1.4 Bloques de RAM (BlockRAM) ................................................ 28 2.5.1.5 Delay Locked Loops............................................................... 29 2.5.2 Propiedades y encapsulados de la familia SPARTAN II. .............. 30 2.5.3 Modo de Programación y circuito de Memoria [Xilinx, 2012] ....... 30 DESARROLLO.......................................................................................... 33 3.1 Elaboración de tarjetas electrónicas con CPLDs y FPGAs de Xilinx... 33 3.1.1 Tarjeta con FPGA Spartan II......................................................... 36 3.1.1.1 3.1.2 Pines del FPGA XC2S30 ....................................................... 38 Tarjeta con CPLD XC9500XL. ...................................................... 41 3.1.2.1 Pines del CPLD XC9572XL.................................................... 43 3.1.2.1. Fuente de Alimentación ............................................................ 47 4. RESULTADOS Y OBSERVACIONES....................................................... 49 5. CONCLUSIONES ..................................................................................... 55 REFERENCIAS BIBLIOGRÁFICAS. ................................................................ 57 APÉNDICE ....................................................................................................... 60 Apéndice A ....................................................................................................... 60 A.1 Plataforma de diseño CAD para circuitos impresos [González, 2004] ... 60 A.1.1 Como usar el EAGLE CAD [Gálvez, 2000] ...................................... 61 A.1.1.1 Creación de nuevas librerías..................................................... 63 A.1.1.2 Dónde conseguirlos y cómo agregarlos. ................................... 64 A.1.1.3 Tutorial para la realización de librerías en EAGLE 5.6.0. .......... 65 Apéndice B ....................................................................................................... 75 B.1 Como retirar y soldar dispositivos SMT con compuestos sintéticos de baja fusión térmica [Vargas, 2000] ............................................................... 75 B.2 Extracción de chips por aire caliente [Parra, 2009] ................................ 78 B.3 Los encapsulados BGA, montaje y desmontaje por el método común y por Luz Infrarroja [Parra, 2008]..................................................................... 80 B.3.1. Soldadura por Luz Infrarroja (IR) [Mata, 2010] ............................... 86 Apéndice C....................................................................................................... 89 C.1 JTAG (Join test Action Group) [Radioelectronics, 2013] ........................ 89 C.1.1. Características Eléctricas ............................................................... 89 C.1.2. Usos y aplicaciones del JTAG [Güichar, 2013]............................... 91 C.1.3. Diagrama de circuito JTAG [Fpgalibre, 2012] ................................. 92 Apéndice D....................................................................................................... 94 D.1 Controlador USB [Arellano, 2006] .......................................................... 94 Apéndice E ..................................................................................................... 114 Guía rápida para el usuario de la Tarjeta experimental con CPLD XC9572XL ....................................................................................................................... 114 Introducción ................................................................................................ 114 Características............................................................................................ 114 CPLD XC9572XL (encapsulado VQ44) de Xilinx........................................ 114 Puerto Jtag ................................................................................................. 115 Leds y botones ........................................................................................... 115 Fuente de Alimentación .............................................................................. 115 Conectores de expansión ........................................................................... 115 Descripción funcional.................................................................................. 116 ÍNDICE DE ILUSTRACIONES Ilustración 2-1 Arquitectura básica de un CPLD............................................... 14 Ilustración 2-2 Bloque Lógico Programable...................................................... 15 Ilustración 2-3 Arquitectura básica de un FPGA [Xilinx, 2012] ........................ 16 Ilustración 2-4 Arquitectura de un bloque lógico configurable FPGA [Maxínez, 2005]. ............................................................................................................... 17 Ilustración 2-5 Arquitectura de la familia XC9500XL[Xilinx, 2013].................... 21 Ilustración 2-6 Bloques de Funciones de la Familia XC9500XL [Xilinx, 2013] . 22 Ilustración 2-7 Macroceldas dentro de los bloques de funciones de la familia XC9500XL [Xilinx, 2013] . ................................................................................ 23 Ilustración 2-8 Diagrama de bloques básico de la familia Spartan II [Xilinx, 2012] . .............................................................................................................. 24 Ilustración 2-9 Bloques de Entrada/Salida del FPGA Spartan II [Xilinx, 2012] . ......................................................................................................................... 25 Ilustración 2-10 Bancos de Entrada/Salida [Xilinx, 2012] . .............................. 27 Ilustración 2-11 Slices del CLB del Spartan II [Xilinx, 2012] ............................ 28 Ilustración 2-12 BlockRAM de Doble Puerto [Xilinx, 2012] ............................. 29 Ilustración 2-13 Forma física de un componente de la familia Spartan II de Xilinx [Xilinx, 2012] . ........................................................................................ 30 Ilustración 2-14 Diagrama del circuito de configuración Master-Slave [Xilinx, 2012] . .............................................................................................................. 31 Ilustración 3-1Diagrama de flujo del proceso ................................................... 35 Ilustración 3-2 Encapsulado elaborado para el FPGA XC2S30. ...................... 36 Ilustración 3-3 Símbolo de esquemático en el Eagle Freeware........................ 37 Ilustración 3-4 Diagrama propuesto para una placa de usos múltiples. MODIFICAR hacerlo como el del CPLD........................................................... 37 Ilustración 3-5 PCB de sistema mínimo. .......................................................... 38 Ilustración 3-6 Símbolo esquemático y footprint del CPLD XC9572XL. ........... 42 Ilustración 3-7 Diagrama Esquemático propuesto para la placa con el CPLD XC9572XL. ....................................................................................................... 43 Ilustración 3-8 Placa BRD con el CPLD XC9572XL. ........................................ 47 Ilustración 3-9 Diagrama esquemático de la fuente de alimentación de 2.5v y 3.3v .................................................................................................................. 48 Ilustración 3-10 BRD de la fuente de alimentación........................................... 48 Ilustración 4-1 Foto de la placa CPLD con sus componentes de montaje superficial soldados.............................................¡Error! Marcador no definido. Ilustración A-1 1 Entorno EDA......................................................................... 60 Ilustración A-1 2 Ejemplo de una Comunidad de Foros de Electrónica [Forosdeelectronica, 2013] ............................................................................... 64 Ilustración A-1 3 Página de CadSoft [Cadsoft, 2013] ..................................... 65 Ilustración A-1 4 Panel de Control de Eagle 5.6.0........................................... 66 Ilustración A-1 5 Editor de Librerías. ............................................................... 66 Ilustración A-1 6 Eshop de la Universidad de Iowa ......................................... 67 Ilustración A-1 7 Ubicación de la librería del Spartan 3 [Uiowa, 2013] ............ 67 Ilustración A-1 8 Editor de Encapsulados (Footprints). ................................... 68 Ilustración A-1 9 Icono Group.......................................................................... 68 Ilustración A-1 10 Copia del encapsulado para la elaboración de uno nuevo. 69 Ilustración A-1 11 Hoja técnica del encapsulado TQ144 [Xilinx, 2012] .......... 70 Ilustración A-1 12 Editor de Símbolos esquemáticos ...................................... 70 Ilustración A-1 13 Editor de símbolos.............................................................. 71 Ilustración A-1 14 Herramienta PIN................................................................. 72 Ilustración A-1 15 Nombramiento de los pines. ............................................... 72 Ilustración A-1 16 Herramienta Wire. .............................................................. 73 Ilustración A-1 17 Símbolo terminado. ............................................................ 73 Ilustración A-1 18 Tierras y voltajes y Funciones Especiales. ......................... 74 Ilustración A-1 19 Conexión y correspondencia del símbolo y el encapsulado. ......................................................................................................................... 74 Ilustración B-1 1 Procedimiento de desoldadura .............................................. 76 Ilustración B-1 2 Limpieza posterior de desoldado de componente SMT......... 77 Ilustración B-2 1 Boquillas para pistola de aire caliente marca Weller [Weller, 2013] ................................................................................................................ 79 Ilustración B-2 2 Proceso interno de aire caliente [Parra, 2009]....................... 80 Ilustración B-3 1 PGA y microprocesadores para PC [Parra, 2008] ................. 81 Ilustración B-3 2 Tecnología BGA [Mata, 2010] ............................................... 82 Ilustración B-3 3 Corte transversal de un encapsulado BGA [Parra, 2008]..... 83 Ilustración B-3 4 Proceso de precalentamiento y calentamiento [Parra, 2008] 83 Ilustración B-3 5 Estación de re-trabajo (reworking station) [Parra, 2008] ....... 84 Ilustración B-3 6 Estación de soldadura por luz infrarroja (IR) [Mata, 2010] .... 86 Ilustración B-3 7 Proceso de Reballing [Mata, 2010]........................................ 88 Ilustración C-1 1 Dispositivos conectados por JTAG [Radioelectronics, 2013] 90 Ilustración C-1 2 Diagrama esquemático de un conector JTAG para la placa con CPLD/FPGA .............................................................................................. 93 Ilustración C-1 3 Placa BRD del conector JTAG para la placa CPLD/FPGA ... 93 Ilustración D-1 1 Los cuatro hilos de un conector USB [Arellano, 2006] ......... 95 Ilustración D-1 2 Chip FT2232L....................................................................... 97 Ilustración D-1 3 Bloques funcionales del dispositivo FT2232C ...................... 98 Ilustración D-1 4 Ciclo de Lectura en el modo FIFO...................................... 102 Ilustración D-1 5 Ciclo de escritura en el modo FIFO.................................... 102 Ilustración D-1 6 Conexión del FT2232L con la EEPROM. ........................... 105 Ilustración D-1 7 Patillaje de la EEPROM 93LC66. ....................................... 106 Ilustración D-1 8 Arquitectura de la API D2XX. ............................................. 108 Ilustración D-1 9 Ventana del software Mprog 2.8......................................... 111 Ilustración D-1 10 Microsoft Visual Studio .NET 2003. .................................. 112 ÍNDICE DE TABLAS Tabla 2-1Tecnologías de fabricación de circuitos integrados [Maxínez, 2005]. 12 Tabla 2-2 Dispositivos Lógicos Programables.................................................. 13 Tabla 2-3 Diferencias entre Dispositivos Lógicos Programables (CPLD) y los Arreglos de Compuertas Programables en Campo (FPGA)............................. 19 Tabla 2-4 Familia de Dispositivos XC9500XL [Xilinx, 2012] ............................ 20 Tabla 2-5 Empaquetados y pines de I/O de la familia XC9500XL [Xilinx, 2012] . ......................................................................................................................... 20 Tabla 2-9 Encapsulados y propiedades de la Familia Spartan II...................... 30 Tabla 2-10 Descripción de cada señal usada en la configuración.................... 32 Tabla A-1 1 Pines del FPGA Spartan II XC2S30.............................................. 71 Ilustración D-1 1 Los cuatro hilos de un conector USB [Arellano, 2006] ......... 95 Ilustración D-1 2 Chip FT2232L....................................................................... 97 Ilustración D-1 3 Bloques funcionales del dispositivo FT2232C ...................... 98 Ilustración D-1 4 Ciclo de Lectura en el modo FIFO...................................... 102 Ilustración D-1 5 Ciclo de escritura en el modo FIFO. ................................... 102 Ilustración D-1 6 Conexión del FT2232L con la EEPROM. ........................... 105 Ilustración D-1 7 Patillaje de la EEPROM 93LC66. ....................................... 106 Ilustración D-1 8 Arquitectura de la API D2XX. ............................................. 108 Ilustración D-1 9 Ventana del software Mprog 2.8......................................... 111 Ilustración D-1 10 Microsoft Visual Studio .NET 2003. .................................. 112 1. PRESENTACIÓN 1.1 Introducción El presente trabajo desarrolla una metodología para la elaboración de tarjetas electrónicas con CPLDs y FPGAs de la Compañía Xilinx. Una metodología ordenada, con referencias a bibliotecas de librerías, hojas de aplicación, su ubicación y una revisión bibliográfica en este campo elaborados anteriormente. La metodología se basa en la filosofía de Software Libre y Hardware Libre. La metodología es una guía propuesta que puede ser modificada dependiendo de los componentes del momento, pretendiendo motivar el desarrollo de prototipos de manera local, usando componentes que se pueden encontrar en el mercado nacional. Se ha usado la plataforma Linux Ubuntu, el software de elaboración de diagramas y circuitos impresos EAGLE en su versión Freeware y documentación de foros de comunidades, tanto de nivel técnico como nivel ingeniería, llevando a cabo una placa experimental para usos múltiples con un CPLD. 1.1.1 Objetivos 1.1.1.1 Objetivo General Desarrollar un documento que describa de manera ordenada y concisa la metodología que debe utilizarse para la elaboración de tarjetas de circuito impreso con CPLDs y FPGAs, considerando para esto todos los circuitos de soporte que requieran dichas tecnologías y los requerimientos adicionales para poder utilizar al máximo las prestaciones de estos dispositivos. 1.1.1.2 Objetivos Específicos Soldadura: Reportar los requerimientos especiales y las técnicas que deberán utilizarse para soldar los encapsulados más comunes en que podemos encontrar a los CPLDs y FPGAs. Características especiales: Identificación de terminales, forma de uso, ventajas y desventajas de su utilización. Programación JTAG y Memoria: Circuitos de Programación (JTAG) y circuito de Memoria de Programa. 1.1.2 Justificación Hasta el momento no existe en la región ninguna Institución de Educación Superior o Investigación o alguna otra de la que tengamos noticia que haya desarrollado alguna aplicación con CPLDs y FPGAs elaborando sus propias tarjetas. Para realizar aplicaciones empleando las ventajas que nos brindan los CPLDs y FPGAs, los investigadores se ven forzados a adquirir tarjetas de desarrollo, las cuales, si bien son una aproximación válida muy útil, difícilmente pueda desarrollarse un producto terminado empleando estas tarjetas, debido a que normalmente para adquirir una que cuente con todos los requerimientos de una aplicación específica, es necesario comprar alguna que se sobrepasa en recursos, y muchas veces, en dimensiones. Contar con una metodología aprobada para la creación de tarjetas electrónicas con CPLDs y FPGAs permitirá el desarrollo de estas con todas las ventajas que nos brinda esta tecnología: alta escala de integración, bajo costo, gran capacidad para procesamiento paralelo en un pequeño espacio físico, etc. Es de esperarse que contar con la posibilidad de utilizar dispositivos programables será algo que motivará el desarrollo tecnológico de la región en este campo, así como el uso de estos dispositivos para fines específicos. 1.2 Estado del Arte Hay varios antecedentes de proyectos que utilizan FPGAs y CPLDs como circuitos núcleos. En el caso de FPGAs, existe una tarjeta para el desarrollo de diseños hardware sobre dispositivos de lógica programable de las familias 4000 y Spartan con encapsulado tipo PLCC84. Este desarrollo fue hecho en la Universidad Autónoma de Madrid, por parte de la Escuela Técnica Superior de Ingeniería Informática en el año 2003 por parte de Pablo A. Haya Coll y Juan González [Haya, 2003] . El manual se rige por la licencia GNU GFDL 1.1 (GNU FREE DOCUMENTATION LICENSE) y se llama “Manual de laTarjeta JPS-XPC84 para doctorado. La placa está pensada para la docencia y con el objetivo de que los estudiantes e interesados lleven sus diseños a la realidad de una forma sencilla. La licencia libre del cual dispone, permite su libre copia, modificación y distribución. Por lo cual, su elaboración fue totalmente elaborada con herramientas para su diseño tales como Debian/GNU Linux y el programa de diseño electrónico EAGLE en su versión Freeware. Desde el año 2003, no ha habido actualización en cuanto al Manual. Este antecedente marca la pauta a seguir para la elaboración de una tarjeta más moderna, con circuitos no descontinuados. Un trabajo posterior es el elaborado por Francisco Arellano Mauleón, Francisco Calderón Setién y Sergio Somovilla de la Torre, de la Facultad de Informática de la Universidad Complutense de Madrid, Depto. de Arquitectura de Computadoras y Automática en el año 2006 [Arellano, 2006]. Su objetivo era el desarrollo de una placa basada en FPGA para utilizarse en la asignatura Laboratorio de Tecnología de computadoras. Su proceso comprendió tres fases principales: Diseño del prototipo, implementación del circuito impreso y desarrollo y depuración del software de comunicación entre la PC y la placa. Aunque el objetivo inicial incluía todas las fases del desarrollo del prototipo, no se cubrieron todas, centrándose principalmente en la interfaz entre el PC y la FPGA y la realización del software de comunicación. El FPGA usado es el XC2S100-5 TQ144C de la familia Spartan II de Xilinx. Otro trabajo, pero con el uso de CPLD, es el de David Ferrés, de la Escola Universitària Politècnica de Mataró, titulado “Tarjeta de evaluación y prácticas para dispositivos CPLD” [Ferrés, 2008] , usando un CPLD de la Compañía Altera. Estos dos son los trabajos que se han enfocado en el desarrollo, a nivel de su región, de tarjetas didácticas enfocadas para su uso en la docencia, promoviendo así la filosofía de Software Libre y Hardware Libre. 2. MARCO TEÓRICO 2.1 Introducción a los Dispositivos Lógicos Programables (PLD) [Maxínez, 2005]. Los dispositivos lógicos programables (o PLD, por sus siglas en inglés) favorecen la integración de aplicaciones y desarrollos lógicos mediante el empaquetamiento de soluciones en un circuito integrado. El resultado es la reducción de espacio físico dentro de la aplicación; es decir, se trata de dispositivos fabricados y revisados que se pueden personalizar desde el exterior mediante diversas técnicas de programación. El diseño se basa en bibliotecas y mecanismos específicos de mapeado de funciones, mientras que su implementación tan solo requiere una fase de programación del dispositivo que el diseñador suele realizar en unos segundos En la actualidad, el diseño de ASIC (Circuitos Integrados Desarrollados para Aplicaciones Específicas) domina las tendencias en el desarrollo de aplicaciones a nivel de microelectrónica. Este diseño presenta varias opciones de desarrollo, como se observa en la tabla1. A nivel de ASIC los desarrollos full y semi custom ofrecen grandes ventajas en sistemas que emplean circuitos diseñados para una aplicación en particular. Sin embargo, su diseño solo es adecuado en aplicaciones que requieren un alto volumen de producción; por ejemplo, Sistemas de Telefonía Celular, computadoras Portátiles, Cámaras de Video, etcétera. Tabla 2-1Tecnologías de fabricación de circuitos integrados [Maxínez, 2005]. Categoría Características Diseño totalmente Total libertad de diseño, pero el desarrollo requiere todas las a la media (Full- etapas del proceso de fabricación: preparación de la oblea o Custom) base, crecimiento epitaxial, difusión de impurezas, implantación de iones, oxidación, fotolitografía, metalización y limpieza química. Los riesgos y costos son muy elevados; sólo se justifican ante grandes volúmenes o proyectos con restricciones (área, velocidad, consumo de potencia, etcétera). Matrices de Existe una estructura regular prefabricada que de dispositivos se puede básicos puertas (transistores) personalizar predifundidas mediante un conexionado específico que sólo necesita las (Semi- últimas etapas del proceso tecnológico. custom/gate El diseño está limitado a las posibilidades de la estructura arrays) prefabricada y se realiza con base en una biblioteca de celdas pre-caracterizadas para cada familia de dispositivos. Celdas estándares No se trabaja con alguna estructura fija prefabricada en pre- particular, pero sí con bibliotecas de celdas y módulos pre- caracterizadas caracterizados y específicos para cada tecnología (Semi- Libertad de diseño (en función de las facilidades de la custom/standard biblioteca); pero el desarrollo exige un proceso de fabricación cells) completo. Lógica Se trata de dispositivos fabricados y revisados que se pueden Programable personalizar desde el exterior mediante diversas técnicas de (CPLD, FPGA) programación El diseño se basa en bibliotecas y mecanismos específicos de mapeado de funciones, mientras que su implementación tan solo requiere una fase de programación del dispositivo, que por lo general realiza el diseñador en unos pocos segundos. En la actualidad existe una gran variedad de dispositivos lógicos programables, los cuales se usan para reemplazar circuitos SSI (pequeña escala de integración), MSI (mediana escala de integración) e incluso circuitos VLSI (muy alta escala de integración), ya que ahorran espacio y reducen de manera significativa el número y el costo de los diseños. Estos dispositivos llamados PLD (Tabla 2), se clasifican por su arquitectura – la forma funcional en que se encuentran ordenados los elementos internos que proporcionan al dispositivo sus características. Tabla 2-2 Dispositivos Lógicos Programables. Dispositivo PROM Descripción Programmable read-Only memory: Memoria Programable de sólo Lectura. PLA Programmable Logic Array: Arreglo Lógico Programable. PAL Programmable Array Logic: Lógica de Arreglos Programables. GAL Generic Logic Array: Arreglo Lógico Genérico. CPLD Complex PLD: Dispositivo Lógico Programable Complejo. FPGA Field Program Gate Array: Arreglos de Compuertas Programables en Campo. Los FPGA (Arreglos de Compuertas Programables en Campo) y CPLD (Dispositivos Lógicos Programables Complejos) ofrecen las mismas ventajas de un ASIC, sólo que aun menor costo; es decir, el costo por desarrollar un ASIC es mucho más alto que el que precisaría un FPGA o un CPLD, con la ventaja de que ambos son circuitos reprogramables, en los cuales es posible modificar o borrar una función programada sin alterar el funcionamiento del circuito. 2.2 Dispositivos Lógicos Programables de Alto Nivel de Integración. Los PLD de alto nivel de integración se crearon con el objeto de integrar mayor cantidad de dispositivos en un circuito (sistema en un chip SOC – System On chip). Se caracterizan por la reducción de espacio y costo, además de ofrecer una mejora sustancial en el diseño de sistemas complejos, dado que incrementan la velocidad y las frecuencias de operación. Además, brindan a los diseñadores la oportunidad de enviar productos al mercado con más rapidez y les permiten realizar cambios en el diseño sin afectar la lógica, agregando periféricos de entrada/salida sin consumir una gran cantidad de tiempo, dado que los circuitos son reprogramables en el campo de trabajo. 2.2.1 Dispositivos Lógicos Programables Complejos (CPLD). Un circuito CPLD consiste en un arreglo de múltiples PLD agrupados como bloques en un chip. En algunas ocasiones estos dispositivos también se conocen como EPLD (Enhanced PLD: PLD mejorado), Super PAL, Mega PAL, etc. Se califican como de alto nivel de integración, ya que tienen una gran capacidad equivalente a unos 50 PLD sencillos. En su estructura básica, cada CPLD contiene múltiples bloques lógicos conectados por medio de señales canalizadas desde la interconexión programable (PI). Esta unidad PI se encarga de interconectar los bloques lógicos y los bloques de entrada/salida del dispositivo sobre las redes apropiadas (ver Ilustración 2.1). Ilustración 2-1 Arquitectura básica de un CPLD Los bloques lógicos, también conocidos como celdas generadoras de funciones, están formados por un arreglo de productos de términos que implementa los productos efectuados en las compuertas AND, un esquema de distribución de términos que permite crear las sumas de los productos convenientes del arreglo AND y por macroceldas. En ocasiones las celdas de entrada/salida se consideran parte del bloque lógico, aunque la mayoría de los fabricantes coincide en que son externas. Cabe mencionar que el tamaño de los bloques lógicos es importante, ya que determina cuánta lógica se puede implementar dentro del CPLD; esto es, fija la capacidad del dispositivo. Ilustración 2-2 Bloque Lógico Programable. Arreglos de productos de términos. Es la parte del CPLD que identifica el porcentaje de términos implementados por cada macrocelda y el número máximo de productos de términos por bloque lógico. Esquema de distribución de términos. Es el mecanismo utilizado para distribuir los productos de términos a las macroceldas; esto se realiza mediante el arreglo programable de compuertas OR de un PLD. Los diferentes fabricantes de CPLD implementan la distribución de productos de términos con diferentes esquemas. Macroceldas. Una macrocelda de un CPLD está configurada internamente por flip-flops y un control de polaridad que habilita cada afirmación o negación de una expresión. Los CPLD suelen tener macroceldas de entrada/salida, de entrada y ocultas, mientras que los PLD sólo tienen macroceldas de entrada/salida. La cantidad de macroceldas que contiene un CPLD es importante, debido a que cada uno de los bloques lógicos que conforman el dispositivo se expresa en términos del número de macroceldas que contiene. Por lo general, mientras mayor será la cantidad, mayor será la complejidad de las funciones que se pueden implementar. 2.2.2 Arreglos de Compuertas Programables en Campo (FPGA) Los dispositivos FPGA se basan en lo que se conoce como arreglos de compuertas, los cuales consisten en la parte de la arquitectura que contiene tres elementos configurables: bloques lógicos configurables (CLB), bloques de entrada y de salida (IOB) y canales de comunicación [Maxínez, 2005]. A diferencia de los CPLD, la densidad de los FPGA se establece en cantidades equivalentes a cierto número de compuertas. Por adentro, un FPGA está formado por arreglos de bloques lógicos configurables (CLB), que se comunican entre ellos y con las terminales de entrada/salida (E/S) por medio de alambrados llamados canales de comunicación. Cada FPGA contiene una matriz de bloques lógicos idénticos, por lo general de forma cuadrada, conectados por medio de líneas metálicas que corren vertical y horizontalmente entre cada bloque (Ilustración 2.3). Ilustración 2-3 Arquitectura básica de un FPGA [Xilinx, 2012] Los bloques lógicos (llamados también celdas generadoras de funciones) están configurados para procesar cualquier aplicación lógica. Estos bloques tienen la característica de ser funcionalmente completos.; es decir, permiten la implementación de cualquier función booleana representada en la forma de suma de productos. El diseño lógico se implementa mediante bloques conocidos como generadores de funciones o LUT (Look Up Table: Tabla de Búsqueda), los cuales permiten almacenar la lógica requerida, ya que cuentan con una pequeña memoria interna –por lo general de 16 bits-. Cuando se aplica alguna combinación en las entradas de la LUT, el circuito la traduce en una dirección de memoria y envía fuera del bloque el dato almacenado en esa dirección. En la Ilustración 2.4 se observan los LUT que contienen esta arquitectura, los cuales se encuentran etiquetados con las letras. Ilustración 2-4 Arquitectura de un bloque lógico configurable FPGA [Maxínez, 2005]. En un dispositivo FPGA, los CLB están ordenados en arreglos de matrices programables (Programmable Switch Matrix o PSM), la matriz se encarga de dirigir las salidas de un bloque a otro. Las terminales de entrada y salida del FPGA pueden estar conectadas directamente al PSM o CLB, o se pueden conectar por medio de vías o canales de comunicación. En algunas ocasiones se pueden confundir los dispositivos de FPGA y CPLD, ya que ambos utilizan bloques lógicos en su fabricación. La diferencia entre ellos radica en el número de flip-flops utilizados, mientras la arquitectura del FPGA es rica en registros. 2.3 Campos de aplicación de la lógica programable [Maxínez, 2005]. La lógica programable es una herramienta de diseño muy poderosa, que se aplica en el mundo industrial y en proyectos universitarios en todo el mundo. En la actualidad se usan desde los PLD más sencillos como reemplazos de circuitos LSI y MSI, hasta los potentes CPLD y FPGA, que tienen aplicaciones en áreas como telecomunicaciones, computación, redes, medicina, procesamiento digital de señales, multiprocesamiento de datos, microondas, sistemas digitales, telefonía celular, filtros digitales programables, entre otros. En general, los CPLD son recomendables en aplicaciones donde se requieren muchos ciclos de sumas de productos, ya que pueden introducirse en el dispositivo para ejecutarse al mismo tiempo, lo que conduce a pocos retrasos. En la actualidad, los CPLD son muy utilizados a nivel industrial, ya que resulta fácil convertir los diseños compuestos por múltiples PLD sencillos en un circuito CPLD. Los FPGA son recomendables en aplicaciones secuenciales que no suponen grandes cantidades de términos producto. Por ejemplo, los FPGA desarrollados por la compañía ATMEL ofrecen alta velocidad en cómputo intensivo, aplicaciones en procesadores digitales de señales (DSP) y en otras fases del diseño lógico, debido a la gran cantidad de registros con los que cuentan sus dispositivos (de 1024 a 6400). Esto los hace ideales para su uso en dichas áreas. Cabe mencionar la diferencia entre CPLD y FPGA en la tabla siguiente: Tabla 2-3 Diferencias entre Dispositivos Lógicos Programables (CPLD) y los Arreglos de Compuertas Programables en Campo (FPGA). Características CPLD FPGA Arquitectura Similar a un PLD. Más combinacional. Densidad Baja a media Similar a los arreglos de compuertas. Más registros + RAM. Media a alta Funcionalidad Trabajan a frecuencias superiores a 200 Mhz. Contadores rápidos. Máquinas de estado. Lógica combinacional. Aplicaciones 2.4 Depende de la aplicación (arriba de los 135 Mhz). Excelentes en aplicaciones para arquitecturas de computadoras. Procesadores Digitales de Señales (DSP). Diseños con registros. Familia XC9500XL de Xilinx [Xilinx, 2013] . La familia FastFLASHXC9500XL es una familia CPLD de 3.3V de alto rendimiento y para aplicaciones de baja tensión en sistemas vanguardistas de comunicaciones y computación, donde la alta fiabilidad del dispositivo y su baja disipación de potencia es importante. Cada dispositivo XC9500XL soporta la programación en sistema (ISP: In System Programing) y el estándar completo IEEE 1149.1 (JTAG). La familia XC9500XL está diseñada para trabajar estrechamente con el Xilinx Virtex, Spartan -XL y las familias FPGA XC4000XL, el sistema permite a los diseñadores una lógica de partición óptima entre la interfaz y la lógica de propósito general y circuitos de alta densidad. Como muestran en la Tabla 4, la densidad de la lógica de los dispositivos XC9500XL va de rangos de 800 a 6400 puertas utilizables con 36 a 288 registros, respectivamente. Tabla 2-4 Familia de Dispositivos XC9500XL[Xilinx, 2012] . Tabla 2-5 Empaquetados y pines de I/O de la familia XC9500XL [Xilinx, 2012] . Las características avanzadas del sistema incluyen control en el retraso de las señales de salida (slew rate) y pines de tierra programables por el usuario para ayudar a reducir el ruido del sistema. Cada pin de usuario es compatible con entradas de 5V, 3.3V, y 2.5V y las salidas pueden ser configuradas para operaciones de 3.3V o 2.5V. Cada dispositivo de la familia XC9500XL es un subsistema consistente en múltiples bloques de función (FB) y bloques I / O (IOBs) totalmente interconectados por la matriz de conmutación FastConnectII. Los IOB proporcionan amortiguación para las entradas y salidas del dispositivo. El interruptor de la matriz FastConnect II conecta todas las salidas del módulo de funciones y señales de entrada al FB y los insumos. Para cada FB, hay 18 salidas (dependiendo del encapsulado) y sus señales de habilitación asociadas se envían directamente a los IOBs. Vea la Ilustración 2.5. Ilustración 2-5 Arquitectura de la familia XC9500XL[Xilinx, 2013] 2.4.1 Bloque de funciones Cada bloque de función, tal como se muestra en la Ilustración 6 se compone de 18 macroceldas independientes, cada uno capaz de implementar una función combinatoria o de registros. El FB también recibe la señal de reloj, salidas disponibles y la habilidad de activar / desactivar las señales. El FB genera 18 salidas. Ilustración 2-6 Bloques de Funciones de la Familia XC9500XL [Xilinx, 2013] 2.4.2 Macroceldas Cada macrocelda de la familia XC9500XL puede configurarse de forma individual para una función combinacional de registro. La macrocelda y el Bloque lógico asociado se muestra en la Ilustración 2.7. Ilustración 2-7 Macroceldas dentro de los bloques de funciones de la familia XC9500XL [Xilinx, 2013] . 2.5 Familia Spartan II de Xilinx [Xilinx, 2012] La familia de FPGAs Spartan fue introducida en el mercado en enero de 1998, ofreciendo una alternativa muy atractiva para aplicaciones de alto volumen y aplicaciones de bajo costo. Con el Spartan II, se estableció un nuevo estándar de alto rendimiento y bajo costo. El Spartan II está fabricado en un proceso mixto de 0.18 μm/0.22 μm y seis capas de metal, utilizando una de las más avanzadas tecnologías de proceso existentes hoy en día. El núcleo de la FPGA funciona a 2.5V e incorpora una tecnología que le permite funcionar con interfaces de I/O de 3.3 V siendo tolerante a señales de 5V. Su arquitectura incorpora conceptos a nivel sistema, como Delay Lock Loops (DLL’s) para gestión de relojes, memoria de bloque BlockRAM, memoria distribuida implementada en los CLBs y múltiples estándares de entrada /salida. Ilustración 2-8 Diagrama de bloques básico de la familia Spartan II[Xilinx, 2012] . 2.5.1 Características Especiales Como se mencionó anteriormente, el dispositivo Spartan-IIE está compuesto de cinco elementos distinguibles configurables: • IOBs (Input/Output Blocks): proporcionan la interfaz entre el paquete pines y la lógica interna. • CLBs (Configurable Logic Blocks): proporcionan los elementos funcionales para construir más lógica. • Bloques de RAM dedicados de 4096 bits cada uno. • Clock DLLs (Delay-Locked Loops): para la compensación de retraso de distribución de reloj y control de dominio de reloj. • Estructura de interconexión multi-nivel versátil. Como se vio en la Ilustración 8, los CLBs forman la estructura de lógica central con acceso fácil a todas las estructuras de soporte y ruteo. Los IOBs se localizan alrededor de toda la lógica y de los elementos de memoria para un ruteo de señales fácil y rápido dentro y fuera del chip. 2.5.1.1 Bloque de Entrada/Salida Las entradas y salidas soportan muchos tipos de estándar de señalización, como TTL, CMOS, PCI (3.3V), AGP, etc., que se diferencian en los niveles de voltaje que manejan. Ilustración 2-9 Bloques de Entrada/Salida del FPGA Spartan II [Xilinx, 2012] . En la Ilustración 2.9 se muestra el contenido de un IOB. Se pueden observar tres elementos de almacenamiento, los que pueden ser utilizados como flip-flop D o como latches. Cada flip-flop tiene una señal de reloj compartida, con señales independientes de habilitación para el reloj (Clock Enable) y una señal compartida Set/Reset (SR). Para cada registro, esta señal puede configurarse independientemente como un Set sincrónico, un Reset sincrónico, un Preset asincrónico, o un Clear asincrónico. Un rasgo no mostrado en el diagrama de bloques, pero controlado por el software, es el control de polaridad. Los buffer de entrada y salida y todas las señales de control IOB tienen controles de polaridad independientes. Las Resistencias pull-up y pull-down opcionales y un circuito weakkeeper optativo están adjuntos a cada bloque I/O. Antes de la configuración se ponen todas las salidas no involucradas en la configuración a su estado de alta-impedancia. Las resistencias pull-down y los circuitos weak-keeper son inactivos, pero las entradas pueden convertirse en pull-up opcionalmente. La activación de la resistencias pull-up antes de la configuración es controlada en una base global por los pines de modo de configuración. 2.5.1.2 Bancos de Entrada/Salida Algunos de los estándares de entrada y salida requieren de una tensión externa VCCO y/o una tensión de referencia VREF. Estas tensiones están conectadas a las entradas y salidas por grupos, llamados bancos. Es decir, si aplicamos un cierto estándar a una entrada o salida, ésta va a incluir también a las otras entradas o salidas que pertenecen al mismo banco. Por lo tanto existen ciertas restricciones al utilizar estos estándares. Ocho bancos de entrada/salida resultan de subdividir cada periferia del dispositivo en dos bancos. Cada banco tiene varios pines de VCCO, los cuales deben ser conectados al mismo nivel de tensión. El valor del nivel de tensión está especificado por el estándar utilizado. Dentro de un banco, los estándares pueden ser combinados sólo si utilizan el mismo valor para VCCO. En el caso de las entradas, se requiere de una tensión umbral VREF (suministrado externamente). Este valor se debe introducir en ciertos pines del dispositivo que son automáticamente asignados para este propósito. Dependiendo del caso, aproximadamente uno de seis pines de un banco es utilizado para este rol. Los pines de VREF dentro de un banco están interconectados internamente, lo que implica el uso de solo un nivel de VREF por banco, sin embargo pueden ser mezclados con pines del mismo banco que no requieren de esta tensión umbral. El número y lugar de los pines dedicados a VCCO y VREF dependen del tipo de FPGA Spartan IIE que se utilice. Ilustración 2-10 Bancos de Entrada/Salida [Xilinx, 2012] . 2.5.1.3 Bloques de Lógica Configurable (CLB: Configurable Logic Block). La estructura básica de un CLB es la celda lógica o LC (Logic Cell). Un LC incluye un generador de funciones (LUT) de 4 entradas, lógica de acarreo (Carry Logic), y un elemento de almacenaje. Cada CLB contiene cuatro LCs, organizados en dos trozos o Slices similares, tal como muestra la figura 2.11. Además de los cuatro LCs, un CLB contiene también una lógica adicional que hace posible la combinación de los generadores de función para que éstos puedan aceptar cinco o seis entradas. Por lo tanto, cuando se quiere estimar el número de compuertas de un dispositivo dado, cada CLB soporta hasta 4.5 LCs. El CLB de Spartan II está dividido en dos partes (Slices) que están interconectados internamente. Cada parte tiene a su vez dos LUT (Lookup Up Tables) que permiten implementar funciones de una forma muy eficiente. Entre estas funciones cabe destacar: Memoria distribuida. Registros de desplazamiento de 16 bits. Líneas de Retardo. Multiplicadores eficientes. En la Ilustración 2.11 se muestran los dos Slices de cada CLB con sus respectivos LUTs. Ilustración 2-11 Slices del CLB del Spartan II [Xilinx, 2012] 2.5.1.4 Bloques de RAM (BlockRAM) Las FPGAs Spartan-IIE incorporan varios bloques grandes de memoria RAM, llamadas por el fabricante BlockRAM. Estos bloques ofrecen un mejor complemento que los que ofrece la RAM distribuida como las Tablas de LookUp (LUTs) que proporcionan estructuras de memoria superficiales implementadas en CLBs. Los bloques de memoria Block RAM están organizados en columnas. La mayoría de los dispositivos Spartan-IIE contienen dos de estas columnas, una a lo largo de cada borde vertical, donde estas columnas se extienden por todo el chip. La XC2S400E tiene cuatro columnas de bloques de RAM y el XC2S600E tiene seis columnas de bloques de RAM. El tamaño de cada bloque de memoria corresponde a cuatro veces el tamaño de un CLB, por lo tanto, un dispositivo Spartan-IIE con 16 CLBs contendrá cuatro bloques de memoria por columna, y un total de ocho bloques. Cada celda BlockRAM es totalmente sincrónica, de doble puerto (es decir, son dos memorias en una e independientes), y de capacidad de 4096-bit. Se dispone además de un sistema de enrutamiento dedicado que provee una eficiente comunicación entre ambos CLBs y otros bloques BlockRAM. Ilustración 2-12 BlockRAM de Doble Puerto [Xilinx, 2012] . 2.5.1.5 Delay Locked Loops. Un DLL realiza la misma tarea que los tradicionales PLL’s (Phase Lock Loops), pero de una forma más robusta y menos susceptible a interferencias de ruido. El DLL de la familia Spartan II permite las funciones: Desplazamiento de fase Espejo de relojes Multiplicar Dividir Sincronización con relojes externos. Todos los dispositivos de la familia Spartan II poseen cuatro DLLs. 2.5.2 Propiedades y encapsulados de la familia SPARTAN II. En la tabla siguiente se resumen las principales características funcionales de la familia Spartan II, como son el máximo número de puertas por dispositivo, y el de celdas lógicas, así como el numero de Bloques Lógicos Configurables y encapsulados disponibles. Tabla 2-6 Encapsulados y propiedades de la Familia Spartan II. Características XC2S15 XC2S30 XC2S50 XC2S100 XC2S150 XC2S200 Max. System Gates Celdas Lógicas CLBs BlockRAM Max I/O Encapsulados 15 000 30 000 50 000 100 000 150 000 200 000 432 8 x 12 16K 86 VQ100 TQ144 CS144 972 12 x 18 24K 132 VQ100 TQ144 CS144 PQ208 1728 16 x 24 32K 176 TQ144 PQ208 FG256 2700 20 x 30 40K 196 TQ144 PQ208 FG256 FG456 3888 24 x 36 48K 260 PQ208 FG256 FG456 5292 28 x 42 56K 284 PQ208 FG256 FG456 La siguiente figura muestra la forma física de un componente de la Familia Spartan II de Xilinx. Ilustración 2-13 Forma física de un componente de la familia Spartan II de Xilinx [Xilinx, 2012] . 2.5.3 Modo de Programación y circuito de Memoria [Xilinx, 2012] Los FPGAs de la familia SPARTAN-II pueden ser configuradas en cuatro modos principalmente: Master – Serial, Slave – Serial, Slave – Parallel y Boundary Scan, que se explican a continuación. En el modo Master – Serial, el FPGA controla el proceso de configuración, generando una señal de reloj (Por el pin CCLK) como salida que es recibida por una memoria PROM externa, que contiene los datos de configuración. La PROM envía estos datos bit a bit (de ahí que esta sea un modo serie), al pin DIN del FPGA en cada flanco de subida del reloj. El modo Slave – Serial, el FPGA recibe pasivamente CCLK como entrada de un dispositivo de un dispositivo externo, que puede ser un microprocesador, una segunda FPGA en modo Master o utilizando un controlador (Que puede ser un controlador USB. Al igual que el modo Master, en cada flanco de subida de reloj, se lee el contenido de su pin DIN. Existe la posibilidad de programar varias FPGAs a la vez usando el método Daisy – chain (configuración en cadena), conectando, entre otras cosas, el pin DOUT de una FPGA, al DIN de la siguiente. Esto se realiza añadiendo al diseño del modo Master- Serial, una o varias FPGAs en modo Slave – Serial (ver figura) después de que una FPGA carga un bit de configuración, su pin DOUT, tras el siguiente flanco de subida de reloj, presenta el dato de configuración para el próximo dispositivo en la cadena. Ilustración 2-14 Diagrama del circuito de configuración Master-Slave [Xilinx, 2012] . Por otro lado está el modo Slave – Parallel, que es el método de programación más rápido, ya que los bits llegan de ocho en ocho por los pines D0:D7. Por último, queda el modo Boundary Scan, que se realiza por un puerto especial, el Test Access Port (TAP). Utiliza cuatro pines dedicados: TDI, TDO, TMS, TCK. Para configurar mediante TAP necesitamos una instrucción especial CFG_IN, que permite a los datos que entran por TDI, ser convertidos en paquetes de datos para el bus de configuración interno de la FPGA. En cada uno de los cuatro modos se puede elegir entre tener resistencias de pull-up o no. Luego, en total hay ocho modos diferentes de programación que se pueden seleccionar dando distintos valores a los pines M0, M1 y M2. Para mayor información, consultar [Xilinx, 2012] Tabla 2-7 Descripción de cada señal usada en la configuración. Modo de Configuración M0 M1 M2 Pull-ups Master Serial 0 0 1 No Slave Serial 1 1 1 No Slave Parallel 0 1 1 No Boundary Scan 1 0 1 No Master Serial (con pull-ups) 0 0 0 Si Slave Serial (con pull-ups) 1 1 0 Si Slave Parallel (con pull-ups) 0 1 0 Si Boundary Scan (con Pull ups) 1 0 0 Si 3. DESARROLLO 3.1 Elaboración de tarjetas electrónicas con CPLDs y FPGAs de Xilinx. Hablar de una metodología, de una “receta”, es algo aventurado. Pero hay pasos para hacer más eficiente el tiempo de diseño. Como se mencionó anteriormente, hay tutoriales en español y librerías disponibles comercialmente. Pero desafortunadamente, en las librerías existentes no conocemos cuáles fueron los criterios de elaboración. Hacen falta pines, el encapsulado no es el que necesitamos, etc. El tutorial en español para hacer librerías en EAGLE es para la versión 4.11. El que se usó fue el 5.6.0. , y como se refirió, hay diferencias (sobre todo en el uso del entorno). Por lo cual aquí se modifica un poco los pasos de este tutorial, mencionando pasos que no están y anexando puntos nuevos. Para mayor información acerca del EAGLE 5.6.0 y el tutorial modificado para la elaboración de las librerías usadas en el presente trabajo ver el apéndice A. La razón por la cual se usa esta versión del EAGLE es por su versión freeware y su accesibilidad para los estudiantes a nivel ingeniería. Con ello se fomenta el uso de los sistemas operativos Linux en todas sus versiones (en este caso el Ubuntu) para evitar el uso de software pirata. Si bien esta limitado (ver Apéndice A página 60 para características de esta versión freeware) es perfecto para este tipo de proyectos. En general, los pasos para elaborar una tarjeta con CPLD/FPGA son: Conseguir todas las hojas técnicas del CPLD/FPGA con el cual se va a trabajar, tanto las características técnicas, dimensiones del encapsulado, etc. Dependiendo del software, verificar si tienen la librería que le corresponde al CPLD/FPGA. Hay varios programas de CAD: el ORCad, en el cual, la librería para CPLDs/FPGAs algunos se compran, el Altium, que ya lo tiene dentro de sus librerías, y éste, el EAGLE CADSOFT. Si hay que elaborar la librería, hay que tener un conocimiento de la función de cada pin, pues se tiene que saber muy bien cuales son entradas, salidas , mixtas, no conectados, etc. Un diagrama de flujo del proceso es el siguiente: inicio Documentar información (datasheets, trabajos previos, etc.) 1 Estudio previo. Elaboración de propuestas en diagramas esquemáticos no ¿Software libre? Orcad, Altium, Eagle si (c/licencia) Eagle (freeware), KiCad ¿Existen las librerías? no Elaboración de las librerías a base de las hojas técnicas si Elaboración circuitos esquemáticos posibles PCBs de y Elaboración placa física Pruebas sobre prototipo el si 1 ¿correccion? no FIN Ilustración 3-1Diagrama de flujo del proceso Con respecto a la soldadura, con práctica y teniendo las herramientas y consumibles necesarios (adquiridos en el mercado local), no representaría mayor problema. Entre las herramientas mínimas que uno debe de tener es un cautín de punta cónica, y un flux especial para soldadura superficial que se vende en las tiendas de refacciones electrónicas (Master, Servitronick, etc). Para mayor información sobre las técnicas de soldadura aplicadas en el procedimiento y sobre los encapsulados en la cual pueden presentarse los CPLDs y FPGAs ver el Apéndice B página 75. El modo de cargar los programas en la tarjeta es el modo JTAG por puerto paralelo. En el Apéndice C página 89 se habla del protocolo JTAG, sus pines y funciones y el diagrama esquemático y tableta para la elaboración de un cable JTAG para ambas tecnología: CPLD y FPGA. Ver página 89. Este tipo de protocolo fue el usado para las pruebas de la placa con CPLD. En el Apéndice D página 94 se anexa la información, con el fin de motivar la continuidad del proyecto, del protocolo USB. 3.1.1 Tarjeta con FPGA Spartan II. La tarjeta de Evaluación con FPGA lleva un Circuito Spartan II XC2S30. Su elaboración comenzó desde la recopilación de todas las hojas de datos y técnicas que se encuentran en la página web de Xilinx [Xilinx, 2013] . Cabe mencionar que dicha familia de FPGAs ya está descontinuado. Sin embargo, se decidió hacer con este circuito como introducción al estudio y elaboración de tarjetas con este tipo de circuitos. La metodología se puede aplicar con cualquier familia FPGA de cualquier compañía. Los primeros pasos como se mencionó fueron de recopilación de información y de elaboración de librerías en el programa Eagle Versión Freeware. Las librerías resultantes del FPGA Spartan II XC2S30 son las siguientes: Ilustración 3-2 Encapsulado elaborado para el FPGA XC2S30. Ilustración 3-3 Símbolo de esquemático en el Eagle Freeware. La identificación de pines (de voltajes, JTAG, funciones especiales, etc) se describió en el marco teórico El esquemático propuesto es el que se muestra a continuación. Es la propuesta ideal, que todo está incluido en una sola tableta. Ilustración 3-4 Diagrama propuesto para una placa de usos múltiples. La placa BRD es la siguiente: Ilustración 3-5 PCB de sistema mínimo. La placa BRD del SPARTAN no se llevó a cabo porque este circuito (SPARTAN II), como se comentó, es una familia ya obsoleta. Sin embargo, su estudio ayudó mucho a la comprensión de todas las herramientas y recursos aquí presentados. Como se verá más adelante, se optó por el CPLD llevarlo a cabo, y una de las principales razones fue el encapsulado. Fue mucho mas sencillo de soldar que el que hubiera sido el SPARTAN II (144 pines del SPARTAN II en comparación de los 44 pines del XC9572XL). A continuación, se muestran las funciones de los pines del FPGA, el cual ayudó mucho para comprender las funciones del os pines del CPLD. 3.1.1.1 Pines del FPGA XC2S30 Los pines del FPGA Spartan II XC2S30 tienen las siguientes características: Antes y durante la configuración, los pines de salida no usados para la configuración, se pone en tercer estado con un pull up de entre 50 K Ω y 100 KΩ. Luego de la configuración, si un I/OB no se usa, se define como entrada con un pull-up de entre 50 KΩ y 100 KΩ. Cualquier pin se puede dedicar a Set/Reset. Hay dos tipos de pines en los dispositivos Spartan-II: pines dedicados, que realizan sólo funciones específicas relacionadas con la configuración, y el resto de pines, que sirven como pines de entrada/salida de propósito general una vez que el dispositivo está en modo usuario. La siguiente tabla muestra los distintos tipos de pines que se pueden encontrar en una FPGA y su descripción. Tabla 3-1 1 Pines permanentes dedicados de la Spartan II Nombre Dirección VCCO Entrada Descripción Pines de suministro de potencia para señales de salida. VCCINT Entrada Pines de suministro de potencia para el núcleo de lógica interna. M0,M1,M2 Entrada Pines que son usados para especificar el modo de configuración. CCLK Entrada o Pin de reloj durante la configuración. Es de entrada para los modos Slave – Parallel y Slave – Serial y de Salida salida para el modo Master – Serial. /PROGRAM Entrada Cuando se pone en baja inicializa la secuencia de configuración. DONE Bidireccional Indica que la configuración ha terminado, y que la secuencia de Start-Up está en proceso. Si se usa como salida, debe ser colector abierto. TDI, TDO, Mixta Pines para el acceso al puerto Boundary Scan (IEEE TMS, TCK 1149.1). GND Entrada Tierra. Tabla 3-1 2 Pines no dedicados de la Spartan II Nombre Dirección GCK0, GCK1, Entrada GCK2, GCK3 /INIT BUSY/DOUT D0/DIN,D!,D2, D3.D4.D5.D6, D7 WRITE CS IRDY, TRDY Descripción Pines de entrada de reloj para conectar los Buffers de reloj globales. Estos pines pasan a ser pines de usuario tras la configuración. Bidireccional Cuando está en baja, indica que la memoria de (colector configuración se está limpiando. Este pin se abierto) convierte en pin de E/S usuario después de la configuración. Salida En el modo Slave – Parallel, BUSY controla la velocidad a la que los datos de configuración se cargan. Este pin se convierte en pin de E/S usuario después de la configuración, salvo si se mantiene el puerto Slave Parallel. En los modos serie, si se configura en cadena (daisy-chain), DOUT suministra los datos de configuración al siguiente dispositivo de la cadena. Entrada o En el modo Slave – Parallel, D0-D7 son los pines de Salida entrada de los datos de configuración. En los modos en serie, DIN es el pin de entrada única de datos. Este pin se convierte en pin de E/S usuario después de la configuración. Entrada En el modo Slave – Parallel, es la señal WRITE Enable, activa en baja. Este pin se convierte en pin de E/S usuario después de la configuración, salvo si se mantiene el puerto Slave – Parallel. Entrada En el modo Slave – Parallel es la señal Write Enable, activa en baja. Este pin se convierte en pin de E/S usuario después de la configuración, salvo si se mantiene el puerto Chip Select. Dependiente Solo se puede acceder a estas señales si usamos de PCI Core Xilinx PCI cores. Si no es asi, estos pines se usan como pines de E/S usuario. En total hay 144 pines en la XC2S30 -5 TQ144, cuyo desglose se ve a continuación: Tabla 3-1 3 Clasificación de pines del FPGA XC2S30 Spartan II. Tipo de Pin Número de pines I/O 100 VCCO 12 I/o, VREF 16 VCCINT 8 GND 16 GCK0,GCK1, GCK2, 4 GCK3 M0, M1, M2 3 CCLK 1 /PROGRAM 1 DONE 1 /INIT 1 BUSY/DOUT 1 D0/DIN, 8 D1,D2,D3,D4,D5,D6,D7 /WRITE 1 /CS 1 TDI,TD0,TMS,TCK 4 IRDY, TRDY 4 No conectados 2 Para mayor información sobre los pines de este FPGA, consultar [Xilinx, 2012] . 3.1.2 Tarjeta con CPLD XC9500XL. Con la experiencia previa de la tarjeta con FPGA, se optó por desarrollar también una tarjeta con CPLD. Se aplicó la misma metodología: recolección de información de hojas técnicas, trabajos previos y búsqueda de librerías ya hechas para EAGLE, con lo cual se llevó a cabo la realización del diagrama esquemático. La librería hecha es la siguiente: b a Ilustración 3-6 Símbolo esquemático y footprint del CPLD XC9572XL. El diagrama esquemático es el siguiente: Ilustración 3-7 Diagrama Esquemático propuesto para la placa con el CPLD XC9572XL. 3.1.2.1 Pines del CPLD XC9572XL Los pines del CPLD XC9572XL de entradas y salidas son los siguientes: Tabla 3-1 4 Pines de entradas y salidas del CPLD XC9572XL Function Macrocelda VQ44 (ubicación Function Macro- VQ44 (ubicación Block Block celda del del pin en el encapsulado) 2 39 3 15 14 1 5 40 3 16 18 1 6 41 4 17 16 1 8 42 4 2 19 1 9 43 *pin de control 4 5 20 4 8 21 4 11 22 global 11 44 *pin de control global 1 14 1 *pin de control global 1 15 2 4 14 23 1 17 3 4 15 27 2 2 29 4 17 28 2 5 30 2 6 31 2 8 32 2 9 33 *pin de control global 2 11 34 *pin de control global 2 14 36 *GTS 2 15 37 2 17 38 3 2 5 3 5 6 3 8 7 3 9 8 3 11 12 3 14 13 en encapsulado) 1 1 pin Los pines de funciones especiales son los siguientes: el Tabla 3-1 5 Pines de funciones especiales del CPLD XC9572XL Tipo de VQ44 pin (ubicación del pin en el encapsulado) I/O/GCK1 43 I/O/GCK2 44 I/O/GCK3 1 I/O/GTS1 36 I/O/GTS2 34 I/O/GSR1 33 TCK 11 TDI 9 TDO 24 TMS 10 VccInt 3.3V 15, 35 VccIO 26 2.5V/3.3V GND 4, 17, 25 La placa está conformada de tal manera que tiene las entradas de JTAG, funciones especiales, diodos de visualización y un botón para usos múltiples. No está limitado a solo esto, pues están los conectores de entradas y salidas pudiendo ser configurados para las funciones que se requieran por programación. A continuación, se describe en la siguiente tabla los pines y los conectores que lo conforman en la placa ya de manera física: Tabla 3-1 6 Pines del CPLD XC9572XL PIN Funcion Conector en PIN Funcion placa Conector placa 1 Bank1_6 J2_1 24 TDO J1_3 2 Bank1_7 NC 25 GND3 J1_5 3 Bank1_8 S1 26 VccIO 4 GND J1_5 27 Bank2_10 J6_2 5 Bank1_9 R7-LED1 28 Bank2_9 J6_1 6 Bank1_10 R5-LED2 29 Bank2_8 J5_4 7 Bank1 R8-LED3 30 Bank2_7 J5_3 8 Bank1_11 R1-LED4 31 Bank2_6 J5_2 9 TDI J1_2 32 Bank2_5 J5_1 10 TMS J1_1 33 Bank2_4 J4_4 11 TCK J1_4 34 Bank2_3/GTS2 J4_3 12 Bank1_12 J8_4 35 VccInt2 13 Bank1_13 J8_3 36 Bank2_2/GTS1 J4_2 14 Bank1_14 J8_2 37 Bank2_1 J4_1 15 VccInt1 38 Bank2_0 J3_4 16 Bank1_15 J8_1 39 Bank1_0 J3_3 17 GND2 J1_5 40 Bank1_1 J3_2 18 Bank1_16 J7_4 41 Bank1_2 J3_1 19 Bank2_15 J7_3 42 Bank1_3 J2_4 20 Bank2_14 J7_2 43 Bank1_4 J2_3 21 Bank2_13 J7_1 44 Bank1_5 J2_2 22 Bank2_12 J6_4 23 Bank2_11 J6_3 VccInt = 3.3V VccIO= 2.5V/3.3V TCI,TDO, TCK y TMS son pines de JTAG. GCK = global clock GTS = global tri-state GSR = global set/reset en Estos pines tienen acceso global con propósitos dedicados. Esto minimiza el efecto skew para estas señales. Si estas funciones especiales no se usan, pueden ser usados como entradas y salidas generales. Para interpretar la ubicación en los conectores, se pone de ejemplo el siguiente pin: Tabla 3-1 7 Ejemplo de identificación de conectores PIN Funcion Conector en placa 1 Bank1_6 J2_1 El pin 1 es la entrada/salida 6 del banco 1. Su ubicación se encuentra en el conector J2, lugar 1. Donde dice JX (en este caso, J2), esa ubicación es el 4. Esto hay que tenerlo en cuenta en el momento de la programación y asignación de pines a la hora de asignar funciones a los pines. Se anexa en el Apéndice E página 114 un manual para el usuario. La placa BRD es el siguiente: Ilustración 3-8 Placa BRD con el CPLD XC9572XL. La placa se hizo a 2 capas. 3.1.2.1. Fuente de Alimentación La fuente de alimentación originalmente fue diseñada para brindar dos voltajes, el de 2.5v y de 3.3v, usando el LM1117. Cabe mencionar que este regulador de voltaje viene en versiones de 1.8v, 2.5v, 2.85v, 3.3v, 5v y versiones ajustables. La fuente fue diseñada conforme a las hojas técnicas de Texas Instrument. Ya en la placa se decidió usar solo un regulador, el que brinda 3.3V. Para mayor información, ver [TI, 2013] y teclear LM1117 en búsqueda. Luego, esta misma placa fue integrada a la placa BRD. Ilustración 3-9 Diagrama esquemático de la fuente de alimentación de 2.5v y 3.3v Ilustración 3-10 BRD de la fuente de alimentación La placa se hizo a dos capas. 4. RESULTADOS Y OBSERVACIONES. Se muestra a continuación una foto de la placa con CPLD Ilustración 4-1 Foto de la placa CPLD con sus componentes de montaje superficial soldados. Se uso el software ISE Foundation de Xilinx para cargar el programa de prueba. El programa reconoció el CPLD, el cual demostraba que reconocio el CPLD por medio del JTAG (programación por Boundary Scan). Esta acción se puede ver en la siguiente figura. Ilustración 4-2 CPLD XC9572XL identificado en el ISE Foundation La asignación de pines es para denotar cual será mi entrada y salida. En la siguiente figura se puede ver a que pines se asignaron para ello. Ilustración 4- 3 Asignación de pines Se puede ver que como entrada es el pin 12 correspondiente al lugar 1 del conector J8 de la placa, y el pin 38, que es un diodo led ubicado en la tableta, junto con su resistencia. Éstas se pueden localizar sobre ella como R8 y LED3. El programa de prueba se muestra a continuación, ya instanciado en la tableta: Ilustración 4- 4 Programa de prueba En la siguiente figura se puede ver la tableta en acción. El LED2 de la placa indica que está siendo alimentada por voltaje. En la figura, el cable café indica la tierra general de la placa, y el cable naranja la alimentación de 5V. Ilustración 4- 5 Placa con la señalización de que está siendo alimentada por voltaje en el LED2 En la siguiente figura se puede ver el CPLD respondiendo a las instrucciones que se le asignó. El LED3 está correspondido por el pin 38, ya fijo. La figura se puede ver que el CPLD está a tierra (estado lógico 0) por lo cual, el LED3 está apagado: Ilustración 4- 6 CPLD en estado lógico 0 Ilustración 4- 7 CPLD en estado lógico 1 Ponemos a alimentación (estado lógico 1) y vemos que el LED3 se enciende, cumpliendo con las instrucción. El prototipo funcionó adecuadamente. 5. CONCLUSIONES Las conclusiones a las que se llegaron son las siguientes: La práctica y la actualización en seminarios técnicos acerca de técnicas de soldadura y la revisión de revistas especializadas da una amplia visualización de lo que se está usando para cubrir las carencias en los talleres técnicos de servicio. Esto puede ser utilizado por los estudiantes para acortar desventajas de acceso a equipos profesionales o de difícil acceso económico. Las técnicas de soldadura para dispositivos de Montaje Superficial fueron estudiadas y practicadas para llevarlas a la práctica con los encapsulados que nos encontramos para el CPLD y los componentes que fueron usados para la placa. La identificación de las terminales, forma de uso, ventajas y desventajas de su utilización fueron evaluados en las hojas técnicas que brinda Xilinx, conociendo sus funciones y con ello diseñar un sistema mínimo para una placa. Todas las especificaciones de las funciones especiales, voltajes, y modo de programación se exponen en el apartado 3.1.1 y 3.1.2 del desarrollo, correspondientes al FPGA y CPLD respectivamente. La programación JTAG, al estudiarla, dio como conclusión de que no era necesario usar una memoria externa (en este caso, EEPROM), pues al programarla de esta manera se usa la memoria volátil del mismo CPLD/FPGA. El programa se queda en el CPLD/FPGA hasta que se interrumpa el voltaje. Después de esta interrupción, se tiene que cargar de nuevo el programa por medio de JTAG. Se brinda un circuito para hacer un cable conector JTAG en caso de no contar con ello. En las hojas técnicas, al estudiar e identificar las terminales, se diseñó una fuente de alimentación que luego sería integrada al diseño del sistema mínimo del CPLD para que sea un solo diagrama esquemático, y por ende, una sola placa BRD. Paralelamente, se llegaron a otras conclusiones que no están contempladas en los objetivos de este trabajo, pero que surgieron durante la elaboración de esta: La difusión del uso de software libre, tales como Linux (en cualquiera de sus versiones) y utilizando software especializado en el campo de la electrónica (dentro de esta filosofía Linux), nos permite trabajar con herramientas de licencia libre, el cual, va a la par con las nuevas políticas mundiales en contra de la piratería de software, así como su difusión. Este trabajo busca motivar la investigación a base de herramientas de software libre y hardware libre como inicio de partida en un proyecto, así como la recopilación de trabajos hechos con estas, para promover su uso y la continuación de proyectos de esta naturaleza que vaya a la par con las nuevas tecnologías (en este caso, con las nuevas familias de CPLDs/FPGAs) REFERENCIAS BIBLIOGRÁFICAS. LIBROS [González, 2004] González Calabuig, José; Recasens Bellver, María Auxiliadora “Diseño de circuitos impresos con Orcard Capture y Layout V. 9.2”. Paraninfo, México, 2004 [Maxínez, 2005] Maxínez,David G.; Alcalá Jara, Jessica “VHDL El arte de programar sistemas digitales”. Patria Cultural, México, 2005. ARTÍCULOS DE PUBLICACIONES EN SERIE [Mata, 2010] Mata Rodríguez, Armando “Soldadura y desoldadura con luz infrarroja” Revista Electrónica y Servicio, No. 143, México. Editorial México Digital Comunicación, p. 6-13. [Parra, 2009] Parra Reynada, Leopoldo “Soldadura por aire caliente, una opción a considerar en el servicio” Revista Electrónica y servicio, No. 130, México. Editorial México Digital Comunicación, p. 18-23. [Parra, 2008] Parra Reynada, Leopoldo “Problemas y alternativas en las técnicas de soldadura. Un repaso general” Revista Electrónica y Servicio. 2008, No. 118. México. P. 41-47. [Vargas, 2000] Vargas García, Mauricio “Cómo retirar y soldar dispositivos SMD con compuestos sintéticos de baja fusión térmica” Revista Electrónica y Servicio. 2000, No. 25. México. Editorial México Digital Comunicación, P. 2931. TÉSIS NO PUBLICADAS [Arellano, 2006] Arellano Mauleón, Francisco; Calderón Setién, Francisco; Somovilla de la Torre, Sergio. “Diseño y fabricación de una placa didáctica basada en FPGA”. Director: José Manuel Mendías cuadros. Universidad Complutense de Madrid, Facultad de Informática, 2006. [Ferrés, 2008] Ferrés, David. “Tarjeta de evaluación y prácticas para dispositivos CPLD”. Director: Joan Gil. Escola Universitària Politècnica de Mataró, Ingeniería Técnica Industrial, 2008. [Gálvez, 2000] Gálvez, José L.; Guadilla Barciela, M. “EAGLE 4.0 para Linux y Windows”. Cadsoft, 2000. [Haya, 2003] Haya Coll, Pablo A.; González Gómez, Juan. “Manual de la tarjeta JPS-XPC84”. Universidad Autónoma de Madrid, Escuela Técnica Superior de Ingeniería Informática, 2003. DOCUMENTOS ELECTRÓNICOS [Sánchez, 2013] Tutorial de realización de librerías por Alberto Sánchez Bravo en EAGLE descargado de la página http://picmania.garcia-cuervo.net , en línea en enero de 2013. [Xilinx, 2012] Xilinx “Spartan®-II FPGA Family data sheet, including Overview, Functional Description, Specifications, and Pin-Outs.” Hojas técnicas disponibles en red: http://www.xilinx.com/support/documentation/spartan-ii.htm Recuperado el 12 de diciembre de 2012. [Xilinx, 2013] Hojas técnicas disponibles en red: http://www.xilinx.com/support/documentation/xc9500xl.htm PÁGINAS DE INTERNET [Cadsoft, 2013] www.cadsoft.de [Fpgalibre, 2012] http://fpgalibre.sourceforge.net/hard.html [Forosdeelectronica, 2013]http://www.forosdeelectronica.com. [Radioelectronics, 2013] http://www.radio-electronics.com/info/t_and_m/boundaryscan/boundary-scanjtag-interface.php [TI, 2013] http://www.ti.com/ [TI, 2013] [Güichar, 2013] www.sase.com.ar [Uiowa, 2013] http://www.engineering.uiowa.edu/~eshop/ [Weller, 2013] Catálogo Weller Soldering Catalog, 2013, descargado de la página http://rocky.digikey.com/weblib/Cooper%20Tools/Web%20Data/Weller%20Sold ering%20Catalog.pdf , en línea en enero de 2013. APÉNDICE Apéndice A A.1 Plataforma de diseño CAD para circuitos impresos [González, 2004] Los llamados entornos EDA (Electronic Design Automation) son similares a los programas CAD/CAM (Computer Assistant Design/ Computer Assistant Machine) pero orientados al diseño electrónico. Se controla el diseño y la producción desde la computadora, pudiendo realizarse los cambios necesarios mientras discurre el proceso. Estos paquetes de software están compuestos por una serie de programas que utilizan los datos existentes en las librerías y los procesan para obtener finalmente un conjunto de ficheros que contienen el diseño. En primer lugar hay que realizar la captura del esquema y a continuación se realiza el diseño de la placa de circuito impreso PCB (Printed Circuit Board). En la Ilustración A-1 1 siguiente se describe el proceso: Ilustración A-1 1 Entorno EDA A.1.1 Como usar el EAGLE CAD [Gálvez, 2000] Eagle es un potente editor de gráficos y esquemas para el diseño de placas con PC. Para un correcto funcionamiento de EAGLE los requerimientos mínimos del hardware son los siguientes: PC compatible (486 o superior) con Windows 95/95/XP, Windows NT/2000 o Linux basado en el kernel 2.x, libc6 y X11 con un mínimo de color de 8bpp. Disco duro con 50 Mbytes libres como mínimo. Resolución gráfica mínima de 1024 x 768 pixels (800 x 600 con el menor número de restricciones posibles). Ratón, a ser posible, con 3 botones. Características de la Versión profesional General Área máxima de dibujo 1.625 x 1.625 m (64 x 64 pulgadas). Resolución 1/10.000 mm (0.1 micras). Rejilla en mm o en pulgadas. Hasta 255 capas a colores definidos por el usuario. Ficheros de comando (ficheros Script). Lenguaje de usuario similar al C para la importación y exportación de datos. Edición de librerías sencilla. Visor de librerías con potentes funciones de búsqueda. Distinción entre las características de una misma familia (POR EJEMPLO 74L00, 74LS00). Generación de gráficos de salida así como fabricación y pruebas con el procesador CAM o mediante el lenguaje propio del usuario. Listado por impresora vía controladores del Sistema Operativo. Generación de listado de componentes con soporte de base de datos. Funciones arrastrar (Drag) y Colocar (Drop) en el panel de control. Función automática de copias de seguridad. Editor de Placas Soporte completo en SMD. Soporte completo en multicapas (16 capas de señales). Comprobación de las reglas de diseño para placas (por ejemplo traslapas, medidas de pistas o líneas de conexión). Conductores de cobre (para conexión a tierra). Soporte en variedad de encapsulados. Modulo Esquemático. Hasta 99 hojas por esquema. Posibilidad de trabajar alternativamente con el esquema y con la placa. Generación automática de la placa. Generación automática de las señales de alimentación. Verificación eléctrica (se verifican errores entre los esquemas eléctricos y de las líneas de conexión). Módulo Autoruter Totalmente integrado en el programa básico. Utilización de las Reglas de Diseño de líneas de conexión. Cambio del modo manual al automático en cualquier instante. Algoritmo ripup&retry. Estrategia de los factores de costo definida por el usuario. Rejilla de dibujo mínima de 0.02mm. Sin restricciones de posicionado. Hasta 16 capas de señales (con direcciones preferidas definibles por el usuario). Hasta 14 capas con alimentación. Toma en consideración de los distintos tipos de señales (ancho de línea de conexión, distancias mínimas). Características de la Edición Estándar En la Edición Estándar de esquemas se aplican las siguientes restricciones: El área del esquema se restringe a un máximo de 160 x 100 mm (alrededor de 6.3 x 3.9 pulgadas). Fuera de esta área no es posible situar encapsulados ni dibujar señales. Se permiten un número máximo de 4 capas (superior, inferior y 2 capas internas). Características de la Edición Libre (Freeware) En la Edición Reducida de EAGLE, disponible como Freeware (para prueba y evaluación), se aplican las siguientes restricciones: El área de la placa está restringida a 100 x 80 mm (alrededor de 3.9 x 3.2 pulgadas). Fuera de esta área no es posible situar encapsulados ni dibujar señales. Solo se pueden usar dos capas (no hay capas internas). Un esquema solo puede tener una hoja. Los esquemas más grandes se pueden imprimir con ediciones menores. El procesador CAM puede también generar la elaboración de datos. Manejo de Librerías. EAGLE viene con muchos archivos de librería que contienen las dimensiones, de inserción y superficie, de los dispositivos de montaje. La elección desde el árbol en el Panel de control de EAGLE y el archivo library.txt (en Eagle/doc) detalla la información sobre el contenido de las librerías. Las librerías contienen los componentes que se agrega a los esquemas y a las placas. A.1.1.1 Creación de nuevas librerías. El Editor de Librerías tiene la misma interfaz de usuario que el Editor de Esquemas y el Editor de Placas. Por lo tanto, solo tiene que conocer unos comandos adicionales para la creación de sus propios componentes. Una librería normalmente consiste en tres elementos básicos: Package (encapsulado): la silueta de colocación en la placa. Symbol (símbolo): el dibujo para el esquema eléctrico. Device (componente): el componente verdadero, consiste en el símbolo y el encapsulado. A.1.1.2 Dónde conseguirlos y cómo agregarlos. Hay varias páginas, sobre todo de universidades y foros donde se ofrecen tutoriales para hacer librerías, tales como [Forosdeelectronica, 2013], el cual tienen una amplia variedad de temas, desde desarrollo de aplicaciones de PICs, PCBs, Electrónica Analógica y Digital, así como servicio a equipos de alto consumo (TVs, reproductores de DVDs, etc.). Este foro es en español y solo se requiere registrarse para tener acceso a los temas y bajar archivos. Ilustración A-1 2 Ejemplo de una Comunidad de Foros de Electrónica [Forosdeelectronica, 2013] Hay Universidades que tienen en línea sus librerías para el desarrollo de proyectos en EAGLE, tales como la Universidad de Iowa [Uiowa, 2013] en la cual hay una gran variedad de librerías. En esta página podemos encontrar dos librerías para el Spartan: para el Spartan2E, el Spartan3 y el VirtexII, entre otros. Y por supuesto, CADSOFT tiene un apartado donde los usuarios pueden subir sus librerías que han hecho de diversos proyectos [Cadsoft, 2013] el cual es una excelente fuente para buscar librerías, o si es necesario, buscar modelos para elaborar las propias. Ilustración A-1 3 Página de CadSoft [Cadsoft, 2013] Cuando no hay en las librerías de Eagle alguna en particular, y es difícil de encontrar la librería adecuada en las páginas de internet, se opta por hacerla uno mismo. EAGLE tiene un procesador de librerías bastante intuitivo y bueno, solo hay que tener la información precisa del encapsulado y las características del Circuito integrado. Lo más difícil es encontrar las dimensiones del encapsulado en cuestión, así como la función de cada pin. El tutorial que se encuentra disponible en español es el realizado por Alberto Sánchez Bravo [Sánchez, 2013] , para la versión 4.11. La versión que se usó es el 5.6.0, por lo cual tiene ligeros cambios. A.1.1.3 Tutorial para la realización de librerías en EAGLE 5.6.0. Se usa como ejemplo la elaboración de una librería correspondiente al FPGA XC2S30 de Xilinx ya que es el que usamos en la elaboración de la placa experimental FPGA, y que sirve de base para futuros proyectos. Cabe mencionar que este tutorial está diseñado por el autor de este trabajo, basado en el tutorial realizado por Alberto Sánchez Bravo [Sánchez, 2013] . Abrimos el programa y nos colocamos en el panel de control y creamos una nueva librería. Ilustración A-1 4 Panel de Control de Eagle 5.6.0. La vamos a nombrar XC2S30. Pero antes nos saldrá esta pantalla (ya listo para hacer la librería). Ilustración A-1 5 Editor de Librerías. Este es el Editor. En la barra superior tenemos tres iconos: Device Éste es como un organizador. Aquí se seleccionan los símbolos que reúnen el dispositivo y los encapsulados. Se hacen corresponder los pines entre el package y el symbol. Package En esta parte dibujamos seleccionamos en su defecto). el encapsulado (o lo Symbol Aquí se realiza el dibujo del integrado, el que se visualizará en el diagrama esquemático. PACKAGE Como el tipo de encapsulado que usa el FPGA XC2S30 no es muy común que digamos, lo buscamos en alguna de las paginas propuestas anteriormente. Encontramos en la librería electrónica de la universidad de Iowa [Uiowa, 2013] la librería EAGLE para el Spartan 2E, pero no es el encapsulado que necesitamos, pero notamos en el Spartan 3 que si tiene ese encapsulado que necesitamos (TQ144). Ilustración A-1 6 Eshop de la Universidad de Iowa [Uiowa, 2013] Ilustración A-1 7 Ubicación de la librería del Spartan 3 [Uiowa, 2013] Ilustración A-1 8 Editor de Encapsulados (Footprints). Aquí tenemos el encapsulado que necesitamos. Lo que haremos es lo siguiente. Crear una nueva librería y ponerle de nombre XC2S30. Lo guardamos. Evidentemente no tendrá nada este archivo. Pero le agregaremos primero el encapsulado. Lo haremos copiando el encapsulado y pegándolo. Aquí los pasos: 1) Abrimos la librería que contiene el encapsulado (xc3s200-tq144.lbr) y le damos al icono package. 2) Aparece la siguiente pantalla. Para seleccionar el encapsulado nos situamos en el icono group (señalado en la Ilustración A.9). Ilustración A-1 9 Icono Group 3) Seleccionamos la figura y con el botón derecho del ratón damos click para que nos salga una ventana con opciones. Aquí seleccionamos copy:group. Ilustración A-1 10 Copia del encapsulado para la elaboración de uno nuevo. 4) Cuando abrimos nuestra librería (la que creamos), nos vamos a package. Nos saldrá una ventana y ahí le escribiremos un nombre (en este caso le pusimos encapsulado) Esto saldrá en letras mayúsculas. Le damos OK. Nos saldrá un editor. Damos click sobre el icono Paste (señalado en la figura) y saldrá nuestro encapsulado que copiamos. 5) Ya tenemos el encapsulado de nuestro integrado. No está de más comprobarlo: se imprime y se comprueba colocando el integrado encima para verificar que le corresponde. También podemos ponerle leyendas. Damos click en el icono de texto (señalado en la figura) y nos saldrá una ventana donde podemos escribir lo que queramos. Y así personalizamos nuestra librería. El tamaño de la fuente lo podemos modificar a nuestro antojo. También se puede modificar propiedades en dicho encapsulado, tales como ancho y largo, numero de pines, etc. Luego de damos Save (para guardar nuestro trabajo). También se podría hacer el encapsulado empezando desde cero, crearlos nosotros mismos en su totalidad. El proceso sería muy similar al de crear un símbolo. Aquí es muy útil contar con las características como dimensiones del encapsulado. Esto se ve en las hojas de datos. Ilustración A-1 11 Hoja técnica del encapsulado TQ144 [Xilinx, 2012] SYMBOL Creamos el símbolo para el integrado. Pulsamos en symbol y saldrá una ventana. Aquí escribimos el nombre de nuestro símbolo. En este caso, XC2S30. Ilustración A-1 12 Editor de Símbolos esquemáticos Podemos notar que sale el Editor (el área de nuestro símbolo). Señalo en una elipse el nombre de nuestro símbolo, con extensión .sym. Ilustración A-1 13 Editor de símbolos. Primero ponemos los pines que necesitaremos. De este modo nos daremos una idea del tamaño que necesitamos del dibujo del integrado. Los pines en cuestión son: Tabla A-1 1 Pines del FPGA Spartan II XC2S30. Tipo de Pin I/O VCCO I/o, VREF VCCINT GND GCK0,GCK1, GCK2, GCK3 M0, M1, M2 CCLK /PROGRAM DONE /INIT BUSY/DOUT D0/DIN, D1,D2,D3,D4,D5,D6,D7 /WRITE /CS TDI,TD0,TMS,TCK IRDY, TRDY No conectados Número de pines 100 12 16 8 16 4 3 1 1 1 1 1 8 1 1 4 4 2 Para fines prácticos de este tutorial, haremos el banco de memorias. La librería puede tener tres símbolos. En este caso se sugiere uno para banco de memoria, uno para voltajes y tierras y otro para funciones especiales. Para ello necesitamos 64 pines de I/O. Estos pines son totalmente dedicados a ello. Pulsamos la herramienta Pin y vemos que aparece en la parte superior unas opciones. Ilustración A-1 14 Herramienta PIN Ya tendríamos los pines que necesitamos. Les daremos nombre a estos pines con la herramienta name. Seleccionamos este icono, damos click y nos posicionamos en el pin que deseamos ponerle nombre. Ilustración A-1 15 Nombramiento de los pines. Una vez que tenemos todos los pines con sus correspondientes nombres los organizamos para que queden en los lados de un cuadrado o rectángulo. Para hacer el cuadrado se usa la herramienta wire, seleccionando la capa 94symbols. Tenemos ya nuestro dibujo del integrado, con sus pines a los lados. Ilustración A-1 16 Herramienta Wire. Al final queda así: Ilustración A-1 17 Símbolo terminado. Si queremos colocar texto para el nombre y valores, usamos la herramienta Text, escribimos el nombre, seleccionamos la capa 95Names y lo ponemos encima del dibujo. Repetimos esto pero con Value, seleccionando la capa 96Values y lo ponemos debajo dl dibujo. Si queremos poner el nombre del integrado, usamos la misma capa que usamos para dibujarlo, 94Symbols. Repetimos todo este proceso para los pines de alimentación y tierras y para las funciones especiales. Ilustración A-1 18 Tierras y voltajes y Funciones Especiales. DEVICE Pulsamos el icono device y creamos uno nuevo. Lo llamamos xc2s30. Pulsamos en el botón add y añadimos todo lo que necesitamos para este integrado (aquí es unir todas las partes), todos los símbolos, que sería FUNCIONESESPECIALES, TIERRASYVOLTAJES y BANCODEMEMORIAS. Agregamos en encapsulado. Al final queda así: Ilustración A-1 19 Conexión y correspondencia del símbolo y el encapsulado. Pulsamos Connect y hacemos corresponder los pines del símbolo con los pads del encapsulado, mirando siempre la hoja técnica del FPGA. Y listo ya para usar. Apéndice B B.1 Como retirar y soldar dispositivos SMT con compuestos sintéticos de baja fusión térmica [Vargas, 2000] La incorporación de circuitos de montaje superficial en los equipos electrónicos, trajo consigo la ventaja de poder fabricar aparatos más compactos y eficientes, pero esta situación, que finalmente beneficia a los usuarios, puede convertirse en problema a los técnicos e ingenieros que se dedican al servicio de mantenimiento correctivo, preventivo y diseño cuando se presenta la necesidad de reemplazar y/o usar este tipo de componentes. En la actualidad, los dispositivos de montaje superficial SMT (Surface Mount Technology) se encuentran en todos los equipos electrónicos; gracias a esto, la mayoría de los procesos involucrados en el funcionamiento de los diferentes equipos se ha agilizado considerablemente, trayendo como grandes ventajas la compactación sin sacrificar prestaciones. Al momento de diseñar, no hay que tener temor en usar este tipo de encapsulados, pues hay procedimientos para soldar y/o retirar este tipo de dispositivos, utilizando compuestos sintéticos de baja fusión térmica que se encuentran en el mercado local; esta opción tiene las siguientes ventajas: 1. No requiere de herramientas costosas o especiales (sopletes, boquillas, puntas, extractores, pistolas de aire, secadores de pelo, etc.) 2. No requiere de gases o aire caliente 3. No daña las pistas de circuitos impresos. 4. No afecta la soldadura de otros componentes, excepto la de aquellos que se desea retirar o colocar. 5. Como demanda una temperatura mínima, el impacto en el circuito que se trabaja es menor y se reduce el riesgo de daño a otros dispositivos. 6. Su aplicación se recomienda para el servicio electrónico doméstico, industrial, comercial y de computación. Los materiales que se pueden conseguir fácilmente y a bajo costo: 1. Solder-Zapper. Compuesto sintético para retirar componentes SMT. 2. Solder-Mate. Flux Sintético. 3. Soldadura en pasta. 4. Malla desoldadora. 5. Palillos y lápiz adhesivo. 6. Aguja. 7. Alcohol isopropílico, cotonetes y una brocha pequeña para limpiar. 8. Cautín de 25 watts (preferentemente de estación, con temperatura regulable y antiestática). Se sugiere que se trabaje en un área bien ventilada, limpia y despejada; y si es posible, que utilice un extractor de vapores para cautín. También se recomienda el uso de una pulsera antiestática, gafas protectoras y –para resultados más precisos- una lámpara con lupa. Por tratarse de un proceso delicado, es preferible que se practique con algunas placas inservibles, con el fin de familiarizarse con los materiales, herramientas y tiempo de trabajo. Primero describiremos el procedimiento para retirar los componentes SMT. Primero se regula la temperatura del cautín, permitiendo que se estabilice aproximadamente por tres minutos. Se aprovecha este lapso para limpiar con alcohol isopropílico las terminales del dispositivo. Después, con un palillo, se aplica un poco de Solder-Zapper en las terminales del componente que se va a retirar (Ilustración B-1 a). Se inserta una aguja por un costado del componente hasta formar una especie de palanca, pero sin tratar de forzarlo (Ilustración B-1 b). Figura B.1-a Figura B.2-b Ilustración B-1 1 Procedimiento de desoldadura Manteniéndose la posición anterior, se pasa de manera uniforme la punta del cautín sobre todas las terminales del dispositivo. La temperatura del cautín provocará que el Solder-Zapper degrade la soldadura que sostiene al dispositivo, y poco a poco éste se desprenderá. Existen algunos casos en que el dispositivo, además de estar soldado se encuentra pegado a la placa impresa, en ese caso se puede aplicar un poco de solvente (thiner de preferencia) para retirar el adhesivo. Posteriormente, para limpiar los residuos de soldadura, se aplica un poco de Solder-Mate sobre la malla desoldadora y con el cautín recorra de manera uniforme las venas; finalmente, se quita cualquier residuo de soldadura utilizando una brocha suave y alcohol isopropílico (Ilustración B-1 2). Ilustración B-1 2 Limpieza posterior de desoldado de componente SMT. El procedimiento para colocar componentes SMT se describe a continuación. Para ubicar correctamente cada una de las terminales del componente y hacer que coincidan con las del circuito impreso, se utiliza el palillo y la lámpara con lupa y se fija el dispositivo; primero se soldan las terminales de las esquinas (esto evitará que se mueva). Posteriormente, con una pequeña cantidad de soldadura, ya sea convencional o en pasta, se aplica en todas las terminales y con una sola pasada del cautín quedan fijas. Para finalizar, se limpia perfectamente con alcohol isopropílico o solvente cualquier residuo o impureza que pudiera haber quedado en la placa. B.2 Extracción de chips por aire caliente [Parra, 2009] Como su nombre lo indica, la soldadura por aire caliente se basa en el uso de aire muy caliente; tiene una temperatura de entre 300 y 400ºC, que es suficiente para fundir la tradicional soldadura de estaño y para retirar con facilidad los diminutos chips de montaje superficial. Sin embargo, el secreto de esta tecnología es mucho más que una resistencia que caliente el aire y una bomba que lo pone en movimiento; los fabricantes de cautines y estaciones de trabajo de soldadura producen una amplia variedad de equipos que facilitan considerablemente la tarea del técnico, ingeniero y diseñador de PCBs en electrónica. La marca Weller produce cautines muy sencillos y también los cautines más complejos y especiales de uso comercial e industrial. Su catálogo de cautines de aire caliente es amplio, contando con una gama de boquillas vasta. También la marca Steren tiene en su catálogo una pistola de aire caliente, siendo ésta una opción económica y accesible, aunque limitado en boquillas. El procedimiento para extraer con aire caliente chips de montaje superficial se describe a continuación: Lo primero que se debe hacer es conseguir la boquilla adecuada para el trabajo que se va a realizar. La marca Weller [Weller, 2013] tiene una amplia variedad de boquillas que se eligen de acuerdo con tres parámetros: el alto, el ancho y el espesor del dispositivo que va a ser extraído. En la figura B-2 1 se muestran algunas muestras del catálogo de boquillas de aire caliente, para que se aprecie los tamaños de chips que se pueden manejar. Ilustración B-2 1 Boquillas para pistola de aire caliente marca Weller [Weller, 2013] Es importante que siempre se utilice una boquilla de tamaño y forma adecuados; de lo contrario, el aire caliente no será aplicado correctamente en las terminales del dispositivo, y se dificultará su extracción. Estos son los pasos por realizar: 1. Se inserta la boquilla en la herramienta. 2. Se enciende la estación de trabajo, y se espera a que todo alcance su temperatura de operación. 3. Con mucho cuidado, se coloca la boquilla sobre el chip que se desea retirar, y luego se acciona el interruptor para que comience a fluir el aire caliente y se produzca el vacio necesario para que el chip se adhiera a la boquilla. 4. Dejar que el aire caliente haga su labor; y cuando se observe que la soldadura ya se encuentra en estado liquido y que el chip ya no está firmemente adherido a la placa de circuito impreso, se jala la herramienta hacia arriba para que el vacío en la parte interna de la boquilla “absorba” al chip y entonces se logre una extracción limpia y sin riesgo de que se dañe el circuito impreso. Si se trata de retirar el chip antes de que la soldadura se funda, el vacío no será tan fuerte y no se podrá extraerse el mismo; si se espera lo suficiente, se podrá separar la boquilla sin riesgo de dañar el chip o a la placa base, de manera que si luego se descubre que el chip no es la causa del problema, se puede almacenar y utilizarse posteriormente. Vea la figura siguiente: Ilustración B-2 2 Proceso interno de aire caliente [Parra, 2009] 5. Una vez retirado el chip, se elimina los residuos de la soldadura que se hayan quedado en las pistas del PCB, usando la malla desoldadora y así dejar listo para recibir el nuevo componente. Las limitaciones de esta tecnología son las siguientes. Una herramienta como la descrita, no es útil en todos los casos; solo puede aplicarse en circuitos integrados de montaje superficial cuyas terminales se encuentran en la periferia. Es una herramienta inadecuada para los nuevos tipos de chips con encapsulado BGA (Ball Grid Array o arreglo de rejilla de esferas). B.3 Los encapsulados BGA, montaje y desmontaje por el método común y por Luz Infrarroja [Parra, 2008] Desde hace tiempo, los fabricantes de microcontroladores observaron que la única forma de aumentar el número de terminales en un dispositivo sin aumentar excesivamente el tamaño del mismo, era colocarlas en su parte inferior; y así, viendo el componente desde abajo, se formaba una cuadrícula de terminales. Por tal motivo, se le conoce como encapsulado PGA (siglas de Pin Grid Array o arreglo de cuadrículas de terminales, Ilustración46-a). Esta opción resulto excelente para ciertas necesidades, porque permitía construir dispositivos con varios cientos de terminales y no obligaba a que el encapsulado fuese gigantesco; como una referencia, los microprocesadores Athlon modernos de AMD, que tienen menos de 4 centímetros por lado, poseen 940 terminales en su parte inferior (vea la figura B-3 1). Ilustración B-3 1 PGA y microprocesadores para PC [Parra, 2008] Sin embargo, incluso esta alternativa tiene un problema desde el punto de vista de la fabricación masiva: como los pines son de tipo aguja, hay que hacer cientos de perforaciones (el mismo número de los mismos) en la placa de circuito impreso donde se monta el chip. Además, la parte inferior de la placa no puede ocuparse para nada que no sean los puntos de soldadura que fijan al componente en ella misma. Esto no representa mucho problema en aplicaciones donde es posible colocar placas muy grandes (como en las computadoras personales); pero es un verdadero lío en aquellos aparatos y diseños con limitaciones muy serias de espacio. En este último caso, cada milímetro cuadrado de la placa de circuito impreso es muy valioso; y mientras más se pueda aprovecharse la superficie de la misma, más pequeño será el equipo/diseño final. Las compañías desarrollaron también un nuevo tipo de encapsulado donde se conserva, uno, las terminales en la parte inferior del chip y, dos, sin desperdiciar la otra cara de la placa del circuito impreso, con la tecnología de montaje superficial para evitar perforaciones. Este encapsulado se conoce como BGA, que son las siglas de Ball Grid Array o arreglo de cuadrícula de esferas. Si se ve la parte inferior de un dispositivo hecho con este tipo de encapsulado, se ven cientos de pequeñas esferas plateadas (Ilustración 47); de ahí su nombre. Y la placa, por ende, tiene cientos de pequeños círculos de cobre, en vez de perforaciones. Ilustración B-3 2 Tecnología BGA [Mata, 2010] Para soldar y extraer este tipo de encapsulados implica el uso de algunas herramientas especiales que se encuentran en el mercado nacional, haciendo más accesible el manejo de este tipo de circuitos. Su precio es relativamente moderado, con la justificación de que con el tiempo, el uso de este tipo de encapsulados se hará más común en los FPGAs y CPLDs, el cual va dirigido su uso. Primero hay que saber cómo se montan estos dispositivos durante la fabricación de un equipo. Este proceso es realizado por autómatas especializados que colocan las piezas de forma muy precisa, por lo cual, la alineación de los chips no es gran problema; lo complicado es soldar todas las terminales, de modo que los contactos eléctricos entre placa y chip sean seguros, y de que el dispositivo quede perfectamente fijo en el circuito impreso. Si se ve la parte inferior de un chip de encapsulado BGA, se notaran una gran cantidad de minúsculas esferas plateadas; evidentemente se trata de las terminales de entrada y salida de señales y alimentación para el dispositivo. Lo que no resulta tan obvio, es que las pequeñas esferitas están formadas de gotas de soldadura, las cuales están en contacto con pequeñas pistas metálicas en el interior del chip. En la Ilustración48 se puede ver un diagrama en corte de un encapsulado típico de esta clase. Esto significa que durante el montaje del chip, ya no hay que ponerle soldadura; desde fábrica, incluye su propia soldadura para la conexión eléctrica. Y esta soldadura es especial, porque tiene un punto de fusión relativamente bajo (poco menos de 250°C). Como no se requiere un calor extremo para convertir la soldadura de sólida a líquida, el montaje del dispositivo se hace de la siguiente manera: Ilustración B-3 3 Corte transversal de un encapsulado BGA [Parra, 2008] Ilustración B-3 4 Proceso de precalentamiento y calentamiento [Parra, 2008] 1. Se precalienta el conjunto chip-placa, para que ambos elementos alcancen una temperatura alta, pero aún inferior al punto de fusión de la soldadura (alrededor de 170-200°C). Esto se hace lentamente, para evitar que alguno de los componentes sufra una expansión térmica acelerada y que, con ello, se agriete o se fracture. 2. Se baña con mucho flux, la superficie en la que va a ser colocado el chip. Esto sirve para eliminar las impurezas y garantizar el flujo de la soldadura una vez que esté líquida. 3. Se coloca el chip en posición correcta, de modo que cada pequeña esfera de soldadura entre en contacto con su respectiva pista. 4. Se aumenta rápidamente la temperatura tanto del chip como de la placa, hasta que tengan entre 250 y 260°C. De este modo, la soldadura se vuelva líquida y permite que el chip y la placa tengan contacto eléctrico. 5. Se reduce la temperatura de forma gradual, hasta que se iguale con la temperatura ambiente. Con esto termina el montaje del chip en su placa de circuito impreso. Este tipo de encapsulados ya es de uso común en los FPGAs y CPLDs, y para diseñar tarjetas de uso individual o para fines específicos, se requiere de una “estación de re-trabajo” (reworking station), el cual esta específicamente diseñada para manejar tal clase de circuitos (Ilustración50). Ilustración B-3 5 Estación de re-trabajo (reworking station) [Parra, 2008] Como esta herramienta tiene unas boquillas y un sistema de flujo de aire caliente, permite ejecutar los pasos necesarios para el desoldado y extracción de componentes de este encapsulado y la colocación y soldado del mismo. Se describe a continuación como se extrae un chip defectuoso en este tipo de estaciones: 1. Se coloca la placa dañada en el soporte, y se asegura perfectamente para que no se mueva. 2. Se pone la cabeza soldadora exactamente sobre el dispositivo que se desea retirar. Se fija un periodo de precalentamiento para que tanto la placa como el chip alcancen una temperatura cercana a 200°C. 3. Se coloca sobre el chip la boquilla de succión que permitirá retirarlo. 4. Se aumenta el calor del dispositivo, hasta alcanzar una temperatura de 260°C; e inmediatamente después, se verifica que se ha fundido la soldadura que une al chip y a la placa. Por medio de la boquilla de succión, se retira el circuito con un movimiento vertical. 5. Una vez retirado el chip defectuoso, se deja enfriar el conjunto. En este paso, hay que mejorar la condición de la placa de circuito impreso para que pueda recibir sin problemas al nuevo chip. Es normal que queden “picos”, o sea restos puntiagudos de la soldadura del chip anterior; y para eliminarlos por completo, debe utilizarse una malla para desoldar; sólo así, las pistas en que se montara el nuevo dispositivo quedarán planas y brillantes. Una vez hecho esto, es momento de montar el nuevo chip. 6. Se coloca en nuevo chip de reemplazo en la boquilla de succión; y por medio de ella, se conduce hasta la placa de circuito impreso. Hay que procurar colocarlo de la forma más precisa posible, para que sus esferas de soldadura coincidan en los puntos correctos sobre la placa. 7. Se aplica abundante flux tanto al chip como a las pistas donde será montado. 8. Se acerca el chip a la placa, y se somete ambos a un lento proceso de precalentamiento, hasta que alcancen una temperatura cercana a los 200°C. 9. Una vez alcanzada dicha temperatura, se espera un poco a que se estabilice e iguale con la temperatura ambiente. Y luego, se aumenta de nuevo, pero ahora hasta llevar a aproximadamente 260°C; así, las esferas de la soldadura del nuevo chip se fundirán y fluirán sobre sus respectivas pistas de contacto. 10. Para verificar que el montaje está bien hecho, se comprueba que las esferas de soldadura efectivamente “cayeron” sobre sus pistas correspondientes. En caso afirmativo, se reduce la temperatura de forma gradual hasta que se iguale con la temperatura ambiente. 11. Se retira el exceso de flux y con ello se habrá concluido el trabajo de reemplazo del componente dañado. B.3.1. Soldadura por Luz Infrarroja (IR) [Mata, 2010] En este tipo de soldadura y desoldadura, el calor se aplica de manera uniforme y directa encima y en la periferia del circuito integrado de encapsulado BGA. El nivel de calor seleccionado se aplica mediante un soldador/desoldador especial que cuenta con rieles de deslizamiento de la fuente de luz (que en este caso, es el módulo emisor de luz infrarroja), con posicionadores ajustables por coordenadas, y con ajustes de distancia (Ilustración B-3 6). Ilustración B-3 6 Estación de soldadura por luz infrarroja (IR) [Mata, 2010] Esta forma de soldar y desoldar tiene la ventaja de que evita dañar a los componentes que rodean al circuito en cuestión. Esto es posible gracias a que utiliza una fuente de calor (luz infrarroja) que incide de forma directa en la zona seleccionada y que afecta sólo a los dispositivos localizados a aproximadamente 1 centímetro o menos de ella. La soldadura por luz infrarroja garantiza que la aplicación del calor se hace de manera uniforme sobre el área elegida; no hay “puntos de calor” ni “puntos fríos”, porque se utiliza una plancha de cerámica que emite calor por la cara opuesta a la zona que se desea calentar. En resumen, se emplea la estación de soldadura por rayos infrarrojos con precalentador abajo, soldadura especial y stencil. La soldadura se vende en presentación tipo balín de 5 o más milímetros de diámetro, según el circuito integrado que se va a soldar. Si no se consigue este tipo de soldadura, puede usarse soldadura en pasta (soldadura en polvo mezclada con un poco de flux). Cuando se caliente, se evapora el flux. Para aplicar la soldadura tipo balín o en pasta se usa un stencil. Un stencil es una lámina con perforaciones, las cuales coinciden exactamente con el patrón o diseño que forman los puntos de soldadura de los circuitos integrados (y las bolitas de soldadura, a su vez, encajan perfectamente en los orificios de cada lámina o stencil). Si se carece de stencil, la soldadura en pasta puede aplicarse como cuando se unta mantequilla en un pan: con una espátula hay que distribuir la soldadura y hacer que entre en los orificios del stencil (en su caso, se debe retirar el exceso de soldadura); y al calentar el circuito, se formarán las bolitas de soldadura que deben aprovecharse para fijar cada pin o terminal del mismo. Esto es más fácil con la estación de soldadura por rayos infrarrojos; o en su defecto, puede usarse un desoldador de aire caliente. Para evitar que se dañe la base plástica del circuito o de los conectores cercanos a él, hay que cubrirlas con cinta protectora térmica Captan. Pero, la mayoría de las estaciones de soldadura por luz infrarroja ( o estaciones IR) son costosas. Por lo tanto, hay que utilizar técnicas alternativas que, si bien no son profesionales, permiten hacer un buen trabajo e soldadura; y una de ellas es el uso de un foco que emite luz infrarroja, o, un foco de 100W o más. Para explicar cómo se utiliza el foco emisor de luz infrarroja, se describe a continuación el caso de una consola de videojuegos. 1. Una vez retirada del equipo la tableta de circuito impreso principal, se extrae los disipadores de calor de los circuitos CPU y GPU. (IlustraciónB-3 7a) 2. Con cinta protectora térmica Captan, cubra las zonas que rodean a ambos circuitos. Y a falta de esta cinta, se utiliza papel aluminio. (Ilustración B-3 7b) 3. Se coloca la tableta de circuito impreso en un plato de cerámica. (Ilustración B-3 7c) 4. Se aplica líquido flux en los circuitos CPU y GPU. (Ilustración B-3 7d) Mediante una conexión eléctrica, se enciende el foco y sujetándose de la parte del socket, colocarlo a 1 centímetro del circuito CPU o GPU. Mantenerlo ahí por 30 segundos y retirarlo; luego de 30 segundos, volver a acercarlo al circuito y dejarlo ahí por otro lapso igual; hacer esto por tercera ocasión. (Ilustración52e) a b c d Ilustración B-3 7 Proceso de Reballing [Mata, 2010] Esta técnica es muy útil para el llamado reballing, o resoldadura del componente. Apéndice C C.1 JTAG (Join test Action Group) [Radioelectronics, 2013] JTAG, un acrónimo para Joint Test Action Group, es el nombre común utilizado para la norma IEEE 1149.1 titulada Standard Test Access Port and Boundary-Scan Architecture para test access ports utilizada para testear PCBs utilizando escaneo de límites. JTAG se estandarizó en 1990 como la norma IEEE 1149.1-1990. En 1994 se agregó un suplemento que contiene una descripción del boundary scan description language (BSDL). Desde entonces, esta norma fue adoptada por las compañías electrónicas de todo el mundo. Actualmente, Boundary-scan y JTAG son sinónimos. Diseñado originalmente para circuitos impresos, actualmente es utilizado para la prueba de submódulos de circuitos integrados, y es muy útil también como mecanismo para depuración de aplicaciones empotradas, puesto que provee una puerta trasera hacia dentro del sistema. Cuando se utiliza como herramienta de depuración, un emulador en circuito que usa JTAG como mecanismo de transporte permite al programador acceder al módulo de depuración que se encuentra integrado dentro de la CPU. El módulo de depuración permite al programador corregir sus errores de código y lógica de sus sistemas. C.1.1. Características Eléctricas Una interfaz JTAG es una interfaz especial de cuatro o cinco pines agregadas a un chip, diseñada de tal manera que varios chips en una tarjeta puedan tener sus líneas JTAG conectadas en daisy chain, de manera tal que una sonda de testeo JTAG necesita conectarse a un solo "puerto JTAG" para acceder a todos los chips en un circuito impreso. Los pines del conector son 1. TDI (Entrada de Datos de Testeo) 2. TDO (Salida de Datos de Testeo) 3. TCK (Reloj de Testeo) 4. TMS (Selector de Modo de Testeo). 5. TRST (Reset de Testeo) Ilustración C-1 1 Dispositivos conectados por JTAG [Radioelectronics, 2013] Ya que posee una sola línea de datos, el protocolo es necesariamente serial, como el Serial Peripheral Interface. La entrada de la señal de reloj es por el pin TCK. La configuración del dispositivo se realiza manipulando una máquina de estados de un bit empleando el pin TMS. Un bit de datos es cargado en TDI y otro sacado en TDO por cada pulso de reloj de la señal TCK. Se pueden cargar diferentes modo de instrucción como leer el ID del chip, muestrear el valor de pines de entrada/salida, manejar pines de salida, manipular funciones del chip, o funciones de bypass que unen el pin TDI con TDO para lógicamente unir cadenas de varios chips (chips en cascada). La frecuencia de trabajo de la señal de reloj del pin TCK varía en función de cada chip, pero típicamente está en el rango de 10-100 MHz (10-100ns/bit). Cuando se hace la operación de boundary scan en circuitos integrados, las señales manipuladas están entre diferentes bloques funcionales del chip, más que entre diferentes chips. El pin TRST es una señal opcional bajo-activa para reseteo o reinicio de la prueba lógica (por lo general asíncrona, pero que a veces está sincronizada con el reloj, dependiendo del chip). Si no se dispone de dicho pin, la prueba lógica puede reiniciarse mediante una instrucción reset. Existen productos de consumo que tienen un puerto JTAG integrado, por lo que las conexiones están a menudo disponibles en la PCB como parte de la fase de prototipado del producto. Estas conexiones pueden proporcionar una sencilla forma de realizar ingeniería inversa. C.1.2. Usos y aplicaciones del JTAG [Güichar, 2013] Test de PCBs Puede testearse la integridad de las pistas y de las soldaduras de un circuito impreso. Se acplican patrones de bits en los pines de salida de un dispositivo y se leen en las entradas de otro. Se comparan los patrones recibidos. Pueden detectarse errores de los siguientes tipos: pistas abiertas y cortos-circuitos. Test de ASICs De manera similar puede testearse la lógica interna de los dispositivos. Se inyectan vectores de tests sobre las entradas del diseño y se evalúan las salidas. La lógica interna se mantiene aislada del exterior. Puede usarse para verificación interna automática (BIST) Programación de FLASHs externas Las memorias Flashs no JTAG pueden ser programadas usando los pines de un dispositivo JTAG. Se modifican los pines del dispositivo para generar las formas de ondas que realizan la escritura de la memoria. De manera similar se pueden verificar la integridad de todo tipo de memorias (SRAM, SDRAM, FLASH) Programación de microcontroladores JTAG se usa extensivamente como configuración in-circuit de microcontroladores. Esto requiere de Hardware específico en el dispositivo. Generalmente se crea un archivo SVF a partir del binario de programación o “.hex”. Se integra al IDE que provee el fabricante. Programación de CPLDs y FPGAs Similar al caso de los microcontroladores Algunos fabricantes utilizan formatos distintos al SVF: Altera usa el formato STAPL y Xilinx usa el XSVF aunque también se puede generar SVF. Es importante la generación de SVF porque permite usar SVF players de propósito general. Permite usar la misma herramienta y cable JTAG para la configuración de dispositivos de distintos fabricantes y familias. C.1.3. Diagrama de circuito JTAG [Fpgalibre, 2012] El siguiente circuito es propuesto para la elaboración de un cable JTAG. La propuesta usa un circuito CMOS 74HC125, que contiene 4 buffers tri-estado y está basado en el circuito brindado por la página de [Fpgalibre, 2012]. Este diagrama está hecho para el software KiCad, y para fines de este trabajo, pasado a Eagle. Ilustración C-1 2 Diagrama esquemático de un conector JTAG para la placa con CPLD/FPGA Ilustración C-1 3 Placa BRD del conector JTAG para la placa CPLD/FPGA Apéndice D D.1 Controlador USB [Arellano, 2006] A continuación, se menciona el trabajo “Diseño y fabricación de una placa didáctica basada en FPGA”, en específico el apartado Controlador USB, pues en presente trabajo se hizo con interfaz JTAG, y se anexa esto para una futuro trabajo que incluya interfaz USB. Como se mencionó al principio, este trabajo se enfocó solamente en el interfaz USB, no logrando el Hardware por diversos motivos, el cual, el presente trabajo si llegó a realizar. Controlador USB Como se ha comentado antes, una de las modificaciones más importantes introducidas en la nueva placa con respecto a las actuales está en la interfaz con el PC. La placa diseñada se comunicará con el ordenador a través del puerto USB. Esto permitirá usar un protocolo muy reciente, más fiable y robusto que el LPT, de instalación muy cómoda (la placa se configurará al conectar el USB) y con la posibilidad de prescindir de una fuente de alimentación externa. Protocolo USB El protocolo USB (Universal Serial Bus) es un protocolo serie diseñado originariamente para PCs y Macintosh, pero su popularidad hizo que se comenzará a usar también en videoconsolas, cámaras fotográficas, reproductores de música o dispositivos de almacenamiento. A nivel eléctrico, el cable USB transfiere la señal y la alimentación sobre 4 hilos. La alimentación se suministra por el primero (VBUS) con una tensión nominal de 5 V. El cuarto establece la masa (GND). La señal se transmite a través de un par trenzado con impedancia característica de 90 Ω. El reloj se incluye en el flujo de datos (la codificación es de tipo NRZI, existiendo un dispositivo que genera un bit de relleno que garantiza que la frecuencia de reloj permanezca constante) y cada paquete va precedido por un campo de sincronismo. En cualquier caso, existen dos formas de suministrar la energía. El periférico puede obtener la energía del PC o host a través del bus (bus powered) o puede estar autoalimentado (self powered). En el primer caso, es el ordenador el que gestiona el consumo, teniendo capacidad de poner en reposo (suspend) o en marcha al periférico USB. En reposo, este redreduce su consumo (si puede), quedándose la parte USB funcional (ideal para equipos portátiles). Ilustración D-1 1 Los cuatro hilos de un conector USB [Arellano, 2006] Un sistema USB tiene un diseño asimétrico, que consiste en un solo servidor y múltiples dispositivos conectados en una estructura de árbol utilizando concentradores especiales. Se pueden conectar hasta 127 dispositivos a un solo servidor, pero la suma debe incluir a los concentradores también, así que el total de dispositivos realmente usables es algo menor. La ramificación máxima es de 5 niveles. El USB es un bus basado en encuesta (polling), no hay interrupciones. Es un bus punto a punto: dado que el lugar de partida es el host (PC o hub), el destino es un periférico u otro hub. Los periféricos comparten la banda de paso del USB. El protocolo se basa en el llamado paso de testigo (token). El ordenador proporciona el testigo al periférico seleccionado y seguidamente, éste le devuelve el testigo en su respuesta. Este bus permite la conexión y la desconexión en cualquier momento sin necesidad de apagar el equipo. El protocolo USB soporta tres tasas de transferencia: Low Speed (1.5 Mbit/s), Full Speed (12 Mbit/s) y Hi-Speed (480 Mbit/s). Los dispositivos con tasa de transferencia de 480 Mbit/s suelen denominarse como dispositivos USB 2.0, aunque no siempre se da el caso de que un dispositivo etiquetado como USB 2.0 alcance esa velocidad de transferencia (es el caso de controlador USB utilizado, que sólo llega a los 12 Mbits/s, pero se denomina “USB 2.0”). Para cada tasa de transferencia, existe un límite en el tamaño de información útil que se puede enviar en cada paquete, siendo de 64 bytes cuando se selecciona el modo Full Speed. El protocolo USB es flexible, soporta una interfaz serie bidireccional isócrona y permite una cómoda instalación dinámica al conectar el dispositivo al PC. Descripción del chip FT2232C Existen infinidad de dispositivos controladores USB en el mercado. Son bastante populares los controladores de USB de Philips, como el ISP1362, o los de Cypress, como el CY7C68013. En este proyecto, se ha escogido el chip FT2232C de FTDI. Los motivos de esta elección son diversos. Por un lado, se trata de un componente barato y disponible en la mayor parte de los establecimientos especializados en la venta de productos electrónicos. Por otro lado, es uno de los controladores USB con mayor soporte en Internet por parte del fabricante (existe gran cantidad de documentación acerca del uso del chip y de sus drivers). Finalmente, se decidió usar este dispositivo al existir experiencias previas de su utilización en otros proyectos. El FT2232C es un controlador USB de tercera generación, diseñado y fabricado por la compañía inglesa FTDI. En realidad, se dispone de dos controladores de propósito general (UART o FIFO) en un mismo chip, de forma que se pueden obtener dos canales de E/S de un único puerto USB, sin necesidad de usar hub alguno. Además de la posibilidad de configurar cada canal como interfaz UART o interfaz FIFO, existen diversas variantes de estos modos de comunicación, como el denominado Bit-Bang Mode (asíncrono y síncrono), el MPSSE (Multi-Protocol Serial Engine Interface), el modo de MCU Host Bus Emulation o el Fast Opto-Isolated Serial Interface. Además de los dos canales y de los múltiples modos, el chip FT2232C tiene soporte para transferencias isócronas, como las de vídeo y audio de bajo ancho de banda, en las que importa más el cumplimiento de los plazos de una planificación que la integridad de los datos. Otra característica presente en este dispositivo es la opción de comunicación mediante el protocolo USB 2.0, versión con una tasa de transferencia mayor que la del USB 1.0 típico (hasta 12 Mb/s). También es de destacar la posibilidad de alimentar cada canal de E/S de forma independiente, con un nivel de señal entre los 3 y los 5 Voltios. El dispositivo se encuentra disponible en encapsulados del tipo LQFP (Low Profile Quad Flat Pack) de 48 pines. Existe una versión libre de plomo, denominada FT2232L, que tiene un impacto medioambiental menor. Ilustración D-1 2 Chip FT2232L Internamente, se distinguen varios módulos funcionales, entre los que destacan: • Controlador UART / FIFO de propósito general: Se encargan de gestionar las transferencias entre los búferes TX y RX y los registros de transmisión y de recepción UART / FIFO. Existe uno por cada canal. • Búfer de Transmisión TX: Los datos que vienen desde el puerto USB se guardan en este búfer de 128 bytes antes de ser enviados al registro de transmisión del Controlador UART / FIFO. Existe uno por cada canal. • Búfer de Recepción RX: Los datos que vienen desde el registro de recepción del Controlador UART / FIFO, se almacenan en este búfer de 384 bytes antes de ser enviados hacia el puerto USB en una petición de datos desde el host. Existe uno por cada canal. • SIE (Serial Interface Engine): Es un conversor serie-paralelo y paraleloserie de los datos que vienen del enlace USB, siguiendo la especificación del protocolo USB 2.0 (genera o elimina bits de relleno, añade o chequea códigos de control de errores, etc.). • Oscilador de 6 MHz: Este módulo genera una señal de reloj de referencia de 6 MHz a partir de un cristal o resonador cerámico de 6 MHz externo al chip. De este modo, las señales de reloj destinadas a la FPGA tendrán esta frecuencia como máximo. La señal obtenida se hace pasar además por un multiplicador, consiguiendo así un reloj de 48 MHz para ser utilizado en otros bloques, como el generador de tasa de baudios para el modo UART o el módulo encargado de separar reloj y datos de la señal codificada en NRZI que viene del puerto USB. • Interfaz EEPROM: Constituye una interfaz de tres pines con un memoria EEPROM externa de la clase 93C46, 93C56 ó 93C66, que servirá para guardar datos de configuración del dispositivo y establecer el modo de comunicación. Ilustración D-1 3 Bloques funcionales del dispositivo FT2232C Patillaje Este dispositivo cuenta con 48 pines que se pueden clasificar en los siguientes grupos: • Interfaz E/S: 26 pines, 13 por cada canal. • Interfaz eléctrica: 11 pines. • Interfaz con el USB: 2 pines. • Interfaz con la EEPROM: 3 pines. • Interfaz con el oscilador externo: 2 pines. • Señales de reseteo del dispositivo: 2 pines. • Señal de modo suspendido (USB suspend): 1 pin. • Señal de test: 1 pin. Los 13 pines de cada canal dedicados a la entrada / salida se pueden dividir a su vez en 8 líneas de datos y 5 de control. El comportamiento y tipo de estos pines depende del protocolo de comunicación elegido, pero tienen un nombre genérico que se recoge en la siguiente tabla: Tabla D-1 1 Patillaje (nombres genéricos). Las 11 patillas de la interfaz eléctrica son: Tabla D-1 2 Interfaz Eléctrica. La interfaz con el USB está constituida por tan sólo dos patillas: Tabla D-1 3 Interfaz con USB. La interfaz con el oscilador externo de 6 MHz, los pines de test y de modo suspendido y los de reset se muestran en la siguiente tabla: Tabla D-1 4 Interfaz con Oscilador Externo. La interfaz con la EEPROM está constituida por 3 pines: Tabla D-1 5 Interfaz con EEPROM Descripción de protocolos Las dos interfaces principales que pueden adoptar tanto el canal A como el B del dispositivo son la 232 UART (Universal Asynchronous Receiver Transmitter) y la 245 FIFO (First In, First Out). Cada una de estas interfaces se puede configurar a su vez en distintos modos de comunicación. De entre todos los existentes, se explicarán en detalle el modo FIFO y una de sus variantes, el BitBang Mode Asíncrono, ya que es éste último el que se ha adoptado para la comunicación entre el controlador USB y la FPGA. Cuando los canales se configuran como FIFO, las líneas de entrada/salida toman el siguiente comportamiento: Tabla D-1 6 Canales configurados como FIFO. Las señales de control de la interfaz FIFO son las siguientes: Tabla D-1 7 Señales de control de la interfaz FIFO. El proceso de lectura con este protocolo es el siguiente: en primer lugar, desde el dispositivo externo al controlador USB, que en este caso sería la FPGA, se lee el estado de la señal de salida RXF#. Si está en baja, significa que hay datos disponibles en las líneas de datos D0..D7. Por tanto, el dispositivo externo pondría en baja la señal de entrada RD#, de forma que se leerían los datos situados en las líneas de datos. A continuación, y respetando el ancho mínimo del pulso RD# (50 ns), la señal RD# volvería a estar en alta, y el byte se introduciría en el búffer de lectura del chip. Ilustración D-1 4 Ciclo de Lectura en el modo FIFO. El proceso de escritura de datos es análogo. El dispositivo externo comprobaría que la señal TXE# está en baja. Si así fuera, significaría que hay datos disponibles en el búffer de transmisión para ser escritos, y pondría la señal WR en alta, y se escribirían los datos hacia las líneas D0..D7. Ilustración D-1 5 Ciclo de escritura en el modo FIFO. Este protocolo, por tanto, requiere circuitería externa para su control (el dispositivo origen y destino de los datos, es decir, la FPGA, debería ser el que generara las señales RD# y WR adecuadamente). Esto puede acarrear varias dificultades añadidas, debido a que los dos dispositivos (FPGA y controlador USB) deberían estar muy bien sincronizados. Existen dos variantes de este interfaz, que son los modos Bit Bang Mode Asíncrono y Bit Bang Mode Síncrono, que no requieren circuitería externa adicional para gestionar el control del protocolo. En estos modos, las 8 líneas de datos de cada canal se convierten en sendos buses bidireccionales de 8 bits. Cada pin de datos se puede configurar como salida o como entrada. Las líneas de control, a excepción de la SI/WU, se convierten en salidas, tal y como muestra la siguiente tabla: Tabla D-1 8 Configuración de pines de datos. De esta forma, con este modo, la FPGA no debe generar las señales WR y RD# para solicitar datos desde el USB o indicar que va a escribir en el mismo. Cuando hay un nuevo dato en un pin de datos configurado como entrada (es decir, cuando la FPGA escribe hacia el USB), este dato se recoge al acontecer un flanco del reloj interno del controlador USB. Si se escribe desde el controlador a la FPGA, el nuevo dato se situará en el pin de datos configurado como salida en un flanco de reloj. Si los datos no se modifican, los pines mantendrán el último valor escrito en los sucesivos ciclos. En definitiva, los datos se escriben y se leen en base a la señal de reloj interna del controlador USB, y no esperan que un dispositivo externo gestione los ciclos de lectura ni de escritura. El Bit Bang Mode Síncrono tan solo se diferencia del Asíncrono en que los datos sólo salen del dispositivo justo después de que se escriba en él (es decir, si hay espacio para leer de los pines de entrada). Para la comunicación entre USB y FPGA se eligió por tanto el modo Bit Bang Mode Asíncrono, ya que facilita enormemente la transmisión de las tramas de configuración desde el controlador USB a la FPGA (simplemente se configuran un conjunto de líneas del controlador como salidas y por ellas se envían en serie los bits de configuración con las señales de reloj y de control, sin necesidad de que la FPGA devuelva señal de confirmación para cada dato recibido). La comunicación desde la FPGA al USB sólo consiste en una señal indicando que todo el conjunto de las tramas de configuración se ha recibido correctamente (DONE) y para enviar esta señal también el modo Bit Bang es adecuado: la FPGA envía esta señal a un pin de entrada del USB y éste lo lee sin más complicación. Como se mencionó inicialmente, existen muchos otros modos de comunicación disponibles en este dispositivo, además de los ya descritos. Son los siguientes: • El modo MPSSE (Multi-Protocol Synchronous Serial Engine) se ha diseñado para que el dispositivo FT2232C pueda comunicarse eficientemente con protocolos síncronos serie, como JTAG o SPI Bus. También se puede usar para programar FPGAs basadas en memorias SRAM a través del puerto USB. En todo caso, MPSSE es tan flexible que puede configurarse para permitir la comunicación con cualquier protocolo síncrono serie, ya sea un protocolo estándar o un protocolo propietario. • El Fast Opto-Isolated Serial Interface permite una comunicación con una tasa de transferencia máxima a través de sólo 4 cables de datos con aislantes ópticos, consiguiendo un aislamiento galvánico entre el controlador USB y el dispositivo externo. • El MCU Host Bus Emulation Mode usa los dos canales del controlador USB para hacer que el chip se comporte como un bus host MCU del tipo 8048 / 8051. De esta forma, los periféricos de estas familias se pueden conectar directamente por USB a través del controlador FT2232C. • La interfaz UART (Universal Asynchronous Receiver-Transmitter) permite el uso del controlador USB con dispositivos que sigan protocolos serie como el RS-232, el RS-422 ó el RS-485, como es el caso de una gran cantidad de módems actuales. Configuración por EEPROM La presencia o no de una EEPROM externa al chip FT2232C juega un papel fundamental en el comportamiento de éste. Si no se conecta ninguna EEPROM (o la EEPROM está vacía), el controlador USB adoptará el protocolo por defecto, que es el 232 UART Mode. Los valores del VID (identificador del fabricante), del PID (identificador del producto), de la Descripción del Producto y del Valor Descriptor de Potencia serán los que vengan de fábrica. El dispositivo no tendrá número de serie alguno. Si se quiere usar otro protocolo de comunicación diferente del 232 UART, es imprescindible conectar al chip FT2232C una EEPROM y especificar el protocolo deseado en el contenido de la memoria. La EEPROM debe ser del tipo 93C46, 93C56 ó 93C66, con una anchura de palabra de, cómo mínimo, 16 bits y capaz de leer datos a 1Mb con una alimentación de entre 4.35 y 5.25 V. Para realizar esta conexión, el chip posee tres pines dedicados a la interfaz con la EEPROM (EESK, EEDATA y EECS), mencionados anteriormente. Ilustración D-1 6 Conexión del FT2232L con la EEPROM. El pin EESK se conectará directamente al reloj de la memoria (SK), al igual que el pin EECS al chip select (CS) de la misma. El pin de datos EEDATA se conecta también de forma directa a la entrada de datos de la EEPROM (DIN), pero se interpone una resistencia de 2.2 KΩ entre este pin y la salida de datos de la memoria DOUT. Esta resistencia sirve para evitar la pérdida de datos cuando se escribe simultáneamente por el pin EEDATA y el pin DOUT. Cuando se le envía a la EEPROM un comando con éxito, ésta pone en baja la señal DOUT. Por tanto, también es necesario usar una resistencia de 10 KΩ entre este pin y la alimentación para mantener en alta el valor de DOUT cuando no se ha introducido un comando válido o para cuando no hay ninguna memoria conectada. La información contenida en la EEPROM incluye, entre otros, los valores del PID, VID, número de serie, Descripción del Producto, Valor Descriptor de Potencia, modo de comunicación, versión del protocolo USB y forma de alimentación (a través del bus o autónoma). La EEPROM escogida fue el modelo 93LC66 de Microchip. Se trata de una memoria EEPROM (Electrically Erasable PROM) de 4K. La anchura de palabra puede seleccionarse entre 8 bits o 16 bits, dependiendo de si la patilla ORG está unida a tierra o a Vcc, respectivamente (como para el correcto funcionamiento del FT2232C es imprescindible que la memoria tenga anchura de palabra de 16 bits, será necesario conectar el pin ORG a la alimentación). Ilustración D-1 7 Patillaje de la EEPROM 93LC66. El encapsulado elegido fue el SMD (Surfaced Mounted Device) del tipo SOIC de 8 pines. Además de los pines de tierra (Vss - 5) y de alimentación (Vcc - 8) y del pin ORG para seleccionar la organización de memoria (ORG - 6), se dispone de un pin para seleccionar el chip (CS - 1), otro para una señal de reloj (CLK - 2) que sincronice la memoria con un dispositivo maestro (el FT2232C), la entrada de datos serie (DI - 3) y la salida de datos (DO - 4), sincronizadas con la señal de reloj. Interfaz de Programación de Aplicaciones Existen dos alternativas a la hora de implementar el software para que los alumnos del Laboratorio de Tecnología de Computadores puedan cargar sus diseños en la FPGA. La primera es usar los drivers Virtual COM Port (VCP) típicos, con los que el dispositivo USB aparece como un puerto COM adicional. El software accedería al dispositivo USB de la misma forma en que lo haría con un puerto COM estándar. La segunda opción es usar los D2XX Direct Drivers ofrecidos por el fabricante FTDI. Los D2XX Direct Drivers son una alternativa a los VCP que permiten la interacción entre el software y el controlador USB FT2232C usando una única DLL en lugar de un Virtual COM Port. A pesar de ser unos controladores más específicos (sólo sirven para los productos de la casa FTDI), su instalación es más rápida y sencilla que la de VCP. Tan sólo es necesario enchufar el dispositivo USB e instalar la biblioteca ftd2xx.dll. Otra ventaja de los drivers D2XX es la presencia en la API de funciones específicas para la configuración del modo de comunicación del controlador USB y para el manejo de la memoria EEPROM asociada. La arquitectura de los drivers D2XX consiste en un driver WDM de Windows que se comunica con el dispositivo a través de la pila USB y de una DLL que hace de interfaz entre el software de aplicación y el driver WDM. El software de aplicación puede estar escrito en Visual C++, C++ Builder, Delphi o VB, entre otros. Ilustración D-1 8 Arquitectura de la API D2XX. Entre las llamadas a la API dedicadas al manejo básico del controlador USB, las más importantes son aquellas que abren y cierran el dispositivo USB (FT_Open, FT_OpenEx y FT_Close), las que listan todos los dispositivos USB conectados al host (FT_ListDevices) y las que escriben y leen del dispositivo (FT_Write y FT_Read). Seguidamente se detallan las funciones más usadas en el software de aplicación: Tabla D-1 9 Funciones usadas en el software de aplicación Entre las llamadas para la interfaz de programación de la EEPROM, destacan aquellas que se encargan de programarla (como FT_EE_Program o FT_EE_ProgramEx), las que se ocupan de leer datos de la memoria (FT_EE_Read, FT_EE_ReadEx o FT_ReadEE) o las que borran el contenido de la misma (FT_EraseEE). A continuación se explican con más detalle las funciones más utilizadas en la aplicación desarrollada para la configuración de la EEPROM: Tabla D-1 10 Funciones más utilizadas en la aplicación desarrollada para la configuración de la EEPROM. Por último, se ha usado una función de la extensión de la API que sirve para establecer el protocolo de comunicación usado por (FT_SetBitMode): Tabla D-1 11 Protocolo de comunicación usado por el chip. el chip Paquetes software utilizados Para el desarrollo del software de comunicación con la FPGA a través del USB, se utilizó un entorno de programación muy popular (Visual Studio de Microsoft) y una aplicación específica para la programación de la EEPROM. Además fue necesario crear diseños de prueba con el paquete de Xilinx Foundations. Los esquemáticos y el diseño en PCB se realizaron con el software DXP 2004 de Altium. MProg 2.8 MProg es una pequeña utilidad para programar la EEPROM usada por algunos dispositivos ofrecidos por el fabricante FTDI, entre los que se encuentra el controlador USB utilizado en el proyecto (el chip FT2232C). Posee una interfaz muy intuitiva con la que se pueden modificar los datos programados en la EEPROM que determinan el comportamiento del controlador USB, tales como la interfaz (UART o FIFO), la alimentación (autónoma o a través del bus), los drivers de la API (D2XX o VCP), el número de serie, el identificador del fabricante y del producto, o la versión del protocolo USB usada. También tiene una opción para borrar todo el contenido de la memoria. Ilustración D-1 9 Ventana del software Mprog 2.8 MProg fue utilizado básicamente durante el proceso de depuración de la aplicación encargada de configurar la EEPROM. Microsoft Visual Studio .NET 2003 Visual Studio .NET es un conjunto de aplicaciones completo para la creación tanto de aplicaciones de escritorio como de aplicaciones Web y móviles. Permite el desarrollo de programas en varios lenguajes de programación, como Visual Basic, Visual C++, Visual J++, ASP o Visual C#. Todos estos lenguajes están integrados gracias a la presencia de la plataforma .NET. El Framework .NET es un entorno multilenguaje que además permite generar, implantar y ejecutar Servicios Web y aplicaciones XML. Visual Studio tiene todas las funcionalidades típicas de cualquier entorno de desarrollo integrado, como un editor inteligente de código, exploradores de proyecto y de fuentes, asistentes para el diseño de interfaces gráficas y depurador avanzado. Ilustración D-1 10 Microsoft Visual Studio .NET 2003. El lenguaje utilizado para la implementación del software de comunicación fue Visual C++, por ser este el lenguaje con un mayor número de ejemplos de comunicación a través del chip FT2232C, y por poseer un alto grado de integración con la API D2XX y con las bibliotecas del sistema operativo. La práctica totalidad del proceso de desarrollo y depuración del software de comunicación se realizó desde Visual Studio. Para más información, consultar [Arellano, 2006]. Apéndice E Guía rápida para el usuario de la Tarjeta experimental con CPLD XC9572XL Introducción La tarjeta experimental con CPLD XC9572XL se emplea en el laboratorio de las asignaturas de la carrera de Ingeniería electrónica del Departamento de Ingeniería Eléctrica y Electrónica del Instituto Tecnológico de Mérida. En esta guía rápida se recopila información sobre la tarjeta y se muestran algunos ejemplos de programación para trabajar en ISE Foundation. Características CPLD XC9572XL (encapsulado VQ44) de Xilinx Retardos Lógicos de 5ns entre pines Frecuencia del sistema hasta 178Mhz 144 macroceldas con 3200 puertas Sistema Optimizado para trabajar a 3.3V o Baja potencia de operación. o Manejo de señales Pines I/O 5V, 3.3V y 2.5V. o Salidas disponibles a 3.3V y 2.5V o Producto 100% CMOS hecho en tecnología de 0.35 micrómetros o con FASTFLASH. Con avanzadas características del sistema. o In-system programmable. o Bloqueo de pines y enrutado superior con la matriz conmutable FASTCONNECT II. o Bloques de Función de 54 entradas. o Uso de tres relojes globales o Individual habilitador de salida por pin. o Uso del estándar IEEE 1149.1 boundary-scan (JTAG). Programación rápida concurrente. Control de Slew rate en salidas individuales. Característica de seguridad de datos mayores. Excelente calidad y fiabilidad. o 10000 ciclos de programación/borrado. o Retención de datos de 20 años. o Protección ESD superior a los 2000V Puerto Jtag Puerto JTAG en el conector J1. Leds y botones La tarjeta cuenta con 4 LEDS y un botón. Fuente de Alimentación La tarjeta cuenta con su fuente integrada que requiere una entrada de 5Vcc y le provee 3.3v para su alimentación. Conectores de expansión Cuenta con 7 conectores de expansión, con pines para conectarse a un protoboard. Descripción funcional La tarjeta experimental provee un sistema mínimo a bajo costo que permite al usuario comprender el funcionamiento y comportamiento total del CPLD mediante el uso de dispositivos comunes (leds, botones, displays, etc) que sirven como entradas y salidas de señal. Todos los pines con que cuenta el CPLD son accesibles a través de los 9 conectores dispuestos alrededor de éste. La organización de la tarjeta se puede ver en la siguiente figura, el cual corresponde a la tarjeta experimental. La descripción de los pines y sus conectores en la tableta se muestra a continuación: PIN Funcion Conector en PIN Funcion placa Conector en placa 1 Bank1_6 J2_1 24 TDO J1_3 2 Bank1_7 NC 25 GND3 J1_5 3 Bank1_8 S1 26 VccIO 4 GND J1_5 27 Bank2_10 J6_2 5 Bank1_9 R7-LED1 28 Bank2_9 J6_1 6 Bank1_10 R5-LED2 29 Bank2_8 J5_4 7 Bank1 R8-LED3 30 Bank2_7 J5_3 8 Bank1_11 R1-LED4 31 Bank2_6 J5_2 9 TDI J1_2 32 Bank2_5 J5_1 10 TMS J1_1 33 Bank2_4 J4_4 11 TCK J1_4 34 Bank2_3/GTS2 J4_3 12 Bank1_12 J8_4 35 VccInt2 13 Bank1_13 J8_3 36 Bank2_2/GTS1 J4_2 14 Bank1_14 J8_2 37 Bank2_1 J4_1 15 VccInt1 38 Bank2_0 J3_4 16 Bank1_15 J8_1 39 Bank1_0 J3_3 17 GND2 J1_5 40 Bank1_1 J3_2 18 Bank1_16 J7_4 41 Bank1_2 J3_1 19 Bank2_15 J7_3 42 Bank1_3 J2_4 20 Bank2_14 J7_2 43 Bank1_4 J2_3 21 Bank2_13 J7_1 44 Bank1_5 J2_2 22 Bank2_12 J6_4 23 Bank2_11 J6_3 J10 Para interpretar la ubicación en los conectores, se pone de ejemplo el siguiente pin: PIN Funcion Conector en placa 1 Bank1_6 J2_1 El pin 1 es la entrada/salida 6 del banco 1. Su ubicación se encuentra en el conector J2, lugar 1. Donde dice JX (en este caso, J2), esa ubicación es el 4. Conector de JTAG y disposición para su conexión con el cable, así como la entrada de voltaje y tierra.