parameter ROMFILE = "rom.list"; "rom.list", con el consiguiente problema de no crearse el bloque, y opte por usar el de Obijuan, una vez creados todos los bloques procedí a conectarlos y verificar, luego usando yaYUL cree el .bin, para después crear el fichero rom.list el cual cambie por el que tenia en la carpeta del proyecto que era el que había usado para poder crear el bloque de la rom y al sintetizar y cargar en la Fpga no me funciona y al editar el rom.list creado por mi no coincide con el de Obijuan.
Creo no haberme dejado nada...
¿Cuál es el problema entonces? Pues parece que hay una diferencia entre la IceZUM v1.1 y la IceZUM v1.0 (que es con la que está hecha el tutorial) que hace que la v1.1 no funcione correctamente con este diseño ACC0. Concretamente parece que no captura bien el botón SW1:
El ACC0 permite navegar por la rom con SW1 (+) y SW2 (-). Al pulsar los botones no pasa nada porque parece que SW1 no captura los pulsos y SW2 navega en direcciones "negativas". He probado a cambiar los botones SW2(+) y SW1(-) y he comprobado lo siguiente: al pulsar SW2 avanza en la memoria, pero al pulsar SW1 no retrocede. Tampoco funciona correctamente sustityendo los bloques de antirrebotes. Por lo tanto es una cuestión de la electrónica y el diseño del ACC0, no de las herramientas.
Probad directamente los ficheros de GitHub con Icestudio 0.3 pero intercambiando los botones SW1 y SW2 para ver si da el mismo resultado. Adjunto videos de las pruebas:
- https://drive.google.com/open?id=0B_vQY-TVqNFYYzN1UGNXaVVMb3c
- https://drive.google.com/open?id=0B_vQY-TVqNFYZ2tlbEZwZ0tVYzQ
- https://drive.google.com/open?id=0B_vQY-TVqNFYRGhTWVgwekZQdjA
Juan, Eladio, si tenéis un momento y podéis aportar algo de información al asunto sería de gran ayuda para resolver el expediente X. ;)
Un saludo.
PD: tenemos pendiente migrar ACC a Icestudio 0.3 para utilizar las nuevas features como buses, constantes, etc. Pero la versión actual, creada con Icestudio 0.2 es completamente funcional en 0.3.
//-- Original file: test.ags.bin
//-- Output file format: verilog
//-- AGC Opcodes in hex
//-- Initial address: 0x800
0800
0801
7000
Ahora bien, por favor realiza una prueba:
El resultado es que se deberían encender los LEDS del 0 al 6. Las demás instrucciones funcionarían como antes. Adjunta por favor el fichero rom.list modificado por ti para que pueda verificar que es correcto.
El siquiente paso es concentrarnos en la síntesis del fichero rom.list a partir de test.ags. Este proceso no tiene que ver ni con Apio ni con Icestudio, sólamente con la toolchain del AGS: https://github.com/Obijuan/ACC/wiki/ACC0#instalar-la-toolchain-del-ags. Vamos a realizar otra prueba:
yaYUL test.agsacc-rom.py test.ags.binSi esto no sucede significa que hay un bug en la toolchain o el script. Si funciona correctamente pasamos a la siguiente prueba:
Sé que esto puede ser algo minucioso, pero es necesario para depurar un proceso en el que hay tantos subprogramas implicados.
Con toda la información que proporciones obtendré unas conclusiones y continuaremos avanzando.
Gracias.
Un saludo.
NOTA: el problema de que no funcionan los botones SW1 y SW2 con la IceZUM v1.1 y ACC0 (que yo he conseguido reproducir pero que parece que tú no tienes) lo trataramos a parte ya que puede tener causas en el hardware, tiempos de carga, etc.
Buenas Juanma,
Por concluir: me parece correcto el enfoque de cada cual, lo que pasa que en este caso hemos chocado en la forma de afortar los tests y analizar los resultados. Pero no pasa nada, cada uno tiene su punto de vista y al final lo importante es comprenderse ;)
En la parte más técnica te comento: no creo que haya un problema en la "conversión" de proyectos antiguos a nuevos, al menos yo no lo he encontrado. Las pruebas que he estado haciendo son cargar un mismo proyecto antiguo con Icestudio 0.2 y con el 0.3 (que incluye conversión) y se comportan igual.
Como el ACC0 parece dependiente del HW, se podría aislar el test de la "conversión" con otros proyectos para analizar si realmente hay algún problema. Con las pruebas que yo he hecho he visto que todo era correcto, pero insisto, si detectamos algo en concreto siempre se puede analizar más en detalle.
Con respecto a la detección de modificaciones es cierto que apio 0.2.3 no detecta los cambios en rom.list (he creado una issue), pero esto no afecta a Icestudio ya que al generar el código verilog se añade una cabecera con la fecha y la hora. Por lo tanto en Icestudio el código siempre es distinto y por lo tanto las modificaciones que se hagan en el fichero rom.list siempre se van a sintetizar. Todo esto lo he comprobado también experimentalmente, claro.
Por eso vi que al final el problema se centraba en la generación del rom.list con la toolchain AGC. Además de esto también hemos visto que hay un posible bug con ACC0-HW para analizar en un nuevo hilo. Esta es una razón más por la que prefiero analizar los problemas con detalle ya que el stack de herramientas y posibles causas-consecuencias es muy amplio.
Un saludo.
yaYUL test.agsacc-rom.py test.ags.bin