Tarjetas de Desarrollo > FPGA >
Basys 3 Artix-7 FPGA Board
DESCRIPCIÓN
La tarjeta BASYS 3 es una plataforma de desarrollo bastante completa basada en el FPGA ARTIX-7 de la empresa XILINX. La tarjeta cuenta con: un FPGA de alto
rendimiento (XC7A35T-1CPG236C), varios puertos (USB y VGA). Con esta tarjeta se puede implementar los principales diseños combinaciones y secuenciales.
Una de sus principales características es que cuenta con: 16 interruptores (SW), 5 botones pulsadores (push boton), 16 led, una pantalla de 7 segmentos de
4 dígitos y 4 conectores de expansión PMOD; suficientes para realizar una gran variedad de pruebas sin la necesidad de construir hardware adicional. Con los 4
conectores PMOD se pueden utilizar para agregar hardware adicional y darle nuevas características a la tarjeta aumentando las capacidades.
El FPGA ARTIX-7 instalado en la BASYS 3 esta optimizado para ofrecer un alto rendimiento y mejores características que los modelos anteriores, las principales
características de este dispositivo son:
33,280 celdas lógicas en 5200 partes (cada parte tiene 4 LUTs de 6 entradas y 8 flip-flop)
Bloque de memoria RAM de alta velocidad de 1800Kbits
5 administradores de reloj con lazo seguidor de fase (PLL)
90 sectores dedicados para DSP
Reloj interno de 450MHz
Convertidor analógico a digital incorporado en el FPGA
Los principales componentes de la tarjeta de desarrollo BASYS 3 se muestran en la figura, los numero indicados en la figura y la tabla se le sigue muestran la
ubicación de los principales componentes.
Nº Descripción Nº Descripción
1 Led indicador de voltajes correctos 9 Botón de reset del FPGA (restaura la configuración del FPGA)
2 Conectores PMOD 10 Jumper para seleccionar el modo de configuración
3 Conector PMOD que también puede ser utilizado por el ADC interno 11 Conector USB HOST
del FPGA
4 Pantalla de 7 segmentos de 4 dígitos 12 Conector para monitores VGA
5 Interruptores 13 Conector microUSB utilizado para la configuración y para
comunicaciones UART
6 LEDs 14 Jumper para alimentación externa
7 Botones pulsadores 15 Interruptor de encendido
8 LED que indica cuando el proceso de configuración a terminado 16 Jumper que selecciona cual es la fuente de alimentación. Selecciona
entre el conector microUSB o la alimentación externa.
La BASYS 3 esta diseñada para ser programada por el nuevo ambiente de desarrollo de XILINX llamado VIVADO DESIGN SUITE, en la cual hay nuevas
herramientas de diseño que facilitan el desarrollo de proyectos. Se ejecuta mas rápido y permite un mejor uso de los recursos del FPGA y permite a los
diseñadores explorar nuevas alternativas de diseño. El editor de sistemas (System Editor) incluye un analizador logico dentro del chip, la herramienta de síntesis
de alto nivel y ademas de otras herramientas de ultima generación. En la versión gratuita del VIVADO DESIGN SUITE llamada WEBPACK se pueden crear
proyectos en la BASYS 3 fácilmente sin costo adicional.
En la pagina web de DIGILENT hay mas información disponible sobre esta tarjeta de desarrollo: http://www.digilentinc.com/
1- FUENTE DE ALIMENTACIÓN
La BASYS 3 es una tarjeta que puede ser alimentada por medio de una de dos entradas de energía; una es por medio del conector microUSB etiquetado como J4
y la otra es por medio de una fuente de alimentación externa cuya entrada es el jumper etiquetado como J6; el jumper JP2 se utiliza para seleccionar cual de las
dos posibles fuentes de alimentación se utilizara para suministrar energía a la BASYS 3, el interruptor etiquetado como SW16 activa o desactiva todas las
fuentes de alimentación en la tarjeta y el LED LD20 indica que los niveles de voltajes y corrientes son los apropiados, este LED es controlado por un pin del
regulador LTC3633. En la figura se muestra un circuito esquemático conceptual para ejemplificar los distintos niveles de voltaje disponibles en la BASYS 3.
El puerto microUSB (J4) puede suministrar la energía necesaria para la mayoría de los diseños realizables con la BASYS 3, en caso de requerir mayor suministro
de potencia se debe utilizar la alimentación externa en la cual requiere un nivel de voltaje de 4.6V a 5.5V y una capacidad de corriente de por lo menos 1A, si se
desea utilizar la alimentación externa el jumper JP2 debe estar en la posición "EXT". Cuando la alimentación de la tarjeta es por medio del conector externo el
voltaje debe estar regulado a un máximo de 5.5V y un mínimo de 4.6V, ya que este voltaje pasa directo al conector USB HOST sin ninguna regulación y puede
causar daño a los dispositivos que se conecten a este puerto.
El Voltaje externo puede variar según el tipo de aplicación que se este utilizando en la tarjeta; por ejemplo: si dentro de la aplicación se va a utilizar algún
dispositivo conectado al puerto USB HOST (J2) entonces el valor mínimo del voltaje exterior debe ser de 4.6V; en caso de que este puerto no se este utilizando
el valor del voltaje externo puede ser hasta de 3.6V ya que el mayor de los voltajes que se requieren dentro de la tarjeta BASYS 3 es de 3.3V los
cuales están proporcionados por los reguladores de la empresa LINEAR TECHNOLOGY; ademas proporcionan otros niveles de voltajes como: 1.8V y 1V. En la
siguiente tabla se muestra todos los niveles de voltajes y corrientes disponibles en la tarjeta BASYS 3.
Voltaje Uso Dispositivo Regulador de Corriente
Voltaje (Maxima / Tipica)i
5V (Voltaje de Alimentación) Reguladores de Voltajes y Puerto USB HOST Sin regulación 1.5A/1A
3.3V Bloques de entrada/salida del FPGA, Puertos USB, IC10: LTC3633 2A/0.1A hasta 1.5A
Relojes, Conectores PMOD, Memoria Flash
1.0V Nucleo del FPGA IC10: LTC3633 2A/0.2A hasta 1.3A
1.8V Bloques auxiliares del FPGA y memoria RAM IC11: LTC3621 300mA/0.05A hasta 0.15A
2- CONFIGURACIÓN DEL FPGA
Una vez encendida la tarjeta BASYS 3, el FPGA Artix-7 se debe configurar (o programar) antes de poder realizar alguna función. El FPGA se puede configurar por
medio de una de tres fuentes:
1. Por medio de una computadora se puede utilizar el puerto USB-JTAG de DIGILENT (PORTJ4, con la etiqueta "PROG") para programar el FPGA cualquier
momento después de encendida la tarjeta.
2. Desde un archivo almacenado en la memoria SPI FLASH. Esta memoria envía el archivo de configuración al FPGA por medio del puerto SPI integrado al FPGA.
3. Otra posibilidad es desde un archivo de configuración almacenado en una memoria USB que este conectada en el puerto USB HOST al BASYS 3.
La Figura se muestran las diferentes opciones disponibles para la configuración de la FPGA. Con los jumper JP1 etiquetado como MODO se puede especificar
el método por el cual deseamos configurar el FPGA.
Los datos de configuración del FPGA se almacena en archivos llamados bitstream cuya extensión es .bit. El programa VIVADO de Xilinx puede crear los archivos
bitstream a partir de códigos fuentes escritos en lenguajes: VHDL y Verilog o archivos de origen basados en esquemáticos. Los archivos bitstream se almacenan
en el bloque de memoria RAM interna del FPGA. Estos datos le indican al FPGA las funciones lógicas y conexiones del circuito que se desea ejecutar y sigue
siendo válida hasta que se borra mediante la eliminación de la alimentación de la placa o al presionar el botón de reinicio etiquetado como PROG, o escribiendo
un nuevo archivo de configuración utilizando el puerto JTAG.
Un archivo bitstream creado para un FPGA Artix-7 35T ocupa 17 536 096 bit de almacenamiento, transferir este archivo de forma directa puede demorar
mucho tiempo; para reducir el tiempo de transferencia el archivo bitstream es comprimido y los datos son enviados de forma comprimida y dentro del FPGA se
realiza la operación de descompresión y la configuración. Dependiendo de la complejidad del diseño, la compresión puede llegar a ser de 10 veces el archivo
original. La compresión del archivo bitstream se puede activar dentro del entorno de VIVADO para que se produzca durante la generación del archivo. Para
obtener mayor información sobre como hacer la compresión del archivo bitstream le recomendamos consultar la documentación disponible en el sitio web de la
empresa XILINX sobre la ayuda de VIVADO.
Después de haber sido configurada con éxito la FPGA hará que el LED etiquetado como "DONE" se encienda es a partir de este momento en que se puede
empezar a utilizar la tarjeta. Al presionar el botón "PROG" se restablecerá la memoria RAM del FPGA y se volverá a configurar según este el modo de
configuración seleccionado; debemos recordar que están los jumper de selección de la configuración. Las siguientes secciones proporcionan más detalles sobre
la programación de la Basys3 utilizando los diferentes métodos disponibles.
2.1- CONFIGURACIÓN POR MEDIO DE USB-JTAG
Las herramientas de Xilinx normalmente se comunican con los FPGA utilizando el puerto de pruebas o la arquitectura Boundary-
Scan comúnmente conocida como JTAG. Durante la programación por el JTAG el archivo bitstream se transfiere desde la computadora al FPGA utilizando el
circuito USB-JTAG de DIGILENT el cual esta disponible en el puerto microUSB etiquetado como J4 o por el conector externo de JTAG etiquetado como J5 (para
configurar desde este conector se requiere un cable adicional que vende DIGILENT llamado JTAG HS2). La configuración por medio del USB-JTAG se puede hacer
en cualquier momento siempre y cuando el FPGA ya se encuentra configurado, no se puede hacer una configuración nueva si actualmente se encuentra un
proceso activo de configuración desde otra fuente (memoria SPI FLASH o memoria USB). Para configurar desde el USB-JTAG no importa en que estado se
encuentre los jumper de selección del modo de configuración, el usuario debe recordar que cada vez que se crea una configuración nueva la anterior se borra y
se pierde; al menos que este almacenada en un dispositivo de memoria no volátil.
La configuración de la BASYS 3 por medio del USB-JTAG con un archivo bitstream sin compresión puede tardar unos 5 segundos. La configuración se puede
hacer por medio del servidor de hardware de VIVADO. El proyecto de demostración disponible en el sitio web de DIGILENT puede ayudar al lector a comprender
mejor la forma de programar su tarjeta.
2.2- JTAG Programación
La idea de programar una memoria no volátil consiste en enviar un archivo bitstream a la flash. En primer lugar la FPGA se programa con un circuito que puede
programar dispositivos flash y luego los datos son transferidos al dispositivo flash a través del FPGA (esta nivel de complejidad es transparente para los
usuarios de Xilinx). Después de que el dispositivo flash se ha programado el FPGA se puede configurar automáticamente en un nuevo encendido de la tarjeta o
presionando el botón "PROG", debemos recordar que el modo de configuración esta determinado por la posición de los jumper de JP1. Los archivos de
configuración almacenados en el dispositivo flash permanecerán hasta que sean sobrescritos y no serán borrados no importa cuantas veces se encienda y se
apague la tarjeta. La programación de la memoria flash puede tardar hasta uno o dos minutos, sobre todo debido al largo tiempo del proceso de
borrado inherentes a la tecnología de memoria. Una vez grabados los datos en la memoria la configuración del FPGA es muy rápida, puede durar hasta menos
de un segundo. La compresión del archivo bitstream, el ancho del bus SPI y la velocidad de configuración son factores controlados por las herramientas de
Xilinx que pueden afectar a la velocidad de la configuración. La programación de la memoria Quad-SPI se puede realizar utilizando VIVADO.
2.3- USB Host Programación
Usted puede configurar el FPGA de un archivo almacenado en una memoria USB conectado al puerto USB-HOST etiquetado como "J2". El procedimiento es el
siguiente:
1. Formatear la memoria USB con el sistema de archivo FAT32.
2. Coloque un solo archivo de configuración .bit en el directorio raíz de la memoria USB. No deben haber mas de un archivo de configuración en el
directorio raíz de la memoria USB ya que no hay forma de como indicar cual de los dos archivos se debe transferir al FPGA y se produciría un error.
3. Conecte la memoria USB al puerto USB-HOST de la tarjeta BASYS 3.
4. Establezca el modo de configuración en el jumper JP1 en modo de USB.
5. Pulse el botón PROG o apague y encienda la tarjeta BASYS 3.
El FPGA se configurará automáticamente con el archivo bitstream (.bit) en el dispositivo de almacenamiento seleccionado. Cualquier archivo bitstream (.bit) que
no este diseñado para el FPGA de la tarjeta BASYS 3 sera ignorado. El led de estado (LD16) mostrara información visual de avance del proceso de configuración,
la forma en la que muestra la información es la siguiente:
• Cuando se enciende de manera constante indica que el microcontrolador auxiliar (PIC24) está leyendo la memoria USB y esta descargando el archivo bitstream
al FPGA.
• Si el led LD16 parpadea con un pulso lento significa que el microcontrolador (PIC24) está esperando que se conecte una memoria USB al puerto USB-HOST.
• En caso de que el led LD16 parpadee rápidamente es para indicar que se ha producido un error en la configuración del FPGA.
Cuando el FPGA se ha configurado correctamente, el comportamiento del led LD16 sera determinado por el programa que esta grabado en el microcontrolador
PIC24. Por ejemplo, si un teclado USB está conectado producirá un parpadeo rápido señalando que se esta recibiendo datos del teclado.
En la siguiente figura se muestra como debe estar colocado el jumper JP1 para seleccionar el modo de configuración.
3- MEMORIA
La tarjeta BASYS 3 contiene una memoria FLASH SPI de 32Mb (4MB) que esta conectada al FPGA por medio de un puerto SPI en modo QUAD. Las conexiones y
asignaciones de pines entre el FPGA y la memoria FLASH se muestran en la figura. Es en esta misma memoria donde se guardan los archivos de configuración
cuyo numero de parte es: Spansion S25FL032, el espacio que puede ocupar un archivo de configuración es de 2MB, lo que deja cerca de 48% del espacio total
de memoria para uso del usuario, en los que puede almacenar datos.
NOTA: Consulte las hojas de datos del fabricante y los diseños de referencia publicados en el sitio web de Digilent para obtener más información sobre los
dispositivos de memoria.
4- OSCILADORES / RELOJ
En la tarjeta BASYS 3 hay un oscilador 100 MHz conectado al pin W5; este pin esta optimizado para señales de reloj es parte de MRCC (Multi-Region Clock-
Capable) que pertenece al banco 34 (bank 34). Esta señal de reloj se puede conectar el MMCM (Mixed-Mode Clock Manager) o al PLL (Phase-Locked Loop) para
generar señales de reloj de distintas frecuencias y fases que pueden ser necesarias en algunos diseños. Algunas reglas restringen el funcionamiento de los
MMCM y del PLL para operar con el oscilador de 100MHz, para conocer y documentarse sobre las restricciones el usuario debe consultar la documentación que
la empresa XILINX tiene disponible en su sitio web.
Xilinx tiene un IP CORE llamado LogicCORE Clocking Wizard IP para facilitar la generación de señales de reloj que necesite nuestro proyecto. Este CORE IP crea
una instancia para los MMCM y PLL necesarias según la frecuencia requerida y la fase deseada. El asistente creara una salida facil de utilizar y de agregar a
nuestros diseños; el CORE IP se encuentra en el catalogo de IP de VIVADO.
5- USB-UART Bridge (Serial Port)
Otra de las caracteristicas de la tarjeta BASYS 3 es que cuenta con un puerto UART gracias a que tiene instalado un chip FTDI FT2232HQ conectado al puerto
microUSB J4, este integrado permite que la BASYS 3 pueda comunicarse con una computadora mediante comandos standar RS232; los controladores (driver)
necesarios para el correcto funcionamiento en la computadora se distribuyen por internet de forma gratuita disponible en www.ftdichip.com. El FTDI FT2232HQ
se conecta con el FPGA por medio de dos pines llamados TxD y RxD conectados a los pines B18 y A18 respectivamente. Con este mismo integrado es configura
al FPGA cuando se utiliza una computadora. Hay dos led que indican el estado de los procesos de transmisión o recepción con la siguiente convención: la
transmisión se muestra en el led LD18 y la recepción en el LED LD17. Los nombres de las señales están dados desde el punto de vista de la computadora, por lo
que cuando se dice que el pin B18 del FPGA esta conectado a la señal TxD quiere decir que ese pin debe ser un pin de entrada ya que por alli llegaran los datos
desde la computadora y cuando se dice que el pin A18 esta conectado a la señal RxD quiere decir que este pin debe ser un pin de salida y es por este pin que el
FPGA envia datos a la computadora. El chip FT2232HQ se utiliza como controlador del puerto USB-JTAG de DIGILENT para la configuración del FPGA; aunque es
el mismo puerto fisicamente el que se utiliza para: configurar el FPGA y para comunicación con la PC, no hay problema alguno ya que estas
dos características funcionan bien de forma simultaneas, lo que significa que si en su diseño se requiere de la comunicación con una PC por medio de puerto
UART el puerto USB-JTAG no interferirá en su ejecución ni viceversa. El puerto microUSB J4 se puede utilizar como alimentación de la BASYS 3
Las conexiones entre el FT2232HQ y el FPGA Artix-7 se muestran en la figura.
6- USB HID HOST
LA BASYS 3 cuenta con un microcontrolador PIC24, que le ofrece a la tarjetas la capacidad de poder conectar: una memoria USB, un teclado o un mouse. Solo se
puede conectar uno de estos tres dispositivos no se ofrece la característica de HUB. Cuando se enciende la tarjeta, el microcontrolador verifica si hay alguna
memoria USB conectada en el puerto USB HOST J2 y si los jumpers de selección de modo de configuración están en la posición de "USB" el microcontrolador
inicia un proceso de configuración del FPGA. En el resto del tiempo el microcontrolador PIC24 funciona como un controlador de teclado y mouse para
conectarlos al FPGA con un protocolo de comunicación PS/2.
7- PUERTO VGA
La BASYS 3 cuenta con un puerto VGA para ofrecer capacidad a la tarjeta de poder controlar un monitor RGB, la profundidad del color que pueden ser
generados es de 12bits (4 bits rojo, 4 bits verde y 4 bits azules) es por eso que el FPGA tiene disponible 12 señales conectadas al conector VGA por medio de
resistencias que tienen la función de crear un sumador ponderado y que a su vez genera una señal analógica gracias a que internamente en el monitor debe
haber una resistencia de 75 ohms; ademas de las señales de color están las señales de sincronización vertical (VSYNC) y horizontal (HSYNC). La
señal analógica generadas para los colores varia entre 0V y 0.7V, con 12 bits para generar colores se pueden crear 4096 colores
Para facilitar el uso del puerto VGA se le recomienda al usuario consultar la información del funcionamiento de monitores de tubos de rayos catódicos
(CRT), también recomendamos al lector a consultar el manual de referencia de la BASYS 3 en donde encontrara una mayor información.
8- E/S BÁSICA
Dentro de la gran gama de hardware instalado en la BASYS 3 se encuentras los dispositivos de uso común en aplicaciones lógicas estándar entre lo que
tenemos: 16 interruptores, 5 botones pulsadores, 16 led, 4 pantallas de 7 segmentos. En la figura se muestran los pines a los cuales están conectados cada
dispositivo. Los interruptores y botones están conectados a resistencias en serie para evitar posibles daños producto de corto circuitos; mientras que la
conexión para las pantallas de 7 segmentos se realiza por medio de un circuito que hace que su funcionamiento sea multiplexado y los led están conectados
para funcionar en modo alto activo.
9- CONECTORES PMOD
Los conector PMOD son utilizados para agregar hardware a la BASYS 3, el PMOD consta de 12 pines (8 de datos, 2 alimentación y 2 de GND) dentro de los
cuales hay pines de alimentación lo que es muy útil ya que el conector puede suministrarle energía al hardware (el consumo no debe sobrepasar de 1A), el nivel
de voltaje en los pines de alimentación (pin 6 y 12) es de 3.3V y los pines de tierra son los pines 5 y 11.
PMOD A Pines PMOD B Pines PMOD C Pines PMOD XDAC Pines
JA1 J1 JB1 A14 JC1 K17 JXADC1 J3
JA2 L2 JB2 A16 JC2 M18 JXADC2 L3
JA3 J2 JB3 B15 JC3 N17 JXADC3 M2
JA4 G2 JB4 B16 JC4 P18 JXADC4 N2
JA5 GND JB5 GND JC5 GND JXADC5 GND
JA6 VCC JB6 VCC JC6 VCC JXADC6 VCC
JA7 H1 JB7 A15 JC7 L17 JXADC7 K3
JA8 K2 JB8 A17 JC8 M19 JXADC8 M3
JA9 H2 JB9 C15 JC9 P17 JXADC9 M1
JA10 G3 JB10 C16 JC10 R18 JXADC10 N1
JA11 GND JB11 GND JC11 GND JXADC11 GND
JA12 VCC JB12 VCC JC12 VCC JXADC12 VCC
9.1- Dual Analog / Digital Pmod
Dentro de la BASYS 3 hay un conector PMOD etiquetado como "JXADC" el cual tiene funcionalidad de convertidor analógico digital; dependiendo de la
configuración este conector se puede utilizar para señales analógicas o para señales digitales, cuando se trabajan las señales analogicas se pueden utilizar
como señales apareadas o como señales simples o individuales. Cada señal analógica cuenta con un filtro anti alias parcialmente instalado, para que el filtro
este completamente funcional se debe instalar los capacitores C33 al C36 estos capacitores no se instalan de fabrica, es el usuario el que debe instalarlo. El
usuario debe considerar que la instalación de los capacitores del filtro anti alias afecta al funcionamiento de las señales digitales en caso que este puerto sea
utilizado como entrada/salida digital.
El convertidor ADC del FPGA Artix-7 es un convertidor de 12bits de doble canal capaz de operar a 1MPS, el ADC puede tomar como entrada cualquier señal del
conector PMOD, la configuración se puede cambiar por medio de la reconfiguración dinámica de puertos (DRP). El DRP puede monitorear el nivel de tensión en
los pines de alimentación y en el sensor de temperatura interno del FPGA. Para mas información sobre el ADC interno del FPGA recomendamos consultar
la información que la empresa XILINX tiene disponible en su sitio web, como recomendación especial tenemos el archivo: “7 Series FPGAs and Zynq-7000 All
Programmable SoC XADC Dual 12-Bit 1 MSPS Analog-to-Digital Converter.”
10- PRUEBA DE FABRICA
Cuando se fabrica la tarjeta BASYS 3 se prueba todas sus características, al momento de la venta la tarjeta viene con un programa DEMO que prueba las
principales características. El archivo de configuración esta almacenado en la memoria FLASH SPI incorporada y cuando la tarjeta se enciende se configura con el
proyecto DEMO automáticamente. El proyecto DEMO esta disponible en el sitio web de la empresa DIGILENT. A continuación describiremos el funcionamiento
del proyecto DEMO:
Los led se controlan por medio de los interruptores. Se puede apagar y encender los led por medio de los interruptores.
En el puerto VGA se muestra un puntero de un mouse conectado en el puerto USB-HOST. Con esto se prueba el conector VGA y el puerto USB-HOST
En las pantallas de 7 segmentos se muestra una cuenta de 0 a 9 que se incrementa cada segundo, con los botones (BTNU, BTNL, BTNR y BTND) se puede
controlar cada dígito de la pantalla de 7 segmentos, cuando los botones se presionan unos de los dígitos de la pantalla de 7 segmento se apaga; si se
presiona el botón central (BTNC) la cuenta se restablece. Aquí se esta comprobando la funcionalidad de: las pantallas de 7 segmentos, el oscilador de
100MHz ya que debe contar cada un segundo y los botones.
En el encendido el FPGA envía un mensaje de bienvenida por el puerto UART el cual se puede ver en una computadora usando un programa como HYPER
TERMINAL configurado para comunicaciones a: 9600 baudios, 8 bits de datos, 1 bit de parada y sin bit de paridad.
Todas las tarjetas BASYS 3 son 100% verificadas en la fabrica. DIGILENT sostiene que si una de sus tarjetas muestra algún defecto en sus funcionamiento este se
debe a daños sufrido en el envió del producto. Un posible daño que se puede presentar con el tiempo es producto a soldaduras frías y suciedad en los
contactos de los interruptores.