[AYUDA/PRUEBA][ICESTUDIO] Display 7 segmentos

256 views
Skip to first unread message

Sjædric Moreno

unread,
May 9, 2017, 5:54:34 PM5/9/17
to FPGAwars: explorando el lado libre
Hola amigos jedis de FPGAwars,

Este es el primer tema que publico en la lista, y pido disculpas de antemano por todos los errores que pueda acometer.
El SAV es creciente en mi, y la espera de mi IceZum Alhambra no trunca mis deseos de explorar el lado libre de la fuerza!

He estado probando las diferentes herramientas y conocimientos que la comunidad jedi habéis aportado para que personas como yo, con muy poco conocimientos del tema, podamos disfrutar y aprender los caminos de la fuerza libre.

El echo es el siguiente:
    ·He estado creando pequeños códigos con icestudio para familiarizarme con él, y gracias a la documentación existente he empezado a aprender verilog.
    ·Esto me ha llevado a implementar un pequeño código para encender los leds de la IceZum de forma que se puedan representar los números en un display de 7 segmentos (adjunto el código siguiendo la filosofía de los maestros de la fuerza libre).

Al no disponer del sable (espada) Alhambra no puedo confirmar que voy por buen camino, y por eso recurro a la comunidad, esperando que algún jedi pueda ayudarme (al verificar el código no me da error!! yuupiii!! lo mio me ha costado :p ).
Mi petición reside en que algún jedi que disponga del sable lo pruebe, o que simplemente alguien con suficiente experiencia y conocimiento me pueda confirmar cual es mi estado, si ando o no muy descarriado!

Muchas gracias de nuevo por todo lo que la comunidad está desarrollando y aportando, mi más sincero apoyo! Muchas gracias de verdad.

PS: He vuelto a encontrar el espíritu de cuando era niño y mis padres me regalaban juguetes de LEGO. Esto es increíble!

Display7Segmentos.ice

Jose Pico

unread,
May 10, 2017, 7:12:34 PM5/10/17
to FPGAwars: explorando el lado libre
Hola compañero:

lo he descargado y sintetiza bien.
No he podido probarlo pero así a simple vista te diría que de momento añadieses un módulo Debouncer para que no te capte pulsos indeseados y luego no acabo de entender
muy bien tu código.
Entiendo que quieres hacer un contador que vaya mostrando en función de la cuenta el valor en el 7 segmentos.
con un contador de 4 bits te sobra y con el case para en función de la cuenta mostrar una cosa u otra entiendo que te bastaría.

Saludos

Sjædric Moreno

unread,
May 10, 2017, 7:52:54 PM5/10/17
to FPGAwars: explorando el lado libre
Hola Jose,

Gracias por la respuesta!!
He añadido un Debouncer y he limpiado el código del sinfín de pruebas que hice.
La verdad que al descargar el código que compartí me he dado cuenta de que no era el definitivo, por lo que es normal que no se entendiese muy bien, aunque por otra parte me alegra que igulmente funcionase!
Adjunto el nuevo con una imagen para facilitar su visionado sin tener que descargar.
Que os parece? con esto bastaría para ir canviando de valor el display?

Muchas gracias de nuevo Jose por la respuesta, me ayuda mucho el soporte de la comunidad, pues en estos menesteres me encuentro solo!

Display7Segmentos-v2.ice
Auto Generated Inline Image 1

Jesús Arroyo

unread,
May 11, 2017, 3:50:19 AM5/11/17
to FPGAwars: explorando el lado libre
Buenas:

Aunque aún no está implementado en Icestudio, puedes probar a simular tu circuito utilizando apio. En el flujo de trabajo de diseño de hardware siempre es preferible simular y luego sintetizar.

Para simular tu circuito tienes que instalar apio: http://apiodoc.readthedocs.io/en/latest/source/installation.html, así como los paquetes necesarios: http://apiodoc.readthedocs.io/en/latest/source/quick_start.html.

Luego tienes que extraer con Icestudio los siguientes ficheros en File > Export... en un directorio nuevo:
  • Verilog: este fichero contiene el código verilog generado de tu circuito. Siempre que hagas un cambio en el circuito debes exportar este fichero para que se actualize.
  • PCF: contiene la lista de pines de la FPGA utilizados. Esto es sólo necesario para sintetizar el circuito, no para simular.
  • Testbench: este es el banco de pruebas en verilog. Se genera una plantilla a partir de los puertos de entrada/salida (y parámetros) de tu circuito. A partir de esta plantilla puedes definir la simulación asignando valores a las entradas de tu circuito. También puedes modificar la escala y tiempo de la simulación.
  • GTKWave: este fichero contiene la configuración para la previsualización de las señales con GTKWave. Se modificará cada vez que guardes desde GTKWave.

Con tu circuito he probado lo siguiente:


He eliminado el debouncer para la simulación puesto que el reloj de la FPGA es de 12MHz, pero en la simulación usaremos una frecuencia mucho más baja. He extraido todos los ficheros en un directorio (los adjunto en el correo).



Por defecto todos las entradas de la simulación se inicializan a cero. He añadido manualmente al Testbench el siguiente código en la sección del // TODO:


  #1 PushBotton = 1;
  #1 PushBotton = 0;
  #1 PushBotton = 1;
  #1 PushBotton = 0;


Esto crea dos pulsos (cada uno de duración #1). Finalmente lanzamos la simulación con "apio sim". Este comando utiliza Icarus Verilog para generar la simulación y GTKWave para visualizarla:




Según la simulación, cuando la entrada es 0 el display muestra un valor, y cuando es 1 muestra otro valor, pero no se acumula, por lo que habría que añadir un contador que cuente con cada flanco de subida del botón.


Cuando hagas modificaciones en el circuito, símplemente exporta el fichero Verilog y ejecuta "apio sim" de nuevo.


Un saludo!

Display7Segmentos-v2_tb.v
Display7Segmentos-v2_tb.gtkw
Display7Segmentos-v2.pcf
Display7Segmentos-v2.v

Jose Pico

unread,
May 11, 2017, 4:03:50 AM5/11/17
to FPGAwars: explorando el lado libre
Hola:

Te faltan cosas:

1)  un contador que cuente los pulsos introducidos ( contador de 4 bits te sobra)
    
      always @(posedge clk)   // cada vez que se genere el pulso del botón
      begin
  
         aumento cuenta
   
      y en función de la cuenta  Case(contador)
      
       asigno salidas    

      end

     

El jueves, 11 de mayo de 2017, 1:52:54 (UTC+2), Sjædric Moreno escribió:

Jesús Arroyo

unread,
May 11, 2017, 4:22:51 AM5/11/17
to FPGAwars: explorando el lado libre

Buenas:


Añado una posible solución incluyendo el contador, como comenta Jose.



Cuando llega a 9 se resetea el contador para que en el siguiente pulso muestre el 0 (también se puede comparar con hA para que de apage el display entre el 9 y el 0)

En este caso se ve en la simulación que funciona correctamente:



Un saludo.

Display7Segmentos-v3.v
Display7Segmentos-v3.ice
Display7Segmentos-v3_tb.v
Display7Segmentos-v3_tb.gtkw
Display7Segmentos-v3.pcf
Auto Generated Inline Image 1
Auto Generated Inline Image 2

Sjædric Moreno

unread,
May 11, 2017, 4:39:04 AM5/11/17
to FPGAwars: explorando el lado libre
MadreMia!!  Soys unos crack!!!

He aprenido muchísimo en dos minutos! No se que haría sin vosotros, muchísimas gracias Jose y Jesús.
En cuanto llegue a casa esta tarde-noche me pongo con los cambios e instalo el apio!

Gracias de nuevo!

Sjædric Moreno

unread,
May 13, 2017, 2:26:26 PM5/13/17
to FPGAwars: explorando el lado libre
Buenas de nuevo,

No consigo instalar gtkwave en mi ordenador!! (Adjunto imagen)

¿Alguna sugerencia?

Perdonar mi desconocimiento pero soy un aprendiz nivel -1


Gracias de antemano y un saludo
apio-install_fail.png

Sjædric Moreno

unread,
May 13, 2017, 2:41:53 PM5/13/17
to FPGAwars: explorando el lado libre
Se me ha olvidado comentar que he encontrado esta información en la guía de usuario:



¿Creéis que esta sería la solución más recomendable?

Gracias y un saludo
Auto Generated Inline Image 1

Jesús Arroyo

unread,
May 13, 2017, 3:31:40 PM5/13/17
to FPGAwars: explorando el lado libre
Hola

Prueba a instalar directamente gtkwave:

apio install gtkwave

o

apio install gtkwave -p windows

Creo que ha podido aparecer una excepción al descargar (por un problema de conectividad por ejemplo) y lo ha filtrado con ese mensaje.

Me comentas los resultados.

Un saludo.

Sjædric Moreno

unread,
May 13, 2017, 7:54:21 PM5/13/17
to FPGAwars: explorando el lado libre
Hola

Efectivamente Jesús, seguro un problema de conectividad al descargar.

Que gusto da trabajar así!!

Muchas gracias



Auto Generated Inline Image 1
Auto Generated Inline Image 2
Reply all
Reply to author
Forward
0 new messages