Electronic – Memory interface for video output

displaydspmemorysdramvideo

I am designing a system where a DSP (like the TMS320VC5501) processes some video data and outputs it to a PSP screen (the ones sold on sparkfun). The issue I'm having here is designing the video output interface. I'm thinking that I should have a video buffer and maybe a CPLD to read data and spit it out to the PSP screen, but the exact details haven't been completely worked out.

My main concern is timing. The DSP will be writing image data to the video buffer as fast as possible which might not leave enough room for data reads on the output side. I've looked around and it seems like GPUs these days use fast SDRAM which suggests that I should use it (since it's obviously working for them), but if I do then I'm blanking on how to read from it to output to the display. (The DSP has an SDRAM controller, but I don't want to load it with constant display requests. I want to use it's processing power for actual processing as opposed to memory games) Another alternative is VRAM, but this is a really old method and seems to be going out of style. Might be my best option though…

As another thought, I can use DMA to burst-write 11520 bits (480pix x 8bits x 3colors) to a shift register during hsync via an interrupt (hsync/vsync will be PLD controlled). From there, the PLD will control that shift register to output the data using the correct timing. I have to double check the numbers, but this seems like a plausible solution.

Anybody have any insight on this?

Best Answer

Normally the video interface logic (video controller) will read from some sort of RAM and output the proper video signals required by the display. I highly recommend that you don't try to create your own video controller by interfacing some sort of RAM and CPLD to your DSP. Doing a video controller is hard. Really hard.

Don't take this the wrong way, but your question is proof that you don't yet have what it takes to make your own video controller. This is not really a bad thing. Few people have what it takes. A senior electrical engineer with 15+ years of experience would probably take 3 months to create, build, and test such a device while working 40 hours a week on it.

The "correct" way to solve this would be to choose an MCU or DSP that already has a video controller in it. For example, TI makes some nice ARM Cortex A8 based MCU's that are as fast or faster at signal processing as the TMS320VC5501 for not a lot of more money (compared to other methods of doing this). This method also does not require extra memory for video (it is stored in the normal DDR3 SDRAM as what the CPU uses).

Other solutions would require doing things like adding an MCU w/video to the PCB along with the TMS320VC5501. Or getting an FPGA+SDRAM to do the same function (and then designing that logic). Both of these solutions are crazy given that the TMS320VC5501 is not that fast of a DSP and you get a huge bang for the buck from the ARM Cortex A8's. Not only will these solutions cost more, but they also more complex, take up more PCB space and will not operate as well.