This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Number of masters/slaves in AHB

Why there are restrictions on the number of masters up to 16 in AHB?

Can we change the number of masters?

Is it possible to change HMASTER[3:0] to any higher number of bits so we can have more number of master connected with AHB?

I think that we can connect multiple slaves without any restrictions depending on the address bus width each slave having a 1KB boundary address distribution. So is it correct?

  • 16 masters would be seen as a theoretically high number of masters to all share one bus, and in real applications you would expect the number to be FAR fewer. Remember that only one master can actively use the bus at any one time, so at 16 masters that's a lot of masters sitting doing nothing, stalled waiting to use the bus, suffering massive latency.

    This is why AHB-lite evolved from AHB, because designers wanted masters to be able to be active at the same time using a multi-layer busmatrix with one master per layer, so not sharing a bus.

    The protocol mandates an absolute maximum of 16 masters, but if you REALLY wanted to have more masters trying to share this one bus, I suppose you could add to the width of HMASTER. However this wouldn't be supported by any 3rd party IP as it really wouldn't be a sensible way of running a system.

    For slaves, as long as each one is assigned the mimimum footprint of 1KB, you could in theory have up to 4096 slaves spread across the 4GB address space, but again this would be unrealistic in a real application. Think of the MUX logic complexity. There is no recommended maximum number of slaves (other than the obvious 4096 slaves number) as this will just depend on what you want your system to do.