It can be useful to compute an upper bound on the frequency at which the bus clock can run. We require that all transactions must complete in one cycle, which means the speed of the bus will be limited by the slowest device in the system.
From the results below, we can conclude that the optimized clock likely doesn’t have a 50% duty cycle – a lot more is being done in the peripheral phase than the controller phase.
Read Transaction
Controller Edge
After the controller (rising) edge of clock:
- Propagation delay for the address going to the peripheral ()
- Bus skew delay ()
This gives us:
In the case of consecutive cycles, the second cycle must delay for at the start of phase 1. Thus, the upper bound is:
Peripheral Edge
After the peripheral (falling) edge of the clock:
- Address decode time at the peripheral ()
- Response time (read time) for the peripheral device ()
- Propagation delay for the data along the data bus ()
- Skew delay ()
- Setup time at the controller latch ()
Thus, our upper bound is:
Result
Thus, for the synchronous bus read cycle, we have:
Here, we’re using to indicate the access time for the slowest interface on the bus.
Write Transaction
Controller Edge
After the controller edge, we have:
- Hold time incase previous cycle was a read ()
- Propagation delay for the address and data going to the peripheral ()
- Bus skew delay ()
This gives us:
Peripheral Edge
After the peripheral edge, we have:
- Address decode time at the peripheral ()
- Make the data available at the input of the destination register ()
- Setup time () at the controller latch
This gives us:
These expressions can be used to derive the minimum time for a synchronous bus write cycle: