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.