Tutorial de VHDL centrado en crear un clon

Sinclair QL, ZX81, +2, +3, 128K ...
Avatar de Usuario
antoniovillena
Amiga 1200
Amiga 1200
Mensajes: 2013
Registrado: 16 Abr 2012, 21:22
Gracias recibidas: 8 veces

Re: Tutorial de VHDL centrado en crear un clon

Mensajepor antoniovillena » 13 Jun 2013, 08:45

mcleod_ideafix escribió:
antoniovillena escribió:Lo del conversor sigma-delta está bien porque simplifica el circuito, pero no me parece buena idea incluirlo en el tutorial porque se supone que es para principiantes y añade complejidad innecesaria al código.

Como quieras, pero es infinitamente más sencillo que el T80, que también se incluye en el tutorial. Ambas cosas (T80 y conversor sigma-delta) se usarían como cajas negras en tu tutorial.


Y en este caso, ¿cómo sería el circuito? Supongo que tres resistencias en serie (una para cada componente) para hacer de divisor de tensión (con los 75ohm) y que los 3.3V se transformen en 0.7V.

En cuanto al cable RGBI->RGB que es lo que estaba preguntando antes, conjeturo que habéis cogido las 4 resistencias de 68ohm de este circuito:

http://www.fruitcake.plus.com/Sinclair/ ... ircuit.gif

y los 3 diodos 1N4148 / 3 resistencias de 150ohm de este otro:

http://www.fruitcake.plus.com/Sinclair/ ... ircuit.gif

Creo que la ULA saca niveles de tensión muy cercanos a lvcmos33 y por eso se ve bien.

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: Tutorial de VHDL centrado en crear un clon

Mensajepor mcleod_ideafix » 13 Jun 2013, 11:15

antoniovillena escribió:Y en este caso, ¿cómo sería el circuito? Supongo que tres resistencias en serie (una para cada componente) para hacer de divisor de tensión (con los 75ohm) y que los 3.3V se transformen en 0.7V.

Una resisterncia y un condensador (un filtro RC paso baja de lo más simple) cuyos valores se calculan en función de la frecuencia máxima que puede alcanzarse en la señal analógica de salida. En el documento XAPP154 de Xilinx te lo explica. Aunque ahí habla de Virtex, el sistema funciona en cualquier otra FPGA, e incluso en CPLD's.

antoniovillena escribió:En cuanto al cable RGBI->RGB que es lo que estaba preguntando antes, conjeturo que habéis cogido las 4 resistencias de 68ohm de este circuito:

Yo lo hice partiendo del esquema del ZX Spectrum +2A/+3, ajustando los valores de acuerdo con una salida de 3.3V en lugar de 5V.
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: Tutorial de VHDL centrado en crear un clon

Mensajepor antoniovillena » 13 Jun 2013, 12:13

Recapitulando, las tres soluciones para sacar video RGB en la placa OLS son:

  1. Conversor delta sigma siguiendo el código Verilog que McLeod tiene publicado en OpenCores para la Spartan 3-1000 y 250. Serían 3 resistencias de 270 ohm y 3 condensadores cuyo valor habría que calcular.
  2. DAC de 2 bits por canal (6 resistencias). Resistencias calculadas de 836 y 417 ohm, nominales de 820 y 430.
  3. Circuito conversor RGBI->RGB, o bien el de fruitcake que he puesto más arriba (7 resistencias y 3 diodos), o bien el del clon Superfo 128 (6 resistencias y 3 diodos). En ambos casos adaptando los valores a 3.3V

Avatar de Usuario
jotego
Atari 1040 STf
Atari 1040 STf
Mensajes: 657
Registrado: 16 Ene 2013, 23:25
Sistema Favorito: Atari ST
primer_sistema: Amstrad CPC
consola_favorita: Sony PlayStation 2
Primera consola: Atari Lynx
Ubicación: Valencia (España)
Gracias dadas: 27 veces
Gracias recibidas: 44 veces
Contactar:

Re: Tutorial de VHDL centrado en crear un clon

Mensajepor jotego » 13 Jun 2013, 13:19

Lo del DAC sigma delta me tiene un poco intrigado. ¿Estáis hablando de un chip aparte o es que la Spartan 3 ya lleva un DAC dentro?

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

Re: Tutorial de VHDL centrado en crear un clon

Mensajepor antoniovillena » 13 Jun 2013, 13:54

No, no es ningún chip. Se trata de "simular" una salida analógica empleando una salida digital de mayor ancho de banda, algo parecido al PWM pero más eficiente. Aquí viene muy bien explicado:

http://www.fpga4fun.com/PWM_DAC.html

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: Tutorial de VHDL centrado en crear un clon

Mensajepor mcleod_ideafix » 13 Jun 2013, 14:53

jotego escribió:Lo del DAC sigma delta me tiene un poco intrigado. ¿Estáis hablando de un chip aparte o es que la Spartan 3 ya lleva un DAC dentro?

El codificador Sigma-Delta no es más que una especie de PWM "inteligente". No necesita módulos especiales en la FPGA ni nada de eso, y la circuitería externa se reduce a un filtro RC de primer orden.

Para que te hagas una idea: en una de las implementaciones de Spectrum con ULAplus que tengo en OpenCores surgió la necesidad de generar una señal RGB analógica. Podría haber usado un DAC de resistencias y eso, pero no quería tocar la circuitería externa a la FPGA, así que quería seguir con mis tres cablecillos: uno para el rojo, otro para el verde y otro para el azul.

La señal que circula por cualquiera de esos cables va a tener una frecuencia máxima Fm = 3.5MHz (equivalente a una línea de video con un pixel blanco, uno negro, uno blanco, uno negro, etc). El reloj de pixel es de 7MHz.
La resolución del DAC Sigma-Delta es de n=3 bits. El documento mencionado de Xilinx especifica que la frecuencia mínima a aplicar al modulo Sigma-Delta es de 2^(n+1)*Fm. En mi caso eso significaba: 16*3.5 = 56MHz

Por eso, si miras esa implementación (el módulo TLD) verás que se parte precisamente de un reloj de 56MHz, y el resto (28, 14, 7, 3.5) derivan de él.

Usé otro Sigma-Delta para poder sacar la salida de sonido del AY-3-8912 por un solo pin de la FPGA. En este caso los cálculos dan una frecuencia un poco más baja: partiendo de que al ser un chip de sonido, el rango de frecuencias está limitado por encima a 20kHz (en realidad, y como el AY genera señales de onda cuadrada, hay armónimos a frecuencias más altas), y la resolución que da el core de AY que usé es de 8 bits, tengo como frecuencia mínima para el Sigma-Delta: 512*20=10MHz . En el diseño sin embargo he usado un reloj un poco más alto, el de 14MHz.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
jotego
Atari 1040 STf
Atari 1040 STf
Mensajes: 657
Registrado: 16 Ene 2013, 23:25
Sistema Favorito: Atari ST
primer_sistema: Amstrad CPC
consola_favorita: Sony PlayStation 2
Primera consola: Atari Lynx
Ubicación: Valencia (España)
Gracias dadas: 27 veces
Gracias recibidas: 44 veces
Contactar:

Re: Tutorial de VHDL centrado en crear un clon

Mensajepor jotego » 13 Jun 2013, 15:02

Gracias por las explicaciones. De sigma-delta sé muy poquito porque nunca me ha tocado trabajar en uno. ¿Y qué tal suena el AY-3-8912 sacado así? ¿Y qué tal se ve?

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: Tutorial de VHDL centrado en crear un clon

Mensajepor mcleod_ideafix » 13 Jun 2013, 15:53

jotego escribió:Gracias por las explicaciones. De sigma-delta sé muy poquito porque nunca me ha tocado trabajar en uno. ¿Y qué tal suena el AY-3-8912 sacado así? ¿Y qué tal se ve?

En cuanto a cómo se oye: pues perfectamente. Con una frecuencia de Sigma-Delta de varios megahercios, a menudo no necesitas siquiera el filtro RC, ya que la salida habitualmente la usarás en un amplificador de audio, que ya por diseño tiene limitación de frecuencia. Mira: (igual tienes que subir un poco el volumen porque el de la tele, cuando grabé esto, estaba bajo para no molestar. El zumbido que se escucha superpuesto es de un ventilador o algo así: no viene de la FPGA):
http://twitter.yfrog.com/5juasxhqysiuhduojmhqycrpz

En cuanto al video, puedes ver cómo queda en las imágenes que acompañan al proyecto de OpenCores. Por ejemplo, esta:
Imagen

Es una de las imágenes de un slideshow que hice usando de forma combinada los modos ULAplus, para tener 64 colores en pantalla, más el Timex Hicolor, para tener dos colores diferentes por cada scan de 8x1 píxeles. El hardware es mi placa entrenadora Digilent con una Spartan 3-1000 y la salida de video son tres pines de la FPGA que hacen de RGB. Cada pin viene de un conversor Sigma-Delta de 3 bits, a 56MHz, justo el que comenté antes.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

jepalza

Re: Tutorial de VHDL centrado en crear un clon

Mensajepor jepalza » 13 Jun 2013, 18:53

antoniovillena escribió:Recapitulando, las tres soluciones para sacar video RGB en la placa OLS son:

En el OLS, tienes un ejemplo que le dejé a Mcleod_Ideafix y que colgó en OpenCores, AQUI(no sé si lo habrás visto, pero no me refiero a lo de Mcleod_Ideafix como tal, sino a una conversión que hice de un Spectrum 16k sobre el OLS, que se ve si vas hacia la mitad de la página mas o menos). Ahí verás que empleo las salidas de vídeo de la ULA de Mcleod_Ideafix, con el esquema de las resitencias en RGB y sincronismos. Muy sencillo. Es el mismo cable que empleo en el Clón-128.

La única pega, es que las imágenes que indican los pines en el OLS son viejas, Mcleod_Ideafix no las actualizó, pero si te hace falta y lo quieres probar, tengo el fichero guardado, y te lo envío donde me digas, y así puedes ver como va el tema del vídeo.

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

Re: Tutorial de VHDL centrado en crear un clon

Mensajepor antoniovillena » 13 Jun 2013, 19:39

Pues sí que lo he probado, pero no en la OLS sino en la MODVGA (con algunos cambios) y funciona muy bien. También tengo la OLS, pero ya tengo el tinglado montado para la MODVGA así que me fuí a lo fácil.

No es ninguna pega, las imágenes son acordes a lo que hay en el código fuente, es decir salida RGBI y los enlaces para montarse el cable en fruitcake son del cable correcto, del Spectrum 128K. Mi intención era que los que tuviesen OLS pudiesen seguir el tutorial, al menos hasta la lección 3 ó 4. Pero vamos que con lo que hemos hablado aquí y lo que hay en el tutorial creo que ya es más que suficiente para que alguien que tenga la OLS pueda seguirlo, por cualquiera de los 3 métodos para sacar RGB que he mencionado anteriormente.


Volver a “Sinclair/Spectrum”

¿Quién está conectado?

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