Verilog con BASYS 3

Capítulo 2. Puertas lógicas

1 de febrero de 2024

En este segundo capítulo veremos un sencillo tutorial sobre cómo describir puestas lógicas en Verilog. Además, para irnos familiarizando con la suite Vivado, explicaremos paso a paso cómo hacer el proyecto de principio a fin.


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 quince interruptores como entradas. Para las salidas declaramos siete ledes y describimos las puertas lógicas por su estructura, es decir: logic gate (output, input1, input2, ...,inputn);

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 de salida.

Para los interruptores de entrada.

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. 

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. 

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.