I have an AXI4 Initiator with data_width = 32bits and an APB Target with data_width = 8bit. There's a protocol conversion bridge between these two.Suppose the initiator want to do a READ with ARSIZE = 1 (16bits). how does the data look on RDATA lines?
Suppose axi initiator sends req : Araddr = 0x1000 ARSIZE = 1 ARLEN = 3 ARBURST= INCR then how does the RDATA look like ?
Case 1:1st rdata = 00010001 -- from address 0x10002nd rdata = aaa1aaa1 -- from address 0x10023rd rdata = 00020002 -- from address 0x10044th rdata = aaa2aaa2 -- from address 0x1006
Case 2:1st rdata = 00000001 -- from address 0x10002nd rdata = aaa10001 -- from address 0x10023rd rdata = 00000002 -- from address 0x10044th rdata = aaa20002 -- from address 0x1006Basically, I want to understand how to handle the data being read from APB side should be handled inside the axi-to-apb bridge to be sent to AXI initiator.Thank you in advance for all your response.
If your AXI4-APB bridge is converting the 32-bit requests into 4 8-bit requests, and you have implemented some sort of MUXing to connect the 8-bit APB target to the appropriate 8-bits of the 32-bit APB bus, then the resulting read data for your example 4-beat 16-bit sequence would be...
0x1000 xxxx0001
0x1002 aaa1xxxx
0x1004 xxxx0002
0x1006 aaa2xxxx
The xxxx fields are data bytes that were not requested, so they are undefined. They could be a copy of the other 16-bits (it might simplify MUXing), or they could be whatever was last driven on those bits for the previous transfer, or they could be a default value (probably 0000), but that is all down to the implementation of the 32:8 conversion in the bridge.
Just realised I needed to add to the first sentence in that last reply...
"If your AXI4-APB bridge is converting the 32-bit requests into 4 8-bit requests AND is merging together the 8-bit results when returning read data,..."