A bridge for managing data transfers that are requested by a host processor and directed via a host bus to an external bus, where said external bus can provide for wait states that are variable on a per-transfer basis, while said host bus utilizes wait states that are not variable on a per-transfer basis, said bridge comprising:
- a host-bus interface to said host bus;
- an external-bus interface to said external bus, said external-bus interface being coupled to said host-bus interface via data and address lines;
- and
- a state machine, said being coupled to said interfaces for receiving control signals therefrom and for providing said control signals thereto, said state machine receiving from said host-bus interface a “data-transfer” signal indicating when said host bus is treating a data transfer as active, said state machine receiving from said host-bus interface a “read/write” signal indicating whether a data-transfer request is for a read or a write operation, said state machine receiving from said external-bus interface a “wait” signal indicating when said external bus is treating a data transfer as active, said state machine providing to said external-bus interface a “request” signal when a data-transfer request is being made, said state machine providing to said host-bus interface a “valid” signal indicating when read data provided via said external-bus interface is valid, said state machine including the following states
- an “idle” state in which said state machine is in only while said data-transfer signal is inactive, said state machine while in said idle state holding said request signal inactive and said valid signal inactive,
- an “access-wait” state in which said state machine is in only while said data-transfer signal is active and while said wait signal is active, said state machine while in said access-wait state holding said valid signal inactive, said state machine moving, directly or indirectly, from said idle state to said access wait state only when said data-transfer signal becomes active, and
- an “access-hold” state in which said state machine is in only while said data-transfer signal is active and while said wait signal is inactive, said state machine moving from said access-wait state to said access-hold state only when said wait signal goes inactive while said data-transfer signal is active, said state-machine in said access-hold state holding said valid signal active, said state machine moving from said access-hold state to said idle state only when said data-transfer signal becomes inactive.