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).
- Bus Controller drives address (A19 on AUX), asserts !R
- Bus Controller waits configured cycles for bus/address settling, asserts !DS#
- SRAM activates on !DS# and presents data onto the bus
- 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).
- Bus Controller drives address (A19 on AUX), places data, asserts !W
- Bus Controller waits configured cycles for address/data settling, asserts !DS#
- Bus Controller waits configured cycles for SRAM write pulse width
- 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).
- Device holds local !ACK pin low, the bus side remains high-Z until !DS# enables the tri-state buffer.
- Bus Controller sets up the address, asserts !R, sets AUX mode to !ACK (pin set to input)
- Bus Controller waits for address settling time, then asserts !DS#
- Tri-state is active, so !ACK becomes low on the bus. Device sees !DS# and !R and begins work.
- Device presents data onto the data lines
- Device waits for settling time, then sets !ACK to high indicating it is done.
- Bus Controller sees !ACK is high, so it reads (latches) the data then de-asserts !R and waits.
- When device sees !R has been de-asserted, it sets !ACK back to low and releases the data-lines
- When the Bus Controller sees !ACK is low, de-asserts !DS#