Verilog Práctico

Capítulo 1. 

Instalación del software y circuito Hola Mundo.

 1 de enero de 2021

Si tienes una Alhambra FPGA  seguramente has seguido los tutoriales del gran Obijuan con Icestudio y hayas aprendido un montón acerca de este apasionante dispositivo. Si quieres profundizar en el mundillo FPGA y sacarle más partido a tu Alhambra, el siguiente paso es aprender Verilog.

Así que empezamos 2021 con una serie de entradas sobre Verilog. Vaya por delante que no soy experto en la materia, mi intención es compartir lo que voy aprendiendo acerca de este lenguaje y si sirve de ayuda o inspiración doy mi tiempo por bien empleado.

En el github de Obijuan hay un magnífico tutorial sobre Verilog con la placa Icestick bajo Linux, el problema es que no sé mucho de Linux ni tengo una Icestick, por eso me he decidido a escribir esta serie de entradas, para aquellos que como yo quieran  aprender Verilog con la Alhambra y Windows 10.

No sé si escribiré cinco entradas o cincuenta, pero de momento ilusión y ganas de aprender no me faltan, así que vamos al lío.

En este primer capítulo veremos cómo instalar el software necesario y haremos un sencillo circuito Hola Mundo para verificar que todo funciona correctamente. Básicamente necesitamos instalar Atom + el plugin APIO, aunque otras aplicaciones corren por debajo.

1. Descarga Icarus Verilog e instálalo en el directorio por defecto.

2. Selecciona las dos opciones.

3. Clic en Next

4. Marca las dos opciones

5. Clic en Install

6. Clic en Finish

7. Si no lo tienes instalado, instala Phyton y añadelo a path de Windows.

Botón derecho sobre Mi PC y clic en Propiedades.

8. Ir a Configuración avanzada del sistema.

9. Clic en Variables de entorno.

10. Clic en Path --> Editar

11. Clic en Nuevo.

12. Clic en Examinar.

13. Se abre una ventana. Buscar y añadir las carpetas Python y Python Scripts.

15. Debe quedar así:

Para completar la instalación de las herramientas necesarias sigue los pasos del siguiente vídeo. Mil gracias a Fernando Urbano  por este vídeo; sin duda ha sido de gran ayuda.

Si ya has programado la Alhambra con Icestudio, omite la parte de instalación de los drivers.

Después de este proceso ya deberías tener todo configurado y funcionando correctamente. Como habrás visto, en el vídeo hay un pequeño sketch para encender un led y comprobar que todo está ok.

Otra forma de comprobarlo es con la instrucción setbit. Pincha en el link para más info.

Todo proyecto con Verilog necesita tres cosas: el archivo apio.ini que se crea al inicializar un proyecto desde Apio -> Initialize Proyect el archivo .v con el programa en Verilog y el archivo .pcf donde asignamos los pines a las salidas.

Es decir, en la carpeta donde inicialices el proyecto debes tener esos tres archivos, más otros que se crean al verificar y construir la toolchain para programar la Alhambra. Debe quedar como en la imagen siguiente:

Veamos un ejemplo con el comando setbit. Copia y pega el siguiente código en Atom, puedes llamar a los archivos setbit.v y setbit.pcf 

Súbelo a tu Alhambra y verás como se ilumina el LED0. Es posible que se ilumine algún led más ya que no hemos especificado su estado.

// Encendiendo el LED0 con setbit


module setbit(output LED0);


wire LED0;

assign LED0 = 1;


endmodule

El archivo .pcf es el siguiente:

set_io LED0 95 

Para verificar todos los ledes y a modo de ejercicio práctico puedes probar el siguiente código:

// setbit ejemplo con 8 bits

module setbit(output LED0, LED1, LED2, LED3, LED4, LED5, LED6, LED7);


wire LED0;

assign LED0 = 1;

wire LED1;

assign LED1 = 0;

wire LED2;

assign LED2 = 1;

wire LED3;

assign LED3 = 0;

wire LED4;

assign LED4 = 1;

wire LED5;

assign LED5 = 0;

wire LED6;

assign LED6 = 1;

wire LED7;

assign LED7 = 0;


endmodule

El archivo .pcf es el siguiente:

set_io LED0 95

set_io LED1 96

set_io LED2 97

set_io LED3 98

set_io LED4 99

set_io LED5 101

set_io LED6 102

set_io LED7 104 

Tras subir este ejemplo verás como los ledes pares están encendidos y los impares apagados. ¡Enhorabuena! has programado tu Alhambra directamente en Verilog ¡qué pasada!

Eso es todo por el momento. 

¡Hasta pronto!