Transferencia De Datos Por Puerto Usb Nexxys 2
sergioandrespa25 de Febrero de 2014
4.789 Palabras (20 Páginas)313 Visitas
RESUMEN / ABSTRACT
En el trabajo se presenta la implementación de la comunicación por puerto USB entre una computadora con sistema operativo
Windows y una tarjeta FPGA Nexys2. Dicha tarjeta posee un microcontrolador Cypress CY7C68013A que maneja un puerto
USB2 de alta velocidad que ha sido programado para emular un puerto paralelo EPP.
Se expone el diseño y evaluación de una interfaz gráfica de usuario con programación LabWindows que maneja la biblioteca
DPCUTIL y que posibilita la transferencia y visualización de datos desde la Nexys2. La aplicación permite la transferencia en
tiempo real de un procesador digital de 12bits, de dos canales implementado con frecuencia de muestreo de 1MHz en la FPGA. En
el trabajo se evalúa los resultados alcanzados en cuanto a la velocidad de transferencia de datos efectiva.
Palabras claves: Comunicaciones, FPGA, Puerto USB, transferencia de datos.
This paper deals with the implementation of USB communication between a PC with Windows OS and a Nexys2 FPGA Board
.This board has a Cypress Microcontroller that handles a high speed USB port and it is configured to emulate a EPP port. This
work presents the design and evaluation of GUI that is supported on LabWindows CVI 9, and use the driver DPCUTIL.dll to
control the data transfers for Nexys2. An FPGA application has been designed that responds to the request of PC via USB and
provides data transfer with an ADC converter of 2 channels, 12 bits, with a 1 MHz sampling frequency. The LabWindows
Application provides a graphical monitoring of data transfer and post processing of data, taking advantage of the library
functions that are available in LW. Also data transfer speed is evaluated.
Key words: communications, data transfers, FPGA, USB Port.
INTRODUCCIÓN
La interfaz USB se ha convertido en un estándar para la
comunicación de una PC con diversos periféricos como
cámaras, impresoras, amplificadores de audio y memorias
externas así como con sistemas digitales basados en
microcontroladores, procesadores digitales (DSP) y FPGA.
Tal es el caso de la tarjeta FPGA Nexys2 1 que posee un
puerto USB que permite la alimentación de la tarjeta, la
programación de la misma para implementar una aplicación
determinada y la transferencia de datos entre una aplicación y
la PC. El fabricante suministra una aplicación para el sistema
operativo Windows denominada Adept2 -que es usada
fundamentalmente para programar el circuito FPGA, aunque
también posibilita el diagnóstico de la misma y la transferencia
de datos. Sin embargo no brinda el código de dicha aplicación
por lo que no puede ser aplicada o expandida para procesar
transferencias especificas que sean necesarias tales como un
sistema de adquisición de datos o simple procesador digital
que estén implementados en la FPGA.
En este trabajo se presenta y analiza el diseño de una
aplicación de interfaz gráfica en LabWindows/CVI v9 que
permite el control, visualización y post procesamiento de la
transferencia de datos con un circuito sintetizado en la FPGA.
La aplicación en la FPGA es un controlador de conversión
análogo- digital ADC que permite la digitalización de hasta
dos señales analógicas a una frecuencia de muestreo máxima
de 1 MHz y resolución de 12 bits. Las muestras generadas por
los conversores son enviadas por el puerto USB hacia la PC.
Aunque se trata de una aplicación específica como se analiza
en detalle la metodología empleada puede ser fácilmente
aplicada o modificada para nuevas aplicaciones.
MATERIALES Y MÉTODOS.
FUNDAMENTOS DE LA
COMUNICACIÓN USB.
Para analizar la comunicación USB entre una PC y un
dispositivo USB se deben de considerar los siguientes
elementos de hardware y software.
57
El bus USB es del tipo “maestro/esclavo”, donde el maestro es
la PC (también llamado ¨host ¨) que es el que puede iniciar la
comunicación y el tráfico de datos con el esclavo ó dispositivo
USB. Así las interrupciones no son posibles.
El dispositivo USB que se conecta a la PC debe tener un
circuito controlador USB que responde a los requerimientos
de la PC para su identificación y para recibir y enviar señales.
Todo dispositivo USB es un dispositivo ¨inteligente¨ pues
mediante el circuito controlador USB es capaz de responder a
los eventos que se presenten en el bus USB. En nuestro caso la
Nexys 2 posee un circuito integrado Controlador USBCYPRESS
68001A y un circuito FPGA Xilinx Spartan3E
xcs3e1200 entre otros. El circuito controlador es el que recibe
las señales de la PC por el conector USB y se conecta con
determinados pines de la FPGA, el mismo ha sido programado
para emular un puerto paralelo de virtual de alta velocidad
EPP3. Por lo tanto cualquier aplicación que se desarrolle en la
FPGA que pretenda transferir datos mediante el puerto USB,
lo hace como si el puerto USB fuera en realidad un puerto
EPP. Para implementar la comunicación USB en la Nexys2,
primeramente en la FPGA hay que implementar un bloque
controlador EPP que interprete y genere las señales EPP que
recibe o envía el controlador CYPRESS, para la FPGA es
como si estuviera conectada a un puerto EPP.
Por otra parte en la propia PC se halla disponible un
controlador USB pero configurado para iniciar la
comunicación como “maestro”. Cuando un dispositivo USB se
conecta con la PC si es un dispositivo estándar en el sistema
operativo se encuentra un programa driver que identifica el
dispositivo automáticamente y le asigna un identificador, y
permite que dentro del sistema operativo se ejecute la
operación del dispositivo. Si es un dispositivo USB no
estándar se necesita de un programa driver específico que
provea las funciones necesarias previstas para el dispositivo.
Este driver por lo general es suministrado por el fabricante del
dispositivo USB. El driver para la Nexys2 es una biblioteca
denominada “dpcutil.lib” que permite transferencias de datos4
que ha sido escrita y compilada con Microsoft C++. Esta
biblioteca de funciones genera y procesa los datos transferidos
e interpretados en este caso según el protocolo EPP. Para
poder controlar la comunicación USB con LabWindows/CVI,
esta biblioteca debe previamente ser cargada en dicho
programa para poder emplear las funciones que ella dispone y
que les permite entenderse con el controlador CYPRESS de la
Nexys2.
EL PROTOCOLO EPP.
El puerto EPP permite la transferencia de datos con un
conjunto de registros definidos en el periférico en cuestión.
Este puerto se encuentra definido en una PC con puerto
paralelo. Pero en nuestro caso el puerto EPP es virtual y se
encuentra definido en el controlador CYPRESS que se
conecta con el circuito FPGA que entonces actúa como
periférico. Un puerto EPP dispone de dos puertos: un puerto
de datos y un puerto de direcciones. El puerto de datos
permite definir la dirección asociada al registro que se
pretende transferir (leer o escribir) y el puerto de datos recibe
el valor asociado a la transferencia en cuestión (el dato que se
escribe o se lee). Para ello el puerto EPP emplea físicamente
un único bus bidireccional de 8 bits, llamado bus de datos D
[7:0] que permite la transferencia de datos y direcciones. Para
identificar si el valor en el bus de D se corresponde con una
dirección o con un dato, se emplean dos señales de validación:
DSTB para los datos y ASTB para las direcciones, las cuales
se activan con el nivel bajo y que además en todo momento
solo una pueda estar activa. Por otra parte se emplea otra señal
de control WR que indica el sentido de la transferencia. Si WR
esta a nivel alto, indica que se efectúa una lectura y si esta a
nivel bajo se una escritura. Las señales DSTB, ADST y WR
son señales de entrada se suministran al periférico (del
controlador CYPRESS hacia la FPGA) pero existe una señal
WAIT que es generada por el periférico como salida (del
FGPA hacia el controlador CYPRESS), que es una señal de
reconocimiento de acceso. El dispositivo (el circuito FPGA)
pone esta señal a nivel bajo para indicar que no se están
realizando transferencias hacia el por el puerto (DSTB o
ASTB a nivel alto). Pero cuando el puerto inicia un
transferencia determinada y activa alguna de las señales a nivel
bajo, se encuesta la señal WAIT que se recibe del FPGA, si
esta señal permanece a nivel bajo, se insertan estados de
espera en la transferencia por el puerto hasta que el dispositivo
responde con nivel alto en WAIT que le indica al puerto que
puede terminar la transferencia y subir la señal de validación
correspondiente.
Existen por lo tanto cuatro transferencias posibles: escritura de
direcciones, lectura de direcciones, escritura de datos y lectura
de datos. Sin embargo cuando se va a escribir o leer en un
...