Back
Next
IEEE 488 - external bus running asynchronously to CPU and internal bus.
IEEE 488 recognizes 3 types of devices :
Initiator or controller - arbitrator that tasks out jobs.
Talker - device given control of bus for current task.
Listeners - devices responding to talker.
******************
Initiator selects a talker and talker selects listener.
Uses same steps as sending data but with ATN and other control signals
it indicate data is device id. Once selected :
While talker not indicating end of transaction
Do
Talker indicates data invalid (new transaction).
Talker waits for listeners to finish any current data processing
Talker puts data on data lines.
Listeners notice data and acknowledge data exists.
When Talker sees listeners listening, it indicates new data is valid.
Each listener indicates it has grabbed the data.
Only targeted listener does anything with the data.
When all listeners indicate data accepted, talker indicates data invalid and
process starts over for next byte of data.
* Protocol delivers 1 byte at slowest device's response speed.
Done
***
Initiator selects a talker.
Talker indicates data invalid (new transaction).
(DAV high)
Talker waits for listeners to finish any current data processing
and indicate that they (listeners) are ready for new data.
If a listener is not ready, it will hold either NRFD or NDAC high
while it completes any outstanding activity.
When all devices ready for new data, both NRFD and NDAC go low.
Talker puts data on data lines.
When listeners see data, listeners allow NRFD and NDAC to go high
- all devices must allow NRFD and NDAC to go high for lines to go high.
When Talker sees that all devices are listening, it indicates that new data
is valid by taking DAV low.
As each listener reads data, it indicates that it is busy processing the new
data by bringing NRFD low.
Once read, each listener then indicates it has taken the new data it allows
NDAC to go high.
Only addressed device will process it further and slowest device determines
overall speed.
When all listeners indicate data accepted, talker indicates data invalid and
process starts over for next byte of data. (DAV high)
While both NRFD and NDAC can be low at the same time, only one or the other
can be high at any time. If both are high and stay high for more than a short
time, it is an error condition which the controller must attempt to recover
from.
******************
Notice controller or initiator is independent of talker/listeners. Talker
(once chosen) always drives loop and there is no data direction line.
Also, transaction is asynchronous, there is no clock and all timing
handled by handshake (control and status).
Data refers single byte along with handshaking, so fairly high overhead.
Data rate determined by the slowest device.
But can mix fast and slow devices on same bus.