Synchronous Busses run at the speed of the slowest interface/device whereas Async busses permit the speed of the bus to be compatible with a variety of speeds and interfaces
Reading
- Controller sends a multi-bit data address
- Waits t-skew
- Waits margin time (which doesn’t really exist cause margin time waits for the worst case)
- Then the controller send 1 bit to assert that its a controller
- The peripheral then waits t-select to get data and accesses it (t-access)
- The peripheral sends data and asserts that it is a peripheral at the same time (with an associated propagation and skew time)
- The controller then receives the data (t-skew here is the time it takes to receive the fastest bit vs the slowest bit)
- The controller waits t-margin
- The controller now waits for the next rising clock edge (t-setup)
- The data is now held stable for t-hold and ready to be used
- The controller deasserts controller
- The peripheral deasserts peripheral and removes data from use
Hanging
These async systems can hang indefinitely since they could be infinitely waiting for a signal that is never received
The REGCLK of an async bus clocks data into the MDR
Writing
Similar to reading except, the R/W line is low. On step 10, we also have t-store.
Factors that Limit Bus Speed
- Skew time: Must be known by either the controller or the peripheral depending on bus implementation
- Unknown bounds
- Setup time: may need to be known by controller
- Hold time: depending on the owner of the latch, must be known
- Access time
Minimum Read Time
Can be found in Section VII Slide 37
Synchronous vs Async Bus
Basically, choose an async bus if your average access time is 80% or less than your max access time, otherwise choose a sync bus.