07-14-2009 07:47 AM
Does anyone has an idea how can I use larger BRAM (more than 64K) in a MicroBlaze project? From the MicroBlaze user guide, it looks like I need to generate
a new BRAM module using core generator. I did that and now I have vhdl source file for 128K BRAM module and need to incorporate this module into my project.
I checked the
in XPS using my 128K one and connect it to LMB. Is there any way to do that? Or is there any way I can go to enlarge the BRAM size? Thanks.
Solved! Go to Solution.
07-14-2009 08:18 AM
EDK->System Assembly View->Addresses->
Increase data local memory bus (dlmb) and instruction local memory bus (ilmb) BRAM controller's address range, hence changing the memory space to, say, 128K of both equally. Don't forget to re-generate the linker script of your application.
07-15-2009 04:19 AM - edited 07-15-2009 04:25 AM
There is no need to use the core generator.
If you want more BRAM on the LMB bus, just add more lmb_bram_if_cntlr and connect them to new bram_module.
Each lmb_bram_if_cntlr can handle 64kbyte so just add more of them.
The same if the BRAM is on the OPB or PLB, just add the bram_controller for that bus and a new bram_module.
This can be done in the normal system assembly view in XPS.
07-15-2009 09:19 AM
I added in one more bram_block and one more lmb_bram_if_cntlr, generate addresses in system assembly view. In SDK, I did xilinx tools->synchronize with hardware, re-generate
linker script, compile, generate the elf file. Then updated bitstream in XPS, downloaded bitstream to the board. But seems the software did not really execute (even in my linker script,
I did not use the newly added BRAM block). Is there any missing steps?
07-15-2009 11:30 PM - edited 07-15-2009 11:33 PM
Did you connect them to MicroBlaze?
Can you post the .mhs?
If you only added one more lmb_bram_if_cntlr, did you connect it to the ILMB or DLMB interface on MicroBlaze?
Do you need more BRAM for code or for data?
If you added it for code, you need to add another lmb_bram_if_cntlr so that the data side can have access to this bram.
Data need access to the instruction memory if you want to download to it or setting soft breakpoints.
03-29-2010 11:25 AM
My EDK executable .data section is ~ 84K. I have a 64 K BRAM but I cannot fit this section into this BRAM. Is there any way to split code sections into smaller sections for using multiple BRAMs to store a given section?
03-31-2010 12:25 AM
Just add another 32k lmb_bram controller and make the address align with the 64k BRAM block.
This makes MicroBlaze to have a contiguous memory region of 96 K which should be enough for your application.
03-31-2010 02:51 PM
Great, however, the Linker Script generator does not allow me to use this as one location since my individual memories cannot hold the .data section without splitting it up.
I have attempted to setup the linker script manually, but there ar emany things I am unsure about.
Is ther any way to"merge" these such that the linker script generator can see them as one?
Any other ideas?