08-08-2016 02:18 AM - edited 08-08-2016 02:19 AM
What's the minimum size of the Block RAM should be used?
I mean the BRAM is being produced with slices... So what's the slice size which the BRAM is composed from?
P.S. I'm using zynq 7020 if it's a matter...
08-08-2016 02:23 AM
Not sure about the size of Block RAM but If you want Bram to infer then you can try using Block Memory Generator IP from Vivado IP catalog.
08-08-2016 02:29 AM
08-08-2016 04:27 AM
As for the Distributed Memory should it be used in the same way as BRAM?
How can I connect the Distributed RAM to AXI bus?
Actually I need to build 16 DPR memories of 32*4KB each one. What's preferable to use - BRAM or Distributed RAM?
08-08-2016 04:32 AM
08-08-2016 04:36 AM
The difference lies in the resources used. If you are using Distribted RAM then the LUT utilization might go high and may not be available for rest of the design. Please verify the no. of BRAMs available in your device. If its enough for your design requirement, then you can make use of BRAMs.
08-08-2016 05:29 AM
In the Zynq 7000 series, the minimum block RAM size is 18K or 16K, depending on what mode it's in (you can only have 18K if it's in 9-bit, 18-bit, or 36-bit mode; otherwise it's a 16K RAM). For small bit widths (18-bit or lower) you can treat each 18K/16K RAM as two 9K/4K RAMs if you want, by using a single port for each one.
In your specific case, 4K*32-bit will be best done with eight 16K block RAMs operating in 4K*8-bit mode.
In general, block RAM is preferred over distributed RAM for anything that uses a reasonably large amount of space. For a 128K array (as you need) block RAM is definitely better; producing such a large array would use a lot of the general-purpose logic resources. On the other hand, if you only wanted to store 128 bytes of data (1Kbit) then distributed RAM may well make more sense; it won't take up much logic and only storing 1Kbit in an 18Kbit RAM is not a particularly good use of the available resources.
Of course, the primary rule for pretty much any software/hardware work is "whatever meets the requirements". If you've got a device where the logic is nearly full but there's plenty of spare block RAM, go ahead and shove a 32-byte array into a spare block RAM to save logic. Or, if you're running out of block RAM but there's spare logic, creating a 128Kb distributed RAM might just be what you need.
08-11-2016 01:14 PM