bxbxb3 said:
Hi,
Can anybody tell me how does a DDR SDRAM work.
Sure -- JEDEC can. It sounds like you've read at least some already,
but:
http://www.jedec.org/DOWNLOAD/search/JESD79D.pdf
is the DDR "bible."
What is the state of the
row and column address buses during precharge, idle and refresh
operations.
Page 18 has a table of what signals are used in what states.
And is it required to have a refresh operation every 64ms even
when the controller is engaged in a write burst? Thanks in advance.
Page 26 under "Auto Refresh:
To allow for improved efficiency in scheduling and
switching between tasks, some flexibility in the
absolute refresh interval is provided. A maximum of
eight AUTO REFRESH commands can be posted to any
given DDRSDRAM, and the maximum absolute interval
between any AUTO REFRESH command and the next AUTO
REFRESH command is 8 * tREFI.
At any given time you can only issue a write request if it'll finish
before you need to issue your next auto refresh command. Presumably you
have a state machine with a counter to determine when to issue a
refresh command. In that case, you also check the counter to determine
when you can't issue write commands. For example, if your write burst
takes a maximum of 10 half-cycles, then you only issue a write burst
command if that counter is greater than 10.
Alternatively, you might have a controller with one process to do
reads, one to do writes, and one that does nothing but issue refresh
commands. If so, you'd probably divide the main clock down to the
frequency at which refreshes are needed. In that case, the divider can
also produce a write- inhibit signal N cycles ahead of the refresh
signal, and you'd AND this with the write process' usual enable signal.
Note that I'm not particularly recommending this model -- at least to
me, a state machine seems simpler. Nonetheless, if you do use this
model, inhibiting writes during that interval should be one of the
easier parts of the design.
--
Later,
Jerry.
The universe is a figment of its own imagination.