Tải bản đầy đủ (.pdf) (6 trang)

Kỹ thuật vi xử lý - Chương 5 pdf

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 (270.15 KB, 6 trang )

Trờng đại học kỹ thuật Công Nghiệp
Nguyễn Tiến Duy Trung tâm Kỹ thuật máy tính Bộ môn Kỹ thuật máy tính

86

http://
www.ebook.edu.vn
Chơng 5 Vào ra dữ liệu bằng cách thăm dò

1. Giới thiệu chung về các phơng pháp điều khiển vào/ra dữ liệu
Qua chơng 4, chúng ta đã tìm hiểu về một số mạch thờng dùng cho việc phối ghép
CPU với thiết bị ngoại vi. Ta đã tiến hành các phơng pháp (phơng thức) điều khiển việc
trao đổi dữ liệu. Các mạch phối ghép vào/ra đã trình bày trớc đây có thể đợc ứng dụng
để phục vụ cho mục đích này.
Máy tính trao đổi thông tin (vào/ra dữ liệu) với thieets bị ngoại vi theo một trong 2 chế
độ sau:

Với cách vào/ra dữ liệu theo chơng trình có thể phân thành các phơng pháp cụ thể
hơn là:
Đồng bộ (Không điều kiện không hội thoại)
Sau khi đã khởi động (khởi tạo) thiết bị ngoại vi, CPU
(và thiết bị ngoại vi) không quan tâm tới việc thiết bị
ngoại vi có sẵn sàng cho việc trao đổi dữ liệu hay không. Nó
luôn thực hiện các lệnh trao đổi dữ liệu (IN, OUT) một
cách trực tiếp. Phơng pháp này yêu cầu:
Thiết bị ngoại vi luôn sẵn sàng trao đổi dữ liệu.
Tốc độ trao đổi dữ liệu của CPU và thiết bị ngoại vi là phù hợp nhau (TBNV
có tốc độ làm việc nhanh).

Ví dụ, trong một hệ đo nhiệt độ ghép nối với máy tính, điện áp trên cặp nhiệt điện
đợc khuếch đại lên, tiếp theo là đợc biến đổi thành tín hiệu số rồi đợc đọc vào máy


tính. Ta thấy rằng tín hiệu này lúc nào cũng sẵn sàng cho CPU đọc vì nhiệt độ là một
đại lợng biến đổi rất chậm so với tốc độ của máy tính và cùng với nó, CPU cũng có
thể bất kỳ lúc nào đa số liệu hiển thị số đo đó. Đây gọi là quá trình vào/ra đồng bộ
hay không có móc nối (không có hội thoại).

Không đồng bộ (Có điều kiện có hội thoại)
Polling: CPU và thiết bị ngoại vi chỉ trao đổi dữ liệu khi có tín hiệu móc nối báo
sẵn sàng (Ready/Akc) của các phía. Sau khi máy tính khởi động thiết bị ngoại vi (khối
Vào/ra

dữ liệu
Vào/ra theo chơng trình:

Không hội thoại (trực tiếp)

Có hội thoại

Thăm dò (pollin
g)

Ngắt (Interrupt)

Truy nhập trực tiếp bộ nhớ (DMA

Direct Memorry Access

Trờng đại học kỹ thuật Công Nghiệp
Nguyễn Tiến Duy Trung tâm Kỹ thuật máy tính Bộ môn Kỹ thuật máy tính

87


http://
www.ebook.edu.vn
ghép nối), máy tính luôn chờ và kiểm tra trạng thái sẵn sàng của thiết bị ngoại vi gồm
các bớc:
(1) Đọc thông tin về trạng thái sẵn sàng của thiết bi ngoại
vi
(2) Kiểm tra: Nếu thiết bị ngoại vi sẵn sàng thì trao đổi dữ
liệu, ngợc lại thì về bớc (1) để kiểm tra lại.
Phơng pháp này đợc dùng khi tốc độ trao đổi dữ liệu
của các bên (CPU và thiết bị ngoại vi) rất không bằng nhau và
nó có một số đặc điểm sau:
Việc trao đổi thông tin là tin cậy vì chỉ trao đổi khi thiết
bị ngoại vi sẵn sàng.
Tốn thời gian CPU vì phải kiểm tra trạng thái sẵn sàng
của thiết bị ngoại vi (việc kiểm tra này co CPU đảm
nhiệm) nên giảm hiệu suất của hệ thống.
Phù hợp với những hệ thống không đòi hỏi cao về tốc
độ trao đổi dữ liệu, hệ thống có ít thiết bị ngoại vi.
Chúng ta sẽ xem xét cụ thể phơng pháp vào/ra này trong phần sau.
Vào/ra dữ liệu điều khiển bằng ngắt chơng trình (ngắt bộ vi xử lý
Interrupt): Bình thờng máy tính thực
hiện một chơng trình (công việc) nào đó.
Khi thiết bị ngoại vi có yêu cầu trao đổi dữ
liệu, nó sẽ gửi tín hiệu yêu cầu ngắt
CPU dừng công việc hiện tại, phục vụ cho
trao đổi dữ liệu thông qua tín hiệu yêu cầu
ngắt IRQ (Interrupt Request) tác động vào
chân INTR (chân tiếp nhận yêu cầu
ngắt) của CPU. CPU nhận đợc yêu cầu

ngắt, nếu chấp nhận nó sẽ đa ra xung
INTA xác nhận tới thiết bị ngoại vi, sau đó
CPU tìm chơng trình con phục vụ ngắt
tơng ứng số hiệu ngắt và thực hiện nó. Đó chính là chơng trình con thực hiện trao
đổi (vào/ra) dữ liệu do thiết bị ngoại vi yêu cầu. Khi trao đổi xong (ISR Interrupt
Service Routine) kết thúc thì CPU tiếp tục công việc (chơng trình) đã bị gián đoạn.

Vào/ra dữ liệu điều khiển bằng phần cứng phụ để thâm nhập trực tiếp bộ nhớ (DMA
Direct Memorry Access): Trong các phơng pháp vào/ra dữ liệu bằng chơng
trình kể trên, dữ liệu phải đợc chuyển qua lại từ bộ nhớ đến CPU rồi đến thiết bị
ngoại vi hoặc ngợc lại bằng việc thực hiện từng lệnh (MOV, IN hoặc OUT) của
CPU với sự tham gia của các thanh ghi. Dữ liệu của mỗi lần vận chuyển là byte
hoặc word (2 byte), tốc độ trao đổi dữ liệu phụ thuộc rất nhiều vào tốc độ thực hiện
các lệnh trao đổi dữ liệu kể trên. Nói chung, tốc độ trao đổi dữ liệu là không thể
nhanh đợc. Với các thiết bị làm việc với bộ nhớ khối nh màn hình, ổ đĩa, yêu
cầu trao đổi cả mảng dữ liệu thì phơng pháp vào/ra dữ liệu bằng chơng trình là
không phù hợp. Khi đó ngời ta nghĩ đến việc điều khiển dữ liệu vào/ra trực tiếp từ
bộ nhớ đến thiết bị ngoại vi hoặc ngợc lại mà không thông qua CPU bằng những
lệnh trao đổi dữ liệu nh MOV, IN hoặc OUT. Đó là phơng pháp vào/ra dữ liệu
bằng cách truy nhập trực tiếp bộ nhớ (DMA Direcr Memory Access). Trong trờng
TNNV sẵn
sàng?

Đọc thông tin

Vào/ra dữ liệu

F

T


Yêu cầu ngắ
t

Chơng trình con

phục vụ ngắt
(trao đổi dữ liệu)

Chơng trình
hiện tại của CPU

Trờng đại học kỹ thuật Công Nghiệp
Nguyễn Tiến Duy Trung tâm Kỹ thuật máy tính Bộ môn Kỹ thuật máy tính

88

http://
www.ebook.edu.vn
hợp này CPU trao quyền điều khiển cho một mạch phần cứng phụ điều khiển việc
vào/ra dữ liệu, đó là DMAC DMA Controller. Chi tiết về phơng pháp này sẽ đợc
trình bày kỹ trong phần sau.
Qua việc trình bày sơ lợc về các phơng pháp điều khiển việc vào/ra dữ liệu trên ta
thấy mỗi phơng pháp có những đặc điểm khác nhau (u nhợc điểm), chúng đợc ứng
dụng phù hợp trong những hoàn cảch cụ thể khác nhau. Một trong những phơng pháp
điều khiển đơn giản nhất mà chúng ta xem xét trong chơng này là phơng pháp trao đổi
không đồng bộ (có hội thoại) hay gọi là phơng pháp thăm dò trạng thái sẵn sàng của thiết
bị ngoại vi (polling) trớc khi thực hiện vào/ra dữ liệu.
2. Vào/ra dữ liệu bằng cách thăm dò trạng thái sẵn sàng của thiết bị
Phơng pháp vào/ra dữ liệu bằng cách thăm

dò trạng thái sẵn sàng của thiết bị ngoại vi là
phơng pháp điều khiển vào/ra dữ liệu bằng
chơng trình có hội thoại. Tín hiệu hội thoại
(handshaking signal) ở đây là tín hiệu báo trạng
thái sẵn sàng của thiết bị ngoại vi.
Việc điều khiển vào/ra dữ liệu sẽ trở nên rất
đơn giản nếu thiết bị ngoại vi lúc nào cũng sẵn
sàng chờ làm việc (trao đổi dữ liệu) với CPU
Nh đã đề cập đến trong phần giới thiệu đó là
phơng pháp vào/ra dữ liệu đồng bộ (trực tiếp
không hội thoại). Tuy nhiên trong thực tế không
phải lúc nào CPU cũng làm việc với các thiết bị
ngoại vi liên tục sẵn sàng nh trên, vì tốc độ
làm việc của thiết bị ngoại vi và CPU là rất chênh
lệch. Thông thờng khi CPU muốn trao đổi dữ liệu
với một thiết bị ngoại vi nào đó, thông qua chơng
trình nó liên tục kiểm tra trạng thái sẵn sàng của
thiết bị ngoại để xem có yêu cầu trao đổi dữ liệu
(yêu cầu phục vụ) hay không? Đến khi có một
thiết bị ngoại vi nào đó có yêu cầu trao đổi dữ liệu
(tức là có tín hiệu báo trạng thái sẵn sàng
readly) thì chơng trình sẽ chuyển sang thực hiện
việc trao đổi dữ liệu (công việc trao đổi này có thể
là các lệnh ngay trong chơng trình chính hoặc là
một chơng trình con phục vụ hoặc ISR) rồi lại
tiếp tục kiểm tra thiết bị ngoại vi kế tiếp. Quá trình
này đợc thực hiện tiếp tục đến thiết bị ngoại vi
cuối cùng rồi lại đợc lặp lại từ đầu. Vậy, nếu làm
việc theo phơng pháp thăm dò thì thông thờng
CPU phải đợc dành riêng cho công việc trao đổi

dữ liệu vì nó phải liên tục kiểm tra trạng thái sẵn
sàng của thiết bị ngoại vi thông qua các tín hiệu
móc nối. Các tín hiệu này đợc lấy từ mạch phối
ghép, do ngời thiết kế mạch tạo ra để cho
chơng trình có thể kiểm tra nó. Việc này đợc tính
toán đồng bộ khi xây dựng mạch và chơng trình
điều khiển.
TNNV1
sẵn sàng?

Vào/ra dữ liệu với

TBNV1

Chơng trình

điều khiển

T

TNNV1
sẵn sàng?

Vào/ra dữ liệu với

TBNV1
F

TNNV1
sẵn sàng?


Vào/ra dữ liệu với

TBNV1

T

F

T

F



Hình vé: Lu đồ điều khiển của

Phơng pháp thăm dò trạng thái sẵn sàng

Trờng đại học kỹ thuật Công Nghiệp
Nguyễn Tiến Duy Trung tâm Kỹ thuật máy tính Bộ môn Kỹ thuật máy tính

89

http://
www.ebook.edu.vn
Nói chung, phơng pháp này đơn giản trong tổ chức phần cứng và phần mềm nhng
gặp phải nhợc điểm là khi số lợng thiết bị ngoại vi tăng lên thì sẽ làm lãng phí thời gian
CPU cho việc kiểm tra trạng thái sẵn sàng và khả năng đáp ứng tức thời với phục vụ của
CPU là rất thấp.

Hình vẽ cho thấy lu đồ của chơng trình điều khiển theo phơng pháp thăm dò khi
số lợng số thiết bị ngoại vi > 1.
Nếu thông tin đợc phát hoặc nhận từ một thiết bị ngoại vi nào đó sẽ thiết lập một cờ
trạng thái thích hợp (thông thờng là bằng một mạch lật trạng thái bởi xung STB của thiết
bị ngoại vi). Bộ vi xử lý sẽ kiểm tra cờ trạng thái này và sẽ thực hiện modul chơng trình
trao đổi dữ liệu khi cờ trạng thái báo rằng thiết bị ngoại vi sẵn sàng cho việc trao đổi dữ
liệu. Nó nh một tín hiệu yêu cầu phục vụ (thụ động) cho việc vào/ra dữ liệu.
Sau đây là một ví dụ về cách tạo tín hiệu móc nối trong tổ chức phần cứng và lu đồ
thuật toán (chơng trình điều khiển) dùng cho việc trao đổi dữ liệu giữa CPU và thiết bị
ngoại vi.
Để đơn giản, trong ví dụ này
ta giả thiết CPU chỉ làm việc với 1
thiết bị ngoại vi và và 1 thiết bị
ngoại vi ra. Việc tổ chức phối ghép
phần cứng đợc thực hiện trên các
vi mạch (IC) cỡ vừa để dễ theo dõi
các tín hiệu.
Một cổng vào có địa chỉ 00
đợc dùng để đọc trạng thái sẵn
sàng của thiết bị ngoại vi số 1 và
số 2. (TB1: vào; TB2: ra). Tín hiệu
báo sẵn sàng của thiết bị ngoại vi
số 1 (có địa chỉ 01) đợc đặt vào
bit D0 và tín hiệu báo sẵn sàng của
thiết bị ngoại vi số 2 (có địa chỉ 02)
đợc đặt vào biit D1 của bus dữ
liệu. Các bit tín hiệu này sẽ có giá
trị bằng 1 khi thiết bị ngoại vi tơng
ứng ở trạng thái sẵn sàng trao đổi
dữ liệu với CPU và chúng sẽ đợc

đa vào bus dữ liệu khi CPU đọc
nó bằng lệnh đọc cổng có địa chỉ
00. Chơng trình điều khiển trao
đổi dữ liệu sẽ kiểm tra các bit báo
sẵn sàng này và có các đáp ứng
thích hợp.
Cụ thể hoạt động của phần
mạch vào dữ liệu nh sau: Khi thiết
bị vào (TB1) có (1 byte) dữ liệu cần
(trao đổi) đa vào hệ thống, nó đa ra xung STB để cho phép mạch chốt 8 bit chốt lấy dữ
liệu đó đồng thời kích cho mạch lật D (mạch tạo tín hiệu sẵn sàng) làm việc đầu ra Q =
1. Bộ vi xử lý (CPU) thông qua lệnh đọc cổng 00 để thăm dò trạng thái sẵn sàng của thiết
Mạch

3 trạng

thái
/OC
Mạch

chốt

8 bit

/G
Input

Device

(1)


pr
Q D


lck
clr

+5V

Mạch

Chốt

8 bit

/G
Mạch

3 trạng

thái
/OC
Output

Device

(2)

pr

Q D


lck
clr

+5V

Bus

dữ

liệu

D0

D1




D7

ISP01

ISP00

ISP01

S

TB

ACK

OSP02

OSP00

OSP02

Hình vẽ: Sơ đồ mạch phần cứng tạo tín hiệu móc nối

Trờng đại học kỹ thuật Công Nghiệp
Nguyễn Tiến Duy Trung tâm Kỹ thuật máy tính Bộ môn Kỹ thuật máy tính

90

http://
www.ebook.edu.vn
bị ngoại vi số 1 thông qua bit D0. Khi thấy D0 = 1, nó đọc 1 byte dữ liệu vào đồng thời xoá
luôn Q (Q = 0, thiết bị ngoại vi không sẵn sàng) để chuẩn bị lần đọc byte dữ liệu khác.
Tơng tự nh vậy ta có thể thấy đợc sự hoạt động của phần mạch ra dữ liệu thiết bị
ngoại vi số 2.

Yêu
cầu: Lập
trình theo
lu đồ (a)
đờng nét
liền để thực

hiện việc
đọc vào một
byte dữ liệu
mỗi khi cổng
01 báo sẵn
sàng rồi
hiển thị byte
dữ liệu đó.
Giả thiết có
100 byte dữ
liệu phải đọc
và có sẵn
thủ tục thực
hiện hiển thị
giá trị trong
thanh ghi al
lên màn
hình có tên
là hien_thi.


Mov cx, 100
;Số byte dữ liệu cân đọc tro
Lặp: In al, 0 ;Đọc cổng 00
Test al, 1 ;D0 = 1?
Jz Lặp ;không, đọc lại cổng 00
In al, 1 ;phải, đọc cổng 01
Call Hien_thi ;hiển thị kết quả
Loop Lặp ;cha hết dữ liệu, quay lại
Ra:

Trong trờng hợp thiết bị ngoại vi vào/ra hoạt động theo cách khác: mỗi khi cờ báo
trạng thái sẵn sàng, cho phép CPU đọc/ghi nhiều byte dữ liệu cùng lúc thì ta có nhánh đi
theo đờng nét đứt trên lu đồ. Khi này ta cần thiết sửa đổi cả tổ chức phần cứng và
chơng trình để hệ thống hoạt động chính xác.
Hình vé: Lu đồ điều khiển vào/ra dữ liệu


D0=1?
Đọc cổng
00

Begin


Hết dữ liệu?

End

Đọc cổng
01

T

F

T

F

(a) Lu đồ đọc dữ liệu từ cổng 01



D1=1?
Đọc cổng
00

Begin


Hết dữ liệu?

End

Ghi cổng
01

T

F

T

F

(a) Lu đồ ghi dữ liệu vào 02

Trờng đại học kỹ thuật Công Nghiệp
Nguyễn Tiến Duy Trung tâm Kỹ thuật máy tính Bộ môn Kỹ thuật máy tính

91


http://
www.ebook.edu.vn
Trở về ví dụ 4 trong chơng trớc ta thấy: tổ chức phần cứng và chơng trình điều
khiển vào/ra là theo phơng pháp này (polling thăm dò trạng thái sẵn sàng của thiết bị
ngoại vi). ở đó ta sử dụng vi mạch cổng chuyên dụng PPI 8255 làm việc trong chế độ 1
(mode 1) và bản thân vi mạch này có khả năng tạo ra các tín hiệu móc nối đợc cả với
CPU và thiết bị ngoại vi. Việc đọc (thăm dò) đơn giản chỉ là đọc bit PC3 của cổng PC (theo
ví dụ đó). Tín hiệu của bit này chính là tín hiệu INTR. Nếu ta không kiểm tra bit này bằng
cách đọc cổng PC mà nối thẳng nó tới chân tiếp nhận yêu cầu ngắt của CPU là chân INTR
thì ta có một phơng pháp phối ghép khác để vào/ra dữ liệu đó là điều khiển vào/ra dữ
liệu bằng cách ngắt CPU. Phơng pháp này sẽ đợc trình bày chi tiết trong chơng sau.

Nếu kiểm tra PC3, PC0 (là tín hiệu báo sẵn sàng tơng ứng cho các cổng PA và PB),
bằng lệnh đọc cổng PC trong chơng trình thì ta có phơng pháp vào/ra dữ liệu là thăm dò
trạng thái sẵn sàng của thiết bị ngoại vi.
Sơ đồ ghép nối dùng PPI 8255

Mode 1


PA



PC4


PC5


PPI 8255

PC1


PC2


PC3, PC0
PB

RD

WR

A0

A1

Reset

CS

Input device


D7-D0





CPU 8088




INTR

A19-A2

Decoder

IRQi


STB

ACK

D7-D0

D7-D0


STB

ACK
Output device


×