TODOPIC

FORO TÉCNICO => Foro Técnico => Mensaje iniciado por: jfmateos2 en 23 de Marzo de 2014, 11:40:23

Título: ¿Cómo se denominan las RAM a las que se accede secuencialmente?
Publicado por: jfmateos2 en 23 de Marzo de 2014, 11:40:23
Recuero haber leído que existen unas memorias RAM que se leen secuencialmente sin tener que hacer uso del bus de direcciones; con cada pulso del reloj acceden a su siguiente dato...

pero no recuerdo cómo se llaman para intentar localizar alguna en concreto.
Título: Re: ¿Cómo se denominan las RAM a las que se accede secuencialmente?
Publicado por: manwenwe en 23 de Marzo de 2014, 11:46:26
Recuero haber leído que existen unas memorias RAM que se leen secuencialmente sin tener que hacer uso del bus de direcciones; con cada pulso del reloj acceden a su siguiente dato...

pero no recuerdo cómo se llaman para intentar localizar alguna en concreto.

SAM?
Título: Re: ¿Cómo se denominan las RAM a las que se accede secuencialmente?
Publicado por: fuente en 23 de Marzo de 2014, 16:46:14
Creo que son memorias FIFO.
Algunas referncias muy antiguas son la AM7202, de AMD, o la CY7C425 de CYPRESS.
Título: Re: ¿Cómo se denominan las RAM a las que se accede secuencialmente?
Publicado por: Tisco en 23 de Marzo de 2014, 18:20:08
Recuero haber leído que existen unas memorias RAM que se leen secuencialmente sin tener que hacer uso del bus de direcciones; con cada pulso del reloj acceden a su siguiente dato...

pero no recuerdo cómo se llaman para intentar localizar alguna en concreto.

SAM?

 :D :D :D
Título: Re: ¿Cómo se denominan las RAM a las que se accede secuencialmente?
Publicado por: rivale en 24 de Marzo de 2014, 13:40:49
Recuero haber leído que existen unas memorias RAM que se leen secuencialmente sin tener que hacer uso del bus de direcciones; con cada pulso del reloj acceden a su siguiente dato...

pero no recuerdo cómo se llaman para intentar localizar alguna en concreto.

SAM?

 :D :D :D


Si se llaman así

http://kb.sandisk.com/app/answers/detail/a_id/8150/~/difference-between-sequential-and-random-access-operations (http://kb.sandisk.com/app/answers/detail/a_id/8150/~/difference-between-sequential-and-random-access-operations)


En las fifo (first input first ouput) lees los datos en el orden en el que se fueron grabando
Título: Re: ¿Cómo se denominan las RAM a las que se accede secuencialmente?
Publicado por: Tisco en 24 de Marzo de 2014, 15:35:10
No lo dudo, pero me ha hecho gracia.

Un saludo!
Título: Re: ¿Cómo se denominan las RAM a las que se accede secuencialmente?
Publicado por: manwenwe en 24 de Marzo de 2014, 16:50:04
Yo gano  :D

Es broma ;-). Lo busqué en google y salió rápido: yo tp sabía que existían. Las FIFO sí, aunque como dice rivale no son iguales.

Un saludo a todos!
Título: Re: ¿Cómo se denominan las RAM a las que se accede secuencialmente?
Publicado por: jfmateos2 en 09 de Abril de 2014, 03:04:42
Gracias chicos... efectivamente se trataba de FIFO, pero además necesito que sea dual port, es decir, que el PIC pueda hacer escrituras aleatorias por un puerto de la memoria y otro dispositivo pueda leer todo el contenido de la memoria en modo FIFO por otro puerto.

Me he llevado un soponcio al ver que el precio de estas memorias, para 512kB (4Mbits), no baja de los 150€ en Cypress, así que tendré que buscar otra solución... a menos que alguien conozca una solución más económica.
Título: Re: ¿Cómo se denominan las RAM a las que se accede secuencialmente?
Publicado por: MerLiNz en 09 de Abril de 2014, 06:53:33
Porque necesitas este tipo de memoria?? No puedes utilizar otra que la leas de forma normal?
Título: Re: ¿Cómo se denominan las RAM a las que se accede secuencialmente?
Publicado por: jfmateos2 en 09 de Abril de 2014, 07:13:30
Se trata de un sistema de vídeo.

El procesador (un PIC en mi caso) escribe en la memoria un gráfico y un conversor D/A convierte ese gráfico en señal de vídeo (el PIC y el conversor D/A comparten la misma memoria; el primero la escribe aleatoriamente y el segundo la lee secuencialmente). El conversor D/A espera recibir una corriente BT.656, que tiene una tasa de transferencia de 27MBytes/s (va a toda leche) unos 1.080.000 bytes por fotograma.

Por lo que he leído:

Lo que a mí se me ha ocurrido es usar dos SRAM. El PIC escribe en una mientras el D/A procesa la otra. Cuando termina el D/A se intercambian las SRAM y vuelta a empezar. Esto se llama dual buffering y se usa desde las primeras computadoras (claro que estas iban mucho más despacio).

El problema es la multiplexión de los buses (el bus de direcciones tiene 20-21 líneas y el de datos 8 ): desde el lado del PIC no creo que hubiera mucho problema porque hay PICs con muchos pines (podría crear dos buses completos; uno para gestionar cada SRAM). Pero en el lado del conversor D/A necesitaría por un lado un contador que fuese elevando la dirección de la memoria automáticamente con cada ciclo (para emular una FIFO) y por otro lado un multiplexor para 20 ó 21 + 8 líneas que permitiera dirigira el conversor a una SRAM o la otra. Hacerlo con lógica discreta quizás salga más caro que hacerlo con una CPLD y va a ser un follón... pero no tengo experiencia con CPLD... así que a menos que alguien me sugiera algo seguiré indagando por este camino  :(
Título: Re: ¿Cómo se denominan las RAM a las que se accede secuencialmente?
Publicado por: ppyote en 09 de Abril de 2014, 08:18:12
Que cantidad de memoria necesitas? De cuanto sería cada buffer?
Título: Re: ¿Cómo se denominan las RAM a las que se accede secuencialmente?
Publicado por: jfmateos2 en 09 de Abril de 2014, 08:22:46
Creo que 1.080.000 bytes por fotograma... aunque no lo tengo aún muy claro porque quizás pudiera reducirse a la mitad utilizando vídeo entrelazado en lugar de progresivo.
Título: Re: ¿Cómo se denominan las RAM a las que se accede secuencialmente?
Publicado por: Picuino en 09 de Abril de 2014, 09:25:45
Por lo que he leído:
  • Para evitar lo caras que son las memorias dual port, hay gente que aprovecha los intervalos entre lecturas (37ns) para permitir al procesador realizar escrituras, pero no creo que los PIC sean capaces de aguanzar estas velocidades (generalmente utilizan FPGA/CPLDs).

Esa me parece a mí la mejor solución.
Como el PIC es lento, puedes escribir el dato desde el PIC a un registro que lo almacene (dirección y dato) y que sea muy rápido.
Luego, en el intervalo de 37ns entre lecturas de la FPGA, pasas ese dato del registro a la SRAM.

Saludos.
Título: Re: ¿Cómo se denominan las RAM a las que se accede secuencialmente?
Publicado por: Picuino en 09 de Abril de 2014, 09:32:30
Puede que esta te valga:

10ns Tiempo de acceso
512k x 8 bits
3.70 Euros.

http://es.farnell.com/cypress-semiconductor/cy7c1049dv33-10vxi/sram-4mbit-parallel-10ns-36soj/dp/2115423

Saludos.
Título: Re: ¿Cómo se denominan las RAM a las que se accede secuencialmente?
Publicado por: jfmateos2 en 09 de Abril de 2014, 09:36:51
Muchas gracias picuino, el problema que le veo es que el PIC tendría que estar constantemente atendiendo al registro para saber cuando está libre y volver a cargarlo.
Título: Re: ¿Cómo se denominan las RAM a las que se accede secuencialmente?
Publicado por: Picuino en 09 de Abril de 2014, 11:33:58
En principio, el registro se descarga como mucho en 37ns.
Despues de cada lectura del DAC, si el registro tiene datos, los carga en la memoria.

El Pic no va a ser tan rápido.
Puedes sincronizar los relojes para que no haya problemas.

En el ZX Spectrum (http://es.wikipedia.org/wiki/Sinclair_ZX_Spectrum), El micro Z80 corria a 3.5 Mhz para sincronizarle con la ULA (circuito de video) en la zona de memoria de video que ambos compartían. Si no fuese por eso, el Z80 podría haber corrido a 4Mhz. Lo mismo le pasaba al Amstrand CPC (http://es.wikipedia.org/wiki/Amstrad_CPC#Hardware).

El Pic también puede correr a 27Mhz, como el DAC.

Salvando las distancias de 30 años, me parece un problema semejante.

Saludos.

P.D.: Corregido. El Amstrad CPC tenía el mismo problema que el ZX Spectrum pero se solucionó de otra manera (eliminando ciclos de reloj del Z80).
Título: Re: ¿Cómo se denominan las RAM a las que se accede secuencialmente?
Publicado por: jfmateos2 en 09 de Abril de 2014, 14:32:49
Muchas gracias Picuino, voy a estudiar con más detalle esta opción porque efectivamente es la más económica (sólo una SRAM).

Para dar más detalles sobre el proyecto, el conversor DAC requiere un cristal de 27MHz, y mi idea es inyectar ese reloj también al PIC32 con un divisor de 6 y una multiplicación de 20 para hacerlo correr a 90MHz.
Título: Re: ¿Cómo se denominan las RAM a las que se accede secuencialmente?
Publicado por: Picuino en 10 de Abril de 2014, 07:17:06
Ese micro es bastante rápido.

¿No sería mejor multiplicar por 3 (27*3 = 81 Mhz) para que estén los dos bien sincronizados?

De todas formas, con ese micro utilizando DMA puedes ser más rápido que el DAC.

Otra solución puede ser hacer perder uno de cada tres ciclos de reloj al PIC mientras accede a memoria compartida para que espere al DAC.
De esa forma el micro trabajaría a 27*2 = 54Mhz accediendo a memoria y el ciclo perdido estaría dedicado al DAC.

Cada ciclo de memoria debe tener 12.34ns, dos ciclos para el PIC y uno para el DAC

Saludos.


Título: Re: ¿Cómo se denominan las RAM a las que se accede secuencialmente?
Publicado por: jfmateos2 en 10 de Abril de 2014, 07:45:41
El problema es que el multiplicador del PIC32 sólo admite frecuencias entre 4 y 5MHz, de modo que hay que dividir necesariamente los 27MHz antes de multiplicarlos.

Tengo pendiente el estudio del DMA (no lo he usado nunca) porque efectivamente creo que podría aprovecharlo para pasar información directamente desde la SRAM al DAC.

Muchas gracias picuino, no hay como intercambiar opiniones para avanzar (realmente es mucho más fructífero trabajar en equipo que uno solo).
Título: Re: ¿Cómo se denominan las RAM a las que se accede secuencialmente?
Publicado por: jfmateos2 en 10 de Abril de 2014, 09:33:26
Pues cuanto más me meto con el DMA, más me parece que va a ser la solución (gracias picuino  ((:-)) ).

De hecho en esta nota de aplicación hacen justo lo que yo quiero: http://datasheet.octopart.com/AC164144-Microchip-datasheet-10742593.pdf

(http://snag.gy/FrZ6I.jpg)

 :-/
Título: Re: ¿Cómo se denominan las RAM a las que se accede secuencialmente?
Publicado por: jfmateos2 en 11 de Abril de 2014, 10:17:43
Tras estudiar el DMA del PIC32, encuentro la limitación de 15MHz que indica la anterior nota de aplicación de aplicación, y que otros han encontrado problemas con resoluciones menores que la que yo pretendo aquí  (http://www.microchip.com/forums/m734192.aspx)y aquí (http://www.microchip.com/forums/m623094.aspx).

Parece ser que el problema está en que el DMA del PIC no sigue un sincronismo determinístico, de modo que es muy difícil hacerlo trabajar a frecuencias altas.

Consecuentemente, decido abordar la cuestión con CPLD, pero como no tengo ni idea, pido consejo a quiénes tengáis algo de experiencia.

Mi primera intención que comprar una tarjeta económica (me inclino por ésta de Altera EPM240 (http://www.ebay.es/itm/LC-MAXII-Altera-EPM240-CPLD-development-board-/161057457542?pt=UK_BOI_Electrical_Components_Supplies_ET&hash=item257fc5c586l)) y el USB Blaster....

Pero si alguien me aconseja otra forma de empezar con CPLD soy todo oídos.

Gracias.