dpaul
Advanced Member level 5
I am a logic design engineer and this question is bugging me a bit.
Consider the following architecture:
ARM Core with the ability to run some embedded C code (M) <--> (64bits wide data bus, S) AXI4 Interconnect (32 bits wide data bus, M) <--> (S)AXI2AHB-L bridge(M) <--> (S)AHB-L Slave with a FIFO
In the design the synthesize-able part is everything from the AXI4 Interconnect down to the AHB-L Slave. In the testbench, the prime component is then a AXI4 full Master that can read/write data from/to the FIFO either in bursts or through single accesses. Note that a bus-width conversion is taking place at the AXI4 Interconnect. Everything is working in simulation and I fully understand how the design is working.
Now this design must also work on the FPGA for the target design. So some embedded software engineer develops the firmware to read/write data from/to the FIFO.
Here comes my confusion: In the test-bench I have implemented a bust write is done by the AXI4 Master that fills the FIFO because it is the most efficient way to do it. But I do not understand how such a burst write or read is implemented in firmware.
I mean do I just tell the firmware guy to fill the FIFO locations from say 0x____0000 to 0x____0100? I understand how single word accesses are implemented using C on a processor system. But I do not understand how to make sure the embedded engineer implements the FIFO write mechanism such that the data is written in bursts. Then again, the AXI4 Master data bus is 64 bits wide and the Slave at the last mile has a 32 bits data bus.
Somebody care to explain?
Thanks n regards.
Consider the following architecture:
ARM Core with the ability to run some embedded C code (M) <--> (64bits wide data bus, S) AXI4 Interconnect (32 bits wide data bus, M) <--> (S)AXI2AHB-L bridge(M) <--> (S)AHB-L Slave with a FIFO
In the design the synthesize-able part is everything from the AXI4 Interconnect down to the AHB-L Slave. In the testbench, the prime component is then a AXI4 full Master that can read/write data from/to the FIFO either in bursts or through single accesses. Note that a bus-width conversion is taking place at the AXI4 Interconnect. Everything is working in simulation and I fully understand how the design is working.
Now this design must also work on the FPGA for the target design. So some embedded software engineer develops the firmware to read/write data from/to the FIFO.
Here comes my confusion: In the test-bench I have implemented a bust write is done by the AXI4 Master that fills the FIFO because it is the most efficient way to do it. But I do not understand how such a burst write or read is implemented in firmware.
I mean do I just tell the firmware guy to fill the FIFO locations from say 0x____0000 to 0x____0100? I understand how single word accesses are implemented using C on a processor system. But I do not understand how to make sure the embedded engineer implements the FIFO write mechanism such that the data is written in bursts. Then again, the AXI4 Master data bus is 64 bits wide and the Slave at the last mile has a 32 bits data bus.
Somebody care to explain?
Thanks n regards.