DRAM_Notes - david-macmahon/wiki_convert_test GitHub Wiki
Full Burst (Half Burst Off) Mode, 144-bit wide bus
- Each burst takes two clocks and reads/writes 288 bits.
- The address should look like this:
Bit Number: Read vertically
3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
0 0 a a a a a a a a a a a a a a a a a a a a a a a a a 0 0 0 0 0
- Thus there are 30 significant bits (to represent the 2^30 = 1 GB of memory)
- The lowest five bits should be fixed to zero since each read or write burst involves (ignoring the 9th parity chip):
8 bytes wide data path * 2 for DDR * 2 since each burst involves two DDR transactions = 2^5
-
- (If you need to address the memory not aligned to 2^5 locations, this seems to be possible, but I did not use this for my application)
-
The 25 "a's" represent the address bits that should change as needed.
-
Writing a burst requires cmd_valid to be true for two consecutive clocks, during which the 288 bits of data are presented, 144 bits at a time. The address shouldn't change during these two clocks.
-
Reading a burst requires cmd_valid to be true for just one clock. I'm not sure it's necessary, but to be safe, I keep the address constant for the cmd_valid clock and the next clock cycle. data_valid will go high for two consecutive cycles when the data is ready.
-
cmd_ack is asserted in the same clock as cmd_valid. Thus ~(cmd_ack & cmd_valid) is equivalent to cmd_noack.