Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[SOLVED] [DDR2] Column address LSBs in 4n prefetch/ burst

Status
Not open for further replies.

speedster

Newbie level 1
Newbie level 1
Joined
Jul 18, 2009
Messages
1
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Visit site
Activity points
1,298
Hello,

I'm looking into datasheet of DDR2 from Micron https://www.micron.com/parts/dram/ddr2-sdram/mt47h64m16hr-187e. If you see functional diagrams on pages 12-14, there is Column address COL0, COL1 (2 LSBs) going into 4n-prefetch directly. They're not going into column address decoder.

Now my concern is:
This only means we can burst only the "pre-defined" 4n chunk, i.e., from 00,01,10,11 LSBs.

So for example if I needed to burst read 4-data chunks (x4, x8, or x16 bit wide) from current active row, with following column address:
0000 1010 to 0000 1101 (Assuming 8-bit column address for simplicity)
, then its not possible in single burst because the column address decoder is ignoring the 2 LSBs in functional diagram when it is taking the starting column address. 4n-prefetch is automatically assuming the two LSBs to be 00, 01, 10, 11 (in that order).

In other words, the _starting_ column address from 3rd LSB up to MSB is assumed "same" for the burst.

In my example case, the 3rd LSB is changing from 0 to 1 (2 data chunks with 3rd address bit 0, two data chunks with 3rd address bit 1).

In my above example, I'd have to burst read _two_ 4n chunks. One 4n chunk from
0000 1000 to 0000 1011 (ignore first two chunks, 0000 1000 and 0000 1001)
_and_ second 4n chunk from:
0000 1100 to 0000 1111 (ignore last two chunks, 0000 1110 and 0000 1111)

i.e.,

first burst:
0000 1000 (ignore)
0000 1001 (ignore)
0000 1010 (valid)
0000 1011 (valid)

second burst:
0000 1100 (valid)
0000 1101 (valid)
0000 1110 (ignore)
0000 1111 (ignore)

....in order to get data from 0000 1010 to 0000 1101.

So the data chunks/ bursts are 'aligned' already for us. We can only specify the starting column address to be uniform from 3rd LSB upto MSB. And 2 LSBs are automatically assumed to be in order 00, 01, 10, 11.

Is my understanding of the burst alignment issue correct? Please comment.
 

Your understanding is correct. Due to the way the DRAM is partitioned, and the way DDR is addressed with the combination of bank,row and column address, it is not possible to get exactly the data we want.
It is usually not a problem because DDR is data memory and not boot memory. Data is written in chunks (several KB or MB). So nobody complains.
 
Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top