AMBA AHB Lite addressable space for byte size transfer

Hi,

It looks like when using a transfer size of one Byte, the position of this data on the 32-Bit bus must be set via ADDRESS[1:0]. This means that for a Byte transfer, the addressable space is reduced, from 4GB (2^32) to 2^(30) = 1GB. Is this correct ?

Thanks

Parents
  • Ok, so I believe this is not a correct interpretation. Now I think that the byte has to be dynamically changed depending on the position of HADDR[1:0].

    In fairness the more I read this spec the less I understand it. Let me please explain what I am trying to do and please suggest whether I am getting it all wrong.

    I have to design an i2c-to-amba-lite bridge. i2c data width will be of 8 or 16-bits, but the AHB-Lite is 32-Bits. One requirement for us is that we need to be able to access the whole AHB-Lite memory space (16K addresses) via i2c. The internal memory peripherals on the bus are made out of 32-Bits registers so I am a bit confused now with respect to whether it is possible to access just a byte out of these 32-Bits. 

    I think that this is precisely what the offset is about right? For a byte access, I need 2 extra address bits to "byte-select" within the 32-Bit data register. So, if I have 2^16 individual addresses I need to access, then, for a byte access, I would need an internal address of 2^18 bits.

    I believe my understanding is correct now, but I would appreciate some feedback

    Thanks

Reply
  • Ok, so I believe this is not a correct interpretation. Now I think that the byte has to be dynamically changed depending on the position of HADDR[1:0].

    In fairness the more I read this spec the less I understand it. Let me please explain what I am trying to do and please suggest whether I am getting it all wrong.

    I have to design an i2c-to-amba-lite bridge. i2c data width will be of 8 or 16-bits, but the AHB-Lite is 32-Bits. One requirement for us is that we need to be able to access the whole AHB-Lite memory space (16K addresses) via i2c. The internal memory peripherals on the bus are made out of 32-Bits registers so I am a bit confused now with respect to whether it is possible to access just a byte out of these 32-Bits. 

    I think that this is precisely what the offset is about right? For a byte access, I need 2 extra address bits to "byte-select" within the 32-Bit data register. So, if I have 2^16 individual addresses I need to access, then, for a byte access, I would need an internal address of 2^18 bits.

    I believe my understanding is correct now, but I would appreciate some feedback

    Thanks

Children
More questions in this forum