En el IIE, en más de una ocasión, se han utilizado PCs con placas adicionales para implementar un diseño hardware.
Uno de los primeros proyectos con estas características fue un prototipo de un registrador de perturbaciones de la red de transmisión eléctrica. El mismo constaba de una placa que adquiría muestras de la red eléctrica y eran procesadas en un PC para detectar varios tipos de posibles desviaciones respecto del comportamiento nominal. En caso de detección positiva de desviaciones, las señales se almacenaban en medio magnético para su posterior procesamiento.[10.1.K ]
El bus ISA fue utilizado en proyectos realizados en el IIE, por ejemplo para diseñar una tarjeta adquisidora de Video [10.1.F ] o implementar una red neuronal en una placa con FPGAs para utilizarla como co-procesador [10.1.H ].
Para desarrollos con bus ISA, el instituto cuenta con una placa ISA con lógica reconfigurable (RIPP10 de Altera) [10.1.J ] que ha sido utilizado en proyectos de aceleración de algoritmos por Hardware.
El último proyecto que utilizó el bus ISA, como interfaz de comunicación con el PC, fue el de "Implementación de algoritmos de tratamiento de imágenes en lógica reconfigurable" [10.1.C ]. Consistió en implementar en la placa RIPP10 algoritmos de procesamiento de imágenes y se compararon los tiempos de procesamiento con los de funciones implementadas en software. Los resultados fueron muy satisfactorios, pero se detectó que una de las limitantes para lograr mayor performance era la transferencia de datos a través del bus ISA, ya que las tasas de transferencia que se logran son muy bajas para la cantidad de datos que requiere el procesamiento de imágenes.
Posteriormente el IIE recibió la donación de dos placas PCI con lógica reconfigurable (ARC-PCI de Altera). Con estas placas se realizó el proyecto de fin de carrera "Neuro FPGA" [10.1.G ] en el cual se implementaban redes Neuronales en Hardware y esta siendo utilizada en un proyecto de maestría sobre aceleración de algoritmos por hardware.
Es posible comprar plataformas completas de desarrollo para bus PCI, es decir paquetes que incluyan una placa con lógica reconfigurables, un core PCI y un driver de ejemplo. Al momento de comenzar el proyecto, los altos costos de estos paquetes los tornan una alternativa inviable para nuestro medio y el de muchas universidades o empresas de la región.
El alto costo de estas plataformas se debe a que utilizan FPGAs topes de línea, cores PCI comerciales y software de desarrollo de drivers comerciales.
No se encontraron plataformas de desarrollo con prestaciones intermedias a un costo accesible.
A continuación se listan las características y precios de algunas plataformas disponibles en el mercado (Diciembre 2003):
- APEX PCI Development Kit (ALTERA)
- costo: $3,495 USD
- ALTERA FPGA APEX EP20K1000CF672
- PCI 32-bit o 64-bit
- licencia de core PCI de ALTERA por 60 días
- conector para DIMM de SDRAM de 32-Mbyte
- conector para placas de expansión
- versión de evaluación por 30 días del software WinDriver de Jungo, que permite desarrollar drivers para windows
- http://www.altera.com/products/devkits/altera/kit-apex_dev_kit.html
- PCI Development Kit, Stratix Edition (ALTERA)
- PCISYS100 (PLD applications)
- costo: $1,790 USD
- ALTERA FPGA EP1K100FC4841
- PCI 32bit o 64bit
- licencia de core PCI desarrollado por PLD Applications para ser utilizado únicamente en la placa.
- indican que incluyen drivers para dispositivos PCI, pero no indican para que Sistema Operativo.
- http://www.hitechdisti.com/plda/pcisys.htm
Una lista más extensa de placas PCI que utilizan FPGAs puede encontrase en http://www.fpga-faq.com/FPGA_Boards.shtml
Al momento de escribir esta documentación han aparecido plataformas que intentan llenar el vacío existente.
- PCI ProtoBoard
- costo: $395 USD
- fecha de revisión 1.2: 8/9/03
- FPGA EP1K30QC208-2
- PCI 32 bit
- no incluye memoria on-board
- interfaz con bus PCI custom implementada en otro integrado.
- driver para windows y linux
- http://www.techniprise.com/pci_protoboard.htm
Una alternativa a la compra de una plataforma de desarrollo completa es la compra de una placa PCI con lógica reconfigurable y desarrollar los drivers y el core PCI.
El IIE cuenta con 2 placas PCI con lógica reconfigurable, permiten agregarle DIMMs de memoria SRAM y cuenta con 3 FPGAs, lo que la hace una plataforma sumamente flexible y potente. El problema es que está fuera de producción, y si bien los FPGAs tiene una capacidad adecuada para muchas aplicaciones, la performance que se logra no es la adecuada para diseños que utilizan el bus PCI.
Al comenzar el proyecto no existían placas de pequeño o mediano porte, ya que todas estaban equipadas con FPGAs de gran tamaño y electrónica adicional que permiten desarrollar una muy variada gama de aplicaciones.
- GR-PCI-XC2V LEON
- costo $3,450 EUR
- XILINX FPGA Virtex-II XC2V3000-FG676-4
- 32-bit PCI interface
- 8 Mbyte flash prom (2M x 32)
- 1 Mbyte static ram (256K x 32)
- memoria SDRAM 64 Mbyte (16M x 32)
- Ethernet PHY 10/100 Mbit transeiver
- http://www.gaisler.com/gr-pci-xc2v.html
Luego de haber terminado la placa del proyecto, salió al mercado una placa de desarrollo fabricada por Insight Electronics a U$S250. Esta misma placa es la utilizada en la plataforma de desarrollo DS-KIT-PCI32S-200 anteriormente mencionada.
Las características de la placa (DS-KIT-2S200) son las siguientes:
- costo $250 USD
- XILINX FPGA XC2S200-6FG456C
- 32-bit PCI
- memoria SDRAM 64Mbit (2Mx32)
Existen varios cores comerciales para bus PCI de 32 bits, todos con distintos niveles de complejidad. Algunos sólo se comportan como Target PCI y otros implementan las funcionalidades de Target y Master.
ALTERA y XILINX, los mayores fabricantes de FPGAs, ofrecen cores diseñados y probados por sus grupos de desarrollo y también ofrecen cores diseñados por terceros, aprobados por ellos.
Algunos cores disponibles en el mercado:
- Diseñados por ALTERA (www.altera.com)
- Interfaz PCI, 32-bit solo Target. Costo: $4,995
- Interfaz PCI, 32-bit Master/Target. Costo: $8,995
- Certificados por ALTERA y diseñados por Eureka Technology, Inc (http://www.eurekatech.com/)
- Interfaz PCI, 32-Bit.solo Target y Master/Target.
- Host bridge PCI, 32-Bit. Funciona como puente entre 2 buses PCI.
- Certificados por ALTERA y diseñados por PLD Aplications (http://www.plda.com/)
- Interfaz PCI 32-Bit & 64-Bit. Solo Target y Master/Target.
- Diseñados por XILINX (www.xilinix.com)
- Interfaz LogiCORE PCI, 32 bit Target. Costo $4,995
- Interfaz LogiCORE PCI, 32 bit Master/Target. Costo $8,995
Un listado más extenso puede encontrarse en el sitio web de Design and Ruse (http://www.us.design-reuse.com/sip?id=68 )
Al comenzar el proyecto, se conocía la existencia de un diseño VHDL de un interfaz esclavo PCI para una aplicación de Wavelet [10.1.A ]. Se realizaron contactos con el diseñador y nos envió la documentación y el código VHDL de su diseño. Luego de estudiar la interfaz concluimos que no se adecuaba a nuestros objetivos ya que el diseño era muy dependiente de la aplicación e implementaba un conjunto de funcionalidades muy reducido.
Otra fuente de cores IP es el sitio www.opencore.org, en el se publican cores terminados o diseños que están siendo implementados. Durante el transcurso del proyecto, en opencores.org se publicó la necesidad de reunir diseñadores para llevar acabo un core PCI Master/Target de libre distribución.
Actualmente hay un core PCI de libre distribución en opencores.org. La aplicación de prueba esta implementada en una placa con un FPGA de XILINX. Se están implementando diseños (Testbench) que testen exhaustivamente el core PCI.
La forma correcta de utilizar las funciones provistas por una placa conectada al bus PCI dependen totalmente de la aplicación. Es decir, desde el punto de vista del software de aplicación, la forma en que generalmente se accede a una tarjeta de sonido no es útil para acceder a una tarjeta de red.
Entonces, el driver debe ser desarrollado a medida, tomando en cuenta la aplicación final.
Debido a esto, solamente tiene sentido hablar de los drivers existentes como ejemplos o ayudas para el desarrollo de uno a medida.
Las plataformas de desarrollo generalmente proveen un driver de ejemplo o un kit de desarrollo de drivers, que facilitan la tarea.
En el momento de iniciar el proyecto se encontraba disponible un driver para la placa ARC-PCI desarrollado por William Bishop [ 10.1.N ] de la Universidad de Waterloo en Canadá. Este driver funciona bajo el sistema operativo Windows NT.
La versión 2.4 del sistema operativo Linux se encontraba en desarrollo al momento de iniciar el proyecto, y simplifica sensiblemente el desarrollo de drivers frente a versiones previas. La documentación existente, sobre el bus PCI y sobre el desarrollo de módulos de kernel, es muy completa y detallada, y se complementa con la disponibilidad del código fuente de cientos de drivers que han sido desarrollados bajo la licencia de libre distribución GPL utilizada por Linux.