Cacharreando con el prototipo 2 del ZX-Uno

Sinclair QL, ZX81, +2, +3, 128K ...
Avatar de Usuario
Quest
Atari 1040 STf
Atari 1040 STf
Mensajes: 900
Registrado: 18 Jul 2013, 22:20
Sistema Favorito: Commodore Amiga
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo SNES
Primera consola: Nintendo NES/Clónica
Gracias dadas: 9 veces
Gracias recibidas: 16 veces

Re: Cacharreando con el prototipo 2 del ZX-Uno

Mensajepor Quest » 06 Feb 2015, 09:45

mcleod_ideafix escribió:
Quest escribió:Creo que debería poder desactivarse ESXDOS en BIOS al igual que se hace con la opción de DivMMC. El hecho de que activar o desactivar DivMMC en la bios active y desactive ESXDOS conjuntamente hace más diícil el testeo. Debería poder estar activo DivMMC sin ESXDOS y con ESXDOS separadamente.

¿Qué significa "poder estar activo DivMMC sin ESXDOS"? Si te refieres a los puertos E/S del dispositivo, éstos están siempre activos, aunque la opción DivMMC se desactive. Esa opción de la BIOS es en realidad equivalente a lo que en el DivIDE es la función del jumper E, que deshabilita la BIOS del DivIDE y los traps.


Tienes razón. Voy a editar el post para tacharlo. Iba a hacerlo de todos modos para poner unas capturas :)

Por cierto, si alguien quiere (y se puede subir aquí), puedo colgar el .mcs con el ESXDOS 0.8.6 y las roms de la captura de mi post anterior.

Avatar de Usuario
Hark0
Amiga 1200
Amiga 1200
Mensajes: 1695
Registrado: 11 Jul 2012, 23:44
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: (Otro)
Primera consola: (Otro)
Ubicación: Cornellà de Llobregat - Barcelona
Contactar:

Re: Cacharreando con el prototipo 2 del ZX-Uno

Mensajepor Hark0 » 06 Feb 2015, 09:58

Mejias3D escribió:Ahora me toca a mí seguir trabajando en mejorar si cabe la carcasa "Spectrum Style" y después empezar con el siguiente punto de mi lista "To Do" :carta: que consiste en una carcasa de mayor tamaño, que deje sitio para que todos los add-ons que vendrán en el futuro no se queden al aire sobre la mesa.


;) 8-)
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA.

Avatar de Usuario
radastan
Amiga 2500
Amiga 2500
Mensajes: 4542
Registrado: 11 Jun 2007, 19:29
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Sega Genesis/Megadrive
Primera consola: TV Games/Pong Clone
Ubicación: Córdoba
Gracias dadas: 9 veces
Gracias recibidas: 40 veces
Contactar:

Re: Cacharreando con el prototipo 2 del ZX-Uno

Mensajepor radastan » 06 Feb 2015, 18:02

Prototipo recibido, se lo entregaré ipso-facto al encargado de soldarlo.
Yo tengo una máquina del tiempo, se llama ZX Spectrum, siempre me devuelve a los buenos momentos.
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝

Avatar de Usuario
Haplo
MSX Turbo R
MSX Turbo R
Mensajes: 278
Registrado: 14 Abr 2014, 22:24
Sistema Favorito: PC
primer_sistema: Spectrum +2
consola_favorita: Sony PlayStation 1
Primera consola: Nintendo NES/Clónica
Ubicación: Ciudad Real
Gracias dadas: 33 veces
Gracias recibidas: 5 veces

Re: Cacharreando con el prototipo 2 del ZX-Uno

Mensajepor Haplo » 06 Feb 2015, 22:42

Ole, ole, ya le llegó a Radastán su regalito! Ya iba siendo hora eeeeee

Avatar de Usuario
Quest
Atari 1040 STf
Atari 1040 STf
Mensajes: 900
Registrado: 18 Jul 2013, 22:20
Sistema Favorito: Commodore Amiga
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo SNES
Primera consola: Nintendo NES/Clónica
Gracias dadas: 9 veces
Gracias recibidas: 16 veces

Re: Cacharreando con el prototipo 2 del ZX-Uno

Mensajepor Quest » 07 Feb 2015, 11:42

Una pregunta....

¿Cómo está implementado el protocolo de lectura de teclado ps/2? (no tengo idea de verilog/vhdl ni nada parecido para verlo en vuestro código), ¿es 100% según norma?

Lo pregunto porque estaba implementando una especie de teclado virtual mediante un microcontrolador Atmel (estoy aprendiendo aùn) y lo estoy haciendo usando la norma ps/2 que está ampliamente publicada y documentada (reloj, transmisión de los bits, scancodes, etc).

Resulta que mi invento funciona perfectamente si lo conecto al puerto ps/2 de un PC por ejemplo (incluso variando el ratio de repetición en el código, etc), pero en el zx-uno funciona muy muy mal, sólo reconoce 1 pulsación de cada 10 o así, y de forma aleatoria, y las repeticiones (tecla pulsada sin soltar) pues lo mismo, una de cada muchas, y no siempre siguiendo el mismo patrón. He probado variando ligeramente los timings dentro de la norma (se puede usar más o menos entre 10 y 16khz, aunque 12.5Khz es lo normal) pero los cambios son mínimos. A veces reconoce algunas más, otras algunas menos, pero fatal. En varios PCs (modernos y antiguos) funciona siempre perfecto. Por otro lado, las señales son basadas en +5v (data y clock con pullups). Perdonad si mi terminología no es del todo corredcta, aún estoy en fase de aprendizaje.

Gracias.

EDITO para añadir que el ZX-UNO funciona bien con un teclado normal ps/2 genuino (bueno, con algún glitch, a veces no detecta bien el shift o lo deja fijo y a veces las repeticiones no son 100% regulares, pero es perfectamente usable), pero que no funciona con un teclado USB ASUS moderno conectado a un adaptador USB->PS/2. Ese mismo teclado con ese mismo adaptador sí funciona en un PC.

EDITO 2: He hecho algunas pruebas más. Para conseguir que funcione fino en el ZX-UNO, tras probar diferentes rangos de velocidades, he tenido que usar exactamente un ciclo de reloj de 840us, lo que significa una velocidad de 1.190476 Khz. Así todas las pulsaciones quedan perfectamente registradas en el ZX-UNO y las repeticiones funcionan perfectamente, pero evidentemente en el PC no funciona, porque es más de 10 veces más lento de lo que debiera. Sería interesante saber qué está ocurriendo exactamente.

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 54 veces
Contactar:

Re: Cacharreando con el prototipo 2 del ZX-Uno

Mensajepor mcleod_ideafix » 07 Feb 2015, 15:48

Quest escribió:¿Cómo está implementado el protocolo de lectura de teclado ps/2? (no tengo idea de verilog/vhdl ni nada parecido para verlo en vuestro código), ¿es 100% según norma?

Es según norma.... la recepción. La transmisión aún no está implementada. Es decir, no se transmite ningún código desde el ZX-Uno al teclado. Esto significa que el teclado funciona con sus parámetros por defecto.

Quest escribió:Por otro lado, las señales son basadas en +5v (data y clock con pullups). Perdonad si mi terminología no es del todo corredcta, aún estoy en fase de aprendizaje.

Las señales que provee un teclado deberían estar en colector abierto. Es decir, no debes poner pullups en tu teclado, sino que es el host (el PC o el ZX-Uno en este caso) quien provee los pullups. Dicho de otra forma, tu teclado debe dar o bien un 0, o bien un estado de alta impedancia, pero nunca nunca, +5V, ni directos ni con pullups.

Quest escribió:con algún glitch, a veces no detecta bien el shift o lo deja fijo

Eso ocurre si al pulsar una tecla con Shift, por ejemplo, la tecla de los dos puntos, haces la siguiente operación: pulsa shift, pulsa dos puntos, suelta shift, suelta dos puntos. Si lo haces así, el traductor PS/2 -> matriz de Spectrum se hace un lío y no borra el estado de la tecla "traducida" (que en el Spectrum sería Symbol Shift + Z). Si la secuencia es: pulsa shift, pulsa dos puntos, suelta dos puntos, suelta shift, entonces no existe ese problema.

Quest escribió:y a veces las repeticiones no son 100% regulares

Eso ocurre porque el teclado PS/2, por defecto, tiene autorrepetición incluida en las teclas, que interfiere con la autorrepetición de la ROM del Spectrum. Cuando se le incorpore la transmisión al protocolo PS/2 podremos enviarle el comando de que anule la autorrepetición.

Quest escribió:no funciona con un teclado USB ASUS moderno conectado a un adaptador USB->PS/2. Ese mismo teclado con ese mismo adaptador sí funciona en un PC.

Los teclados duales PS2-USB funcionan por defecto en modo USB, a menos que reciban un comando de reset desde el host PS/2. Como el ZX-Uno aún no puede enviar ningún comando, el teclado no se cosca y sigue en modo USB.

Quest escribió:EDITO 2: He hecho algunas pruebas más. Para conseguir que funcione fino en el ZX-UNO, tras probar diferentes rangos de velocidades, he tenido que usar exactamente un ciclo de reloj de 840us, lo que significa una velocidad de 1.190476 Khz. Así todas las pulsaciones quedan perfectamente registradas en el ZX-UNO y las repeticiones funcionan perfectamente, pero evidentemente en el PC no funciona, porque es más de 10 veces más lento de lo que debiera. Sería interesante saber qué está ocurriendo exactamente.

Comprueba primero de todo que el teclado no esté enviando señales de 5V a la FPGA. Debería ser o bien 0, o bien alta impedancia.

El core de teclado PS/2 de todas formas está siendo (poco a poco) reescrito desde 0, para dar cabida a dos cosas que necesitamos: la bidireccionalidad, y el soporte de ratón PS/2. En el core vgatest1 que sirve fundamentalmente para probar timmings de pantalla con la VGA ya empleo este nuevo core que estoy escribiendo. Si tienes soldada la plaquita VGA y puedes probar este core, a ver si con él tu teclado funciona mejor.

Pero repito que es imprescindible que a nivel eléctrico se cumpla que las salidas estén en colector abierto, sin pullups por parte del teclado.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
Quest
Atari 1040 STf
Atari 1040 STf
Mensajes: 900
Registrado: 18 Jul 2013, 22:20
Sistema Favorito: Commodore Amiga
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo SNES
Primera consola: Nintendo NES/Clónica
Gracias dadas: 9 veces
Gracias recibidas: 16 veces

Re: Cacharreando con el prototipo 2 del ZX-Uno

Mensajepor Quest » 07 Feb 2015, 16:24

mcleod_ideafix escribió:Las señales que provee un teclado deberían estar en colector abierto. Es decir, no debes poner pullups en tu teclado, sino que es el host (el PC o el ZX-Uno en este caso) quien provee los pullups. Dicho de otra forma, tu teclado debe dar o bien un 0, o bien un estado de alta impedancia, pero nunca nunca, +5V, ni directos ni con pullups.

Comprueba primero de todo que el teclado no esté enviando señales de 5V a la FPGA. Debería ser o bien 0, o bien alta impedancia.

Pero repito que es imprescindible que a nivel eléctrico se cumpla que las salidas estén en colector abierto, sin pullups por parte del teclado.


Bueno, pues ya está cambiado mi código para que la salida sea 0 / Hi-Z (ahora midiendo da 3.3v que supongo que es lo que provee el zx-uno con las pullups y antes salían 5v, provocados por mi antiguo código, así que por ese lado, arreglado).

Con el cambio, el comportamiento sin embargo sigue siendo el mismo. Con timing A 12.5Khz (norma) sigue registrando sólo 1 de cada muchas pulsaciones y además no siempre sale el carácter correcto. A 1.190Khz funciona perfectamente. Y al igual que antes, en PC funciona perfecto a 12.5khz y no funciona a 1.190Khz.

El core de teclado PS/2 de todas formas está siendo (poco a poco) reescrito desde 0, para dar cabida a dos cosas que necesitamos: la bidireccionalidad, y el soporte de ratón PS/2. En el core vgatest1 que sirve fundamentalmente para probar timmings de pantalla con la VGA ya empleo este nuevo core que estoy escribiendo. Si tienes soldada la plaquita VGA y puedes probar este core, a ver si con él tu teclado funciona mejor.


Tengo soldada una de las plaquitas VGA, la que va al puerto rgb/jtag, porque lo uso en un monitor VGA que tengo compatible 15khz:

Imagen

¿Sirve esta para la prueba del vgatest1? Desde luego más pruebas irían aislando el problema.

¿Qué más crees que puede estar pasando? es muy muy extraño.

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 54 veces
Contactar:

Re: Cacharreando con el prototipo 2 del ZX-Uno

Mensajepor mcleod_ideafix » 07 Feb 2015, 16:35

yombo escribió:Buena idea lo de la rotación de paleta... He hecho un vídeo:


Pues yo también me he apuntado a la "moda" de hacer conjuntos de Mandelbrot para el modo radastaniano. Este es el mío :)



La generación es en tiempo real, no es video acelerado. Uso un algoritmo recursivo basado en el tiempo de escape, dividiendo a la imagen en cuadrados. Si los pixeles que forman el perímetro de uno de estos cuadrados tienen todos el mismo color (o sea, el mismo tiempo de escape), entonces puedo asegurar que todos los pixeles del interior también tendrán ese color (propiedad derivada de otra que dice que el conjunto de Mandelbrot es conexo). Si encuentro un pixel que tiene un color diferente, entonces divido el cuadro actual en 4, y aplico el algoritmo recursivamente a cada uno de los 4 subcuadrados. Si los cuadrados son muy pequeñitos (2x2 pixeles) entonces no subdivido, sino que directamente calculo los colores de los 4 pixeles que lo componen.

(información más detallada en la descripción del video en Youtube)

Código fuente del programa (está escrito en ZX Basic de Boriel)

Código: Seleccionar todo

'Compile with Boriel ZX Basic Compiler
'Parameters: -t -B -a -O3

'(C)2015 Miguel Angel Rodriguez Jodar (mcleod_ideafix)
'miguel.angel@zxprojects.com

'Distributed under GPL license


#define XMAX 127
#define YMAX 95
#define PART 32  'Initial dimension of a square
#define ESC 15   'Max. iterations for escape time algorithm (hint: we use colours 1-15)

declare sub StartRadastanMode
declare sub EndRadastanMode
declare sub PutPal (entry as ubyte, col as ubyte)
declare function GetPal (entry as ubyte) as ubyte
declare function MakeRGB (r as ubyte, g as ubyte, b as ubyte) as ubyte
declare sub PlotR (x as ubyte, y as ubyte, c as ubyte)
declare function PixelR (x as ubyte, y as ubyte) as ubyte
declare sub DrawRH (x1 as ubyte, y1 as ubyte, l as ubyte, c as ubyte)

'------------------------------------------------------------------------------

Dim i as ubyte
border 0
cls    'A pixel with value 0 means pixel not processed. Processed pixels have values 1-15

StartRadastanMode

for i = 0 to 7   'Initialize all 64 entries of the ULAplus palette
    PutPal (i,    MakeRGB(i,0,0))       'negro    -> rojo
    PutPal (i+8,  MakeRGB(7,i,0))       'rojo     -> amarillo
    PutPal (i+16, MakeRGB(7,7,i/2))     'amarillo -> blanco
    PutPal (i+24, MakeRGB(7,7-i,3))     'blanco   -> magenta
    PutPal (i+32, MakeRGB(7-i,0,3))     'magenta  -> azul
    PutPal (i+40, MakeRGB(0,i,3))       'azul     -> cyan
    PutPal (i+48, MakeRGB(0,7,(7-i)/2)) 'cyan     -> verde
    PutPal (i+56, MakeRGB(0,7-i,0))     'verde    -> negro
next i

'Main loop: divide screen into PARTxPART squares and process each one
dim y as ubyte
dim x as uinteger
for y = 0 to YMAX step PART
    for x = 0 to XMAX step PART
        mandel (x,y,PART)  'First call to recursive function
    next x
next y

'Palette cycling animation
Dim color0 as ubyte
BucleCicloPaleta:
pause 4
color0 = GetPal(0)
for i = 0 to 62
    PutPal (i, GetPal((i+1) mod 64))
next i
PutPal (63,color0)

if inkey$="" then
    goto BucleCicloPaleta
end if

EndRadastanMode
border 7
cls
End

'------------------------------------------------------------------------------

function escape (x as uinteger, y as ubyte) as ubyte
    dim cr,ci,zr,zi,tr,ti as fixed
    dim c as uinteger
    dim zrc,zic as fixed

    cr = -2.4+x*3.2/XMAX
    ci = -1.2+y*2.4/YMAX
    zr = cr
    zi = ci
    zrc = cr*cr
    zic = ci*ci
    c = 1
    while (zrc+zic)<4 and c<>ESC
        tr = zrc-zic+cr
        ti = 2*zr*zi+ci
        zr = tr
        zi = ti
        zrc = zr*zr
        zic = zi*zi
        c = c + 1
    end while
    return c
end function


sub mandel (x as uinteger, y as ubyte, lv as ubyte)
    dim co1,co2 as ubyte
    dim xx as uinteger
    dim yy as ubyte

    'Base case: compute colour for all pixels of the 2x2 square
    if lv = 2 then
       co1 = escape (x,y)
       PlotR (x,y,co1)
       co1 = escape (x+1,y)
       PlotR (x+1,y,co1)
       co1 = escape (x,y+1)
       PlotR (x,y+1,co1)
       co1 = escape (x+1,y+1)
       PlotR (x+1,y+1,co1)
       return
    end if

    'Compute colours for the perimeter of the current square
    co1 = PixelR (x,y)  'Read first pixel. If not processed...
    if co1 = 0 then     '...compute and plot it.
        co1 = escape (x,y)
        PlotR (x,y,co1)
    end if
    for yy = y to y+lv-1
        xx = x
        do
          co2 = PixelR (xx,yy)  'Read current pixel. If not processed...
          if co2 = 0 then
              co2 = escape (xx,yy)  '... compute and plot it
              PlotR (xx,yy,co2)
          end if
          if co1<>co2 then    'Are they different?
             goto subdividir  'then, abort perimeter calculation and go directly to subdivision
          end if
          if yy=y or yy=y+lv-1 then
             xx = xx + 1
          else
             xx = xx + lv-1
          end if
        loop until xx>=x+lv
    next yy

    'If we reach here, all pixels of the perimeter have the same escape time, so...
    for yy=y to y+lv-1    '... fill the square with the same colour
        DrawRH (x,yy,lv,co1)
    next yy
    return

    'If we reach here, we must partition the current square and recursively start over again
subdividir:
    mandel (x,y,lv/2)
    mandel (x+lv/2,y,lv/2)
    mandel (x,y+lv/2,lv/2)
    mandel (x+lv/2,y+lv/2,lv/2)
end sub

'------------------------------------------------------------------------------

sub StartRadastanMode
    out 48955,64  'ULAplus reg. $40, bits 0 and 1 set to 1
    out 65339,3
    if in 65339<>3 then
        print "RadastanMode not supported!"
        end
    end if
end sub

sub EndRadastanMode
    out 48955,64
    out 65339,0
end sub

sub PutPal (entry as ubyte, col as ubyte)
    out 48955,entry
    out 65339,col
end sub

function GetPal (entry as ubyte) as ubyte
    out 48955,entry
    return in 65339
end function

function MakeRGB (r as ubyte, g as ubyte, b as ubyte) as ubyte
    return ((g band 7) shl 5) bor ((r band 7) shl 2) bor (b band 3)
end function

sub PlotR (x as ubyte, y as ubyte, c as ubyte)
    dim addr as uinteger
    dim curbyte as ubyte

    addr = 16384 + cast(uinteger,y)*64 + cast(uinteger,x)/2
    curbyte = peek addr
    if (x band 1) then
        curbyte = (curbyte band $F0) bor c
    else
        curbyte = (curbyte band $0F) bor (c shl 4)
    end if
    poke addr,curbyte
end sub

function PixelR (x as ubyte, y as ubyte) as ubyte
    dim addr as uinteger
    dim curbyte as ubyte

    addr = 16384 + cast(uinteger,y)*64 + cast(uinteger,x)/2
    curbyte = peek addr
    if (x band 1) then
        curbyte = (curbyte band $0F)
    else
        curbyte = (curbyte shr 4) band $0F
    end if
    return curbyte
end function

sub DrawRH (x1 as ubyte, y1 as ubyte, l as ubyte, c as ubyte)
    dim i as ubyte

    for i=x1 to x1+l-1
        PlotR (i,y1,c)
    next i
end sub
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
antoniovillena
Amiga 1200
Amiga 1200
Mensajes: 2013
Registrado: 16 Abr 2012, 21:22
Gracias recibidas: 8 veces

Re: Cacharreando con el prototipo 2 del ZX-Uno

Mensajepor antoniovillena » 07 Feb 2015, 16:36

El driver del teclado está en vhdl en el archivo ps2k.vhd. No es muy complicado, puedes probar a cambiar a ciegas los valores de bit_count y lastclk. Te adjunto el del teclado av que es más corto todavía.

Respecto a la BIOS he añadido la posibilidad de upgradear ESXDOS (está en el repositorio). Voy a ver si esta noche me da tiempo a probarlo todo en el ZX-Uno y dejarlo listo.
Adjuntos
ps2k.zip
(1.72 KiB) Descargado 370 veces

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 54 veces
Contactar:

Re: Cacharreando con el prototipo 2 del ZX-Uno

Mensajepor mcleod_ideafix » 07 Feb 2015, 16:52

Quest escribió:Bueno, pues ya está cambiado mi código para que la salida sea 0 / Hi-Z (ahora midiendo da 3.3v que supongo que es lo que provee el zx-uno con las pullups y antes salían 5v, provocados por mi antiguo código, así que por ese lado, arreglado).

Menos mal, porque esta FPGA no es nada tolerante a 5V, y podrías habértela cargado.

Quest escribió:Con el cambio, el comportamiento sin embargo sigue siendo el mismo. Con timing A 12.5Khz (norma) sigue registrando sólo 1 de cada muchas pulsaciones y además no siempre sale el carácter correcto. A 1.190Khz funciona perfectamente. Y al igual que antes, en PC funciona perfecto a 12.5khz y no funciona a 1.190Khz.

El core de PS/2 que tiene actualmente el ZX-Uno es de las cosas que no he escrito yo. Este en concreto fue propuesto por Antonio Villena, así que no lo "controlo" tanto como otras cosas (éste está en VHDL, no en Verilog).

Por lo que me cuentas de los relojes, sospecho que el reloj que estamos usando para este core no es suficientemente rápido y hay problemas de aliasing. Ve al fichero ula_radas.v y busca (hacia la línea 86) esto:

Código: Seleccionar todo

    assign clkdac = clk7;
    assign clkay = hc[0];
    assign clkkbd = hc[4];


Cambia en la línea donde se asigna clkkbd, el 4 entre corchetes por un 1. Con eso estamos multiplicando la frecuencia del core PS/2 por 16. La frecuencia actual es de 218.75kHz (7MHz dividido entre 32). Con el cambio se queda en 1750kHz. Sintetiza el nuevo core y envíaselo (el .BIT) a la FPGA, a ver qué tal ahora :)

Quest escribió:Tengo soldada una de las plaquitas VGA, la que va al puerto rgb/jtag

Esa plaquita es la que estoy usando precisamente para las pruebas. Esa te valdrá.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista


Volver a “Sinclair/Spectrum”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 13 invitados