Understanding address map in EMIF
Hi,
I am trying to read/write from/to an external memory model during the simulation using EMIF.
I have some questions regarding the address map in EMIF.
Based on this configuration, what should be the address width? I guess it should be 29 bits, right?
But, why the amm_address is 26 bits here?
Also, I can't understand why mem_a is 17 bits.
The other problem is that I don't know how to generate certain addresses if I want to read or write from/to memory. What is the meaning of each bit of this 26-bit amm_address?
Here is the Controller configuration:
Thank,
-- Mahdi
For the address ordering that you used:
CS-CID-Row-Bank-Column-BG
The CS is available only when there is multiple rank.
The CID is for 3D stacked interface. No CID bit in this configuration.
Row address width = 15.
Column address width = 10.***
Bank address width = 2.
Bank group width = 2.
***(Lower 3 bits has been set to 0 because Avalon bus is 8x wider than EMIF bus in Quarter rate. Therefore it's removed when mapping to Avalon address)
The ordering will be as below:
Row[14..0] = amm_address[25..11]
Bank[1..0] = amm_address[10..9]
Column[9..3] = amm_address[8..2]
BG[1..0] = amm_address[1..0]