• 0

Advices for camera and SDRAM integration on nexys video




I have been investigating how multiple clock domains work and how you can send data ASAP from a camera module to a SDRAM (taking a pic).

I am currently using a Nexys-Video and a Zed board and wonder if I could get some tips.

The problems I encountered during my research is:


-The picture I take has to be stored ASAP, meaning I have to use the mig7 interface for the SDRAM and HDL code. However this will be hard since it requires me to understand how the MIG7 works and thus writing a HDL that is adjusted to work with it.


- What is the maximum frequency of a micro blaze? Using the micro blaze would be easier for me since I can directly write and read to/from the SDRAM using the peripheral libraries. However, the maximum clock frequency of a MB processor is not so much thus making that choice a bottleneck.


- How should the communication between the camera and the SDRAM work? My initial idea was to use a buffer (BRAM) and store my picture there and then somehow do pipelined reading using the micro-blaze. Or alternatively, to send bytes to the micro-blaze directly without using a buffer. However I don’t really know if that is a good idea since the camera and the micro blaze work on different clock frequency levels.


Would be glad if you could help me on the way. 






Link to post
Share on other sites

3 answers to this question

Recommended Posts

  • 0


Currently, I have working example and can write data and read data using the MIG7 interfaced together with a uB. However, since this is a soft core and runs with a certain speed , we wont get maximum speed here. I might be wrong and just want clarifications. 



Link to post
Share on other sites
  • 0


If you are trying to a get maximum data rate from your camera to memory, you won't get that by using a CPU.  You would have a better chance getting it from a direct memory access controller and keeping the CPU out of the way.

If you are trying to get maximum throughput via a memory bus, you'll want to tailor your bus to the memory.  The Nexys-Video has a 128-bit wide memory path that runs at a 100MHz clock rate.  If you try to run that path from a faster microBlaze, then you are likely to slow it down.  Depending upon your needs, that may well be fast enough for you.

As for your question regarding how fast uB can run, Xilinx claims over 200MHz, perhaps even as high as 250MHz--though I'm not looking at the number right now to be sure.  I've also never had the opportunity to test that.  That said, if you try to run a 200MHz signal into a 100MHz MIG controller, you'll need to go through a clock conversion operation which is likely to slow you down.

When I've connect to MIG memory in the past, I use a WB bus (it's simpler to control), and a WB to AXI converter.  The AXI bus then connects to the MIG.  The whole operation has a horrible latency (27 or so clocks at 10ns each), but most of that is due to the MIG controller.

Hope this helps,


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now