Figure P12.19 gives the timing diagram of the IEEE 488 bus’s data transfer. This bus was first designed for use in an intelligent automated instrumentation environment. Multiple asynchronous devices can be connected to the IEEE 488 bus. Not all the devices operate at the same rate. A patented three?wire handshake is used to permit communication between one device and multiple receivers (or listeners in ‘488 terminology). The control signals use negative logic (the 0 state is the high voltage state) driven by open?collector gates (a device can drive a line to its low voltage state). The three control signals that control the sequencing of data transfer are NRFD (not ready for data, that indicates that a device cannot currently accept data), DAV (data available that indicates that a
talker has data ready), and NDAC (not data accepted that indicates that a listener has accepted data). Remember that the use of open?collector bus drivers implements a wired?OR circuit in which the line is pulled to a low level if any driver is pulling it low. Explain in plain language how the three?wire handshake works.
When one of the listeners becomes free, it releases (i.e., negates) its NRFD output. The negation of NRFD by a listener has no effect on the state of the NRFD line, as other listeners are still holding it down. This situation is shown by dotted lines. When, at last, all listeners have released their NRFD outputs, the NRFD line rises
(electrically) to the state signifying that the listeners are all not Not Ready For Data; that is, they are ready for data. Now the talker can go ahead with a data transfer.
The talker places data on DIO1 to DIO8 and asserts DAV after a 2 ms data?settling time. As soon as the listeners detect a logical one (i.e., low level) on DAV, they assert NRFD to indicate that they are once more busy.
Meanwhile, the listeners clamp their NDAC outputs electrically low (i.e., NDAC asserted) to indicate that they have not accepted data. When a receiver detects that DAC has been asserted, it reads the data off DIO1 to DIO8 and negates its NDAC output. That is, if its Not Data Accepted output is false, then it must be signifying data accepted.
Because all listeners must make their NDAC outputs false before the NDAC line can rise to an electrical high state (i.e., logical zero state), the talker does not receive a composite data?accepted signal until the last listener has released NDAC. The talker terminates the data transfer cycle, when it releases DAV and the receivers release NDAC in turn. When one of the listeners becomes free, it releases (i.e., negates) its NRFD output. The negation of NRFD by a listener has no effect on the state of the NRFD line, as other listeners are still holding it down. This situation is shown by dotted lines. When, at last, all listeners have released their NRFD outputs, the NRFD line rises (electrically) to the state signifying that the listeners are all not Not Ready For Data; that is, they are ready for
data. Now the talker can go ahead with a data transfer.
The talker places data on DIO1 to DIO8 and asserts DAV after a 2 ms data?settling time. As soon as the listeners detect a logical one (i.e., low level) on DAV, they assert NRFD to indicate that they are once more busy.
Meanwhile, the listeners clamp their NDAC outputs electrically low (i.e., NDAC asserted) to indicate that they have not accepted data. When a receiver detects that DAC has been asserted, it reads the data off DIO1 to DIO8 and negates its NDAC output. That is, if its Not Data Accepted output is false, then it must be signifying data accepted.
Because all listeners must make their NDAC outputs false before the NDAC line can rise to an electrical high state (i.e., logical zero state), the talker does not receive a composite data?accepted signal until the last listener has
released NDAC. The talker terminates the data transfer cycle, when it releases DAV and the receivers release NDAC in turn.
You might also like to view...
In the ________ normal form the table has no fields with partial dependencies on a composite or concatenated key
Fill in the blank(s) with correct word
Why is this?
You have to #include <;iomanip> as well as #include