Bài giảng Kỹ thuật Vi xử lý - Chương 6: Các kiểu I/O

ppt 45 trang phuongnguyen 90
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kỹ thuật Vi xử lý - Chương 6: Các kiểu I/O", để 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:

  • pptbai_giang_ky_thuat_vi_xu_ly_chuong_6_cac_kieu_io.ppt

Nội dung text: Bài giảng Kỹ thuật Vi xử lý - Chương 6: Các kiểu I/O

  1. Bài giảng Kỹ thuật Vi xử lý Ngành Điện tử-Viễn thông Đại học Bách khoa Đà Nẵng của Hồ Viết Việt, Khoa ĐTVT Tài liệu tham khảo [1] Kỹ thuật vi xử lý, Văn Thế Minh, NXB Giáo dục, 1997 [2] Kỹ thuật vi xử lý và Lập trình Assembly cho hệ vi xử lý, Đỗ Xuân Tiến, NXB Khoa học & kỹ thuật, 2001
  2. Chương 6 Các kiểu I/O 6.1 Thăm dò (Polling) 6.2 I/O điều khiển bằng ngắt (Interrupt) - 6.3 DMA (Direct Memory Access)
  3. Thăm dò A19 5V A18 : A0 D7 A0 B0 D6 A1 B1 D5 A2 B2 D4 A3 B3 D3 A4 B4 D2 A5 74LS245 B5 8088 D1 A6 B6 Minimum D0 A7 B7 Mode E DIR IOR IOW mov dx, F000 L1: in al, dx cmp al, FF je L1 A A A A A A A A A A A A A A A AIOR : 1 1 1 1 1 1 9 8 7 6 5 4 3 2 1 0 5 4 3 2 1 0 :
  4. A19 5V A18 : The Circuit A0 D7 A0 B0 D6 A1 B1 D5 A2 B2 D4 A3 B3 D3 A4 B4 D2 A5 74LS245 B5 8088 D1 A6 B6 Minimum D0 A7 B7 Mode E DIR D0 Q0 D1 Q1 IOR D2 Q2 IOW D3 Q3 D4 Q4 D574LS373Q5 D6 Q6 D7 Q7 LE OE A A A A A A A A A A A A A A A AIOR 1 1 1 1 1 1 9 8 7 6 5 4 3 2 1 0 5 4 3 2 1 0 AAAAAAAAAAAAAAAAIOW 1111119876543210 543210
  5. Bài toán • Chương trình tạo ra hiệu ứng “LED chạy”: - Ban đầu LED chạy từ trên xuống - Khi nhấn phím thấp nhất thì LED thay đổi hướng chạy - Khi nhấn phím cao nhất thì chương trình kết thúc
  6. Chương trình mov dx, F000 L4: mov bl, al mov ah, 00 in al, dx mov al, 01 cmp al, FF L1: out dx, al je L6 mov cx, FFFF L2: dec cx test al, 01 jnz L2 jnz L5 cmp ah, 00 xor ah, FF jne L3 jmp L6 rol al, 1 L5: test al, 80 cmp al, 01 jz L7 jne L1 L6: mov al, bl jmp L4 jmp L1 L3: ror al, 1 L7: cmp al, 80 jne L1
  7. Khuyết điểm của thăm dò • Tốn nhiều thời gian • NgườI sử dụng có thể nhả phím trước khi lệnh in al, dx được thực hiện, do đó bộ vi xi xử lý sẽ không biết rằng ngườI sử dụng đã nhấn phím • Làm sao để khắc phục các khuyết điểm đó?
  8. Khuyết điểm của thăm dò mov dx, F000 L4: mov bl, al mov ah, 00 in al, dx mov al, 01 cmp al, FF L1: out dx, al je L6 mov cx, FFFF test al, 01 L2: dec cx jnz L5 jnz L2 xor ah, FF cmp ah, 00 jne L3 jmp L6 rol al, 1 L5: test al, 80 cmp al, 01 jz L7 jne L1 L6: mov al, bl jmp L4 jmp L1 L3: ror al, 1 L7: cmp al, 80 jne L1
  9. Ngắt là gì?
  10. Thăm dò instruction While studying, I’ll Input Memory check the bucket every Device 5 minutes to see if it is already full so that I can transfer the content of the bucket to the drum. P THĂM DÒ
  11. Ngắt instruction I’ll just study. When the Input Memory speaker starts playing Device music it means that the bucket is full. I can then transfer the content of the bucket to the drum. Interrupt request P INTERRUPT
  12. Interrupt- Ngắt • Bộ vi xử lý không cần phải kiểm tra tính sẵn sàng của thiết bị I/O. • Các thiết bị I/O sẽ báo cho vi xử lý biết khi chúng đã sẵn sàng • Bộ vi xử lý có thể làm công việc khác khi thiết bị I/O không có nhu cầu trao đổI dữ liệu
  13. Interrupt- Ngắt • Một số thuật ngữ cần nhớ: – Yêu cầu ngắt – Đầu vào ngắt – Đầu ra chấp nhận ngắt – Chương trình con phục vụ ngắt – Vector ngắt – Số ngắt – Bảng các vector ngắt
  14. Interrupt Service Routine (ISR) - Chương trình con phục vụ ngắt Interrupt vector - Vector ngắt • Là chương trình được thực hiện khi có một yêu cầu ngắt được chấp nhận • Kết thúc bằng lệnh IRET • Địa chỉ của chương trình con phục vụ ngắt • Bao gồm 4 byte: – 2 byte cho địa chỉ Offset – 2 byte cho địa chỉ Segment
  15. Interrupt Vector Number Số ngắt • Là một số được dùng để phân biệt các yếu cầu ngắt. Bởi vì có thể có nhiều hơn một thiết bị phát yêu cầu ngắt đến bộ vi xử lý cho nên để cho bộ vi xử lý có thể nhận biết được thiết bị thì mỗI thiết bị sẽ được gán cho một số ngắt • Trong hệ thống 8088, co thể có đến 256 số ngắt (từ 00h đến FFh)
  16. Interrupt Vector Table Bảng các vector ngắt • Là vùng nhớ được dành riêng để lưu trữ các vector ngắt • Có thể xem như là một mảng các vector ngắt – Mảng này có 256 phần tử – Mỗi phần tử gồm 4 byte: 2 byte đầu lưu địa chỉ offset, 2 byte sau lưu địa chỉ segment – Các vector ngắt được lưu trữ theo trật tự tăng dần của số ngắt
  17. Bảng các vector ngắt
  18. Phản ứng của vi xử lý khi không có ngắt • Khi bật công tấc nguồn hoặc nhấn nút reset. 1. Bộ vi xử lý được khởi động: – (IP) = 0000h – (CS) = FFFFh – IF = 0 2. Bộ vi xử lý tìm và lấy 1 byte lệnh. 3. IP tăng lên 1. 4. Bộ vi xử lý giải mã và thực hiện lệnh nếu tất cả các byte lệnh của một lệnh đã được lấy. 5. Quay trỏ lại bước 2.
  19. Phản ứng của vi xử lý khi có ngắt • Thiết bị I/O đưa yêu cầu ngắt đến bộ vi xử lý bằng cách làm cho đầu vào ngắt INTR chuyển sang mức cao. 6. Bộ vi xử lý sẽ hoàn thành lệnh đang thực hiện trước khi chấp nhận ngắt 7. Bộ vi xử lý chấp nhận ngắt bằng cách đưa ra tín hiệu chấp nhận ngắt ở mức thấp từ chân INTA. Lúc này thiết bị I/O sẽ làm cho tín hiệu ở INTR chuyển về mức thấp. 8. Thiết bị I/O sẽ đưa số ngắt được gán cho nó đến bộ vi xử lý thông qua D-Bus. Bộ vi xử lý sẽ lưu trữ số ngắt này vào một thanh ghi tạm thời
  20. Phản ứng của vi xử lý khi có ngắt 9. Bộ vi xử lý lưu giá trị hiện thời của thanh ghi cờ vào stack. 10. Bộ vi xử lý xoá cờ ngắt 11. Bộ vi xử lý lưu giá trị hiện thời của CS vào stack. 12. Bộ vi xử lý lưu giá trị hiện thờI của IP vào stack. 13. Bộ vi xử lý nhân số ngắt với 4. Kết quả này chính là địa chỉ của nơi lưu trữ vector ngắt tương ứng trong bảng các vector ngắt. Hai byte đầu tiên của vector ngắt được copy vào IP và hai byte tiếp theo được copy vào CS. 14. Quay trở về bước 2.
  21. 8088 và một thiết bị ra đơn giản A19 A18 : A0 D7 D0 Q0 D6 D1 Q1 D5 D2 Q2 D4 D3 Q3 D3 D4 Q4 D2 D5 74LS373 Q5 8088 D1 D6 Q6 Minimum D0 D7 Q7 Mode LE OE IOR IOW A A A A A A A A A A A A A A A AIOW 1 1 1 1 1 1 9 8 7 6 5 4 3 2 1 0 5 4 3 2 1 0
  22. 8088 và một thiết bị vào đơn giản A19 5V A18 : A0 D7 A0 B0 D6 A1 B1 D5 A2 B2 D4 A3 B3 D3 A4 B4 D2 A5 74LS245 B5 8088 D1 A6 B6 Minimum D0 A7 B7 Mode E DIR IOR IOW A A A A A A A A A A A A A A A AIOR 1 1 1 1 1 1 9 8 7 6 5 4 3 2 1 0 5 4 3 2 1 0
  23. 8088 và thiết bị vào hoạt động theo cơ chế ngắt A19 5V A18 : A0 D7 A7 B7 D6 A6 B6 D5 A5 B5 D4 A4 B4 D3 A3 B3 D2 A2 74LS245 B2 8088 D1 A1 B1 Minimum D0 A0 B0 Mode E DIR IOR IOW INTR INTA INTR A A A A A A A A A A A A A A A AIOR 1 1 1 1 1 1 9 8 7 6 5 4 3 2 1 0 5 4 3 2 1 0
  24. 8088 và một thiết bị vào hoạt động theo cơ chế ngắt A19 5V A18 : A0 D7 A7 B0 D6 A6 B1 D5 A5 B2 D4 A4 B3 D3 A3 B4 D2 A2 74LS245 B5 8088 D1 A1 B6 Minimum D0 A0 B7 Mode E DIR IOR IOW 5V INTR INTA 5V D set Q INTR clr Q A A A A A A A A A A A A A A A A IOR 1 1 1 1 1 1 9 8 7 6 5 4 3 2 1 0 5 4 3 2 1 0 5V
  25. 8088 và một thiết bị vào hoạt động theo cơ chế ngắt A19 5V A18 : A0 D7 A7 B7 D6 A6 B6 D5 A5 B5 D4 A4 B4 D3 A3 B3 D2 A2 74LS245 B2 8088 D1 A1 B1 Minimum D0 A0 B0 Mode E DIR IOR IOW 5V INTR INTA 5V D set Q INTR clr Q A A A A A A A A A A A A A A A AIOR 1 1 1 1 1 1 9 8 7 6 5 4 3 2 1 0 5 4 3 2 1 0 INTA
  26. 8088 và một thiết bị vào hoạt động theo cơ chế ngắt A19 5V A18 : 5V A0 D7 A7 B7 D7 A7 B7 D6 A6 B6 D6 A6 B6 D5 A5 B5 D5 A5 B5 D4 A4 B4 D4 A4 B4 D3 A3 B3 D3 A3 B3 D2 A2 74LS245 B2 D2 A2 74LS245 B2 D1 A1 B1 8088 D1 A1 B1 D0 A0 B0 Minimum D0 A0 B0 Mode INTA E E DIR DIR IOR IOW 5V INTR INTA 5V D set Q INTR clr Q A A A A A A A A A A A A A A A AIOR 1 1 1 1 1 1 9 8 7 6 5 4 3 2 1 0 5 4 3 2 1 0 INTA
  27. 8088 và một thiết bị vào hoạt động theo cơ chế ngắt A19 5V A18 INT 3 : 5V A0 D7 A7 B7 D7 A7 B7 D6 A6 B6 D6 A6 B6 D5 A5 B5 D5 A5 B5 D4 A4 B4 D4 A4 B4 D3 A3 B3 D3 A3 B3 D2 A2 74LS245 B2 D2 A2 74LS245 B2 D1 A1 B1 8088 D1 A1 B1 D0 A0 B0 Minimum D0 A0 B0 Mode INTA E E DIR DIR IOR IOW 5V INTR INTA 5V D set Q INTR clr Q A A A A A A A A A A A A A A A AIOR 1 1 1 1 1 1 9 8 7 6 5 4 3 2 1 0 5 4 3 2 1 0 INTA RESET
  28. A19 5V A18 : A0 The Circuit D7 A0 B0 D6 A1 B1 D5 A2 B2 D4 A3 B3 D3 A4 B4 D2 A5 74LS245 B5 8088 D1 A6 B6 Minimum D0 A7 B7 Mode E DIR IOR D0 Q0 IOW D1 Q1 D2 Q2 D3 Q3 D4 Q4 D574LS373Q5 D6 Q6 D7 Q7 A A A A A A A A A A A A A A A AIOR 1 1 1 1 1 1 9 8 7 6 5 4 3 2 1 0 LE OE 5 4 3 2 1 0 AAAAAAAAAAAAAAAAIOW 1111119876543210 543210
  29. Chương trình chính ISR bắt đầu từ 52800h Kết thúc L1: cmp ah, 88 mov ax,0000 mov ds, ax je L4 mov bx, 000C out dx, al mov ax, 2800 mov cx, FFFF mov [bx], ax L2: dec cx mov ax, 5000 jnz L2 mov [bx+02], ax cmp ah, 00 sti jne L3 mov dx, F000 rol al, 1 mov ah, 00 jmp L1 mov al, 01 L3: ror al, 1 jmp L1 L4:
  30. Chương trình con phục vụ ngắt (ISR) mov bl, al in al, dx test al, 01 jnz S1 xor ah, FF jmp S2 S1: test al, 80 jnz S2 mov ah, 88 S2: mov al, bl iret
  31. ICW1, ICW2
  32. ICW3, ICW4
  33. OCW1 và OCW2
  34. 8259 đơn ICW1: 13H ICW2: 08H ICW3: 09H
  35. Interrupt Sources in PC
  36. Sources of NMI
  37. 8259s nối tầng
  38. 8259s nối tầng
  39. IRQ9 Instead of IRQ2
  40. Interrupts (Summary)
  41. Edge Triggered and Interrupt Sharing • Level triggered mode: IRQ line should be brought down before EOI. • Edge triggered mode: noise on IRQ lines might cause false interrupts. • New computer and busses. – Level triggered. – Interrupt sharing.