Tải bản đầy đủ (.ppt) (76 trang)

chương 4- các phương pháp vào ra dữ liệu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (914.23 KB, 76 trang )

1. Khái niệm ngắt

Ngắt là khả năng dừng chương trình chính đang chạy
để thực hiện một chương trình khác gọi là chương trình
con xử lý ngắt.

Khi CPU đang thực hiện chương trình chính đến dòng
lệnh thứ n ngẫu nhiên ngoại vi thứ i xin phục vụ bằng cách
phát ra tín hiệu IRQ(i) (Interrupt Request) đến CPU.
I. Phương pháp vào/ra dữ liệu bằng ngắt
1.Khái niệm ngắt
Nói chung, CPU khi nhận được yêu cầu xin phục vụ
của các ngoại vi nó sẽ thực hiện:

Ngừng xử lý chương trình chính.

Cất ngữ cảnh của chương trình hiện tại vào Stack
mem.

Tìm địa chỉ của chương trình con phục vụ ngắt tương
ứng (Interrupt Service Routine- ISR) để thực hiện.

Khôi phục ngữ cảnh của chương trình đã xuất hiện
yêu cầu phục vụ (nhờ lệnh IRET ở cuối chương trình phục
vụ ngắt)

Tiếp tục thực hiện chương trình
I. Phương pháp vào/ra dữ liệu bằng ngắt

Main Prog
n: IRQ


i
n+1
m: IRQ
j
m+1
ISR
i
ISR
j
IRET IRET
I. Phương pháp vào/ra dữ liệu bằng ngắt
Đặc điểm Interrupt
-
Là phương pháp vào/ra kết hợp tín hiệu và phần mềm
để thực hiện đa nhiệm.
-
Là chế độ hoạt động riêng cho các vi xử lý/máy tính
kiểu ONLINE.
-
Nguồn ngắt: Chủ yếu từ ngoại vi, CPU.
-
Xảy ra ngẫu nhiên
-
Nhiều IOs, ngẫu nhiên => Tranh chấp => Giải quyết ưu
tiên ngắt.
-
Thiết bị ưu tiên cao có thể dừng ISR của thiết bị ưu tiên
thấp.
-
Hệ lớn, nhiều IOs thường dùng PIC (Intel PIC 8259A)

-
Chỉ số ưu tiên do nhà sản xuất qui định cho các ngoại vi
cố định, mức 0 là cao nhất.
-
Theo hình trên: Level (j) > Level (i), i>j
-
Ưu tiên phân định do các tín hiệu ngắt trong CPU (Intel
8085: INTR, 5.5, 6.5, 7.5 và TRAP)
-
Z80 CPU & others: Ưu tiên theo kiểu Daisy Chain
2. Ưu tiên Interrupt
3. Ngắt trong hệ vi xử lý 8086
3.1. Phân loại ngắt
Trong hệ vi xử lý 8086 có thể xếp các nguyên nhân gây ra ngắt CPU
vào 3 nhóm như sau:
-
Nhóm các ngắt cứng: Đó là các yêu cầu ngắt CPU do các tín
hiệu đến từ các chân INTR và NMI.
Ngắt cứng INTR là các yêu cầu ngắt che được. Các lệnh CLI và STI
có ảnh hưởng trực tiếp đến trạng thái của cờ IF trong BVXL, tức ảnh
hưởng tới việc CPU có nhận biết yêu cầu ngắt tại chân này hay không.
Nó có thể có kiểu ngắt N nằm trong khoảng từ 00h đến FFh. Kiểu ngắt
này phải được đưa vào Bus dữ liệu để CPU có thể đọc được khi có
xung INTA trong chu kỳ trả lời chấp nhận ngắt.
3. Ngắt trong hệ vi xử lý 8086
-
Nhóm các ngắt mềm: Khi CPU thực hiện các lệnh ngắt
dạng INT N, trong đó N là số hiệu (kiểu) ngắt nằm trong
khoảng 00h đến FFh.
-

Nhóm các ngắt ngoại lệ: Đó là các ngắt do các lỗi nảy
sinh trong quá trình hoạt động của CPU như phép chia cho
0, xảy ra tràn khi tính toán.
3.2. x86 và PC Interrupt
Bảng vector ngắt IVT (Interrupt Vector Table- Real
mode)
-
CPU x86: 1
st
kilo byte (RAM) bảng vector ngắt.
-
1
st
KB=256 elements of 4 byte
-
Chứa địa chỉ đầu của ISR tương ứng. Khi khởi tạo,
BIOS nạp vào IVT địa chỉ đầu của các ISR ứng với IO.
-
Khi đổi vector ngắt: Đổi nội dung của vector này.
Các ngắt cứng, NMI và Internal đều tương ứng với 1
lệnh ngắt mềm có cùng vector type, tức có vector trong
bảng IVT.
3. Ngắt trong hệ vi xử lý 8086
CS hi
CS low
IP hi
IP low
00014
Print Screen
00010

Over Flow
0000C
Break Point
00008
NMI
00004
Single Step
00000
Divide by zero
4 byte Vector Element
3. Ngắt trong hệ vi xử lý 8086
Bảng vectơ ngắt của 8088 tại 1
st
KB RAM
3. Ngắt trong hệ vi xử lý 8086
03FEh-03FFh CS của CTPVN FFh
03FCh-03FDh IP của CTPVN FFh
0082h-0083h CS của CTPVN 20h
0080h-0081h IP của CTPVN 20h
000Ah-000Bh CS của CTPVN 2h
0008h-0009h IP của CTPVN 2h
0006h-0007h CS của CTPVN 1h
0004h-0005h IP của CTPVN 1h
0002h-0003h CS của CTPVN 0h
0000h-0001h IP của CTPVN 0h
3. Ngắt trong hệ vi xử lý 8086
Các yêu cầu ngắt sẽ được CPU kiểm tra thường xuyên tại
chu kỳ đồng hồ cuối cùng của mỗi lệnh.
Để đưa số hiệu ngắt N vào Bus dữ liệu trong khi cũng tạo ra
yêu cầu ngắt đưa vào chân INTR tương ứng của 8086. Giả thiết

trong một thời điểm nhất định chỉ có một yêu cầu ngắt nhất định
IR
i
được tác động và khi đó đầu ra của mạch NAND sẽ có xung
yêu cầu ngắt đến CPU. Tín hiệu IR
i
được đồng thời đưa qua
mạch khuếch đại đệm để tạo ra số hiệu ngắt tương ứng, số hiệu
ngắt này sẽ được CPU đọc vào khi nó đưa ra tín hiệu trả lời
INTA.
Quan hệ giữa IR
i
và số hiệu ngắt n tương ứng
3. Ngắt trong hệ vi xử lý 8086
AD
7
IR
6
IR
5
IR
4
IR
3
IR
2
IR
1
IR
0

N
1 1 1 1 1 1 1 0 FEh (254)
1 1 1 1 1 1 0 1 FDh (253)
1 1 1 1 1 0 1 1 FBh (251)
1 1 1 1 0 1 1 1 F7h (247)
1 1 1 0 1 1 1 1 EFh (239)
1 1 0 1 1 1 1 1 DFh (223)
1 0 1 1 1 1 1 1 BFh (191)
3.3. Đáp ứng của CPU khi có yêu cầu ngắt
Khi có yêu cầu ngắt kiểu N đến chân CPU và nếu yêu
cầu đó được phép (Nếu ngắt có số hiệu N kích hoạt
và có hiệu lực), CPU thực hiện các công việc sau:
Bước 1: CPU kết thúc lệnh đang thực hiện
Bước 2:
1. (SP)  (SP) – 2 chỉ ra đỉnh mới của ngăn xếp
{SP}  FR Cất giá trị thanh ghi cờ vào đỉnh NX
3. Ngắt trong hệ vi xử lý 8086
2. IF  0, TF  0 Cấm các ngắt khác tác động vào
CPU, cho CPU chạy ở chế độ bình thường)
3. (SP)  (SP) – 2 chỉ ra đỉnh mới của ngăn xếp
{SP}  (CS) Cất giá trị Segment vào đỉnh NX
4. (SP)  (SP) – 2 chỉ ra đỉnh mới của ngăn xếp
{SP}  (IP) Cất giá trị Offset vào đỉnh NX
Bước 3: Cất giữ nội dung các TG đa năng khác (nếu
cần) vào NX
3. Ngắt trong hệ vi xử lý 8086
Bước 4: {N*4}  IP, {N*4+2}  CS
Bước 5: Thực hiện chương trình con
Bước 6: Khôi phục trạng thái cũ của các TG đa năng
Bước 7: Tại cuối chương trình phục vụ ngắt khi gặp lệnh

IRET:
{SP}  (IP), (SP)  (SP) +2
{SP}  (CS), (SP)  (SP) +2
{SP}  FR, (SP)  (SP) +2
BXL quay lại CT chính tại địa chỉ trở về và khôi phục lại
giá trị của TG cờ trước khi thực hiện ngắt.
3. Ngắt trong hệ vi xử lý 8086
Có một vấn đề thực tế đặt ra là nếu tại cùng một
thời điểm có nhiều yêu cầu ngắt khác nhau cùng đòi
hỏi CPU phục vụ thì CPU xử lý các yêu cầu ngắt đó
như thế nào? Câu trả lời là CPU xử lý các yêu cầu
ngắt theo thứ tự ưu tiên với nguyên tắc ngắt nào có
mức ưu tiên và được phục vụ trước.
II. Chíp điều khiển ngắt PIC 8259A
(Priority Interrupt Controller)
1. Các chân tín hiệu của PIC 8259A
II. Chíp điều khiển ngắt PIC 8259A
(Priority Interrupt Controller)
- CS: Lối vào chọn chíp.
- RD: 8259 ra số liệu, CPU có thể đọc số liệu từ 8259
- WR: 8259 ra số liệu từ Bus số liệu, CPU có thể viết số
liệu vào thanh ghi bên trong 8259
- D
0
-D
7
: Bus số liệu hai hướng
- CAS
0
-CAS

2
: Các đường nối tầng giữa các PIC. 1 PIC
chủ có thể chọn 1 trong 8 PIC tớ qua 3 đường này.
Do đó có thể coi đây là Bus địa chỉ cụ bộ của PIC.
- GND: Tín hiệu nối đất
Chức năng các chân
-
SP/EN: Trong chế độ đệm, EN điều khiển bộ đệm ngoài.
Trong chế độ không đệm, nếu SP=1 thì 8259 là chủ, SP=0
thì 8259 là tớ.
-
INT: Nối trực tiếp với đầu vào INTR của CPU.
-
IR
0
-IR
7
: Nối với các đầu ra tín hiệu ngắt của các TBNV.
-
INTA: Tín hiệu chấp nhận ngắt từ CPU.
-
A
0
: Cùng với các tín hiệu CS, WR và RD phân biệt các lệnh
khác nhau từ CPU và cung cấp các thông tin trạng thái.
-
VCC: Nguồn nuôi.
Chức năng các chân
2. Sơ đồ khối PIC 8259A
Chip điều khiển ngắt PIC 8259A

Trong trường hợp nhiều yêu cầu ngắt cần phải phục vụ ta
thường dùng vi mạch 8259A để giải quyết vấn đề ưu tiên.
8259A có thể giải quyết được 8 yêu cầu ngắt với 8 mức
ưu tiên khác nhau.
Các khối chức năng:

IRR (Thanh ghi yêu cầu ngắt): lưu trữ các yêu cầu ngắt tại
ngõ vào IR tương ứng.

ISR (Thanh ghi phục vụ ngắt): Lưu trữ các yêu cầu ngắt
đang phục vụ

IMR (Thanh ghi mặt nạ ngắt): Lưu trữ mặt nạ của các yêu
cầu ngắt tại ngõ vào
3. Chức năng các khối
Chip điều khiển ngắt PIC 8259A

Control logic (Logic điều khiển): Gửi yêu cầu ngắt tới
chân INTR của CPU khi có tín hiệu ngắt tại ngõ vào của
8259A và nhận trả lời chấp nhận yêu cầu ngắt hay
không INTA từ CPU để đưa kiểu ngắt vào CPU.

Data bus buffer (Đệm bus dữ liệu): Giao tiếp giữa
8259A với bus dữ liệu của CPU.

Cascade buffer/comparator (Đệm nối tầng và so
sánh): Lưu trữ và so sánh số hiệu của các kiểu ngắt
trong trường hợp dùng nhiều mạch 8259A.
3. Chức năng các khối
4. Bảng phân phối hoạt động theo địa chỉ

-
Một trong các đường yêu cầu ngắt IR
0
-IR
7
được nâng lên mức cao,
bit tương ứng trong IRR được đặt.
-
8259 gửi tín hiệu INT tới CPU.
-
CPU nhận tín hiệu INT và ra xung INTA thứ nhất nếu cờ IF được
đặt.
-
Bit ưu tiên cao nhất trong IRR được xóa, bit tương ứng được đặt
trong ISR.
-
CPU ra xung INTA thứ 2, 8259 đưa con trỏ 8 bit chỉ số ngắt lên Bus
số liệu CPU đọc và gọi ngắt.
-
Trong chế độ tự động, bit trong ISR tự động RESET, nếu không
CPU phải ra lệnh EOI tới 8259 khi chạy chương trình ngắt để xóa
bit ISR.
5. Các hoạt động khi có yêu cầu ngắt từ ngoại vi
Các PIC 8259 có thể được ghép nối tầng với nhau.
Chúng được phân thành hai mức: 1 PIC chủ (Master) và từ
1 đến 8 PIC tớ (Slave). Khi đó, hệ có thể quản lý yêu cầu
ngắt của hơn 8 TBNV. Lúc đó lối ra INT của PIC tớ được nối
với lối vào IR của PIC chủ vào các tín hiệu từ CAS
0
-CAS

2

được dùng cho việc trao đổi thông tin giữa chúng. Do vậy
với 1 cặp nối tầng PIC 1 chủ 1 tớ có thể quản lý 15 kênh
yêu cầu ngắt. Chế độ làm việc của 8259 được xác lập bởi
các từ điều khiển do phần mềm nạp vào. Có 2 loại từ điều
khiển: Từ điều khiển khởi động ICW (Intialization Control
Word) và từ điều khiển hoạt động OCW (Operration Control
Word).
5. Các hoạt động khi có yêu cầu ngắt từ ngoại vi

×