3

I have a board with a DDR3 memory and a Virtex 7 FPGA. I have used Xilinx MIG to create a memory controller and I am able to succesfully read/write to the memory using Microblaze registers. I would like to fill the entire DDR memory module with either 0's or 1's but Microblaze is really slow in doing this especially when the memory size is large. Is there a way I can quickly fill up the entire memory using RTL logic?

Arash Fotouhi
  • 203
  • 4
  • 9
  • 2
    Roll your own logic to drive the MIG interface to do it. Basically a counter and a state machine. –  Dec 08 '14 at 21:19
  • Why is your MicroBlaze to slow? You can generate a AXI adapter for the DDR3 memory and attache this as a device to the AXI bus. Writing a pure FSM with a counter or PRNG as @BrianDrummond suggested is the fastest solution. – Paebbels Dec 08 '14 at 21:34
  • @Paebbels One problem I'm having with AXI and Microblaze is that the MAX number of registers is 4GB (from 0x0 to 0xFFFFFFFF). While the DDR memory I'm using is 8GB. So at least half of the DDR memory is not accessible via Microblaze registers. Do you know how to solve this? – Arash Fotouhi Dec 08 '14 at 22:43
  • Oh 8 GiB ... :) I forgot that MicroBlaze is 32 bit and has no PAE. Normally this issue is solve by segmented addressing. You can implement a small register of lets say 8 bits (segment register) this stores the segment address/number. The memory is access with the concatenated address `MemoryAddress <= SegmentRegister & AXIAddress;` A 8 bit segment register allows you to address up to \$2^{40}\$ Bytes. Your software needs also some small changes. The segment register must be switch if you are accessing data from another segment. [=> Wikipedia](http://en.wikipedia.org/wiki/Memory_segmentation) – Paebbels Dec 08 '14 at 23:12

1 Answers1

1

Make a vhdl component that halts MicroBlaze until it is finished counting to whatever size the DDR3 memory is, and each count it fills the area with either a (others=>'0') or a (others=>'1') to fill that byte, word, or quad of memory. hope this helps..

Nuclear_Man_D
  • 21
  • 1
  • 6