The daisy-chaining method involves connecting all the devices that can request an interrupt in a serial manner. This configuration is governed by the priority of the devices. The device with the highest priority is placed first followed by the second highest priority device and so on. The given figure depicts this arrangement.
WORKING:
There is an interrupt request line which is common to all the devices and goes into the CPU.
When no interrupts are pending, the line is in HIGH state. But if any of the devices raises an interrupt, it places the interrupt request line in the LOW state.
The CPU acknowledges this interrupt request from the line and then enables the interrupt acknowledge line in response to the request.
This signal is received at the PI(Priority in) input of device 1.
If the device has not requested the interrupt, it passes this signal to the next device through its PO(priority out) output. (PI = 1 & PO = 1)
However, if the device had requested the interrupt, (PI =1 & PO = 0)
The device consumes the acknowledge signal and block its further use by placing 0 at its PO(priority out) output.
The device then proceeds to place its interrupt vector address(VAD) into the data bus of CPU.
The device puts its interrupt request signal in HIGH state to indicate its interrupt has been taken care of.
NOTE: VAD is the address of the service routine which services that device.
If a device gets 0 at its PI input, it generates 0 at the PO output to tell other devices that acknowledge signal has been blocked. (PI = 0 & PO = 0)
Hence, the device having PI = 1 and PO = 0 is the highest priority device that is requesting an interrupt. Therefore, by daisy chain arrangement we have ensured that the highest priority interrupt gets serviced first and have established a hierarchy. The farther a device is from the first device, the lower its priority.