FPGARelated.com
Forums

FPGA system RAM

Started by Doug Jones July 1, 2005
I am in the early design stages of an FPGA-based audio / video stream
source and sink.  The FPGA board will be an ethernet node that will
accept digitized video from a local video camera for compression as
well as digitized audio.  The compressed video/audio stream will be
streamed out over ethernet.  Simultaneously, the FPGA board will accept
via incoming ethernet a compressed video/audio stream which will be
decompressed and sent to a video DAC for display on a local screen.

My question is about the RAM design for the system - RAM will be needed
for (1) storage & decompression of video/audio, (2) for storage and
compression of audio/video, (3) a memory for the local display (really
just the output from the decompression system), and (4) RAM for
microblaze embedded processor.  The target FPGA is Spartan 3. I was
hoping to use generic DDR RAM. So there are 3 or maybe 4 subsystems
competing for RAM bandwidth. Is it likely that such a design will
require separate RAM for the input and output sides? What about dual
port RAM? On the display side, is dual port RAM generally needed where
there is contention for the RAM between a video controller reading out
pixels and video decompression of an input stream to generate those
pixels? What about the microblaze? I would think it would be the most
tolerant of sharing of RAM bandwidth, given that wait states may be
needed if the RAM is busy.

All suggestions are much appreciated.
Thanks, Doug Jones

Doug, before anybody can give you a meaningful answer, we need to know
something about the speed or bandwidth required by your system.
Peter Alfke

Video is 640 x 480 x 24 bits x 30FPS = 220 Mbps uncompressed.  Assume
50:1 compression (is that realistic?) = 4.4 Mbps.  Audio is 44.1 kHz x
4 bytes = 1.4 Mbps.  Audio is uncompressed so total is 5.8Mbps
bidirectionally so grand total is around 11.6 Mbps. Microblaze will be
running web server for TCP/IP support.

I do not know to what the compression ratio i deterministic and
predictable, and what you have to assume worst-case.
At the low ates you mention, there seems to be plenty of room for
creative ideas to use available nanoseconds intelligently. You do not
need a dual-port mamory if there is enough time to time-multiplex the
data.
Good luck, this looks like a fun project...
Peter Alfke

Thank you for your advice.
Doug Jones

Sorry for the awful typos. I am really a good speller, but I got
distracted...
Peter Alfke