DISEÑO E IMPLEMENTACIÓN DE UNA TARJETA PCI BASADA EN UNA FPGA C. E. Torres, R. Nieto, A. Bernal [email protected]; [email protected]; [email protected] Grupo de Arquitecturas Digitales y Microelectrónica Universidad del Valle SUMMARY In this work all necessary steps for interfacing the PCI bus ( Peripheral component interconnect ) is presented. The required conditions for transferring data using this bus were taken in count and quietly discussed. An interface that let program a FPGA was developed and tested. Using this capacity the card is able to execute any function required for the user keeping the availability of continuous programming. Other important points consists in allowing to the user to establish a bus PCI interface in order to program the FPGA and transfer data through the bus PCI. High frequencies design require some careful when the interconnections between the different devices signals are done, this kind of requirements are also discussed. RESUMEN En este trabajo están todos los pasos necesarios para realizar una interfaz con el bus PCI. Se discuten y se tienen en cuenta las condiciones requeridas para realizar transferencias de datos en este bus. Se desarrolló y se probó una interfaz que permite la programación de una FPGA. Usando esta capacidad la tarjeta puede ejecutar cualquier función que sea requerida por el usuario y mantener la disponibilidad para una continua programación. Otro punto importante consiste en permitir al usuario establecer una interfaz con el bus PCI para programar la FPGA y para transferir datos a través del bus PCI. También se discuten los cuidados requeridos para la interconexión de las diferentes señales entre dispositivos que operan a alta frecuencia. DISEÑO E IMPLEMENTACIÓN DE UNA TARJETA PCI BASADA EN UNA FPGA C. E. Torres, R. Nieto, A. Bernal [email protected]; [email protected]; [email protected] Grupo de Arquitecturas Digitales y Microelectrónica Universidad del Valle ABSTRACT In this paper the principal problems for interfacing the PCI bus are discussed. Also different approaches oriented to solve these obstacles are discussed. One of the implemented strategies consists in developing an interface based on FPGAs which becomes an intelligent interface that can be used to general purposes, more specifically in data acquisition. 1. INTRODUCCIÓN Uno de los principales componentes de hardware en los computadores personales es su arquitectura de bus de expansión. Por lo general esta es la forma básica con la cual se ensamblan los elementos de hardware en la tarjeta madre. Los tres tipos principales de arquitecturas de bus que se usaron son: la arquitectura estándar de la industria (ISA), la arquitectura estándar de la industria extendida (EISA), y la arquitectura microcanal (MCA). Además de estas tres arquitecturas se encontraban: el bus de la asociación de estándares de la electrónica de video (VLB o VL-Bus), la interfaz de sistemas de computadoras pequeñas (SCSI) y el bus de interconexión de periféricos (PCI). En un principio había varias desventajas en el bus de expansión original del PC de IBM. Cada vez que se iban efectuando mejoras se tenía como base fundamental la compatibilidad hacia atrás. Esto permitió que los usuarios conservaran el hardware existente y los fabricantes continuaran produciendo sus tarjetas de expansión. En consecuencia, el estándar IBM se convirtió en el estándar de la industria, y la arquitectura de bus llegó a ser conocida como la arquitectura estándar de la industria o ISA. INTEL empezó a trabajar en 1990 en el bus PCI pensando en sus sistemas basados en el PENTIUM. Muy pronto INTEL cedió sus patentes al dominio público y promovió la creación de una asociación industrial, la PCISIG, para continuar el desarrollo y mantener la compatibilidad de las especificaciones del PCI. El resultado ha sido que el PCI ha sido ampliamente adaptado y se esta incrementando su uso en los computadores personales, estaciones de trabajo y servidores de sistema [1]. La gran adaptación del bus PCI en los computadores personales, lo ha convertido en el bus estándar. En este trabajo se desarrolló una tarjeta que permitiera el uso del bus PCI para diferentes aplicaciones y que se adaptara a diferentes tipos de interfaces. Se realizó el estudio del protocolo de comunicación y una minuciosa inspección del sistema de interconexión entre los dispositivos. Se analizaron todos los detalles y criterios de ingeniería que implicaban el diseño de sistemas digitales de alta velocidad para el desarrollo de una tarjeta PCI que permite la configuración de la FPGA para aplicaciones genéricas, conservando las características del bus PCI para la transmisión y recepción de datos. 2. EL BUS PCI El bus PCI (“Peripheral Component Interconnect”), es un bus de ancho de banda elevado, independiente del procesador que se emplee como bus de periféricos. Comparado con otras especificaciones comunes de bus, el PCI proporciona mejores prestaciones para los subsistemas de E/S de alta velocidad (Por ejemplo los adaptadores de pantalla gráfica, los controladores de interfaz de red, los controladores de disco, etc) [2][3]. Unas de las principales ventajas que trae consigo el diseño sobre el bus PCI son el bajo costo, la flexibilidad y la arquitectura de bus estándar con el más alto rendimiento. Algunas de sus características mas relevantes son: • • Proporciona un conjunto de funciones de uso general. Utiliza temporización síncrona y un esquema de arbitraje centralizado. • • • • • • • • • • • Presenta independencia del procesador, soportando diferentes familias. Bajo consumo de potencia, un objetivo principal de la especificación PCI, es dar soporte a la creación de diseños donde los requerimientos de corriente sean mínimos. Las transferencias burst se pueden realizar en lectura y escritura, un bus de 32 bits soporta hasta 132 Mbytes/s como rata de transferencia pico en lectura o escritura y 264 Mbytes/s en transferencias de 64 bits. Si el bus pertenece a la versión 2.2. puede alcanzar picos de transferencia hasta 528 Mbytes/s a 66 MHz. Velocidad del bus: Versión 2.0 tope de velocidad 33 MHz. Versión 2.2 tope de velocidad 66 MHz. Versión 2.3 tope de velocidad 66 MHz. PCI-X Tope de velocidad 1 Ghz. Tiempo de acceso de 60 ns. a 33 MHz. Soporta dispositivos maestros, un maestro PCI puede acceder a otros dispositivos del bus, a memoria principal o a periféricos dentro de otros buses. Arbitración oculta, lo cual significa que la tenencia del bus se resuelve mientras un maestro efectúa transferencias y sin necesidad de entrar en tiempos muertos. Revisión de la integridad: todas las direcciones, datos y comandos tienen asociado un bit de paridad. Tres espacios direccionables: memoria, puertos y configuración. Autoconfiguración, el espacio de configuración permite la operación del dispositivo como Plug and Play. La especificación define un tamaño de conectores y tres tamaños de tarjeta. 2.1. Inicialización Ninguno de los elementos que conforma un sistema PCI se encuentra configurado al ser energizado, es decir, no hay rangos de direcciones de memoria o puertos asignados, y tampoco tiene interrupciones disponibles. Para que un dispositivo opere en el bus PCI, sea un dispositivo maestro o esclavo, debe estar configurado. Para realizar las operaciones de configuración se requiere de un elemento que transmita la información que caracteriza al dispositivo hacia el host, para posteriormente realizar la lectura de la información que el host ha asignado a este elemento. La información del espacio de configuración es guardada en una memoria nVRAM que se encuentra comunicada con un controlador PCI, el cual es el encargado de la transmisión / recepción de datos a través del bus PCI. La configuración se realiza a través de lecturas del espacio de configuración hechas por el controlador. Este proceso se realiza para cumplir con los requerimientos del dispositivo, los cuales fueron hechos durante la etapa de escrituras en el espacio de configuración y consisten en la transmisión de los datos contenidos en la memoria nVRAM de la tarjeta hacia el espacio de configuración, para posteriormente realizar un proceso de lectura de este espacio y determinar los recursos asignados por el sistema como lo son el espacio de memoria asignado, las direcciones de puertos disponibles y la asignación de interrupciones. Estas acciones hacen parte de las principales características de los dispositivos plug and play. Debido a su condición de bus estándar es muy fácil encontrar equipos con el bus PCI en su arquitectura. En el momento que se requiera realizar interfaces compatibles y portátiles, con casi cualquier equipo, el bus PCI sería la primera opción a tener en cuenta. 3. CONSIDERACIONES DE DISEÑO PARA EL HARDWARE Las consideraciones de diseño a tener en cuenta en la implementación de la tarjeta PCI son los siguientes: potencia consumida, compatibilidad de las familias de los integrados, análisis de tiempos, geometría y ubicación de los dispositivos, desacople y el espacio de configuración. 3.1 Potencia Las tarjetas PCI poseen un límite máximo de suministro de potencia de 25 W. De acuerdo a la potencia consumida por cada uno de los elementos, se debe calcular la potencia máxima que puede disipar el empaquetado de cada uno de los integrados. Con el cálculo de la potencia máxima disipada se puede establecer la máxima temperatura ambiente en que puede operar la tarjeta sin daños a los integrados que la componen y justificar el uso de disipadores. La FPGA por ser un dispositivo reprogramable, posee características diferentes a los demás circuitos integrados. El consumo de potencia en las FPGAs Spartan II depende del número de transiciones lógicas en su interior y es proporcional a la frecuencia del reloj de operación. Los valores de potencia consumida, resistencia térmica del empaquetado, flujo de aire y temperatura ambiente se deben tener en cuenta en el momento que se selecciona el tipo de encapsulado del dispositivo. Sin el adecuado análisis térmico, el calor generado puede exceder la temperatura máxima soportada por el dispositivo y provocar daños permanentes. El consumo de potencia en la FPGA depende en gran medida del diseño configurado en su interior (core). Se debe realizar una estimación precisa de los requerimientos de la FPGA para brindar al sistema un suministro de potencia adecuado a estos. La familia de FPGAs Spartan II requiere un suministro de corriente mínimo, al cual se hace referencia en sus hojas de datos como Iccpo, con una valor de 500 mA a temperaturas por encima de 0 ºC para garantizar una activación satisfactoria. Los requerimientos solo se aplican durante el período de activación (normalmente, unos cuantos milisegundos). Ya en funcionamiento las valores de corriente son considerablemente bajos en comparación con los valores de inicialización. Al aplicar potencia a la FPGA durante la inicialización, el dispositivo exige una intensidad de corriente considerablemente alta en comparación con la exigencia de corriente en pleno uso. Esta característica se debe fundamentalmente a que es un dispositivo que se basa en celdas SRAM. Las FPGAs son elementos que se programan por el almacenamiento de datos de configuración en celdas tipo SRAM que se encargan de desactivar o activar las líneas de interconexión internas. Antes de la inicialización las celdas SRAM almacenan valores aleatorios, lo que provoca colisiones, que motiva a un elevado consumo de corriente durante la inicialización. Para la utilización de este tipo de dispositivos se requiere contar con reguladores especiales, que cumplan con las siguientes características: • • Reguladores tipo LDO (Low Drop Out) los cuales se caracterizan por tener fugas de corriente mínimas. Protección contra sobre corriente mayor a 1A para que el regulador logre suministrar la suficiente corriente para que el dispositivo se active y comience con la fase de configuración. 3.2 Compatibilidad de integrados Al realizar la interconexión con diferentes familias de dispositivos, se debe asegurar una compatibilidad en sus niveles umbrales. Estas especificaciones se pueden encontrar en las hojas de datos de cada uno de los elementos y son decisivos para determinar que circuitos integrados serían utilizados en la tarjeta. VOHmin,VOLmax,VIHmin,VILmax constituyen los valores que se deben considerar en los niveles de voltaje. De acuerdo con estas definiciones un circuito integrado compatible entregaría un valor de voltaje a su salida mayor que VOHmin para un nivel alto y menor que VOLmax para un nivel bajo y aceptaría en sus entradas un voltaje mayor que VIHmin para un nivel alto y un voltaje menor que VILmax para un nivel bajo. Para resolver este problema de compatibilidades la FPGA cuenta con una entrada de polarización (Vcco) que permite ajustar sus valores umbrales. Para una correcta relación de niveles umbrales la entrada de polarización es Vcco =3.3 V, lo que permite que la FPGA sea compatible con los niveles umbrales del controlador PCI S5920 que presenta los valores VOHmin=2.4V, VOLmax=0.4V, VIHmin=2.0V, VILmax=0.8V. En relación con estos valores se escogió el nivel de polarización de 3.3V para obtener las características de entrada y salida dadas por VOHmin=2.4V, VOLmax=0.4V, VIHmin=2.0V, VILmax=0.8V. Al poseer los mismos valores umbrales para las entradas y salidas estos dispositivos son totalmente compatibles, sin olvidar que la FPGA es un dispositivo que esta alimentado a 2.5 V, es tolerante a las entradas de 5V y tolera un valor máximo de 5.5 V en sus entradas. [4][5] 3.3 Análisis de tiempos Cada una de las señales transmitidas debe cumplir con tiempos de establecimiento que aseguren la captura de las señales en su nivel correcto. Estos valores son determinantes a la hora de la elección de los dispositivos para el establecimiento de una interfaz completamente funcional. Todas las operaciones de los circuitos son realizadas, en su mayoría, de manera síncrona. En cada período de reloj se deben tener en cuenta varios eventos ocurridos en esta transición, debido a que nada ocurre instantáneamente. Los principales tiempos a tenerse en cuenta para la realización de una interfaz síncrona son el tiempo sostenido del dato después de terminado el período (TSD) y el tiempo para obtener un dato válido (TVD). En la figura 1 se observan los tiempos que deben ser tenidos en cuenta para realizar la comunicación entre dispositivos sincronizados con una misma señal de reloj. Figura 1. Identificación de los tiempos críticos para la captura de un dato • La conexión de los trazos de la señal de reloj del S5920 al bus PCI debe ser de 2.5 pulgadas +/-0,1 pulgadas en longitud y se pueden rutear únicamente a una carga. Se debe asegurar que todas las esquinas de estos trazos son redondeadas y no usar ángulos de 90º. • La impedancia de los trazos de la señal PCI en la tarjeta de expansión debe ser mantenida dentro del rango de los 60 y 100 Ohms. Teniendo en cuenta el tiempo TVD de un dispositivo que suministra una salida, el dispositivo que captura el dato debe hacerlo después de transcurrido este tiempo TVD para obtener un dato válido. Algunos dispositivos que realizan la captura de datos por flancos de reloj, requieren que los datos sean sostenidos por un tiempo mínimo después del flanco de reloj, en este instante es fundamental tener en cuenta el tiempo TSD. Este tiempo TSD debe ser mayor en el elemento transmisor que el tiempo mínimo requerido por el dispositivo receptor para el almacenamiento de un dato válido. Estando de acuerdo con estos dos conceptos, se debe determinar que tiempos corresponden a cada uno de estos valores para asegurar la captura de los datos transmitidos. Este concepto es aplicable a todas las señales de control y de datos durante una transferencia síncrona, lo cual se debe tener en cuenta a la hora de la elección de los circuitos integrados. 3.4 Geometría y ubicación de los dispositivos Cada uno de los elementos que componen la tarjeta deben cumplir con unos requerimientos de espacio máximo para que la tarjeta este catalogada en los tamaños de tarjeta PCI. Por ser un diseño con componentes que trabajan a una frecuencia mayor de 25 MHz es considerado un diseño de alta frecuencia. Teniendo en cuenta las ratas de transmisión de datos se observa claramente que el tiempo que toma un dato en llegar de un dispositivo a otro es comparable con los valores de los tiempos de transición de la señal de reloj, por lo cual los dispositivos no pueden ser ubicados en cualquier parte de la tarjeta y deben cumplir con una longitud e impedancia máxima en las líneas de datos / control y otras condiciones para la señal de reloj. Las operaciones de transferencias del bus PCI pueden ocurrir en 30 ns con señales de rizado y tiempos de caída de 3 ns. Se tiene especial cuidado con la longitud de los trazos y el ruteamiento para prevenir problemas de impedancia y preservar el rizo de la señal y los tiempos de caída. Las especificaciones PCI requieren seguir los criterios de diseño para todos los controladores de bus PCI: • La longitud de los trazos para cada una de las interfaces de datos de 32 bits del S5920 al bus PCI está limitada a un máximo de 1.5 pulgadas para todas las tarjetas de 32 bits. 3.5 Desacople Uno de los principales aspectos a diseñar es el relacionado con el desacople. A través del desacople se suministra un medio por el cual se separan las funciones de los circuitos integrados de los eventos ocurridos en el suministro de potencia. Esto se realiza a través de capacitores de desacople. La falta de un correcto desacople incrementará la generación de ruido y el circuito será susceptible a fallas. Para la determinación de los valores de los capacitores a utilizarse en el desacople, se debe calcular la frecuencia de resonancia de estos, los capacitores tienen un modelo RLC serie con el cual se determina la frecuencia de resonancia, este valor de frecuencia es el que nos permite establecer en que rango de frecuencias los capacitores cumplen con su función de desacople, un valor errado de estos haría que el capacitor solo ocupara espacio en el circuito impreso. 3.6 Espacio de configuración Todas las funciones PCI deben permitir la implementación de un espacio de configuración en el que deben residir los registros de configuración. El puente host / PCI puede contener estos registros en espacio de configuración PCI, en espacio de puertos o en espacio de memoria. Cada dispositivo PCI posee un bloque de 64 palabras de configuración. Se realizó un estudio detallado del espacio de configuración PCI para determinar sus principales características y la manera cómo determinan el funcionamiento del sistema. En este espacio se almacenan los valores que identifican a cada uno de los dispositivos en el bus PCI, sus fabricantes, funciones soportadas, espacio asignado por el sistema entre otros [6]. En la figura 2 se muestra un diagrama del espacio de configuración PCI. Figura 3. Diagrama de bloques del sistema 5. FUNCIONAMIENTO DEL HARDWARE Figura 2. Espacio de configuración PCI 4. DESCRIPCIÓN DE LA TARJETA La tarjeta se compone de los siguientes elementos que hacen parte de su arquitectura: • • • • • Controlador PCI S5920, realiza la comunicación con el procesador central a través del bus PCI.. Microcontrolador AT90S2313 se encarga de realizar el control sobre las señales de programación de la FPGA, recibiendo órdenes enviadas por el procesador central que se comunican a el microcontrolador a través del bus de datos del S5920. La FPGA XC2S100 que se configura para realizar las acciones necesarias para el desarrollo de diferentes proyectos, además de la lógica de control para la transmisión de datos hacia el host por medio de los canales de comunicación que suministra el S5920. Conversores A/D y D/A para realizar acciones de adquisición de datos y transmisión de señales de control. Controlador de Interfaz ICL-232 para la implementación del protocolo RS-232 para comunicación de datos. En la figura 3 se puede observar un diagrama de bloques de los elementos que componen el sistema. Un sistema que se conecte al bus PCI debe implementar su espacio de configuración de acuerdo con las especificaciones de la aplicación que se quiere implementar. Una vez se energiza el sistema se realiza una comunicación entre los dispositivos PCI y el sistema operativo. A través de esta comunicación el sistema operativo reconoce los dispositivos, valida sus funciones y asigna el espacio físico en donde será ubicada la tarjeta. El dispositivo S5920 cuenta con dos líneas de comunicación con una memoria nvRAM, en donde se guardan todos los datos que el usuario requiere en el espacio de configuración PCI. Esta interfaz permite cargar al sistema operativo los valores requeridos para operación de la tarjeta; dejándose abierta la posibilidad de modificarse según la aplicación lo exija. El bus PCI se caracteriza por soportar dispositivos maestros y esclavos. Por lo tanto el sistema de arbitración asigna permanentemente la posesión del bus a diferentes maestros que lo hallan requerido. Por tal motivo el S5920 no puede apropiarse del bus permanentemente y realizar una transmisión continua de los datos. Debido a esta situación se opta por configurar la FPGA en modo esclavo paralelo. El modo esclavo paralelo permite realizar la transmisión de las tramas de configuración de la FPGA en paquetes e ignorando transiciones del reloj de configuración. El control de la interfaz de programación se realiza a través de el microcontrolador AT90S2313 de Atmel, quien se encarga de controlar la transmisión de los datos de configuración hacia la FPGA. Esta función la realiza activando las señales de programación de la FPGA ( CS#, WRITE# y PROGRAM# ) durante el tiempo necesario para la inicialización de los dispositivos y captura de los datos de configuración por parte de la FPGA. Las principales AT90S2313 son: funciones del microcontrolador • Activar los modos de programación o readback de la FPGA • Dar información sobre el estado de los dispositivos al host a través de los canales de comunicación del S5920. 6. 7. SOFTWARE DE INTERFAZ MODO DE OPERACIÓN La tarjeta puede ser utilizada en diversos campos para los cuales se deben seguir los siguientes pasos para implementar diferentes tipos de proyectos. • dispositivos de transmisión/adquisición de datos y los controladores de interfaces. Diseño del núcleo digital: desarrollo de toda la interfaz digital que se va a programar en la memoria de configuración de la FPGA. Para realizar este proceso se cuenta con el uso de diferentes herramientas CAD. El fabricante suministra diferentes tipos de software de implementación como el Fundation, Alliance y Web-pack (Software que distribuye Xilinx.), este último de libre distribución. El software utilizado para el desarrollo de los diseños digitales es el Web-pack. Este cuenta con un navegador de proyectos que permite la utilización de interfaces de programación, tales como: VHDL, Verilog, ABEL, captura esquemática, diagramación de estados. Se puede implementar cualquier tipo de diseño digital utilizando cualquiera de las interfaces anteriormente mencionadas. Una vez realizada la descripción del diseño digital, utilizando alguna de las interfaces, se procede a corroborar la posibilidad física de cumplir con las especificaciones dadas en el diseño. • Síntesis del diseño: en este proceso se realizan la compilación del diseño y se verifica el cumplimiento de los estándares. • Generación del archivo de configuración: corresponde a las acciones hechas por el compilador seleccionado para la optimización del diseño en la FPGA que termina con la generación del archivo de configuración. • Programación: proceso que tiene como función realizar la configuración de la FPGA para el cumplimiento de una tarea específica. • Evaluación y test del sistema: se evalúa el comportamiento y funcionalidad del sistema para la aplicación especifica. Con la posibilidad de implementar diferentes alternativas de control en la FPGA para los El software de interfaz permite al diseñador encontrar la ubicación de la tarjeta en el PC, ya sea en puertos o en memoria. Además de contar con las funciones que permiten realizar escrituras/lecturas en las direcciones de puertos o memoria asignados a la tarjeta por el espacio de configuración PCI. Contiene las opciones necesarias para realizar el proceso de configuración de la FPGA a través de la transmisión del archivo de configuración resultado de la síntesis del diseño digital que se quiere implementar en al FPGA. Con las opciones de lectura de los registros mailbox del chipset S5920, se puede verificar los estados de la FPGA, es decir, las operaciones de inicialización y arranque de este dispositivo. Crea una interfaz de comunicación con el microcontrolador AT90S2313 a través de del canal mailbox del S5920 para la activación de los diferentes modos operación que tiene el S5920 que sólo pueden ser activados a través del hardware. 8. POSIBLES APLICACIONES El sistema, debido a su capacidad de reprogramación, puede ser usado para los siguientes tipos de aplicaciones: • • • • • • • Adquisición de datos Transmisión de señales de control Implementación de protocolos comunicaciones. Conversión de protocolos Prototipado de arquitecturas digitales Instrumentación. Sistemas en tiempo real. de En la figura 4 se muestra una fotografía del sistema implementado en donde se observa claramente la ubicación de cada uno de sus componentes. En los procesos de adquisición de datos, se determina si la palabra de configuración del conversor A/D es el caso óptimo para la aplicación que se esta haciendo, teniéndose la opción de implementar diferentes alternativas para la optimización del proceso de adquisición de datos. Figura 4. Fotografía del sistema. Se observan las ventajas de poseer dos modos de operación, lo que permite al usuario la implementación de sistemas autónomos para la transmisión de datos o sistemas que dependen de las condiciones o eventos ocurridos exteriormente a la tarjeta. 10. RESULTADOS 9. CONSIDERACIONES Se experimentó con los diferentes anchos de bus que permite el S5920 para la transmisión de datos y evaluar su comportamiento, al ubicar la tarjeta en espacio de memoria y en el espacio de puertos. Al ubicar la tarjeta en el espacio de memoria, se requiere de un conocimiento profundo en la estructura del sistema operativo que se esta utilizando, debido al manejo que este le da a la memoria, lo cual puede provocar retardos en la transmisión de los datos. Al verificarse la funcionalidad con diseños combinacionales en la FPGA, se puede observar una gran potencia en procesamiento de las señales liberando de carga al procesador central. La interfaz de configuración opera a una frecuencia de 10 MHz, lo cual no implica que no se pueda realizar operaciones de adquisición de datos a mayor frecuencia. Se probaron operaciones de muestreo a 20 MHz que almacenan los datos en registros internos implementados en la FPGA para después ser transmitidos hacia el host. Se evaluaron diferentes clases de diseños digitales, tanto combinacionales como secuenciales demostrándose el amplio rango de aplicación que tiene la tarjeta. La importancia de las características genéricas se fortalecen al utilizar la FPGA para la configuración de los conversores A/D y D/A, que son dispositivos programables, a través de protocolos seriales de comunicación por medio de los cuales se configuran estos dispositivos aumentando más la flexibilidad de la tarjeta. Entre otros, los resultados obtenidos mas relevantes están relacionados con la concepción, diseño, implementación y verificación del sistema de desarrollo de la tarjeta para bus PCI basada en una FPGA Este objetivo final requirió del análisis y estudio de la estructura de interconexión del sistema , de los modos de programación de la memoria de configuración PCI, de la programación y evaluación de diferentes tipos de diseños digitales combinatoria. de lógica secuencial y De igual forma se diseñó e implementó el software de interfaz, se hizo reconocimiento del software de aplicación, asó como la validación final del prototipo de la tarjeta. 11. CONCLUSIONES Se estudió y utilizó el protocolo de transmisión de datos a través del bus PCI a fin de diseñar, implementar y verificar el funcionamiento de una tarjeta PCI para adquisición de datos basada en una FPGA. Se desarrolló un software de interfaz capaz de realizar lecturas del espacio de configuración PCI, de programar una FPGA y de ejecutar las tareas de transmisión y recepción de datos. La funcionalidad del sistema se validó mediante el uso de herramientas de diseño digital (VHDL, captura esquemática.) Se validó la operación de la FPGA como interfaz maestra que se adapta a los diferentes modos de operación de los dispositivos con los cuales se requiere establecer comunicación. 12. BIBLIOGRAFÍA Se implementó una herramienta reprogramable que se conecta directamente con el PC. La capacidad de reprogramación suministra una gran cantidad de posibilidades para la implementación de diferentes sistemas, sean para adquisición de datos o para el prototipado de diferentes arquitecturas digitales. Se elaboró una interfaz de programación que permite la utilización del bus PCI para otras aplicaciones, una vez se halla programado la FPGA, asociando el potencial de cálculo de los computadores personales con la capacidad de reprogramación que ofrece la FPGA. [1] SHANLEY Tom; ANDERSON Don-1999. PCI SYSTEM ARCHITECTURE ,Fourth Editions,Ed: Addison Wesley Mayo de 1999. [2] MESSMER, Hans-1997. The indispensable PC hardware book. pag 586-643. Tercera edición. Addison Wesley.1997. [3] JIMÉNEZ, Henry; ACOSTA, Carlos-2001] Tarjeta genérica PCI – Interfaz GPIB. Santiago de Cali: 2001. Trabajo de grado (Ingeniería electrónica). Universidad del Valle. Facultad de ingeniería. Escuela de Ingeniería Eléctrica y Electrónica. [4] PCIPROD-AMCC-1998. PCI PRODUCTS DATA BOOK: 1998. Applied Micro Circuits Corporation. [5] XILINX-2002. THE PROGRAMMABLE LOGIC DATA OOK; San José, CA: 2002. [6] PCI REV. 2.2-1998. PCI LOCAL SPECIFICATION REV. 2.2. PCISIG: 1998. BUS