Bài giảng Kỹ thuật vi xử lý (Microprocessors) - Chương 5: Ngắt và xử lý ngắt
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kỹ thuật vi xử lý (Microprocessors) - Chương 5: Ngắt và xử lý ngắt", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_ky_thuat_vi_xu_ly_microprocessors_chuong_5_ngat_va.ppt
Nội dung text: Bài giảng Kỹ thuật vi xử lý (Microprocessors) - Chương 5: Ngắt và xử lý ngắt
- © DHBK 2005 1/Chapter5 Nội dung môn học 1. Giới thiệu chung về hệ vi xử lý 2. Bộ vi xử lý Intel 8088/8086 3. Lập trình hợp ngữ cho 8086 4. Tổ chức vào ra dữ liệu 5. Ngắt và xử lý ngắt 6. Truy cập bộ nhớ trực tiếp DMA 7. Các bộ vi xử lý trên thực tế
- © DHBK 2005 2/Chapter5 Chương 5: Ngắt và xử lý ngắt • Giới thiệu về ngắt • Đáp ứng của CPU khi có yêu cầu ngắt • Các thủ tục ngắt của người sử dụng • Xử lý ưu tiên ngắt • Mạch điều khiển ngắt ưu tiên 8259A • Ngắt trong máy tính IBM PC
- © DHBK 2005 3/Chapter5 Giới thiệu về ngắt • 2 loai ngắt: ❑ Ngắt cứng: tín hiệu yêu cầu ngắt từ NMI (ngắt không che được) ✓ Lỗi chẵn lẻ và các lỗi hệ thống nghiêm trọng khác (ví dụ: mất nguồn) và INTR (ngắt che được) ❑ Ngắt mềm: CPU thực hiện các lệnh ngắt INT N, 0=< N <=255
- © DHBK 2005 4/Chapter5 Giới thiệu về ngắt
- © DHBK 2005 5/Chapter5 Giới thiệu về ngắt
- © DHBK 2005 6/Chapter5 Đáp ứng của CPU khi có yêu cầu ngắt • Bảng vector ngắt: 1 Kbytes 00000H đến 003FF H ❑ 256 vector ngắt ❑ 1 vector 4 bytes, chứa IP và CS của CTCPVN ❑ 32 vector đầu dành riêng cho Intel ❑ 224 vector sau dành cho người dùng
- © DHBK 2005 7/Chapter5 Đáp ứng của CPU khi có yêu cầu ngắt Chương trình chính CTCPVN lệnh cất các CPU: thanh ghi •Cất thanh ghi cờ F •Xoá IF và TF •Cất CS và IP •lấy địa chỉ CTCPVN CPU: •Lấy lại IP và CS lệnh lấy các •Lấy lại thanh ghi cờ F thanh ghi IRET
- © DHBK 2005 8/Chapter5 Các thủ tục ngắt của người sử dụng • Thiết lập vector ngắt: ❑ Cất vector ngắt hiện tại: Dùng hàm 35H của ngắt 21H của DOS ✓ Vào: AH=35h, AL= số hiệu ngắt ✓ Ra: ES:BX = địa chỉ đoạn : địa chỉ offset của CTCPVN Cất ES và BX vào thanh ghi hoặc ô nhớ ❑ Đưa vector của thủ tục ngắt của người sử dụng vào bảng vector ngắt: Dùng hàm 25H của ngắt 21H ✓ Vào: AH=25H, AL= số hiệu ngắt, DS:DX= địa chỉ đoạn: địa chỉ offset cảu CTCPVN của người sử dụng ❑ Khôi phục lại vector cũ trước khi kết thúc CTCPVN của người sử dụng
- © DHBK 2005 9/Chapter5 Các thủ tục ngắt của người sử dụng .Model Small .Stack 100 .Data OLD_IP DW ? OLD_CS DW ? .Code Main Proc ;Lấy vector cũ của ngắt 40H MOV AH, 35H MOV AL, 40H INT 21H MOV OLD_IP, BX MOV OLD_CS, ES ;Thiết lập vector ngắt 40H mới MOV DX, offset New40 MOV AX, CS PUSH DS MOV DS, AX MOV AH, 25H INT 21H POP DS Main Endp New40 Proc ;các lệnh của CTCPVN New40 Endp End Main
- © DHBK 2005 10/Chapter5 Xử lý ưu tiên ngắt • Ngắt có mức ưu tiên cao nhất sẽ được phục vụ trước • Các mức ưu tiên: ❑ Ngắt nội bộ: INT 0, INT 1 ❑ Ngắt không che được: NMI ❑ Ngắt che được INTR ❑ Ngắt mềm INT N • CPU sẽ xử lý thế nào nếu CPU đang thực hiện phép chia và số chia bằng 0 đồng thời có yêu cầu ngắt từ chân INTR?
- © DHBK 2005 11/Chapter5 Mạch điều khiển ngắt 8259A
- © DHBK 2005 12/Chapter5 Mạch điều khiển ngắt 8259A
- © DHBK 2005 13/Chapter5 Mạch điều khiển ngắt 8259A
- © DHBK 2005 14/Chapter5 Mạch điều khiển ngắt 8259A
- © DHBK 2005 15/Chapter5 Mạch điều khiển ngắt 8259A
- © DHBK 2005 16/Chapter5 Mạch điều khiển ngắt 8259A
- © DHBK 2005 17/Chapter5 Mạch điều khiển ngắt 8259A
- © DHBK 2005 18/Chapter5 Mạch điều khiển ngắt 8259A
- © DHBK 2005 19/Chapter5 Mạch điều khiển ngắt 8259A
- © DHBK 2005 20/Chapter5 Mạch điều khiển ngắt 8259A
- © DHBK 2005 21/Chapter5 Mạch điều khiển ngắt 8259A
- © DHBK 2005 22/Chapter5 Mạch điều khiển ngắt 8259A
- © DHBK 2005 23/Chapter5 Mạch điều khiển ngắt 8259A
- © DHBK 2005 24/Chapter5 Các ngắt trong máy tính IBM/PC Cascaded i8259As INTR INT D0 IRQ0 IR0 D1 IRQ1 IR1 D2 IRQ2 IR2 D3 IRQ3 IR3 D4 IRQ4 8259A IR4 D5 IRQ5 Master IR5 D6 IRQ6 IR6 D7 IRQ7 IR7 INTA INTA SP/EN Hi CAS1 CAS0 CAS2 INT D0 IRQ8 IR0 D1 IRQ9 IR1 D2 IRQ10 IR2 D3 IRQ11 IR3 D4 IRQ12 8259A IR4 D5 IRQ13 Slave IR5 D6 IRQ14 IR6 D7 IRQ15 IR7 INTA Lo SP/EN
- © DHBK 2005 25/Chapter5 Các ngắt trong máy tính IBM/PC Priority Use of PC/AT Interrupt Highest IRQ0 Timer 0 IRQ1 Keyboard IRQ2 From slave 8259 IRQ8 Real time clock IRQ9 * IRQ10 IRQ11 IRQ12 IRQ13 C0-processor IRQ14 Hard disk controller IRQ15 IRQ3 COM2 port IRQ4 COM1 port IRQ5 LPT2 IRQ6 Floppydisk controller Lowest IRQ7 LPT1 * IRQ9 interrupt is redirected to IRQ2 vector
- © DHBK 2005 Các ngắt trong máy tính IBM/PC26/Chapter5 PC/AT VECTOR TABLE 77h IRQ15 Reserved 76h IRQ14 Fixed Disk Controller 75h IRQ13 80x87 74h IRQ12 Reserved 73h IRQ11 Reserved 72h IRQ10 Reserved 71h IRQ9 Directed to IRQ2 70h IRQ8 CMOS RTC 67h EMM 66h User Interrupts 60h 4Ah ROM BIOS and VIDEO 40h 3Fh MSDOS SWI (30 -3F reserved) 20h 1Fh ROM BIOS SWI 10h 0Fh IRQ 7 LPT1 0Eh IRQ6 Floppy Disk 0Dh IRQ5 LPT2 0Ch IRQ4 COM1 Port 0Bh IRQ3 COM2 Port 00028 0Ah IRQ2 Cascade from Slave 8259 00024 09h IRQ1 Keyboard 00020 08h IRQ0 Timer tick 07h 80x87 not present 06h Invalid opcode 05h Print screen (BIOS) 04h Overflow 03h Break point instruction 02h NMI 01h Single step 0000 00h Divide by zero
- © DHBK 2005 27/Chapter5 Nội dung môn học 1. Giới thiệu chung về hệ vi xử lý 2. Bộ vi xử lý Intel 8088/8086 3. Lập trình hợp ngữ cho 8086 4. Tổ chức vào ra dữ liệu 5. Ngắt và xử lý ngắt 6. Truy cập bộ nhớ trực tiếp DMA 7. Các bộ vi xử lý trên thực tế
- 28/Chapter5 © DHBK 2005 Chương 6: Truy cập bộ nhớ trực tiếp DMA • Giới thiệu về DMA • Mạch DMAC 8237A của Intel
- © DHBK 2005 29/Chapter5 Giới thiệu về DMA
- © DHBK 2005 30/Chapter5 Mạch DMAC 8237A của Intel
- © DHBK 2005 31/Chapter5 Mạch DMAC 8237A của Intel • Although i8237A may not appear as a discrete component in recent PCs, it’s still there (integrated in chipsets, ISPC) • The i8237A has four independent DMA channels • Original PC/XT design had one i8237A for four DMA channels • PC/AT used two i8237As to provide 7 DMA channels • i8237A is programmable device and can be configured for single transfers, block transfers, Reads, Writes or Memory-to- Memory transfers
- © DHBK 2005 32/Chapter5 Mạch DMAC 8237A của Intel • i8237A allows byte addressing for 8-bit data transfers • In the PC/AT design, a contrived 16-bit transfer design is implemented using the i8237A • i8237A uses a multiplexed address and data bus to reduce the device pin count. ❑ DB0 DB7 lines contain the data bus along with the high byte of the 16- bit address bus. ❑ An external latch is required to demultiplex the address lines
- © DHBK 2005 33/Chapter5 Mạch DMAC 8237A của Intel
- © DHBK 2005 34/Chapter5 Mạch DMAC 8237A của Intel
- © DHBK 2005 35/Chapter5 Mạch DMAC 8237A của Intel
- © DHBK 2005 36/Chapter5 How the PC uses the i8237A i8237A Address Latch and Page Registers I/O Mapped DMA A16 A23 to MPU, read Page [A16 A19 and write Regrs. for PC/XT] DMA A8 A15 Addr. Latch IOR DB0 DB7 IOW MEMR ADSTB MEMW i8237 DMA A0 A7 A0 A7 four HRQ DMA channels DREQ0 Hi DACK0 Q D HLDA DREQ1 15 usecs. DACK1 OUT1 DREQ2 CLR DACK2 8253 DREQ3 EOP DACK3 (8254) Timer/ Floppy Controller Counter
- © DHBK 2005 37/Chapter5 DMA Address Tracking • The i8237A has four registers for tracking memory addresses during a DMA block ❑ BASE ADDRESS REGISTER ❑ BASE WORD COUNT REGISTER ❑ CURRENT ADDRESS REGISTER ❑ CURRENT WORD COUNT REGISTER
- © DHBK 2005 38/Chapter5 DMA in the PC/XT
- © DHBK 2005 39/Chapter5 DMA Cascadation Cascaded i8237As in the PC/AT Cascaded i8237A DMA Controllers DREQ0 DACK0 DREQ1 i8237A DACK1 Slave DREQ2 DACK2 DREQ4 DREQ3 DACK4 MPU HRQ DACK3 HOLDA DREQ5 i8237A DACK5 Master DREQ6 DACK6 DREQ7 DACK7
- © DHBK 2005 40/Chapter5 PC/AT DMA Channel priorities • DMA channel 0 (DREQ0) has the highest priority • DMA channel 7 (DREQ7) has the lowest • Note, when a DMA transfer is in session, it cannot be 'interrupted' by another DMA request, even if the DMA request is made by a higher priority DMA channel. • The current DMA transfer session will be completed before the pending DMA request is accepted
- © DHBK 2005 41/Chapter5 DMA Channels in the PC/AT DMA Priority Pre-defined 8-bit or Use in PC/AT 16-bit ___ DREQ0 Highest Memory Refresh* 8-bits DREQ1 Not defined 8-bits DREQ2 Floppy Disk 8-bits DREQ3 Not defined 8-bits DREQ4 Cascade not used DREQ5 Not defined 16-bits DREQ6 Not defined 16-bits DREQ7 Lowest Not defined 16-bits