Electronic – When would AXI4Lite be a better choice than the APB bus


I'm working on improving and cleaning up an already functional large FPGA design that has a 64 bit data bus. One of the questions that came up is,

"should we transition all of our busses to AXI4Lite/APB, or should we leave them as they are?"

Some are AXI4Lite and some are APB.

Those on team AXI4Lite argue that many third party FPGA IP blocks use the AXI bus; on the opposing side colleagues suggest that the APB bus may use less resources (FFs and LUTs)–though I have not been able to confirm that.

I am on the side of pick one and stick with it.

What reasons are there to pick one over the other? Are there scenarios when one bus might require more resources than the other? Is there a strong reason to migrate to one over the other?

Best Answer

The substantial difference between AXI-Lite and APB is that AXI implements independent read and write addresses. So there is a little bit more control signalling, and probably a ~33% increase in routing/buffering resource.

I would expect your existing APB peripherals use a 32 bit data bus, so the conversion to AXI would be less trivial than you anticipate - unless you have suitable AXI interfaces which can be re-used already.

Transitioning to AXI should improve bandwidth, and if you are able to transition 100% should simplify ongoing support. If the peripherals in question are low activity, or you need to retain APB in your design (for debug components or similar), then the effort of migrating looks less likely to give a good return.

Its worth noting that Cortex-M processors still use AHB, and APB is used for both debug and (much less often) configuration interfaces of some peripherals.

Related Topic