Problema con el reset externo de los cores BBC y Atom

Responder
Avatar de Usuario
carmeloco
Mensajes: 751
Registrado: 25 Dic 2015, 12:02

Problema con el reset externo de los cores BBC y Atom

Mensaje por carmeloco » 27 Ago 2016, 13:10

Buenas, tengo dos protos V4, exáctamente iguales, y en uno de ellos tengo problemas con los cores de BBC Micro y Acorn Atom. Resulta que al arrancar el core de BBC Micro, no aparece nada en pantalla, y con el de Atom, toda la pantalla se llena de símbolos @. Todos los demás cores, funcionan perfectamente.
Resulta que, revisando estos cores, me encuentro con que tienen una diferencia con respecto al resto, y es que tienen un reset externo en el pin 46 de la FPGA. Parece ser, que en ciertas ocasiones, si ese pin queda al aire, el core se resetea continuamente, de forma que no arrancan.
En ambos cores, se puede solucionar el problema, poniendo dicho pin a masa, con un cable en el bus de expansión, pero no me parece la forma más "elegante" de hacerlo.
En el core del BBC Micro, creo recordar haberlo solucionado cambiando en el archivo bbcmicro_zxuni_v3.ucf la línea

Código: Seleccionar todo

NET ERST           LOC="P46" | IOSTANDARD=LVCMOS33; #Ext reset
por

Código: Seleccionar todo

NET ERST           LOC="P46" | IOSTANDARD=LVCMOS33 | KEEPER = true; #Ext reset
Pero esto, no me ha funcionado en el core de Acorn Atom. ¿Hay alguna forma de solucionar esto?

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

Re: Problema con el reset externo de los cores BBC y Atom

Mensaje por Quest » 27 Ago 2016, 13:14

Si, algunos me han comentado lo mismo. Lo tengo apuntado para revisar. En estos momentos como es natural andamos liadísimos, así que lo miraré cuando pueda.

No obstante, a mi me funcionan ambos correctamente en mis placas. El de Atom debe tener metida al arranque la SD con todos los archivos necesarios dentro para que funcione correctamente.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Avatar de Usuario
carmeloco
Mensajes: 751
Registrado: 25 Dic 2015, 12:02

Re: Problema con el reset externo de los cores BBC y Atom

Mensaje por carmeloco » 27 Ago 2016, 13:21

Quest escribió:Si, algunos me han comentado lo mismo. Lo tengo apuntado para revisar. En estos momentos como es natural andamos liadísimos, así que lo miraré cuando pueda.

No obstante, a mi me funcionan ambos correctamente en mis placas. El de Atom debe tener metida al arranque la SD con todos los archivos necesarios dentro para que funcione correctamente.
No hay problema, por supuesto, míralo cuando puedas. A mi me funciona bien en todas las placas que he fabricado en mi tirada de 30 placas. Al ver el problema, las he testeado todas, una a una, pero en una nueva que estoy haciendo, para quedarme una como recuerdo de esta tirada, me aparece también el mismo problema.
Si ya tienes conocimiento del problema, perfecto. :D

Por cierto, lo solucioné con algún cambio más, que ahora no recuerdo, porque solo con eso, estoy viendo que no funciona.

Avatar de Usuario
carmeloco
Mensajes: 751
Registrado: 25 Dic 2015, 12:02

Re: Problema con el reset externo de los cores BBC y Atom

Mensaje por carmeloco » 27 Ago 2016, 14:10

He encontrado el segundo cambio que realicé en el core del BBC Micro. En el archivo bbc_micro.vhd, cambio la línea

Código: Seleccionar todo

 hard_reset_n <= not ERST;
por

Código: Seleccionar todo

 hard_reset_n <= ERST;
Con esta modificación y la que puse antes, funciona, pero en el del Atom, no hay una línea como esa en el .vdh, y no consigo que me funcione. Seguiré investigando.

Avatar de Usuario
carmeloco
Mensajes: 751
Registrado: 25 Dic 2015, 12:02

Re: Problema con el reset externo de los cores BBC y Atom

Mensaje por carmeloco » 27 Ago 2016, 14:55

Bueno, conseguido también en el Atom. En el archivo Atomic_zxuno_v3.ucf he cambiado

Código: Seleccionar todo

NET ERST            LOC="P46" | IOSTANDARD=LVCMOS33; # Reset externo
por

Código: Seleccionar todo

NET ERST            LOC="P46" | IOSTANDARD=LVCMOS33 | KEEPER = true; # Reset externo
Y en el archivo Atomic_top_zxuno.vhd, he cambiado

Código: Seleccionar todo

ERSTn      <= pwrup_RSTn and not ERST;
por

Código: Seleccionar todo

ERSTn      <= pwrup_RSTn and ERST;
Lógicamente, en el .ucf, he cambiado los pines V3 con los correspondientes V4.

Responder