Con Icestudio podemos hacer nuestros propios bloques personalizados. Esto es muy útil cuando necesitamos un determinado dispositivo para nuestro proyecto y no está disponible en la colección. Por ejemplo puertas lógicas de tres o más entradas.
En el siguiente tutorial veremos como hacer bloques con Icestudio partiendo de puertas básicas y como añadir ese bloque a una colección.
Para materializar este tutorial me he basado en el Ejemplo 3 del taller Makespace que se celebró el 8 de julio de 2017 en Madrid. Puedes consultar toda la información aquí.
Vamos a hacer una colección de puertas lógicas de tres entradas. En este primer ejemplo haremos una puerta OR.
Como la asignatura de Electrónica Digital me queda ya muy lejos y no tengo ganas de desempolvar los apuntes en el trastero, he buscado en internet como hacer puertas lógicas de tres entradas a partir de puertas básicas. Esto es lo que tenemos que hacer para una OR de tres entradas.
Abrimos un proyecto nuevo, pinchando en Archivo→Nuevo. Como si de un proyecto cualquiera se tratase, añadimos tres entradas, dos puertas OR y una salida.
Hacemos doble clic en el icono de salida. Borramos el nombre y desmarcamos la casilla FPGA pin. Clic en OK.
El pin de salida se transforma en un bloque verde. Indica que es una salida, pero del bloque, no de la FPGA. Y por tanto no está asociada a ningún pin físico.
Con esto ya tenemos definida la funcionalidad de nuestro bloque.Lo siguiente es cambiar sus propiedades. Pinchamos en Editar→Información del proyecto y rellenamos las casillas con la información que corresponda. También podemos cambiar el icono de la puerta si así lo deseamos haciendo clic en Open SVG.
Cableamos las puertas como vimos en la imagen más arriba
Al terminar damos a OK y guardamos el proyecto en Archivo→Guardar Como. Le damos el nombre que queramos, por ejemplo Puerta OR tres entradas.ice y ya tenemos nuestro bloque listo para ser usado desde otros proyectos de Icestudio.
Abrimos un proyecto nuevo Archivo→Nuevo. Incluimos el nuevo bloque desde la opción Archivo→Añadir como bloque… Seleccionamos el archivo que acabamos de guardar y aparece nuestro bloque ¡vaya pasada!
Ahora podemos añadir las entradas y la salida para hacer pruebas con él como si fuera una puerta más.
Los bloques personalizados los podemos incluir en nuestros diseños con la opción que hemos visto antes: Archivo→Añadir como bloque. Pero también los podemos incluir en nuestra colección, para que aparezcan en el menú.
Voy a incluir el bloque en la colección del taller de makespace17 porque es de las más completas. Para ello seguimos los siguientes pasos:
Paso 1: Descarga la colección aquí
Paso 2: Descomprimir el zip
En el directorio que queramos, descomprimimos el fichero .zip. Se crea la carpeta makespace-17. Ir a makespace-17→blocks→Puertas
Paso 3: Copiar el archivo Puerta OR tres entradas.ice
Todas las carpetas que se encuentran en makespace-17/Blocks se corresponden con las opciones que aparecen en la parte superior derecha del menú: Const, Puertas, Varios. Cualquier directorio o sub-directorio que creemos, aparecerá como un menú o sub-menú
Paso 4: Comprimir la carpeta makespace-17 en ZIP
Ahora nos situamos en la carpeta original y comprimimos la carpeta makespace-17 a fichero ZIP. Hay que usar WinZip, con WinRar no me ha funcionado.
Para terminar instalamos la colección como si de una más se tratase.
Herramientas→Colecciones→Añadir y seleccionamos el archivo .zip que acabamos de crear. Nos aparecerá una ventana con la opción de cambiar el nombre a la colección
Yo he cambiado el nombre añadiendo _V4 al final para distinguir ambas colecciones, pero se puede añadir sin más dando a OK. Aparece otra ventana preguntando si queremos reemplazarla.
Le damos al OK. ¡Listo!
Paso 5: Usar el nuevo bloque
Ya tenemos nuestro bloque listo para ser usado en el menú Puertas
Lo seleccionamos y ¡ya está! aparece en pantalla listo para ser utilizado en nuestro proyecto.
Bueno, pues como dicen en mi pueblo El que hace un cesto hace ciento, así que aquí abajo dejo los sketch por si alguno quiere practicar y hacer los bloques.
De todas formas están disponibles para descargar al final de la página.
Recordad que aunque están en formato comprimido .zip no es una colección, son bloques de Icestudio para que cada uno los añada a la colección que desee.
Debido a las especiales características de la IceZUM Alhambra, para que los pulsadores externos funcionen correctamente, hay que seguir estas recomendaciones.
En función del pin donde se vaya a conectar el pulsador debes tener en cuenta lo siguiente:
Hay 4 tipos de pines:
D0-D13 (5V, convertidores tipo push-pull):
Resistencia de pull-up/pull-down: Típico 1K, máximo 2K2
El dispositivo externo tiene que poder suministrar/absorber 2mA mínimo.
DD0-DD3 (5V, convertidores tipo push-pull + Open-drain):
Resistencia de pull-up: No es necesaria, está dentro del convertidor
Resistencia de pull-down: Típico 1K, 2K2, máximo 4K7
El dispositivo externo tiene que poder absorber 2mA mínimo.
DD4, DD5 (5V, convertidores tipo push-pull + Open-drain con pull-up externo de 4K7 para I2C):
Resistencia de pull-up: No es necesaria, está dentro del convertidor y en la placa
Resistencia de pull-down: Típico 470R, máximo 680R
El dispositivo externo tiene que poder absorber 8mA mínimo.
GP0-GP7 (3.3V, directo a la FPGA):
Resistencia de pull-up/pull-down: Típico 1K a 100K, depende de la aplicación
El dispositivo externo tiene que poder suministrar/absorber: sin limitación en la práctica.
Gracias a Eladio por la información.
Más sobre pulsadores externos en el grupo FPGAwars.
Taller de Electrónica Digital para Makers con FPGA´s Libres Makespace Madrid 2017
Descarga los bloques de Icestudio de puertas lógicas de 3 y 4 entradas aquí.