Skip to content

Example Bus Transactions

Some interactions (notably the async ones) require a clock on the Bus Controller side. It should be noted that this clock doesn't have to be system/CPU clock and could be much faster.

SRAM/ROM Read Using AUX as A19 (for 1MB address space)

This is reading from SRAM or ROM where AUX is being used as an address bit (A19).

  1. Bus Controller drives address (A19 on AUX), asserts !R
  2. Bus Controller waits configured cycles for bus/address settling, asserts !DS#
  3. SRAM activates on !DS# and presents data onto the bus
  4. Bus Controller waits configured cycles for bus settling, latches data, de-asserts !R and !DS#

SRAM Writes Using AUX as A19 (for 1MB address space)

This is writing to SRAM where AUX is being used as an address bit (A19).

  1. Bus Controller drives address (A19 on AUX), places data, asserts !W
  2. Bus Controller waits configured cycles for address/data settling, asserts !DS#
  3. Bus Controller waits configured cycles for SRAM write pulse width
  4. Bus Controller de-asserts !W and !DS#, then tri-states data bus

Single Data Read Using AUX as !ACK

This is the bus controller needing to read a single byte at an address from the device. There are other possible scenarios for multi-byte reads (CPU needs to read a word) or for striding (bulk sequential reading).

  1. Device holds local !ACK pin low, the bus side remains high-Z until !DS# enables the tri-state buffer.
  2. Bus Controller sets up the address, asserts !R, sets AUX mode to !ACK (pin set to input)
  3. Bus Controller waits for address settling time, then asserts !DS#
  4. Tri-state is active, so !ACK becomes low on the bus. Device sees !DS# and !R and begins work.
  5. Device presents data onto the data lines
  6. Device waits for settling time, then sets !ACK to high indicating it is done.
  7. Bus Controller sees !ACK is high, so it reads (latches) the data then de-asserts !R and waits.
  8. When device sees !R has been de-asserted, it sets !ACK back to low and releases the data-lines
  9. When the Bus Controller sees !ACK is low, de-asserts !DS#