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 jratoche@gmail.com; emazamora@yahoo.com.mx 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/