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.