Are there any SRAM shields in existence? If not, would this be a worthwhile project? If so, how much memory is considered desirable? I have a CPLD solution that I've been using for frame-buffering for VGA. Not sure if this has been done already and if this can be purchased off-the-shelf...
To me, the problem seems to be that any external RAM can't really be used as an expansion to the ATMega's "real" RAM. So essentially, you end up with an off-board storage area which is similar in a sense to using something like an SD card (although probably faster).
I did consider building something like this once - and thought that maybe you could create classes (e.g. SRAM_byte) which handle their placement etc. on the off-board RAM chips for you... which might be kinda cool but maybe not actually that useful.
I did consider putting a piece of dual ported SRAM on a shield to act as a video buffer but I haven't got round to it yet. The main drag is having to multiplex all the parallel address and data lines. I don't know of any dual ported serial input on one side SRAM.
To me, the problem seems to be that any external RAM can't really be used as an expansion to the ATMega's "real" RAM. So essentially, you end up with an off-board storage area which is similar in a sense to using something like an SD card (although probably faster).
True. It would require more effort for the programmer. Speed is also a concern, given that you would want to keep as many I/O free as possible. It limits the shield to SPI or I2C. Large memory banks would require significant addressing which would require 3 or 4 SPI transfers to address and transfer data to the memory. Can the Atmega do SPI transfers larger than 8-bits?
I did consider putting a piece of dual ported SRAM on a shield to act as a video buffer but I haven't got round to it yet. The main drag is having to multiplex all the parallel address and data lines. I don't know of any dual ported serial input on one side SRAM.
I would love a dual port SRAM board. The problem is that Dual Port SRAM is relatively expensive unless you know of some cheaper kind. A solution to adding serial transfers to a dual port SRAM would be a CPLD implementation.
I developed a way of addressing multiple 23K256 32KB SRAM chips without adding additional time to the SPI transfer. The Arduino injects additional address bits into the data packet while the CPLD strips them out and enables the appropriate SRAM chip.
It's a quick and cheap way to add more than one 23K256 without sacrificing transfer time. It can be addressed for more than 256KB, up to 2MB... cost and device count being the significant limiting factor.
I'm going to play with Grumpy_Mike's dual port sram next...