Pregunta de novato con el ISE

Dudas, cuestiones, sugerencias y peticiones en general sobre el proyecto / Questions and requests about the project
Avatar de Usuario
neuro_999
Mensajes: 692
Registrado: 06 Oct 2015, 10:14

Pregunta de novato con el ISE

Mensaje por neuro_999 » 27 Nov 2015, 15:19

:he instalado el ISE para empezar a probar. La version ultima 14.7 y me he puestro a trastear con el test20 para probar si era capaz de "compilarlo" para la version 3 del zxuno.
El caso es que si no he entendido mal tengo que meter el pines_zxuno.ucf del hardware/zxuno/v3 al core test20 y despues abro el zxuno.xise
Me pongo en el zxuno del hierarchy y le hago un implement top module lo primero.
Y me da el error del pines_zxuno con el NET "csync"
Si miro el ucf que estaba en el core originalmente veo que hay hsync y vsync pero no csync.
¿Que estoy haciendo mal?.

Supongo que sera alguna chorrada xq son mis primeros pasos.

Avatar de Usuario
mcleod_ideafix
Mensajes: 831
Registrado: 27 Sep 2015, 00:14
Ubicación: Jerez de la Frontera
Contactar:

Re: Pregunta de novato con el ISE

Mensaje por mcleod_ideafix » 27 Nov 2015, 15:33

neuro_999 escribió:¿Que estoy haciendo mal?.

Supongo que sera alguna chorrada xq son mis primeros pasos.
No sé si estás haciendo algo mal o no. Lo que sí puedo decirte es que para que no tengas errores con eso, has de comprobar que todos los puertos que aparecen referenciados en el módulo tld_zxuno (el top level design) tengan su correspondencia en el fichero UCF. Así, si en el fichero UCF no hay una línea que indique la señal csync, entonces en el módulo tld_zxuno no debería existir esa señal. Si en el UCF sí existe la señal csync, entonces cámbiale el nombre a hsync.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Avatar de Usuario
neuro_999
Mensajes: 692
Registrado: 06 Oct 2015, 10:14

Re: Pregunta de novato con el ISE

Mensaje por neuro_999 » 28 Nov 2015, 14:48

Vale ya consegui general el bit con lo que me has dicho.

Ahora tengo las dudas de la grabacion.
Esta de camino el cable jtag asi que de momento no hare nada, pero me gustaria entender un poco el proceso.
He leido en zdp y entiendo como grabar cuando era de un core con el impact el .bit o .mcs y por cargaleches el .wav
Pero como se hace ahora con el multiboot?
Se puede hacer x .wav y cambiar solo uno de los dos cores independientemente?
Si solo se puede hacer ahora con el impact, se puede grabar un core .bit independientemente? O hay que grabar los dos a la vez con el prom_multiboot.mcs?.

A ver si voy entendiendo un poco el proceso con el multiboot...
X cierto, se puede hacer una copia de seguridad de todo el contenido del zxuno antes de enredar con el impact? X si se lia la cosa...

Muchas gracias x todo.

Avatar de Usuario
mcleod_ideafix
Mensajes: 831
Registrado: 27 Sep 2015, 00:14
Ubicación: Jerez de la Frontera
Contactar:

Re: Pregunta de novato con el ISE

Mensaje por mcleod_ideafix » 29 Nov 2015, 16:08

El multiboot consiste en que en la flash en lugar de haber un core, hay dos. Cuando grabas por JTAG el .bit a la FPGA, lo que haces es modificar el core principal, así que el proceso de ir probando los distintos testXX del ZX Spectrum es como siempre: sintetizas un core, coges el BIT y se lo pasas a la FPGA. Lo pruebas, y si hay fallos se modifica y a empezar de nuevo.

Una vez que un core testXX ya se ha probado y se ve que funciona, quieres grabarlo a la flash. Entonces es cuando entra el proceso del multiboot: tienes que escoger cuál quieres que sea tu segundo core. Por defecto es el test4 del SAM Coupé.

Ve al directorio firmware/roms y veras ahí varios archivos BAT. Lo primero: edita el fichero promgen.bat para que use el path donde tú tienes instaladas las herramientas de Xilinx.

Luego edita generamcs_multiboot_Q80.bat y verás, después del copy gigantesco que copia todas las ROMs, tres llamadas a promgen. La segunda y tercera llamadas son para generar los ficheros necesarios a partir de los .BIT de los dos cores que habrá en la flash: el core principal y el secundario. Cambia los paths y nombres de estos cores para que reflejen los que tú vas a usar. El principal debe ser siempre un core de Spectrum con soporte de multiboot. Esto es, del test19_multi en adelante.
Cambia también los parámetros de la llamada a srec_cat que hay a continuación para que correspondan a los cores que acabas de modificar.

Lanza todo el proceso de generación edl MCS ejecutando generamcs_multiboot_Q80.bat desde un símbolo del sistema. Fíjate que no se produzcan errores. Si todo va bien, debe haberse generado un fichero prom_multiboot.mcs, de alrededor de 2800KB. Ese fichero es el que tienes que poner en la flash.

Para ello, vete a iMPACT y verás que hay un pequeño chip FLASH conectado a la FPGA, y que normalmente no usamos cuando probamos un BIT en la FPGA. Haz clic derecho en ese pequeño chip y escoge "Add SPI/BPI flash" (si no aparece esta única opción y aparecen varias en su lugar, escoge "Assign new configuration file"). Navega por los directorios hasta llegar al fichero MCS multiboot que has generado en el paso anterior y dáselo. Entonces aparecerá un pequeño cuadro de diálogo para elegir qué tipo de chip SPI tienes. Vete casi al final del todo (si mal no recuerdo es el penúltimo de la lista): W25Q80BV. En el tamaño del bus pones 1.

Una vez asignado el MCS, vuelve a dar clic derecho al chip FLASH (habrá cambiado de color) y escoge "Program". Desmarca "Verify" y dale a OK.

Lo que hace iMPACT a continuación es que carga un pequeño core en la FPGA que permite que el JTAG se comunique con la FLASH y así se va grabando toda la memoria. El proceso es bastante más lento que cuando cargas un BIT en la FPGA. Una vez que termine, la FPGA arrancará con el nuevo core principal que tú hayas seleccionado (el de Spectrum).

Para hacer una copia de seguridad de la Flash SPI:
Haz como si fueras a grabar un MCS en la flash: escoge el MCS que vas a grabar, escoge el tipo de chip y la anchura de bus, etc. Pero al hacer clic con el botón derecho del ratón en el chip FLASH, en lugar de escoger "Program", escoge "Readback...". Dale un nombre al fichero donde se grabará la configuración (fichero MCS) y pulsa OK. Al hacerlo, iMPACT le pedirá a la FPGA que le envíe todo el contenido de la FLASH a ese fichero. Mientras lo hace, no hay Spectrum ni nada funcionando en la FPGA. Al terminar no se vuelve a cargar el core de Spectrum, así que tienes que apagar y encender el ZX-Uno para volver a usarlo.

El MCS obtenido es tu copia de la FLASH. Puedes usarlo en cualquier momento, incluso con el ZX-Uno completamente brickeado, para restaurar la flash SPI a su contenido anterior usando el método de grabar un MCS en la flash.

Fíjate que el tamaño del fichero que has obtenido no tiene por qué corresponderse exactamente con el tamaño del fichero que vas a grabar, incluso si sabes que ambos ficheros contienen la misma información.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Avatar de Usuario
neuro_999
Mensajes: 692
Registrado: 06 Oct 2015, 10:14

Re: Pregunta de novato con el ISE

Mensaje por neuro_999 » 29 Nov 2015, 20:48

Joder vaya guia mas detallada. Muchisimas gracias. En cuanto me llegue el cable me pongo con ello.

Avatar de Usuario
Quest
Mensajes: 900
Registrado: 27 Sep 2015, 00:20

Re: Pregunta de novato con el ISE

Mensaje por Quest » 29 Nov 2015, 22:24

Solo un apunte más a la excelente explicación de mcleod:

Como neuro_999 tu tienes la v3, y en ella la flash es la Q32 (4 Mbytes), con el proceso descrito lo que harás es llenar solo el primer Megabyte de la flash, y con dos cores. Yo te envié la flash ya pregrabada con 8. Tengo que subir el bat para la Q32, que hace tiempo que lo tengo preparado para subirlo pero estaba esperando a que las placas v3 con la nueva flash ya estuvieran un poco distribuidas. Espero hacerlo en estos dias.

En ese bat ya se incluyen 8 cores en total, y de momento para cambiar entre cores mas alla del 2° puedes usar el comando de esxdos .CORE que incluí en la carpeta BIN del esxdos beta4 q hay en el svn o bien usar unos OUTs en Basic. Aunque es más cómodo lo primero. Hasta que esté implementado en el firmware.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Avatar de Usuario
neuro_999
Mensajes: 692
Registrado: 06 Oct 2015, 10:14

Re: Pregunta de novato con el ISE

Mensaje por neuro_999 » 30 Nov 2015, 15:20

Pues esperare a grabar spi hasta q subas el nuevo y me dedicare a hacer pruebas con los .bit directamente en la fpga, que justo hoy me ha llegado el cable.
Por cierto quiero suponer que el pin1 del j8 de la version 3 de la placa es el cuadrado verdad? Que como no veo ningun numerito x all no me gustaria meter mal el jtag que he visto q trae un pin de tension, y como la fila de pines rgbs tb esta en j8... Pues por verificarlo. Aunque me apostaria un cafe a que es el cuadrado.

Gracias por todo.

Avatar de Usuario
neuro_999
Mensajes: 692
Registrado: 06 Oct 2015, 10:14

Re: Pregunta de novato con el ISE

Mensaje por neuro_999 » 01 Dic 2015, 14:42

Ya he visto a que pines corresponde el jtag siguiendo con el pdf las pistas que van a la fpga ya que no he encontrado el diseño para verlo en el eagle.
Lo que me he dado cuenta es que en la version 4 de la placa habeis cambiado el orden de los pines del jtag. Que misterio tiene el cambio?. X lo que he visto en el cable grabador que me ha llegado vienen con una faja en el orden de la version 3, ya se que se pueden coger cablecitos y enchufar pin a pin, pero me ha sorprendido el cambio.
Venga chicos, un saludo y mucho animo que ya estais en la recta final de vuestro pequeño.

Avatar de Usuario
antoniovillena
Mensajes: 2621
Registrado: 27 Sep 2015, 20:41

Re: Pregunta de novato con el ISE

Mensaje por antoniovillena » 01 Dic 2015, 15:00

Es por optimizar el ruteado. Al ser un conector totalmente diferente no había necesidad de mantener el orden de los pines.

Avatar de Usuario
neuro_999
Mensajes: 692
Registrado: 06 Oct 2015, 10:14

Re: Pregunta de novato con el ISE

Mensaje por neuro_999 » 02 Dic 2015, 21:18

Por fin hice funcionar el Impact en Windows 10 64 bits, joe vaya lio con el bug que tiene con las ventanas emergentes.
Si alguien quiere trabajar en W10.64bits, lo único que tiene que hace es lo siguiente:
En el subdirectorio: ?:\Xilinx\14.7\ISE_DS\ISE\lib\nt64
Borrar el fichero libPortability.dll y copiar el fichero libPortabilityNOSH.dll con el mismo nombre "libPortability.dll"
Luego copiar el nuevo libPortability.dll al subdirecotorio ?:\Xilinx\14.7\ISE_DS\common\lib\nt64 sobrescribiendo el que esta.
Y listo!.
Ya he conseguido hacer la copia de seguridad y he probado el core 20, funciona perfectamente el cambio de teclado a US (ya tengo mis <>, oeoeoe).
Ahora lo que me preguntaba, ya que aun no esta subido el que genera los .mcs para la nueva spi, es si aun funciona lo de cambiar el core principal del zxuno con el .tap o el .wav y el cargaleches o el loader de la BIOS. Así me ahorro tener que sintetizar todos los cores con el pinage de la v3 de la placa, y puedo actualizarlo ya a la versión 20 del zxuno.

O tambien se me ocurre que si mi copia de la flash .mcs la paso a bin con el srec_cat el core de zxuno estaria en la zona del fichero 58000-ABFFF
Habria alguna forma de sustituir ese bloque por el .bin del core actualizado?.
Osea, si a ese bin le hago un
Srec_cat backup.bin -binary tdl_zxuno.bin -binary -offset 0x58000 -o nuevo.bin -binary -multiple
Me sacaria un .bin igual al mio pero con esa zona actualizada con el nuevo core?. O me corromperia alguna cosa?.
En principio he hecho un fc de los dos ficheros y tan solo hay cambios entre ese rango de direcciones...
La liare si grabo eso a la spi?

Me edito: Si funciona, lo acabo de probar y ya tego en core test20 del zxuno con los otros 7 cores que me grabo quest.
Pues es un metodo comodo pa mo tener qiue regenerar todo cada vez que se quiere actualizar solo uno de los corws.
Ale voy a hacer pruebas.

Muchas Graciasssss.

Responder