FPGARelated.com
Forums

dual port ram

Started by Andy Botterill July 28, 2007
Err I only have 3 registers that I must have a reset state for. This 
should fit well with what you have described. I am trying to code that 
up at the moment.

The point of this exercise is to get a cycle accurate operation for a 
register version and a dual port ram version. After that I will look at 
gate count and or speed.

The issues that I had with not being able to create small dual port rams 
was selft inflicted. I put the source code into the library when I 
didn't intend to.  OOps.

-- Andy

Jonathan Bromley wrote:
> On Sat, 28 Jul 2007 19:06:06 -0500, Ben Jackson <ben@ben.com> wrote: > > >>On 2007-07-28, Jonathan Bromley wrote: >> >>>HOWEVER, you *can* initialise the contents of any Xilinx >>>RAM at configuration >> >>But then you can't just 'reset' your design. You have to >>reconfigure from the bitstream to truly reset. > > > Yes. But the solution I offered - one "I have been written" > register bit per RAM location - doesn't scale well; it's fine > for up to a few dozen locations, no more. > > If you can arrange that the RAM locations whose initial value > matters to you are all in a small piece of address space, you > can easily modify the "I have been written" trick so that > it applies only to the small part of the memory that has the > initialisation requirement. > > More generally, it is not unreasonable to consider modifying > your system's control state machine so that its first action > after reset is to scribble the initialisation values into RAM, > maybe by block-copy out of another memory configured as ROM > with the reset values in it. > > As Peter said, it's not practical to reset a big memory, > and people have lived with this for ever.
On 2007-07-29, Jonathan Bromley <jonathan.bromley@MYCOMPANY.com> wrote:
> On Sat, 28 Jul 2007 19:06:06 -0500, Ben Jackson <ben@ben.com> wrote: > >>On 2007-07-28, Jonathan Bromley wrote: >>> HOWEVER, you *can* initialise the contents of any Xilinx >>> RAM at configuration >> >> But then you can't just 'reset' your design. You have to >> reconfigure from the bitstream to truly reset. > > As Peter said, it's not practical to reset a big memory, > and people have lived with this for ever.
I just wanted the OP to realize the significant tradeoff he's making by using preloaded blockrams. If you 'reset' a design that uses them you'll be surprised if you expected the reset values to appear in the RAM again! For something like a processor, I might just require a certain instruction sequence at initialization that sets up the RAMs the way I want. You'd be in good company -- good luck executing anything on a modern Intel processor without following 100 steps in a thick databook... -- Ben Jackson AD7GD <ben@ben.com> http://www.ben.com/