Download METODOLOGÍA PARA LA ELABORACIÓN DE TARJETAS

Document related concepts
no text concepts found
Transcript
METODOLOGÍA PARA LA ELABORACIÓN DE TARJETAS ELECTRÓNICAS CON CPLDsY FPGAs
DE XILINX
José R. Atoche E., Emmanuel de A. Zamora H.
Instituto Tecnológico de Mérida
[email protected]; [email protected]
RESUMEN
La tabla experimental es el resultado de 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, incentivando el uso de estos.
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.
ABSTRACT
The experimental e-card is the result of a methodology for the development of e-cards with CPLDs
and FPGAs Xilinx Company. A methodology tidy with libraries library references, application
sheets, location and a literature review in this field previously developed. The methodology is
based on the philosophy of Free Software and Free Hardware, encouraging the use of these.
It is a guide that can be modified proposal depending on the components of the moment, trying to
encourage the development of prototypes locally, using components that can be found in the
domestic market. It has used the Ubuntu Linux platform, the charting software and EAGLE PCB in
its documentation Freeware forums and communities, both technically and engineering level,
conducting a multipurpose experimental plate with CPLD.
1. Introducción
En los últimos años, los lenguajes de descripción de hardware (HDL) tales como VHDL, Verilog,
Handel-C, etc hace que los diseños sean ficheros de texto, que contienen el “código fuente” del
circuito. Dando como resultado que el proceso de diseño de hardware cada vez se parezca más al
de software. Esta tendencia ha llevado a que el hardware se convierta en algo que se puede
compartir, dando origen al concepto de Hardware Libre. Hay iniciativas como la de Open Cores [1],
donde se publican diseños complejos bajo una licencia abierta que permite ser compartidos por el
resto de las llamadas “comunidades de desarrollo”.
Dentro del contexto del hardware libre, parece necesario contar con una placa sobre la que probar
los circuitos, y que ésta a su vez sea libre, pudiéndose compartir los esquemas, PCBs y ficheros de
fabricación de manera que cualquiera la pueda fabricar, usar, modificar, y redistribuir las
modificaciones.
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
[2]. El manual se rige por la licencia GNU GFDL 1.1 (GNU FREE DOCUMENTATION LICENSE) y se
llama “Manual de la Tarjeta 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 [3]. 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” [4], 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.
Ya en esta línea, se llevó a cabo la recopilación de información y experiencias para elaborar una
tarjeta que usa un CPLD como su circuito central, considerando los componentes que se pueden
adquirir en el mercado local para su elaboración, con la finalidad de que sea usado por los
estudiantes de las carreras de ingeniería, reduciendo costos en su adquisición haciendo una tarjeta
con los recursos mínimos, pero funcional, para su uso inmediato.
2. Introducción a los Dispositivos Lógicos Programables (PLD) [5]
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 tabla I. 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 I Tecnologías de fabricación de circuitos integrados [5].
Categoría
Diseño totalmente
a la media (FullCustom)
Características
Total libertad de diseño, pero el desarrollo requiere todas las etapas
del proceso de fabricación: preparación de la oblea o 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 puertas Existe una estructura regular de dispositivos básicos (transistores)
predifundidas
prefabricada que se puede personalizar mediante un conexionado
(Semi-custom/gate específico que sólo necesita las últimas etapas del proceso
arrays)
tecnológico.
El diseño está limitado a las posibilidades de la estructura
prefabricada y se realiza con base en una biblioteca de celdas precaracterizadas para cada familia de dispositivos.
Celdas estándares No se trabaja con alguna estructura fija prefabricada en particular,
pre-caracterizadas
pero sí con bibliotecas de celdas y módulos pre-caracterizados y
(Semiespecíficos para cada tecnología
custom/standard
Libertad de diseño (en función de las facilidades de la biblioteca);
cells)
pero el desarrollo exige un proceso de fabricación completo.
Lógica Programable Se trata de dispositivos fabricados y revisados que se pueden
(CPLD, FPGA)
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 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 II),
se clasifican por su arquitectura – la forma funcional en que se encuentran ordenados los
elementos internos que proporcionan al dispositivo sus características.
Tabla II Dispositivos Lógicos Programables.
Dispositivo
PROM
PLA
PAL
GAL
CPLD
FPGA
Descripción
Programmable read-Only memory: Memoria Programable de sólo Lectura.
Programmable Logic Array: Arreglo Lógico Programable.
Programmable Array Logic: Lógica de Arreglos Programables.
Generic Logic Array: Arreglo Lógico Genérico.
Complex PLD: Dispositivo Lógico Programable Complejo.
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.1
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.1.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 1).
Ilustración 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 1 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.
3.
Desarrollo de la placa con CPLD
Se propuso estudiar todas las hojas técnicas del CPLD disponibles en la página de Xilinx [6] y
trabajos previos de la misma naturaleza. En el caso de las librerías, hay disponibles de manera
comercial y de formato libre. El único inconveniente de estas es que no conocemos el criterio de
elaboración. Podemos encontrarnos con inconvenientes como la falta pines, el encapsulado no es
el que necesitamos, etc. El software de Eagle Cadsoft [7] es bastante flexible, a pesar de sus
limitantes, en su versión freeware. Con ello también 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, es perfecto para este tipo de proyectos pues es bastante intuitivo en su uso, tanto
en la elaboración de librerías así como el diseño de diagramas y pcbs. En la red se encuentra
amplia información de ayuda y tutoriales para su uso.
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:
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 del mercado local.
3.1
Modo de programación
Se decidió la programación por JTAG como instroducción al estudio de este protocolo usando el
puerto serial. Se hace una breve descripción de lo que es: 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.
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.
3.1.1
Características Electricas de JTAG [8]
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.
2.
3.
4.
5.
TDI (Entrada de Datos de Testeo)
TDO (Salida de Datos de Testeo)
TCK (Reloj de Testeo)
TMS (Selector de Modo de Testeo).
TRST (Reset de Testeo)
Ilustración 4 Dispositivos conectados por JTAG
[7]
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.
4. Diagrama de bloques y resultado
Ilustración 5 Disposición general de la placa (sistema mínimo)
En la Ilustración 5 se muestra la disposición en bloques de la placa desarrollada (sistema mínimo).
En la siguiente figura se muestra una fotografía de la placa final.
Ilustración 6 Placa experimental con CPLD 9572XL (sistema mínimo)
La descripción de los pines y sus conectores en la tableta se muestra a continuación:
Tabla III Disposición de pines en la placa experimental con su conector correspondiente
PIN
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Funcion
Conector en
placa
Bank1_6/GCK3 J2_1
Bank1_7
NC
Bank1_8
S1
GND
J1_5/J10_3
Bank1_9
R7-LED1
Bank1_10
R5-LED2
Bank1
R8-LED3
Bank1_11
R1-LED4
TDI
J1_2
TMS
J1_1
TCK
J1_4
Bank1_12
J8_4
Bank1_13
J8_3
Bank1_14
J8_2
VccInt1
J10_4
Bank1_15
J8_1
GND2
J1_5
Bank1_16
J7_4
Bank2_15
J7_3
Bank2_14
J7_2
Bank2_13
J7_1
Bank2_12
J6_4
Bank2_11
J6_3
PIN
Funcion
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
TDO
GND3
VccIO
Bank2_10
Bank2_9
Bank2_8
Bank2_7
Bank2_6
Bank2_5
Bank2_4
Bank2_3/GTS2
VccInt2
Bank2_2/GTS1
Bank2_1
Bank2_0
Bank1_0
Bank1_1
Bank1_2
Bank1_3
Bank1_4
Bank1_5
El conector J10 es el conector principal de voltajes y tierra:
Tabla IV Disposición de voltajes y tierra en el conector J10
Conector en placa
J10_1
J10_2
J10_3
J10_4
Función
VccIO
NC
GND
Vcc
Conector en
placa
J1_3
J1_5
J10_1
J6_2
J6_1
J5_4
J5_3
J5_2
J5_1
J4_4
J4_3
J10_4
J4_2
J4_1
J3_4
J3_3
J3_2
J3_1
J2_4
J2_3
J2_2
Para interpretar la ubicación en los conectores, se pone de ejemplo el siguiente pin:
Tabla V Ejemplo de ubicación del pin y conector
PIN
1
Funcion
Bank1_6
Conector en placa
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.
Ilustración 7 Disposición física de los conectores en la tableta
Conector de JTAG y disposición para su conexión con el cable, así como la entrada de voltaje y
tierra.
Ilustración 8 Conector JTAG y su disposición en el conector
5.
Ventajas de la placa elaborada
 El estudiante promedio puede diseñar a la medida de sus necesidades y recursos una placa
para prácticas que usa un CPLD (se puede aplicar el mismo método para FPGA) a partir de
diseños ya existentes.
 Flexibilidad. Con la misma placa, conseguimos hardware con comportamientos distintos,
pues todo depende de la programación que se le aplique. La placa es usada bajo el
entorno ISE Foundation de Xilinx.
 Diseños hardware libres. La posibilidad de poder diseñar y llevar a cabo diseños con la
filosófia de Hardware libre que se compartan en la comunidad estudiantil. Esto brinda
amplias posibilidades en el campo de la docencia y la investigación. Una de ellas es el
ahorro en la compra de placas a distribuidores. Otra gran ventaja es la estimulación de la
Universidad y/o Instituto de elaborar su propia tecnología en colaboración con otras
Universidades y/o Instituciones, así como la fabricación de las mismas en la cantidad que
considere necesarias.
6.
Conclusiones
Se ha diseñado una metodología que ha dado como resultado una placa pequeña y sencilla de
elaborar utilizando en este caso un CPLD, enfocado para la realización de prácticas relacionadas a
la programación con VHDL. Se puede aplicar también para proyectos más elaborados, pues no está
limitado en hardware, sino en la habilidad de programación.
7.
Referencias
[1] OpenCores. Repositorio de diseños hardware, descritos en lenguajes HDL, para ser sintetizados
en FPGAs. http://www.opencores.org.
[2] 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).
[3] 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).
[4] 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).
[5] Maxínez,David G.; Alcalá Jara, Jessica VHDL El arte de programar sistemas digitales. (Patria
Cultural, México), 352 (2005).
[6] Empresa Xilinx, fabricante de FPGAs. http://www.xilinx.com
[7] Empresa Eagle Cadsoft http://www.cadsoftusa.com/
[8] Información de JTAG http://www.radio-electronics.com/