ZXUNO con salida VGA en el Spectrum

Avatar de Usuario
Radastan
Mensajes: 389
Registrado: 05 Oct 2015, 14:39

Re: ZXUNO con salida VGA en el Spectrum

Mensaje por Radastan » 13 Oct 2015, 11:43

Tengo la cámara preparada, no digo más.

:gracias!:

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

Re: ZXUNO con salida VGA en el Spectrum

Mensaje por mcleod_ideafix » 13 Oct 2015, 12:07

No me he puesto aún a mirar código fuente, pero suena a que la parte que lee la memoria para pintar en VGA no está sincronizada con la parte que escribe en memoria desde la ULA.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Avatar de Usuario
jepalza
Mensajes: 613
Registrado: 02 Oct 2015, 18:52

Re: ZXUNO con salida VGA en el Spectrum

Mensaje por jepalza » 14 Oct 2015, 20:13

He subido una versión mejorada, que en el caso de los dos monitores que tengo cerca, funciona de maravilla. Ya no se ven rayas perdidas, ni faltas de sincronismo. Seguro que algún fallo encontramos, pero por ahora, es lo mejor que he conseguido. Los relojes empleados son los iniciales del ZXUNO del TEST19_MULTIBOOT, no los he tocado al final.

Lo que he hecho, ha sido, emplear una rutina de "MikeJ" que usa una RAMB de 8bits, para generar colores 3 rojos, 3 verdes, 2 azules y la he alterado usando una RAMB de 16bits para acomodar los 3+3+3 colores del ZXUNO, y por ahora, el engendro funciona.

He localizado un fallo, que seguro que es de un contador que para un ciclo mas tarde de lo que debería, y dibuja un trozo de línea negra justo arriba a la izquierda, como se ve en la foto. A ver si lo localizo y lo reparo.

También es posible, que mi método sea una "kk" y haya otro mejor y más rápido y/o simple, pero de momento, para usar la VGA es perfecto.

Imagen

A ver si podéis probarlo en vuestros monitores ( @quest )

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

Re: ZXUNO con salida VGA en el Spectrum

Mensaje por Quest » 14 Oct 2015, 20:42

Gracias jepalza... acabo de bajarlo y sintetizarlo en ISE 12.4 (que era el que se suponía que generaba bit estables) y no hay manera de que arranque, corrupciones contínuas:
vga_cr2.jpg
vga_cr2.jpg (94.32 KiB) Visto 6679 veces
Me pasaba lo mismo el otro día cuando trataba de ajustar los valores del scandoubler (hA, hB, etc etc...) a según que valores, había un rango de valores (que ahora no recuerdo) que hacía que pasara esto. No le encuentro el sentido, pero así es :(
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Avatar de Usuario
jepalza
Mensajes: 613
Registrado: 02 Oct 2015, 18:52

Re: ZXUNO con salida VGA en el Spectrum

Mensaje por jepalza » 14 Oct 2015, 20:53

No me digas lo de las corrupciones. A mi no me lo hace. Pero al menos, veo que la calidad es buena. Ahora si se parece a una VGA.
Algo diferente tenemos los dos en nuestros ZXUNO a nivel físico. Lo curioso, es que los test que tú haces, a mi me funcionan bien.
Es mas, los relojes ahora están sin tocar, y ya no empleo valores ajustables que sea necesario tocar.

Prueba a usar mis BIT y MCS. O que lo pruebe otro, como Mcleod_Ideafix o radastan si al final puede meter el MCS
A ver si el fallo es de tu xilinx 12.4.

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

Re: ZXUNO con salida VGA en el Spectrum

Mensaje por Quest » 14 Oct 2015, 20:59

jepalza escribió:No me digas lo de las corrupciones. A mi no me lo hace. Pero al menos, veo que la calidad es buena. Ahora si se parece a una VGA.
Algo diferente tenemos los dos en nuestros ZXUNO a nivel físico. Lo curioso, es que los test que tú haces, a mi me funcionan bien.

Prueba a sintetizar el test completo en el xilinx 12.4, en lugar de usar mis BIT y MCS
No he usado tus archivos, como comentaba, ya he sintetizado el test completo en xilinx 12.4. No he usado los tuyos, porque en mi prototipo v3 (que tiene distinto pineado) no funcionaría. En el v2 me es muy engorroso probar los cambios porque como ya comenté, se me frieron los pines JTAG de la FPGA, y tengo que quitar la flash, programarla con un grabador externo y volverla a poner... un rollo. Con el v3 conectado al cable Xilinx USB es todo muchísimo más rápido (2 segundos).

De todas maneras estas corrupciones ya las estábamos sufriendo tanto en v2 como en v3 en test anteriores. Aún no sabemos el motivo real, sólo que cualquier cambio puede producirlos, y dependiendo de en que ISE sintetices, aparecen o desaparecen. Es un gran misterio. Pero la verdad es que me epmieza a tener bastante frito. Tenemos que averiguar de dónde viene el problema de una vez por todas.

PD: por cierto, a pesar de las corrupciones, la imagen esta vez sí es muy estable y con las proporciones correctas. Los sincros que se observan también son buenos (apra ser de 50Hz), que son: H: 31.3kHz, V: 50.1Hz (con timings de 48k), con timings de 128k: H: 30.8kHz , V: 49.5Hz

EDITO: He cambiado alguna cosa, simplemente por que cambie "el rutado" al sintetizar (he añadido un nuevo reloj de 7Mhz en el PLL, con el divisor de 64. Ahora hay 2 iguales) y lo he usado para el scandoubler, y el que había, para el resto. Y ahora arranca, pero sufrimos las corrupciones menores que habñia otras veces, como que se cuelga cuando intenta leer la SD u otros accesos, si la memoria contenida está activada. Desactivándola, mejora. Lo dicho antes, que este tema es un sinvivir y hay que encontrar el origen. Está claro que determinados cambios en el core sumado a la forma de sintetizar, causan problemas. No tiene nada que ver con el VGA, puede pasar con cualquier cosa.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Avatar de Usuario
jepalza
Mensajes: 613
Registrado: 02 Oct 2015, 18:52

Re: ZXUNO con salida VGA en el Spectrum

Mensaje por jepalza » 14 Oct 2015, 21:16

A mi todavía, no me ha fallado ni ua sola vez el xilinx 12.4. Yo tenía el 14.3 y todo bien, lo pasé al 14.7 y seguía bien (ademas, la 14.7 es mas rápida), pero me pasé a la 12.4 para estar a vuestra altura, y hasta ahora, siempre me ha sintetizado bien.
Así que no puedo ayudarte respecto a ese tema.

Pero me alegra saber, que al menos se ve bien la VGA.

Por cierto , prueba a usar tu core TEST19_MULTI, y meter únicamente los 4 o 5 archivos que cambian del mio, a ver si así te funciona.

edito yo también: acabo de ver tu "edición":

Solo comentarte, que a lo mejor el fallo es un cambio que hice y que he dejado en el módulo "cuatro_relojes"

Código: Seleccionar todo

  PLL_BASE
  #(.BANDWIDTH              ("OPTIMIZED"),
    .CLK_FEEDBACK           ("CLKFBOUT"),
    .COMPENSATION           ("SYSTEM_SYNCHRONOUS"),
	 // principal
    .DIVCLK_DIVIDE          (1),
    .CLKFBOUT_MULT          (9),
    .CLKFBOUT_PHASE         (0.000),
	 // 28mhz
    .CLKOUT0_DIVIDE         (16),
    .CLKOUT0_PHASE          (0.000),
    .CLKOUT0_DUTY_CYCLE     (0.500),
	 // 14mhz
    .CLKOUT1_DIVIDE         (32),
    .CLKOUT1_PHASE          (0.000),
    .CLKOUT1_DUTY_CYCLE     (0.500),
	 // 7mhz
    .CLKOUT2_DIVIDE         (64),
    .CLKOUT2_PHASE          (0.000),
	 .CLKOUT2_DUTY_CYCLE     (0.500), <-----------------------
	 // 3.5mhz
    .CLKOUT3_DIVIDE         (128),
    .CLKOUT3_PHASE          (0.000),
    .CLKOUT3_DUTY_CYCLE     (0.500),    <----------------------------
    // fijos
    .CLKIN_PERIOD           (20.0),
    .REF_JITTER             (0.010)) 
  pll_base_inst
En las líneas marcadas, el DUTY del 3 lo puse yo, y el DUTY del 2 lo moví para que quedara mas claro. A ver si va a ser ese el fallo

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

Re: ZXUNO con salida VGA en el Spectrum

Mensaje por Quest » 14 Oct 2015, 21:23

No se si has visto la edición del post, creo que la estaba haciendo a la vez que tu contestabas :lol:

Acabo de hacer otro cambio, colocando un reloj de 7Mhz extra con buffer, separado del anterior

Código: Seleccionar todo

    .CLKOUT4_DIVIDE         (64),
    .CLKOUT4_PHASE          (0.000),
    .CLKOUT4_DUTY_CYCLE     (0.500),	 
usándolo de forma exclusiva para el scandoubler, y ajustando para el (que ahora es el 5), la linea

Código: Seleccionar todo

PIN "relojes_maestros/clkout5_buf.O" CLOCK_DEDICATED_ROUTE = FALSE;
Y ahora ya no me produce ninguna corrupción. Es un tema muy aleatorio. Usando el mismo reloj = corrupciones. Usando uno diferente = ok. En fin... para volverse loco.

Por cierto, lo de la linea de antes, supuestamente no es una buena práctica (ni idea de por qué), según aparece en el error que sale cuando esa línea no está. No se el motivo, pero eso pone, da a entender que en la spartan-6 si se usa un pin de reloj en "no se que sin carga", se pueden producir problemas de delays, skew y no se qué leches más que no he comprendido. Supuestamente con la linea esa, conviertes el error en un Warning. ¿Alguien sabe qué implicaciones tiene o puede tener? ¿O a nosotros debería darnos igual en este caso?
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Avatar de Usuario
jepalza
Mensajes: 613
Registrado: 02 Oct 2015, 18:52

Re: ZXUNO con salida VGA en el Spectrum

Mensaje por jepalza » 14 Oct 2015, 21:26

Respondemos a la par ambos. :D
He editado mi anterior mensaje, con un tema de los DUTY_CYCLES a ver si a ser de eso.
Estoy como tú, aprendo cosas a la par que programo, por lo que no sé nada mas que no sepas tú.

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

Re: ZXUNO con salida VGA en el Spectrum

Mensaje por Quest » 14 Oct 2015, 21:47

No era eso, es cualquier cosa inexplicable :smashPC:

En cuanto a calidad, esta vez si, este scandoubler se ve muy bien en ambos timings.

La Shock megademo, prueba de fuego de efectos de borde, de fábula:
vga_shock.jpg
vga_shock.jpg (87.47 KiB) Visto 6671 veces
A los que tenemos monitores que aceptan 50Hz, de lujo. Ahora solo falta lo que comentaba Mcleod que estaba mirando, lo de dar la posibilidad también de hacer un switch en tiempo real a 60Hz (acelerando el spectrum, eso sí) para soportar más monitores.

Yo incluso apostaría por poder cambiar on-the-fly (sería con teclas, no se, con impr-pant o alguna de esas que se usan poco) el modo de vídeo, rotando entre: PAL / VGA 50Hz / VGA 60Hz. Lo digo porque no sabemos en qué pantalla va a conectar el usuario el ZX-UNO por primera vez, y por tanto podría ir a ciegas, incluso para entrar a la BIOS, así que quizá sea una buena opción poder darle a una tecla (1 o 2 veces, según sea necesario, para llegar al modo "compatible" con su pantalla) y poder ver lo que haces. Luego podría fijarse el modo ya en BIOS tranquilamente.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Responder