Click here to load reader
Click here to load reader
Oct 25, 2014
8259A PROGRAMMABLE INTERRUPT CONTROLLER
NEED FOR 8259A 8085 Processor has only 5 hardware interrupts. Consider an application where a number of I/O devices connected with CPU desire to transfer data using interrupt driven data transfer mode. In this process more number of interrupt pins are required. In these multiple interrupt systems the processor will have to take care of priorities.
8259A PIC Able to handle a number of interrupts at a time. Takes care of a number of simultaneously appearing interrupt requests along with their types and priorities. Compatible with 8-bit as well as 16-bit processors.
8259A PIC- FEATURES Manage 8 interrupts according to the instructions written into the control registers. Vector an interrupt request anywhere in the memory map. However all the 8 interrupts are spaced at an interval of four to eight locations. Resolve 8 levels of interrupt priorities in variety of modes. Mask each interrupt request individually. Read the status of pending interrupts, in-service interrupts and masked interrupts.
8259A PIC- FEATURES Accept either the level triggered or the edge triggered interrupt request. Be expanded to 64 priority levels by cascading additional 8259As. Compatible with 8-bit as well as 16-bit processors.
8259A PIC- BLOCK DIAGRAMIt includes 8 blocks. Control logic Read/Write logic Data bus buffer Three registers (IRR,ISR and IMR) Priority resolver Cascade Buffer
8259A PIC- BLOCK DIAGRAM
8259A PIC- PIN DIGRAM
8259A PIC- INTERRUPTS AND CONTROL LOGIC SECTIONThis section consists of IRR (Interrupt Request Register) ISR (In-Service Register) Priority Resolver IMR (Interrupt Mask Register) Control logic block
IRR 8 interrupt inputs set corresponding bits of IRR Used to store the information about the interrupt inputs requesting service.
8259A PIC- INTERRUPTS AND CONTROL LOGIC SECTION
ISR Used to store information about the interrupts currently being serviced.
PRIORITY RESOLVER Determines the priorities of interrupts requesting services (which set corresponding bits of IRR) It determines the priorities as dictated by priority mode set by OCWs. The bit corresponding to highest priority input is set in ISR during input. Examines three registers and determines whether INT should be sent to MPU.
* OCWs Operation Control Word.
8259A PIC- INTERRUPTS AND CONTROL LOGIC SECTION
IMR This register can be programmed by an OCW to store the bits which mask specific interrupts. IMR operates on the IRR. An interrupt which is masked by software (By programming the IMR) will not be recognized and serviced even if it sets corresponding bits in the IRR.
8259A PIC- INTERRUPTS AND CONTROL LOGIC SECTION CONTROL LOGIC Has two pins: INT (Interrupt) Output ( Interrupt Acknowledge) Input INT Connected to Interrupt pin of MPU. When interrupt occurs this pin goes high.
8259A PIC- BLOCK DIAGRAMDATA BUS BUFFER 8 bit Bidirectional Tri-state Buffer used to Interface the 8259 to the system data bus. Control words, Status words and vectoring data are all passed through the data bus buffer.
8259A PIC- READ/WRITE CONTROL LOGIC SECTION Contains ICW and OCW registers which are programmed by the CPU to set up the 8259 and to operate it in various modes. Also accepts read command from CPU to permit the CPU to read status words. Chip Select Active Low input Used to select the Device. Read Active Low input Used by CPU to read the status of ISR,IRR,IMR or the Interrupt level. Write Active Low input Used to write OCW and ICW onto the 8259. *ICW Initialization Control Word
8259A PIC- CASCADE BUFFER/ COMPARATOR Generates control signals for cascade operation. Also generates buffer enable signals. 8259 cascaded with other 8259s Interrupt handling capacity to 64 levels Former is called master and latter is slave. 8259 can be set up as master or slave by pin in non-buffered mode or by software if it is to be operated in the buffered mode of operation.
8259A PIC- CASCADE BUFFER/ COMPARATOR CAS 0-2 For master 8259 these pins are outputs and for slaves these are inputs. When 8259 is a master the CALL op-code is generated by master in response to the first Interrupt acknowledge. The vectoring address must be released by slave 8259. The master puts out the identification code to select one of the slave from 8 slaves through these pins. The slave accepts these three signals as inputs and compare the code put out by the master with the codes assigned to them during initialization. The slave thus selected puts out the address of ISR during second and third interrupt acknowledge pulses from the CPU.
8259A PIC- CASCADE BUFFER/ COMPARATORSlave Program/ Enable Buffer: Used to specify whether 8259 is to act as a master or a slave High Master Low Slave In Non-Buffered Mode, this pin is used to specify whether 8259 is to act as a master or a slave. In Buffered mode this pin is used as an output to enable the data bus buffer of the system.
8259A PIC- INTERRUPT OPERATION To implement interrupt, the interrupt Enable FF must be enabled by writing EI instruction. 8259A should be initialized by writing control words in the control register. 8259 requires two types of control words: ICW Used to set up proper conditions and specify RST vector address. OCW Used to perform functions such as masking interrupts, setting up status read operations etc. After 8259A is initialized, the following sequence of events occurs when one or more interrupt request lines go high.
8259A PIC- INTERRUPT OPERATION1. IRR stores the Interrupt requests. 2. Priority Resolver Checks three registers: IRR for interrupt requests. IMR for Masking bits. ISR for the interrupt request being serviced. It resolves the priority and sets the INT high when appropriate. 3. MPU acknowledges the interrupt by sending interrupt acknowledge.
8259A PIC- INTERRUPT OPERATION4. After is received, the appropriate priority bit in the ISR is set to indicate which level is being served and the corresponding bit in the IRR is reset to that request is accepted. Then op-code for CALL instruction is placed on the Data Bus. 5. When MPU decodes the CALL instruction, it places two more signals on the data bus.
8259A PIC- INTERRUPT OPERATION6. When 8259 receives second , it places lower order byte of CALL address on the data bus. Third High order byte. The CALL address is the vector memory location for the interrupt. This address is placed in control register during initialization.
8259A PIC- INTERRUPT OPERATION7. During third pulse, the ISR bit is reset either automatically (AEOI) or by a command word that must be issued at the end of the service routine (EOI). This option is determined by the ICW. 8. The program sequence is transferred to the memory location specified by the CALL instruction. AEOI Automatic End of Interrupt Mode EOI End of Interrupt Mode
8259A PIC- COMMAND WORDS Two types: ICW, OCW ICW: Before start functioning, 8259 must be initialized by writing two to four command words into their respective command word registers. A0=0,D4=1: The control word is ICW1. ICW1 contains the control bits for edge/level triggered mode, single/cascade mode, call address interval and whether ICW4 is required or not etc.
A0=1: The control word is ICW2.
Store details about interrupt vector addresses.
ADI=1 for 8086 based system
For 8086 Dont Care
8259A PIC- ICW1The following initialization procedure Carried out internally when ICW1 is loaded. a) The edge sense circuit is reset i.e. by default 8259A interrupts are edge sensitive. b) IMR is cleared. c) IR7 input is assigned lowest priority. d) Slave mode address is set to 7. e) Special mask mode is cleared and status read is set to IRR. f) If IC4=0, all functions of ICW4 are set to Zero. Master/slave bit in ICW4 bit is used in buffered mode only.
INITIALIZATION SEQUENCE OF 8259AICW1 & ICW2 are Compulsory command Words in the initialization sequence. ICW3 & ICW4 are Optional. ICW3 is read only when More than one 8259 used in the system ( SNGL bit in ICW1 is 0).
For 8085 system they are filled by A15 -A11 of the interrupt vector address and Least significant 3 bits are same as the respective bits of the vector address. For 8086 system they are filled by most significant 5 bits of interrupt type and the least significant 3 bits are 0, pointing to IR0.
If BUF=0,M/S is to be neglected.
8259A- OPERATING MODESFULLY NESTED MODE: General purpose mode. All IRs are arranged from highest to lowest. IR0 Highest IR7Lowest AUTOMATIC ROTATION MODE: In this mode, a device after being serviced, receives the lowest priority. SPECIFIC ROTATION MODE: Similar to automatic rotation mode, except that the user can select any IR for the lowest priority, thus fixing all other priorities.
8259-INTERRUPT PROCESS IN FULLY NESTED MODE
8259A- OPERATING MODESSPECIAL FULLY NESTED MODE: Used in case of larger system where cascading is used, and 8259 has to be programmed in the master using ICW4 In this mode, when an interrupt request from a certain slave is in service, this slave can further send requests to the master, if the requesting device connected to the slave has higher priority than the one being currently served. In this mode, the master interrupts the CPU only when the interrupting device has the highest priority or the same priority than the one currently being served. In normal mode, other requests than the one being served are masked. BUFFERED MODE CASCADE MODE
8259A- OPERATING MODESEND OF INTERRUPT (EOI): After the completion of an interrupt service, the corresponding ISR bits needs to be reset to update the information in the ISR. This is called EOI command. It can be issued in three