Below is a conversation i had with altera about the ddr2_hp core:
-----------------
From Customer
I am having a slight problem with the interface to the DDR2 controller. When using it in full rate mode, if I perform a write with a burst length of 2, it seems to fail if I put a large gap between the individual writes. So, if i were to issue burst_begin and write_req on one clock, take burst_begin and write_req low, wait 20 clocks, then issue another write, it seems to not pick up the second write. Then if I do a read with a burst length of 2, the first data returned appears to be the second write i performed and the second data seems to be the first data I wrote. I created a state machine that tracks every signal associated with the ddr interface and check at every clock for errors, such as read or write or burst_begin strobes coming at the wrong time, comparing everything with the ready signal, making sure address and size signals do not change mid burst, etc, and nothing is ever flagged as incorrect. I created a small buffer that will stall issuing a write command until both items of a burst length 2 are present, then issue them on successive writes, and it will work correctly. Is there something I am missing here? Can i not stall the command by not issuing another write command? Thanks for your time.
-------------------
To Customer
You are right that you cannot stall the command.
You need to give the “burst length 2” two cycle data successively. The two cycle data will be sent out with the same wr command. If you stall the data, the write command will be affected by losing the data .
-----------------
From Customer
Is this documented anywhere? Instead of giving more details in the ddr2_hp_ug, they reference the avalone burst spec, which allows you to stall. Thanks.
------------
To Customer
This limitation is not from the avalone interface ,it is from the DDR2 Sdram operate requirement . Giving out the Dram devices write command , the write data must be given out in time , this write data cannot be stalled like avalone interface.
You can refer the ddr2_hp_ug , Figure 4–5. Full Rate Write, Avalon-MM Interface
In this waveform at PHY - Memory Interface , you can see each wr command for 4 successive DQ data . If you stall the input data ,the write command will have issue in PHY side .
--------------
Don't know if this applies to your situation, but you are interfacing with it the same way I was when it didn't work. Try inserting a small buffer between the command you want to issue and the ddr controller to make sure it has the whole burst before it issues the burst_begin. Let me know if that works or if this was your problem.
Kevin