Verilog con BASYS 3

Capítulo 1. Instalación de Vivado y circuito hola mundo

31 de enero de 2024

Comenzamos nueva serie de tutoriales sobre Verilog, esta vez con la tarjeta BASYS 3.

En este primer capítulo veremos cómo instalar Vivado y haremos un sencillo circuito Hola Mundo para comprobar que todo funciona correctamente.


Instalación de Vivado


Para la instalación de Vivado seguir este tutorial:

Por defecto la tarjeta Basys 3 -y otras muchas- no están incluidas en la suite Vivado.


Para que nuestra tarjeta aparezca entre las opciones de configuración hay que añadirla manualmente. En la página de soporte de Digilent  se explica el proceso.


Básicamente hay que descargar unos Archivos de configuración en formato .zip, lo descomprimimos y abrimos a la carpeta \vivado-boards-master\new y copiamos el contenido de la carpeta boards_files.

Vamos a la ruta donde se ha instalado Vivado y en la carpeta \data\boards\board_files  pegamos el contenido de board_files que hemos descargado y descomprimido.

Si la carpeta board_files no existe lo que hacemos es crearla o pegamos la carpeta entera que hemos descargado ya que se llaman igual.


Lanza Vivado y ve a Settings.

En el menú General pincha sobre los puntitos de Project device.

En el menú Boards selecciona la Basys3 y listo.

Hola Mundo


Para irnos familiarizando con Vivado y la tarjeta Basys 3, veremos cómo hacer un sencillo proyecto en el que encenderemos varios ledes empleando los pulsadores e interruptores de la Basys 3.


Sigue estos pasos para crear el proyecto en Vivado.


En la ventana de inicio, clic en Create Project. 

Introducir un nombre para el proyecto y establecer la ruta de la carpeta donde se guardarán los archivos, luego clic en Next. 

Marcar la opción Do not specify sources at this time y clic en Next. 

Seleccionar la tarjeta que vamos a utilizar para este proyecto. Para ello clic en Boards en la parte superior izquierda, seleccionar la Basys 3 y clic en Next. 

En la siguiente ventana, clic en Finish. 

Se abre el marco de trabajo de Vivado. Clic en el icono + Add Sources 

En la siguiente ventana, seleccionar la opción Add or create design sources, luego clic en Next. 

Si tenemos el código Verilog ya escrito lo podemos añadir aquí clicando en Add Files. Si vamos a escribir el código desde una página en blanco, hacemos clic en Create File. 

Poner un nombre al archivo y clic en OK. 

En la siguiente ventana, clic en Finish. 

En la siguiente ventana, clic en OK. 

En la siguiente ventana, clic en Yes. 

Volvemos al menú principal y en la ventana Sources hacemos doble clic en nuestro archivo Verilog top_module.v 

Y se abre la ventana donde escribiremos el código Verilog de nuestro proyecto.

Declaramos cinco interruptores y cinco pulsadores como entradas. Para las salidas declaramos diez ledes y mediante asignaciones continuas, asignamos a cada led un pulsador o interruptor.

Cuando terminemos de describir el circuito, clic en guardar. 

Una vez escrito el código Verilog, el siguiente paso es  mapear las entradas y salidas.


El archivo que describe el mapa de la tarjeta Basys 3 está disponible para descargar aquí: Digilent / digilent-xdc files.


Para añadir este archivo al proyecto vamos al menú Sources y hacemos clic en icono del símbolo + 

Seleccionamos la opción Add or create constraints y clic en Next. 

En la siguiente ventana clic en Add files. 

Haciendo clic en el icono v navegamos hasta la ubicación del archivo Basys3_Master.xdc lo seleccionamos y clic en OK. 

En la siguiente ventana marcar el check box Copy constraints into project y clic en Finish. 

Vamos al menú Sources y hacemos doble clic en el archivo Basys3_Master.xdc.

Se abre el archivo que contiene el mapa de E/S de la tarjeta Basys 3.

Lo que hacemos es quitar la almohadilla de aquellas entradas y salidas que vamos a asignar a nuestro proyecto y cambiamos el nombre original por el que hayamos puesto en el código Verilog. Para los interruptores, debe quedar como en la imagen siguiente.

Para los ledes. 

Para los pulsadores. 

Para los ledes. 

Después de modificar el archivo  hay que guardar los cambios para generar el bitstream correctamente. 

Vamos a los menús verticales del lado izquierdo y hacemos clic sobre la opción Generate Bitstream. 

En la siguiente ventana clic en OK. 

Si no hay errores en el código y hemos mapeado bien las entradas y salidas, el bitstream se generará correctamente y se abre la siguiente ventana. Este proceso dura varios minutos. 

Seleccionar Open Hardware Manager para cargar el archivo a la FPGA y clic en OK. 

Salimos a la ventana principal. Vemos que la tarjeta no está conectada. Para conectar la Basys 3 con Vivado hacemos clic en Open target y Auto Connect. La tarjeta debe estar encendida y  conectada a un puerto USB del PC. 

Pasados unos segundos la conexión se realiza con éxito y la tarjeta aparece en el HW Manager. Para programar la Basys 3 hacemos clic en Program device. 

En la siguiente ventana, clic en Program. 

El bitstream se sube a la Basys 3 en unos segundos y la FPGA ya está programada. Veremos cómo los ledes se iluminan en función del valor de las entradas que introducimos con los switches. 

Para ver el esquema RTL del código Verilog vamos a los menús verticales situados a la izquierda y hacemos clic en Open Elaborated Design. 

Se muestra en pantalla una barra de progreso y al cabo de un rato vemos el esquema correspondiente al código Verilog que hemos descrito.