dpaul
Advanced Member level 5
Hello,
I am using the Microchip Libero SoC tool. A part of my design consists of an AXI4 Master, AXI4 interconnect IP core and the DDR3 Controller IP core.
The AXI4 master issues burst read requests to the DDR3 controller via the interconnect. Burst length is 8, burst type is INCR and burst size is 4. My read data bus width is 128 bits. So when I place a read request starting from address 0x8000_0000, I get data in the form of 8 beats from location 0x8000_0000 to 0x8000_007F. So far all good.
But if I place a read burst request starting from location 0x8000_0018, I get the burst data starting from location 0x8000_0010 to 0x8000_008F. That is the LSByte of the 1st beat in the read data does not correspond to the data for location 0x8000_0018. Why does the reading not start from 0x8000_0018?
My understanding was that for the 1st beat of the burst, the data would be from loc 0x8000_0018 to 0x8000_0027, then from loc 0x8000_0028 to 0x8000_0037 , and so on for the remaining 6 beats of the burst read. But this is not so, any ideas why?
This behavior tell me that the starting address of any burst must be aligned to 128 bits boundary (i.e. aligned to the read data bus width here). Can anyone confirm this?
I have checked the AXI4 interface signals of the DDR3 controller and see that the start of the burst address has be properly forwarded by the AXI interconnect IP.
Regards.
I am using the Microchip Libero SoC tool. A part of my design consists of an AXI4 Master, AXI4 interconnect IP core and the DDR3 Controller IP core.
The AXI4 master issues burst read requests to the DDR3 controller via the interconnect. Burst length is 8, burst type is INCR and burst size is 4. My read data bus width is 128 bits. So when I place a read request starting from address 0x8000_0000, I get data in the form of 8 beats from location 0x8000_0000 to 0x8000_007F. So far all good.
But if I place a read burst request starting from location 0x8000_0018, I get the burst data starting from location 0x8000_0010 to 0x8000_008F. That is the LSByte of the 1st beat in the read data does not correspond to the data for location 0x8000_0018. Why does the reading not start from 0x8000_0018?
My understanding was that for the 1st beat of the burst, the data would be from loc 0x8000_0018 to 0x8000_0027, then from loc 0x8000_0028 to 0x8000_0037 , and so on for the remaining 6 beats of the burst read. But this is not so, any ideas why?
This behavior tell me that the starting address of any burst must be aligned to 128 bits boundary (i.e. aligned to the read data bus width here). Can anyone confirm this?
I have checked the AXI4 interface signals of the DDR3 controller and see that the start of the burst address has be properly forwarded by the AXI interconnect IP.
Regards.
Last edited: