chuong 5- cac phuong phap vao ra du lieu [compatibility mode]
TRANSCRIPT
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/80863. Lập trình hợp ngữ cho 80864. Ghép nối 8086 với bộ nhớ và các thiết bị ngoại vi5. Các phương pháp điều khiển vào/ra dữ liệu
1/Chapter5
5. Các phương pháp điều khiển vào/ra dữ liệu6. Các bộ vi xử lý trên thực tế
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ìnhcon xử lý ngắt.
• Khi CPU đang thực hiện chương trình chính đến dòng
I. Phương pháp vào/ra dữ liệu bằng ngắt
• Khi CPU đang thực hiện chương trình chính đến dònglệnh thứ n ngẫu nhiên ngoại vi thứ i xin phục vụ bằng cáchphát ra tín hiệu IRQ(i) (Interrupt Request) đến CPU.
1. Khái ni ệm ngắtNó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 Stackmem.
I. Phương pháp vào/ra dữ liệu bằng ngắt
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êucầ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
Main Prog
ISRiISRj
I. Phương pháp vào/ra dữ liệu bằng ngắt
n: IRQin+1
m: IRQjm+1
IRET IRET
- Thiết bị ưu tiên cao có thể dừng ISR của thiết bị ưu tiênthấ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.
2. Ưu tiên Interrupt
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)
3. Ngắt trong hệ vi xử lý 8086
3.1. Phân lo ại ng ắtNgắt
Ngắt mềmLà các ngắt kích hoạt
Ngắt cứngLà các ngắt kích hoạt bằng lệnh INT n
Trong Ngoài
Ngắt không che được
Ngắt che được
Các kiểu ngắt của hệ vi xử lý
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. Được khởi động bởi các thành phần có triong phần cứng của hệ
VXL (Ví dụ: Các TBNV trong và ngoài). Loại ngắt này là một cơ cấu đơn
giản và hiệu quả để BXL phản ứng kịp thời với các sự kiện không đồng
bộ xảy ra trong hệ VXL.bộ xảy ra trong hệ VXL.
VD: BP giao tiếp với hệ VXL theo cơ chế ngắt. Mỗi khi ấn hay thả 1
phím thì ngắt BP sẽ được kích hoạt. Chương trình xử lý ngắt sẽ được
khởi động bằng cách chuyển kí tự được ấn vào vùng đệm của bộ đệm
BP, xếp ngay sau kí tự được ấn lần trước.
Ngắt cứng ngoài
Là ngắt được kích hoạt bởi các TBNV bên ngoài. Có 2 loại ngắt cứng
ngoài là ngắt che được và không che được. Các ngắt này bị cấm bằng
lệnh CLI (CLear Interrupt flag), khi bị cấm thì mặc dù được gọi thì
chương trình con tương ứng cũng không được thực hiện. Để hủy bỏ chế
độ cấm ngắt dùng lệnh STI (SeT Interrupt flag), nó cho phép các ngắt bị độ cấm ngắt dùng lệnh STI (SeT Interrupt flag), nó cho phép các ngắt bị
cấm trở lại hoạt động bình thường.
Các lệnh CLI, STI (thông qua Cờ IF) ảnh hưởng tới việc CPU có
nhận biết các yêu cầu ngắt tại chân INTR. Yêu cầu ngắt tại chân INTR có
thể có số hiệu ngắt n (00h-FFh).
Các ngắt không thể bị cấm tại chân NMI sẽ luôn được thực hiện kể
cả có lệnh CLI. CT con phục vụ ngắt này thường là CT thông báo các sự
kiện quan trọng nhất đối với hệ như sự cố nguồn, thời gian thực,...
Ngắt cứng nội bộ (trong)
Là các ngắt không được kích thích bởi thiết bị nằm bên ngoài hệ mà
bởi các chip IC bổ trợ nằm ngay trong hệ như ngắt thời gian khi nó được
gọi bởi bộ tạo thời gian thực TIMER LSI 8253
Ngắt mềm
Là ngắt được gọi bằng một lệnh ở trong chương trình ngôn ngữ máy
bằng lệnh INT. Các ngắt mềm cho phép gọi trực tiếp các chương trình
con phục vụ ngắt chứa trong thư viện chương trình. Các ngắt mềm có
thể được gọi trong các NNLT bậc cao nhưng trình biên dịch cũng phải
dịch ra thành lệnh INT (chỉ có lệnh này mới cho phép khởi động ngắt dịch ra thành lệnh INT (chỉ có lệnh này mới cho phép khởi động ngắt
mềm). Do vậy, lệnh ngắt mềm bản chất là lệnh gọi CALL đặc biệt. Nó
được gọi chủ động bằng chương trình của người lập trình.
CS hi
CS low
00014 Print Screen
00010 Over Flow
0000C Break Point
3. Ngắt trong hệ vi xử lý 8086
CS low
IP hi
IP low
0000C Break Point
00008 NMI
00004 Single Step
00000 Divide by zero4 byte Vector Element
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
Bảng vectơ ngắt của 8088 tại 1st KB RAM
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 địnhtrong một thời điểm nhất định chỉ có một yêu cầu ngắt nhất định
IRi đượ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 IRi đượ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.
3. Ngắt trong hệ vi xử lý 8086
AD7 IR6 IR5 IR4 IR3 IR2 IR1 IR0 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)
Quan hệ giữa IRi và số hiệu ngắt n tương ứng
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)
Khi có yêu cầu ngắt kiểu N đến chân CPU và nếu yêu cầu đó đượcphép (Nếu ngắt có số hiệu N kích hoạt và có hiệu lực), CPU thực hiệncác công việc sau:Bước 1: CPU kết thúc lệnh đang thực hiệnBướ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.3. Đáp ứng của CPU khi có yêu cầu ngắt
{SP} � FR Cất giá trị thanh ghi cờ vào đỉnh NX
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
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
3. Ngắt trong hệ vi xử lý 8086
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.
Có một vấn đề thực tế đặt ra là khi hệ có nhiều ngoại vi
được ghép nối và làm việc theo cơ chế ngắt thì phải mở rộng
các đầu ngắt để đáp ứng về số lượng ngắt. Khi số lượng ngắt
tăng lên thì vấn đề qui định mức ưu tiên phải được đặt ra vì
II. Chíp điều khiển ngắt PIC 8259A(Priority Interrupt Controller)
tăng lên thì vấn đề qui định mức ưu tiên phải được đặt ra vì
BXVL tại một thời điểm chỉ có thể phục vụ một đầu ngắt mà
thôi.
Trong trường hợp như vậy, giải pháp đúng đắn hơn cả là
sử dụng chip IC chuyên dụng cho phép mở rộng bảng vecto
ngắt cứng lên số lượng cần thiết. Chip 8259A được gọi là
mạch điều khiển ngắt ưu tiên- PIC (Priority Interrupt
II. Chíp điều khiển ngắt PIC 8259A(Priority Interrupt Controller)
Controller). Đó là một vi mạch cỡ lớn lập trình được. Nó có
thể xử lý được 8 yêu cầu ngắt với 8 mức ưu tiên khác nhau
để tạo ra một yêu cầu ngắt đưa đến đầu vào chung là INTR
(yêu cầu ngắt che được) của BVXL.
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)
2. Sơ đồ khối PIC 8259A
- 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
Chức năng các chân
- D0-D7: Bus số liệu hai hướng
- CAS0-CAS2: 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ục bộ của PIC. Chỉ dùng khi cần nối tầng
để tăng thêm số lượng đầu vào yêu cầu ngắt cần xử lý.
- GND: Tín hiệu nối đất
- SP/EN: (Slave program/Enable buffer) Lập trình cho mạch PIC 8259
thợ/mở đệm Bus dữ liệu. Khi 8259A làm việc ở chế độ không đệm Bus
dữ liệu thì đây là tín hiệu vào dùng để lập trình biến mạch 8259A thành
mạch chủ (nếu SP=1) và mạch thợ (nếu SP=0). Còn nếu làm việc trong
hệ VXL có đệm Bus thì để BXL và 8259A thông vòa Bus dữ liệu hệ
thống. Lúc này việc định nghĩa mạch chủ hoặc thợ phải thực hiện thông
Chức năng các chân
thống. Lúc này việc định nghĩa mạch chủ hoặc thợ phải thực hiện thông
qua từ điều khiển khởi đầu ICW4.
- INT [O]: Nối trực tiếp với đầu vào INTR của CPU.
- IR0-IR7: Nối với các đầu ra tín hiệu ngắt của các TBNV.
- INTA [I]: Tín hiệu chấp nhận ngắt từ CPU. Được nối với tín hiệu chấp
nhận ngắt INTA của BXL.
- A0: 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.
Chip điều khiển ngắt PIC 8259A
• IRR (Interrupt Request Register-Thanh ghi yêu cầu ngắt): Ghi
nhớ các yêu cầu ngắt có tại ngõ vào IRi. Bất cứ ngoại vi nào có
yêu cầu ngắt (trường hợp cực đại là cả 8 đầu vào đều có yêu
cầu) sẽ được thanh ghi này ghi nhận.
• ISR (Thanh ghi phục vụ ngắt): Ghi nhớ yêu cầu ngắt đang phục
Các khối chức năng
vụ trong số các yêu cầu ngắt IRi đang có trong mạch.
• IMR (Thanh ghi mặt nạ ngắt): Ghi nhớ mặt nạ ngắt đối với các
yêu cầu IRi
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
3. Chức năng các khối
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.
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 IR0-IR7 được nâng lên mức
cao, bit tương ứng trong IRR được đặt.
- 8259A 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.
5. Các hoạt động khi có yêu cầu ngắt từ ngoại vi
- 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, 8259A đư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 8259A khi chạy chương trình
ngắt để xóa bit ISR.
Các PIC 8259A 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ừ CAS0-CAS2 được dùng cho việc trao
5. Các hoạt động khi có yêu cầu ngắt từ ngoại vi
đổ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
8259A đượ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).
Dlatch
Data bit 7
CS- IOW (0A0h)DRAM Parity err.IO Check Err.
6. Tổ chức ưu tiên ngắt trong PC
X86 CPU
PIC8259AMaster
PIC8259ASlave
IR0, Sys TimerIR1, KB portIR2, SlaveIR3, comm2IR4, comm1IR5, LPT2IR6, FDCIR7, LPT1
IR8, Real Timer ClockIR9, Redirected IR2IR10, AvailableIR11, AvailableIR12, PS/2 MouseIR13, Math ProcessorIR14, HDCIR15, Available-WathchDogTimer
INTR
Tổ chức ưu tiên ngắt trong PC
7. Mạch ghép tầng
8. Lưu đồ khởi động
ICW1
ICW2
ICW3
ICW4
ICW1
ICW2
ICW3
ICW1
ICW2
ICW4
ICW1
ICW2
Từ điều khiển khởi đầu ICW1(Initialization Control Word 1)
D7 D6 D5 D4 D3 D2 D1 D0
x x x 1 LTIM ADI SNGL IC4
A00
Chỉ sử dụng khi ghép với CPU 8 bit
Dạng tác động1: Mức2. Sườn (Cạnh)
Khoảng cách1: 4 byte0: 8 byte
Chọn chế độ đơn1: Đơn PIC0: Nhiều PIC
1: Cần ICW40: Bỏ ICW4
Tổ chức của từ mã ICW1
Từ điều khiển khởi đầu ICW1(Initialization Control Word)
Bit D0 qui định sẽ được nối với hệ VXL nào. Hệ 16/32 nhất thiết IC4=1, hệ 8 IC4=0. Các bit còn lại định nghĩa cách thức tác động của xung yêu cầu ngắt tại các chân yêu cầu ngắt IR của mạch 8259A khác trong hệ làm việc đơn lẻ hay nối tầng. Bit D2=1 thì mỗi vecto ngắt được cấp phát 4 byte còn D2=0 thì mỗi vecto ngắt được cấp phát 8 byte.còn D2=0 thì mỗi vecto ngắt được cấp phát 8 byte.
Các bit đánh dấu x là không quan trọng và thường được lấy giá trị 0 để lập trình cho các ứng dụng sau này.
Từ điều khiển khởi đầu ICW2(Initialization Control Word 2)
D7 D6 D5 D4 D3 D2 D1 D0
T7 T6 T5 T4 T3 T2 T1 T0
A01
5 bit này để qui định số hiệu ngắt cho PIC 8259A
3 bit này để qui định số hiệu ngắt cho các đầu ngắt IR0 � IR7
Tổ chức của từ mã ICW2
Từ điều khiển khởi đầu ICW2(Initialization Control Word 2)
Từ điều khiển ICW2 được dùng để định nghĩa số ngắt nền cho 7 số ngắt còn lại.
Cho phép người thiết kế lựa chọn số hiệu ngắt cho PIC 8259 bằng các bit T7÷T3. Các bit T2÷T0 được 8259 tự động gán giá trị tùy theo đầu vào yêu cấu ngắt cụ thể IRi.
Ví dụ: Nếu muốn gán các đầu vào của mạch 8259A có Ví dụ: Nếu muốn gán các đầu vào của mạch 8259A có số hiệu ngắt từ 40h÷47h ta chỉ cần gán 40h vào các bitT7÷T3. Khi đó:
IR0 sẽ có số hiệu ngắt là 40h (Bit T2÷T0 có giá trị 000)IR1 sẽ có số hiệu ngắt là 41h (Bit T2÷T0 có giá trị 001)...
IR7 sẽ có số hiệu ngắt là 47h (Bit T2÷T0 có giá trị 111)
Từ điều khiển khởi đầu ICW3(Initialization Control Word 3)
D7 D6 D5 D4 D3 D2 D1 D0
S7 S6 S5 S4 S3 S2 S1 S0
8 bit này để qui định đầu ngắt IR i nào là đầu ra của PIC thợS =1: Có 1 PIC thợ nối vào
A01
a)Si=1: Có 1 PIC thợ nối vàoSi=0: Không có PIC th ợ nối vào
Tổ chức của từ mã ICW3: a) Cho PIC chủ, b) Cho PIC thợ
D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 0 0 ID2 ID1 ID0
3 bit này để đánh số hiệu cho PIC th ợ PIC0 ���� PIC7
A01
a)
b)
ICW3 cho mạch chủ dùng để chỉ ra đầu vào yêu cầu ngắtIRi nào của nó có tín hiệu INT của mạch thợ nối vào.
ICW3 cho mạch thợ dùng làm phương tiện để các mạch nàyđược nhận biết. Vì vậy từ điều khiển khởi đầu ICW3 này phảichứa mã số i ứng với đầu vào IRi của mạch chủ và mạch thợ đãđược nối vào. Mạch thợ sẽ so sánh mã số này với mã số nhậnđược ở 3 bit nối tầng CAS2, CAS1, CAS0 nếu bằng nhau thì sốhiệu ngắt của PIC thợ sẽ được đưa ra kênh dữ liệu khi có xung
Từ điều khiển khởi đầu ICW3
hiệu ngắt của PIC thợ sẽ được đưa ra kênh dữ liệu khi có xung/INTA.
Ví dụ: Trong một hệ VXL có một mạch chủ 8259A chủ, hai mạch8259A thợ nối vào chân IR0 và IR1 của mạch chủ, còn các chânIR khác của PIC chủ nối trực tiếp với ngoại vi của hệ. Như vậy,để tổ hợp các PIC này làm việc được với nhau ta sẽ phải ghi cáctừ điều khiển khởi đầu như sau:
ICW3 =03h cho mạch chủ,ICW3=00h cho mạch thợ thứ nhấtICW3=01h cho mạch thợ thứ 2.
Từ điều khiển khởi đầu ICW4(Initialization Control Word 4)
D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 SFNM BUF MS AEOI µP
Chế độ lồng nhau đặc bi ệtLà chế độ Master phân biệt
A01
Là chế độ Master phân biệt được độ ưu tiên của các thiết bị quản lí bởi Slave
Tổ chức của từ mã ICW4
Dùng đệm ngoàiD3D2=0x PIC ở chế độ không đệmD3D2=10 PIC thợ ở chế độ đệmD3D2=11 PIC chủ ở chế độ đệm
Kết thúc ng ắt quãng t ự động=1 Lệnh EOI (End of Interrupt) t ự động=0 Lệnh EOI (End of Interrupt) thường
Chọn họ CPU=1 80x86=0 80/85
Từ điều khiển khởi đầu này chỉ dùng đến khi trong từ điều khiển ICW1 có D0=1 (cần thêm ICW4).
Bit D4=1 (Chế độ lồng nhau đặc biệt) cho phép chọn chế độ ưu tiên cố định đặc biệt. Trong chế độ này yêu cầu ngắt với mức ưu tiên cao nhất hiện hành từ một mạch thợ làm việc theo kiểu nối tầng sẽ được mạch chủ nhận biết ngay cả khi mạch chủ còn đang phục vụ một yêu cầu ngắt ở mạch thợ khác với mức ưu tiên thấp hơn. Sau khi các yêu cầu ngắt được phục vụ xong thì
Từ điều khiển khởi đầu ICW3
tiên thấp hơn. Sau khi các yêu cầu ngắt được phục vụ xong thì chương trình phục vụ ngắt phải có lệnh kết thúc yêu cầu ngắt EOI đặt trước lệnh trở về IRET đưa đến cho mạch 8259A chủ.
Bit D4=0 thì chế độ ưu tiên cố định được chọn (IR0 cao nhất và IR7 thấp nhất). Tại một thời điểm chỉ có một yêu cầu ngắt i được phục vụ và lúc này tất cả các yêu cầu mức ưu tiên thấp hơn bị cấm, các yêu cầu mức ưu tiên cao hơn có thể ngắt yêu cầu với mức ưu tiên thấp hơn.
Từ điều khiển hoạt động OCW1(Operation Control Word 1)
D7 D6 D5 D4 D3 D2 D1 D0
M7 M6 M5 M4 M3 M2 M1 M0
8 bit này để qui định đầu ngắt IR i nào b ị che (Mask) M =1: IR bị che
A01
Mi=1: IR i bị cheMi=0: IR i không b ị che
Tổ chức của từ mã OCW1
OCW1 dùng để ghi giá trị của các bit mặt nạ vào thanh ghi mặt nạ ngắt IMR. Khi một bit mặt nạ nào đó của IMR được lập thì yêu cầu ngắt tương ứng với mặt nạ đó sẽ không được 8259A nhận biết nữa (bị che). Từ điều khiển này phải được đưa đến 8259A ngay sau khi ghi các ICW vào 8259A.
Từ điều khiển hoạt động OCW2(Operation Control Word 2)
D7 D6 D5 D4 D3 D2 D1 D0
R SEOI EOI 0 0 L2 L1 L0
R: RotateChọn ưu tiên
A01
3 bit này để mã hóa ưu tiên cho các đầu ngắt IRi:Chọn ưu tiên
quay vòng
Tổ chức của từ mã OCW2
SEOI: Specific EOIKết thúc ngắt chỉ định Kết thúc ngắt
cho các đầu ngắt IRi:L2L1L0=000: Mức 0L2L1L0=111: Mức 1
Từ mã điều khiển OCW2 cho phép đặt mức ưu tiên mềm dẻo cho các đầu vào nối với thiết bị ngoại vi. Các bit R, SEOI, EOI kết hợp với nhau cho phép chọn ra các cách thức kết thúc yêu cầu ngắt khác nhau
Các chế độ làm việc của 8259A:1. Chế độ ưu tiên cố định
Là chế độ làm việc ngầm định của 8259A sau khi nó đã được nạp các từ điều khiển khởi đầu để thiết lập trạng thái xác định. Trong chế độ này các đầu vào IR0÷IR7 được gán cho mức ưu tiên cố định (IR0 cao nhất, IR7 thấp nhất). Mức ưu tiên này được giữ không thay đổi cho đến khi chip 8259A bị lập trình khác đi bằng OCW2
Từ điều khiển hoạt động OCW2
khác đi bằng OCW2Trong chế độ này tại một thời điểm chỉ có một yêu cầu ngắt i
được phục vụ. Ngắt ưu tiên này sẽ cấm toàn bộ các ngắt có mức ưu tiên thấp hơn nó và chịu để một ngắt có mức ưu tiên cao hơn ngắt.
2. Chế độ quay vòng mức ưu tiên tự độngTrong chế độ này sau một yêu cầu ngắt vừa được phục vụ
thì bit tương ứng với nó trong thanh ghi ISR sẽ bị xóa và ngắt này sẽ tự động được gán cho mức ưu tiên thấp nhất để các yêu cầu ngắt khác được phục vụ.
Từ điều khiển hoạt động OCW2
3. Chế độ quay mức ưu tiên chỉ đích danhTrong chế độ này dùng các bit L2L1L0 để chỉ đích danh những yêu
cầu ngắt IRn cần được đạt về mức ưu tiên thấp nhất. Sau đó, yêu cầu ngắt tiếp theo IRn+1 sẽ được đặt lên mức ưu tiên cao nhất.
Các bit R, SEOI, EOI phối hợp với nhau để tạo ra các lệnh qui định các cách thức kết thúc yêu cầu ngắt cho các chế độ làm việc.
Từ điều khiển hoạt động OCW2
R SEOI EOI Chế độ Chức năng
0 0 1 Kết thúc ngắt (EOI)
Lệnh EOI thường
0 1 1 Lệnh EOI chỉ đích danh
1 0 1Quay vòng mức ưu tiên tự động
Đổi mức ưu tiên khi có EOI thường
1 0 0 Lập chế độ quay vòng khi có EOI tự động
0 0 0 Xóa chế độ quay vòng khi có EOI tự động
1 1 1 Quay mức ưu tiên chỉ đích danh
Đổi mức ưu tiên khi có EOI đích danh
1 1 0 Lập lệnh mức ưu tiên
0 1 0 Dự trữ
- Lệnh EOI th ường: Trong chương trình hợp ngữ phục vụ ngắt, lệnh EOI cần được ghi trước lệnh quay trở về IRET. Lệnh này có tác dụng xóa bit tương ứng trong thanh ghi ISR để chính nó hoặc các yêu cầu có mức ưu tiên thấp hơn được phục vụ.
- Lệnh EOI ch ỉ đích danh: Tương tự như trên nhưng muốn xóa bit trong TG ISR ta cần chỉ đích danh yêu cầu ngắt qua các bit L0, L1, L2.
- Đổi mức ưu tiên khi có EOI th ường: Yêu cầu ngắt IRn sau khi được phục vụ sẽ được gán mức ưu tiên thấp nhất trong TG mức ưu tiên PR. Sau đó yêu cầu ngắt tiếp theo IRn+1 sẽ được gán mức ưu tiên cao nhất.
Từ điều khiển hoạt động OCW2
đó yêu cầu ngắt tiếp theo IRn+1 sẽ được gán mức ưu tiên cao nhất.- Lập/Xóa ch ế độ quay vòng khi có EOI t ự động: Chế độ này được
lập bằng cách đưa bit R về 1 và xóa bằng cách đưa nó về 0. Khi được lập chế độ quay vòng, yêu cầu ngắt vừa được phục vụ sẽ được gán cho mức ưu tiên thấp nhất.
- Đổi mức ưu tiên khi có EOI đích danh: Chế độ này dùng L2, L1, L0 để chỉ đích danh yêu cầu ngắt IRn cần được đưa về mức ưu tiên thấp nhất. Yêu cầu ngắt tiếp theo IRn+1 sẽ được đưa lên mức ưu tiên cao nhất.
- Lập lệnh mức ưu tiên: Chế độ này cho phép gán một yêu cầu ngắtqua L2, L1, L0 về yêu cầu ngắt thấp nhất và đặt yêu cầu ngắt tiếp theo lên mức ưu tiên cao nhất.
Từ điều khiển hoạt động OCW3(Operation Control Word 3)
D7 D6 D5 D4 D3 D2 D1 D0
0 ESMM SMM 0 1 P ERIS RISA00
Chế độ mặt nạ đặc bi ệt
Tổ chức của từ mã OCW3
Chế độ mặt nạ đặc bi ệt0x: Không ch ọn SMM10: Xóa ch ế độ mặt nạ đặc bi ệt11: Lập chế độ mặt nạ đặc bi ệt(Enable Set Mask Special)
Thăm dò các yêu c ầu ngắt hiện hành1: Đọc mã ưu tiên cao nh ất ở lần đọc sau(Poll command)
Chọn đọc ISR hay IRR0x: Không ch ọn10: Đọc IRR ở lần đọc sau11: Đọc ISR ở lần đọc sau(Enable Read IS)
Từ điều khiển hoạt động OCW3 sau khi được ghi vào 8259A cho phép:
- Chọn ra các thanh ghi để đọc.- Thăm dò trạng thái yêu cầu ngắt bằng cách đọc trạng thái của
đầu vào yêu cầu ngắt IRi với mức ưu tiên cao nhất.- Thao tác với mặt nạ đặc biệt.Các TG IRR và ISR có thể đọc được sau khi nạp vào 8259A từ
Từ điều khiển hoạt động OCW3
Các TG IRR và ISR có thể đọc được sau khi nạp vào 8259A từ điều khiển OCW3 với tổ hợp bit ERIS- RIS (Enable Read IS Register- Read IS Register). Tổ chức của các thanh ghi này nhưsau:
Từ điều khiển hoạt động OCW3(Operation Control Word 3)
D7 D6 D5 D4 D3 D2 D1 D0
IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0
Thanh ghi IRR
Thanh ghi ISRISi=1: Yêu cầu ngắt i đang được phục vụISi=0: Yêu cầu ngắt i không được phục vụ
D7 D6 D5 D4 D3 D2 D1 D0
IS7 IS6 IS5 IS4 IS3 IS2 IS1 IS0
IRi=1: Có yêu cầu ngắt ở đầu nàyIRi=0: Không có yêu cầu ngắt ở đầu này
9. Hoạt động của PIC 8259A
Lập trình cho 8259A để làm việc với CPU
8088 ở chế độ đơn lẻ, trong hệ có đệm Bus,
chế độ ưu tiên cố định và với EOI thường, IR
7. Một số ví dụ lập trình với 8259A
chế độ ưu tiên cố định và với EOI thường, IR
kích theo mức, tín hiệu IR6 được gán số hiệu
ngắt là 50h
ICW1=0001 1011b=1Bh
D0=1 Cần thêm ICW4
D1=1 Chỉ 1 PIC
7. Một số ví dụ lập trình với 8259A
D1=1 Chỉ 1 PIC
D2=0 Làm việc với hệ 8086/88
D3=1 Đầu ra IR ăn theo mức
D4=1 Bắt buộc với ICW1
D5=D6=D7=0 Gán bằng 0 cho hệ 8086/88
ICW2=0101 0110b=56h và các bit T7-T3 của
ICW2 phải mã hóa trị số 50h để IR0-IR7
được mã hóa tiếp bởi các bit T2-T0=110 (IR6)
7. Một số ví dụ lập trình với 8259A
được mã hóa tiếp bởi các bit T2-T0=110 (IR6)
ICW3 không dùng vì không ghép tầng.
ICW4=0000 1101b=0Dh
D0=1 Làm việc với 8086/88
D1=0 EOI thường (phải có EOI trước IRET)
7. Một số ví dụ lập trình với 8259A
D3D2=11 Làm việc ở chế độ chủ trong hệ có đệm
D4=0 Chế độ ưu tiên cố định
D5=D6=D7=0 Luôn bằng 0 cho ICW4
Việc trao đổi dữ liệu theo 2 phương pháp
bằng chương trình và ngắt đều thực hiện: Dữ
liệu được đưa từ cổng tới CPU và nhập vào bộ
nhớ trong quá trình đọc, hay ngược lại trong
II. DIRECT MEMORY ACCESS- DMA
nhớ trong quá trình đọc, hay ngược lại trong
quá trình thu. Để chuyển 1 khối dữ liệu ta có
thể dùng cách truyền DMA. Khi đó ta sử dụng
một vi mạch chuyên dụng là DMAC điều khiển
việc trao đổi thông tin.
1. Khái ni ệm
DMA là phương pháp thâm nhập bộ nhớ trực tiếp không thông qua
CPU.
Controller by DMAC, bus master
Đặc điểm DMA
II. DIRECT MEMORY ACCESS- DMA
Đặc điểm DMA
- In/out dùng hardware[burst mode] => nhanh, 33/66 Mbps
- Chuyển block/ Single byte
- IO �� Mem, Mem �� Mem (ít)
- Chỉ định Block/IO trao đổi
- Stealing cycle
1. Khái ni ệm
CPU
II. DIRECT MEMORY ACCESS- DMA
Memory IO Port
DMAC
DRAM bus Cycle & CPU Bus cycle
2. Sơ đồ khối
HOLDHLDA
CPU
A0A15
DMACircuit8237
Ngoại vi
Điều khiển đọc ghi
A15D0D7
Cổng Vào/ra
vicó yêu
cầu DMA
Bộ nhớ
Bus đ/c
Bus dl
2. Sơ đồ khối
Trong chế độ DMA, CPU treo các Bus dữ
liệu, địa chỉ và một số dây điều khiển để DMA
chiếm dụng, DMA sẽ điều khiển toàn bộ hoạt
2. Sơ đồ khối
động trao đổi dữ liệu của hệ. Do đó DMAC phải
có khả năng tạo ra các tín hiệu giống CPU, đồng
thời phải là mạch lập trình được để CPU gửi tín
hiệu điều khiển tới trước khi hoạt động độc lập
DMAC điều khiển sự trao đổi DMA giữa khối nhớ và
TBN không có sự tham gia của BXL (bị treo hay cô lập đường
dây) theo thủ tục:
1. TBN đưa yêu cầu DRQ cho DMAC, DMAC ghi nhận (nếu
3. Thủ tục trao đổi tin DMA
1. TBN đưa yêu cầu DRQ cho DMAC, DMAC ghi nhận (nếu
chưa có ghi che chắn trước), xét thứ tự ưu tiên (nếu có nhiều
yêu cầu DRQi vào đồng thời) và đưa ra yêu cầu cho BXL, đề
nghị chiếm giữ đường dây bởi một trong hai tín hiệu:
- Tín hiệu Hold (cho VXL 8085, 8086 ở chế độ MIN)
- Tín hiệu RQ0 (8086 ở chế độ MAX)
2. VXL hoàn thành lệnh đang thực hiện, ngắt
chương trình để chuyển sang chương trình con
khởi phát DMA (ghi địa chỉ ban đầu của khối nhớ,
3. Thủ tục trao đổi tin DMA
số lần trao đổi, hướng thay đổi địa chỉ- tăng/giảm)
và đưa ra tín hiệu xác nhận DMA (GT0, GT1 hay
HLDA) và tự treo ở trạng thái điện trở cao (cô lập)
để nhường quyền sử dụng Bus cho DMAC.
3. DMAC tiến hành:
- Đưa tín hiệu xác nhận DACK cho TBN.
- Tiến hành trao đổi DMA cho tới khi kết thúc (đếm lùi
trao đổi trở về 0).
3. Thủ tục trao đổi tin DMA
- Kết thúc tín hiệu HOLD, trả quyền điều khiển bus cho
VXL.
4. VXL nhận biết sự kết thúc của tín hiệu HOLD và kết
thúc tín hiệu HLDA, dành lại quyền điều khiển Bus.
Trong thực tế tồn tại 3 kiểu trao đổi dữ liệu bằng
cách thâm nhập trực tiếp vào bộ nhớ như sau:
- Treo CPU một khoảng thời gian để trao đổi cả mảng
4. Các chế độ trao đổi dữ liệu trong chế độ DMA
dữ liệu
- Treo CPU để trao đổi từng Byte.
- Tận dụng thời gian không dùng bus để trao đổi dữ
liệu
- Trong quá trình này CPU sẽ bị treo trong
suốt quá trình trao đổi mảng dữ liệu.
4.1. Trao đổi cả một mảng số liệu
- Được dùng khi có nhu cầu trao đổi dữ liệu
với ổ đĩa hoặc đưa dữ liệu ra hiển thị
Các bước để chuy ển một mảng dữ liệu từ bộ nhớ ra TBNV
1. CPU ghi từ điều khiển và từ chế độ làm việc vào DMAC để qui
định cách thức làm việc, địa chỉ đầu của mảng nhớ, độ dài của mảng
nhớ, …
2. Khi ngoại vi có yêu cầu trao đổi số liệu => đưa DRQ=1 đến DMAC
4.1. Trao đổi cả một mảng số liệu
2. Khi ngoại vi có yêu cầu trao đổi số liệu => đưa DRQ=1 đến DMAC
3. DMAC đưa ra tín hiệu HRQ đến chân HOLD của CPU để yêu cầu
treo CPU, tín hiệu HOLD phải ở mức cao cho đến hết quá trình trao
đổi số liệu.
4. Nhận được yêu cầu treo, CPU kết thúc chu kỳ bus hiện tại sau đó
treo cả bus của mình và đưa ra tín hiệu HLDA báo cho DMAC được
toàn quyền sử dụng bus.
5. DMAC đưa ra xung DACK để báo cho ngoại vi biết là có thể bắt
đầu trao đổi số liệu.
6. DMAC bắt đầu chuyển dữ liệu từ bộ nhớ ra ngoại vi:
- Địa chỉ của byte => bus địa chỉ
- Đưa tín hiệu MEMR=0 => đọc 1 byte từ bộ nhớ => bus dữ liệu
4.1. Trao đổi cả một mảng số liệu
- Đưa tín hiệu IOW=0 =>đưa dữ liệu ra ngoại vi
- DMAC giảm bộ đếm
- Cập nhật địa chỉ của byte tiếp theo => quay lại các thao tác
trên cho đếm khi bộ đếm = 0
7. Quá trình DMA kết thúc, DMAC ra tín hiệu HRQ=0 báo cho CPU
biết => CPU nắm quyền điều khiển hệ thống
Trong chế độ này CPU không bị treo lâu dài
trong một lần nhưng thỉnh thoảng lại bị treo trong một
khoảng thời gian rất ngắn đủ để trao đổi 1 byte số
4.2. Treo CPU để trao đổi từng byte
liệu, CPU bị lấy mất một chu kỳ đồng hồ nên tốc độ
thực hiện một công việc nào đó của CPU chỉ bị suy
giảm chứ không dừng lại. Cách hoạt động như chế
độ trên chỉ có điều mỗi lần DMAC yêu cầu treo CPU
thì chỉ có 1 byte được trao đổi
Trong cách trao đổi dữ liệu này ta phải có các
logic phụ bên ngoài cần thiết để phát hiện ra các chu
kỳ xử lý nội bộ của CPU (không dùng đến bus ngoài)
4.3. Tận dụng thời gian CPU không dùng bus để trao đổi dữ liệu
và tận dụng các chu kỳ đó vào việc trao đổi dữ liệu
giữa ngoại vi và bộ nhớ. DMAC và CPU luân phiên
nhau sử dụng bus và việc thâm nhập trực tiếp bộ nhớ
kiểu này không ảnh hưởng gì tới hoạt động của CPU.
Thăm dò
Khái niệm Polling: Dùng phần mềm đểkiểm tra các cờ trạng thái & IO Ports => quyếtđịnh trao đổi số liệu hay không
- Nhanh, đon giản, hay dùng trong các hệ nhỏ
Phương pháp thăm dò (Polling)
- Nhanh, đon giản, hay dùng trong các hệ nhỏhoặc đơn nhiệm- ít thiết bị IO.
- Không phù hợp với đa nhiệm.
Polling
Device #1Request?
Device #1Service Routine
Y
N
Device #2Request?
Device #2Service Routine
Y
N
Lưu đồ tổng quát
Quit
Device #nRequest?
Device #nService Routine
Y
N
Vi mạchđiều khiển định thì điều khiển định thì
PIT 8253
PIT 8253 Programmable Interval Timer
8253
Mạch định thời gian lập trình được8253 là một mạch phụ rất quan trọng trongcác hệ vi xử lý. Nó có thể đáp ứng đượccác hệ vi xử lý. Nó có thể đáp ứng đượccác yêu cầu ứng dụng khác nhau nhưđếm thời gian, chia tần số, tạo ra dãyxung...
Đặc điểm của Programmable Interval Timer
8253
- Có 3 bộ đếm 16 bit độc lập
- Cung cấp 6 chế độ ra xung khác nhau
- Cho phép đọc lại giá trị bộ đếm- Cho phép đọc lại giá trị bộ đếm
- Có thể đếm nhị phân hoặc BCD
Sơ đồ khối
Bảng phân ph ối hoạt động theo địa ch ỉ
Từ điều khi ển
Nguyên lý ho ạt động• Ba bộ đếm đều là các bộ đếm lùi 16 bit• Thanh ghi từ điều khiển của bộ đếm qui định chế độ làm
việc và cách nạp số đếm (nạp)• Đếm số xung đưa vào chân CLK• Điều khiển hoạt động của các bộ đếm bằng tín hiệu từ• Điều khiển hoạt động của các bộ đếm bằng tín hiệu từ
bên ngoài qua chân GATEGATE=1: cho phép đếmGATE=0: kết thúc quá trình đếm
• Tín hiệu xung trên đầu ra OUT qui định: (tùy chế độ)OUT==0: bắt đầu quá trình đếmOUT=1: Kết thúc quá trình đếm (bộ đếm đạt tới 0)
Chế độ 0- Xung ng ắt quãng
Chế độ 1- Xung phát m ột lần
Chế độ 2- Xung đồng hồ gai
Chế độ 3- Xung đồng hồ vuông
Chế độ 3- Xung đồng hồ vuông• Khi GATE=1 bộ đếm bắt đầu đếm ngược.
Sau khi nạp số đếm N thì đầu ra OUT sẽ:- N chẵn:
OUT=1 trong N/2 chu kỳ xung đồng hồOUT=0 trong N/2 chu kỳ đồng hồ còn lạiOUT=0 trong N/2 chu kỳ đồng hồ còn lại
- N lẻ:OUT=1 trong N+1/2 chu kỳ xung đồng hồOUT=0 trong N-1/2 chu kỳ đồng hồ còn
lại
Chế độ 4- Xung kích m ềm
Chế độ 5- Xung kích c ứng
Tác động của tín hi ệu GATE