-
Notifications
You must be signed in to change notification settings - Fork 3
IceStudio To Jedec for GAL22V10
En este apartado vamos a intentar exponer como partiendo de un proyecto en IceStudio podríamos migrarlo de tal forma que lo podamos utilizar en una PLD del tipo GAL22V10 de lattice ( Se podría usar otro modelo de lattice ). El objetivo principal es poder mostrar como se podrían implementar pequeños circuitos digitales en dispositivos como la GAL22V10 que hoy en día están en desuso pero que pueden aportar un gran valor a proyectos de pequeño tamaño (o gran tamaño si se quiere, usando muchos de ellos juntos).
Vamos a mostrar brevemente la estructura de una GAL22V10:
Nuestro dispositivo contiene 11 pines que sólo pueden ser usados como entrada, un pin 1 que puede ser configurado como entrada pero que en caso de usar lógica secuencial se debe respetar y ser el pin por el cual se introduce la señal de reloj que ataca los biestables D. Por otra parte, tiene otros 10 pines que pueden ser configurados como entrada/salida/salida biestable, todos estos pines de entrada/salida pueden usarse junto con los biestables y matriz AND de 132x44 para crear un circuito lógico combinacional/secuencial de tamaño pequeño pero que si se tuviese que implementar usando circuitos integrados tipo 74HC04...nos formarían un circuito de gran tamaño, incómodo de trabajar por ejemplo en una protoboard o sobre una pcb donde el tamaño sería considerable.
Para mostrar el caso de uso, vamos a realizar un pequeño ejemplo donde se usará la GAL22V10 para crear un contador que con cada ciclo de reloj se muestre sobre un display de 7 segmentos un valor de 0 a 7.
El ejemplo es el siguiente:
Si observamos el ejemplo, podemos ver que para "cuenta"(contador) usamos un registro de 3 bits por lo que nos va a consumir 3 de los biestables disponibles y por otra parte hemos usado un registro de 7 bits ("display") para el display de siete segmentos por lo que consumiremos los otros 7 biestables de salida que nos quedan disponibles por lo que ya habremos consumido las 10 posibles de salida disponibles. Esto hay que tenerlo en cuenta a la hora de diseñar nuestro sistema ya que el dispositivo usado en el ejemplo es un tanto limitado.
Si abrimos nuestro "Display7.ice" en Icestudio y lo exportamos a verilog podemos obtener un fichero "Display7.v" con el cual continuaremos trabajando sobre él. Podemos ver una explicación de como hacer el proceso de exportación a Verilog con un poco más de detalle en el siguiente enlace:
Cómo exportar a Verilog (*.ice --> *.v )
Siguiendo las instrucciones de exportación anteriores y usando el siguiente documento donde se explica como usar el software "IspLever" de lattice;
podemos obtener un fichero Verilog como este:
Como detalle, observar que para definir a que pin se asigna una salida/entrada, se debe usar como un comentario especial que "ispLever" entenderá más tarde y que debe estar puesto en la definición de las entradas/salidas del módulo creado de la forma:
output [6:0] display; /*synthesis LOC="P20,P19,P18,P17,P16,P15,P14"*/
Aquí a display[7] se le asigna el pin número 20 del dispositivo GAL22V10D,
a display[6] se le asigna el pin P19 ...
A la única entrada que tenemos "clk" en este caso no le asignamos ningún pin
ya que la señal de reloj de la GAL22V10 solo puede ir por el pin 1 del
dispositivo y así lo entiende por defecto "ispLever".
Para instalar "ispLever Classic 2.0" se debe desintalar de la página oficial de lattice, debemos tener una cuenta creada y se debe solicitar una licencia que nos enviarán por correo para poder usar el software de lattice.
Una vez llegados a este punto usando el software "ispLever" de lattice, se creará un proyecto nuevo donde le asignaremos el dispositivo a usar, en nuestro caso como es un dispositivo obsoleto, habrá que marcar la opción de "Show Obsolete Devices" para poder encontrar nuestra GAL22V10D.
A continuación indicaremos el fichero fuente del tipo verilog y pulsando sobre JEDEC File nos creará el fichero JEDEC que emplearemos para grabar la GAL22V10. Pulsando en "Chip Report", nos mostrará el esquema de como queda la asignación de los pines-señales del dispositivo elegido.
Una vez obtenido nuestro fichero "jedec" necesario para la grabación de nuestra GAL, usaremos un grabador universal como el TL866 (Grabador que tenía disponible) y el software que trae "MiniPro Programmer" para seleccionar el dispositivo y volcar el fichero jedec al dispositivo GAL obteniendo así un dispositivo que realizará las función programada en el fichero *.ice original.
Aquí podemos ver un video del resultado final ( en este caso la señal de reloj que necesita la GAL22V10 se la proporcionamos desde un pin de la IceStick ).