ấ
C u trúc máy tính
ươ Ế Ạ Ch ng 6 Ị THI T B NGO I VI
10/19/16 Chương 6: Thiết bị ngoại vi 1
ộ
N i dung
ấ
ớ ậ ế ế ị
ạ ộ
ế ị ạ ố 6.1. Nguyên lý xu t nh p trong máy tính t b I/O. 6.2. Cách CPU giao ti p v i thi ắ 6.3. Ng t quãng 6.4. DMA 6.5. Ho t đ ng bàn phím 6.6. N i ghép thi t b ngo i vi
10/19/16 Chương 6: Thiết bị ngoại vi 2
ế ị
ạ
Thi
t b ngo i vi
Thi
ế ị ế ị ữ ệ t b I/O là 1 thi
ả ụ ọ ấ ả ầ
ữ ệ ự ụ t b có kh năng cung c p d li u khi CPU yêu c u trong tác v đ c và có kh năng ghi d li u vào khi CPU th c thi 1 tác v ghi.
10/19/16 Chương 6: Thiết bị ngoại vi 3
Các thiết bị ngoại vi
Chức năng: chuyển đổi dữ liệu giữa bên trong và bên
Phân loại:
Thiết bị ngoại vi giao tiếp người-máy: Bàn phím,
ngoài máy tính
Thiết bị ngoại vi giao tiếp máy-máy: gồm các thiết
Màn hình, Máy in,...
Thiết bị ngoại vi truyền thông: Modem, Network
bị theo dõi và kiểm tra
Interface Card (NIC)
10/19/16 Chương 6: Thiết bị ngoại vi 4
Các thành phần của thiết bị ngoại vi
Bộ chuyển đổi tín hiệu: chuyển đổi dữ liệu giữa bên
Bộ đệm dữ liệu: đệm dữ liệu khi truyền giữa mô-đun
ngoài và bên trong máy tính
Khối logic điều khiển: điều khiển hoạt động của thiết bị ngoại vi đáp ứng theo yêu cầu từ mô-đun vào-ra
vào-ra và thiết bị ngoại vi
10/19/16 Chương 6: Thiết bị ngoại vi 5
Minh h aọ
KEYBOARD
MONITOR
FLOPPY DISK
HARD DISK
MEMORY
CPU
VIDEO CONTROLLER
KEYBOARD CONTROLLER
HARDDISK CONTROLLER
FLOPPYDISK CONTROLLER
BUSBUS
10/19/16 Chương 6: Thiết bị ngoại vi 6
Làm sao CPU nhận biết một I/O
Mỗi I/O có 1 địa chỉ riêng gọi là cổng (port). Khi CPU
truy xuất I/O , CPU xuất ra 1 địa chỉ.
Một số bit cao của địa chỉ đi vào bộ giải mã, trên đường ra của bộ giải mã sẽ có tín hiệu Chip select tương ứng với I/O mà CPU muốn truy xuất.
Các địa chỉ thấp còn lại sẽ đi đến mọi I/O nhưng chỉ có I/O nào có đường Chip Select tích cực mới được truy xuất.
10/19/16 Chương 6: Thiết bị ngoại vi 7
CPU liên lạc với thiết bị I/O
Thiết bị ngoại vi liên lạc với CPU thông qua các cổng
Các thiết bị I/O có tốc độ làm việc chậm hơn tốc độ của CPU rất nhiều để khắc phục nhược điểm này người ta dùng vùng nhớ đệm.
Sự truyền thông tin giữa thiết bị I/O và CPU được
I/O
Bước 1 : truyền thông tin giữa bộ nhớ trong và bộ nhớ đệm. Bước 2 : truyền thông tin giữa bộ nhớ đệm và thiết bị I/O.
thực hiện theo 2 bước :
10/19/16 Chương 6: Thiết bị ngoại vi 8
CPU liên lạc với thiết bị I/O
Có thể tổ chức để 1 CPU làm việc đồng thời với nhiều thiết bị ngoại vi bằng cách phân chia thời gian.
Buffer
Thiết bị I/O
Bộ nhớ trong
Tín hiệu điều khiển của bộ nhớ đệm Tín hiệu điều khiển từ CPU
10/19/16 Chương 6: Thiết bị ngoại vi 9
Ngắt quãng (Interrupt)
Ngắt (Interrupt) là gì ?
Ngắt là sự làm ngừng chương trình đang chạy.
Một interrupt xuất hiện khi 1 chương trình đang thực
thi bị ngưng.
phục vụ ngắt quãng (như xuất nhập chẳng hạn).
Do hệ thống gây ra vì 1 lý do nào đó không mong muốn
(như lỗi của phép chia 0, phép tính bị tràn số…)
Do thiết bị I/O gây ra : máy in, bàn phím, ổ đĩa ...
Interrupt được tạo ra bởi nhiều lý do khác nhau
Do người sử dụng lập trình có lệnh INT
10/19/16 Chương 6: Thiết bị ngoại vi 10
Ộ
Ủ
Ạ
Ắ HO T Đ NG NG T QUÃNG C A IO
ẽ
ế
ầ
ấ
ậ
ớ
ủ
ể
ệ
Khi 1 IO có yêu c u giao ti p v i CPU (xu t nh p data), IO này s kích ườ ở ng tín hi u IRQ c a mình (Interrupt request) đ báo là mình kh i 1 đ ụ ụ ầ c n ph c v .
ướ
ế
ắ
Các b
c trong ti n trình ng t quãng :
ụ
ế
ệ
ầ
ụ ẽ ử IO có yêu c u CPU ph c v , s g i tín hi u IRQ đ n Interrupt controller.
ẽ ả
ề
ế
ầ
ắ
ế
N u có nhi u I/O cùng yêu c u ng t , IntController s gi
i quy t
ế ộ ư
ằ
ầ
các yêu c u b ng ch đ u tiên.
ẽ
ệ
ắ
ấ
t
ự
ấ
ệ ỉ ở ề
ụ
ắ
ấ
ế IntController phát 1 tín hi u đ n CPU xin ng t, CPU s hoàn t ị ủ ệ l nh đang th c hi n , c t giá tr c a thanh ghi IP và CS vào stack ụ ể ế ị đ bi
t đ a ch tr v sau khi ph c v ng t hoàn t
t.
10/19/16 Chương 6: Thiết bị ngoại vi 11
Ộ
Ủ
Ạ
Ắ HO T Đ NG NG T QUÃNG C A I/O
ậ ầ ể ế ụ CPU yêu c u mã nh n d ng đ bi ụ t ph c v cái gì?
ờ
ỉ ắ ầ ụ ể ế t ắ ụ ng trình con ph c v ng t
ủ ộ ị ằ ạ ả Nh mã này CPU vào b ng Interrupt vector đ bi ươ đ a ch b t đ u c a ch ớ n m đâu trong b nh .
ỉ ắ ầ ươ CPU chép đ a ch b t đ u c a ch ng trình con
ụ ủ ệ ủ ự
ụ ươ ị ắ ng trình này. ph c v ng t vào CS và th c thi mã l nh c a ch
ệ ự ệ
ụ ủ ị
ể ế ụ ắ ủ ệ ự
Sau khi th c hi n xong tác v c a ng t , l nh cu i ố ẽ ấ cùng là INTR, CPU s l y giá tr cũ c a CS và IP ạ i trong stack ra đ ti p t c th c thi các l nh còn l ủ ứ c a ng d ng
ụ 10/19/16 Chương 6: Thiết bị ngoại vi 12
ề
ắ
Ng t m m
ề
Ng t m m : ắ
ươ
ng trình.
ươ
ệ ề
ng trình con trong h đi u hành và
ườ
th
ậ ươ
ề
Do thi hành l nh INT trong ch ệ Xãy ra khi c n 1 ch ầ ươ ấ ng là ch ng trình con xu t nh p. Cú pháp g i 1 ng t m m trong ch ắ ọ
ng trình :
INT number M t s ng t m m thông d ng : ụ ề ắ ộ ố INT 10H : Video services INT 16H : Keyboard services INT 17H : Printer services INT 1AH : Time of Day INT 1CH : User Time Interrupt INT 21H : Dos Service 10/19/16 Chương 6: Thiết bị ngoại vi
13
ụ
ề
ắ
ọ
ọ Thí d minh h a g i ng t m m
ROM BIOS
CALLING PROGRAM
MOV …
1
INT 10h
ADD ….
2
……..
STL CLD PUSH ES PUSH DS …… IRET
3 F000:F065 F000:F066 F000:F067 F000:F068 ………….
RETURN TO CALLING PROGRAM
4
3069 F000:F065 F000:AB62
INTERRUPT VECTOR TABLE
10/19/16 Chương 6: Thiết bị ngoại vi 14
ả
Gi
i thích
ố ế ị ả ị t ph i đ nh v
ụ ắ m c nào trong b ng vector ng t quãng.
Con s theo sau INT báo cho CPU bi ả ị ế ắ ả ả ỉ ư CPU nh y đ n đ a ch l u trong b ng vector ng t
quãng (F000:F065).
ươ ể ộ M t ch
ắ ầ ượ ấ ắ ạ ề ng trình con (đi u khi n ng t) t i c thi hành và hoàn t t khi
F000:F065 b t đ u đ g p l nh IRET.
L nh IRET giúp CT quay tr l
ở ạ ệ ặ ệ ệ ọ i ngay sau l nh g i
ế ụ ệ ắ ng t và ti p t c thi hành l nh này.
10/19/16 Chương 6: Thiết bị ngoại vi 15
ắ ứ Ng t c ng
ượ ạ ế ị ế ạ ầ Ng t c ng : đ ắ ứ c t o ra khi thi t b ngo i vi c n đ n
CPU.
ượ ở Ng t c ng đ ắ ứ
c phát sinh b i chip 8259 Interrupt ỉ ự ệ
ạ ắ ủ ử ệ Controler, phat tín hi u cho CPU t m đình ch s thi hành c a CT hi n hành và x lí ng t.
ắ ứ ệ ầ Đăc tr ng c a ng t c ng là tín hi u yêu c u ng t ắ
ủ ư quãng INTR.
ầ Ng t bàn phím là 1 đi n hình ng t c ng. Khi c n ể
ươ ắ ứ ắ ứ ắ ế t ch thi ể ấ ng trình có th c m ng t c ng.
10/19/16 Chương 6: Thiết bị ngoại vi 16
ả
ắ B ng vector ng t
ớ ộ ớ
ắ ặ ở ầ ộ đ u b nh chính ộ ầ ử ỗ là 1 b , m i ph n t ọ ượ c g i là các vector ắ
ứ ị ươ M t vùng nh dài 1024 bytes đ t ứ ầ ử (0h – 400h) , ch a 256 ph n t ố ừ 4 bytes đánh s t 0hFFh và đ ả ạ ng t , t o thành b ng vector ng t . M i vector ng t ch a đ a ch c a 1 ch ng trình
ắ ắ ặ ộ ỉ ủ ớ ph c v ng t đ t trong b nh .
ụ ự ụ ế ạ
ọ ớ ươ ng trình ph c v này liên l c tr c ti p v i ổ ố ế ị t b I/O thông qua 1 s thanh ghi g i là c ng
ỗ ụ ụ Các ch các thi (port) vào/ra.
10/19/16 Chương 6: Thiết bị ngoại vi 17
ả
ắ B ng vector ng t
ầ
ắ ượ
ầ
ế ị
t đ a ch c a
ụ
ố ng trình con ph c v ng t này mà ch quan tâm đ n s
c yêu c u, CPU không c n bi ắ ỉ ế
ắ
ỉ ủ ế ả
ỉ ủ ầ ử ứ th i c a b ng
Khi 1 ng t đ ụ ươ ch ố ủ ệ hi u i c a ng t và s này ch đ n ph n t interrupt vector .
ẽ ạ
ờ ắ ắ ố
ủ
ủ
ệ
ở ị
VD : Khi ta gõ vào 1 phím, 1 tín hi u s t m th i ng t ngang ệ ế ẽ ỉ đ a ch 0:24h.
công vi c c a CPU. CPU s tìm đ n vector ng t s 9 (c a bàn phím). Vector này
ủ ụ
ẽ ấ
ỉ ủ
ụ
ụ
ị
CPU s l y ra đ a ch c a th t c chuyên ph c v bàn phím
ẵ
ủ ụ
ở ạ
ỗ ị
ể ế
ụ
ự
ệ
ệ
ắ
ở i ch b ng t đ ti p t c th c hi n công vi c d
(có s n trong ROM BIOS). Th c hi n th t c này xong ự ệ Quay tr l dang
10/19/16 Chương 6: Thiết bị ngoại vi 18
ạ ổ
Các lo i c ng vào ra
ổ
ố ế
ấ
C ng n i ti p (serial port ) : IBM PC cung c p 2 c ng n i ti p : ổ
ở ị
ỉ
ố ế ổ đ a ch 400h và 402h
ữ ệ
COM1 hay AUX và COM2, 2 c ng này trong vùng d li u BIOS.
ố ế
ổ
ộ
ệ
ạ
C ng n i ti p dùng cho modem đi n tho i, m t máy in n i ti p ố ế
ố ự
ế
ớ hay n i tr c ti p v i 1 máy tính khác.
ử ụ
C ng song song (parallel port ) : IBM PC cho phép s d ng 3
ổ ổ
c ng song song : PRN hay LPT1, LPT2 và LPT3. ị
ỉ
ơ
ị
đ a ch
ỉ ứ N i ch a đ a ch
3F8H
400
2F8H
402
3BCH
408
Tên c ngổ COM1 COM2 PRN LPT2
378H
40A
10/19/16 Chương 6: Thiết bị ngoại vi 19
DMA (Direct Memory Access)
Vào-ra bằng chương trình và bằng ngắt do CPU trực
Để khắc phục dùng DMA
Thêm mô-đun phần cứng trên bus (cid:0) DMAC
tiếp điều khiển: Chiếm thời gian của CPU Tốc độ truyền bị hạn chế vì phải chuyển qua CPU
DMAC điều khiển trao đổi dữ liệu giữa môđun
(Controller)
vào-ra với bộ nhớ chính
10/19/16 Chương 6: Thiết bị ngoại vi 20
DMA (Direct Memory Access)
DMA là gì ?
ỹ
ậ
ề
ề
ệ
ể
K thu t cho phép I/O device hay Bus đi u ữ ệ khi n vi c truy n d li u vào/ra MT mà không thông qua CPU.
(cid:0)
ể
ề
ẫ
ậ
ờ ế Nh th CPU v n đi u khi n các quá ấ ử trình x lý khác trong quá trình nh p xu t ữ ệ d li u.
10/19/16 Chương 6: Thiết bị ngoại vi 21
Các thành phần của DMAC
Thanh ghi dữ liệu: chứa dữ liệu trao đổi Thanh ghi địa chỉ: chứa địa chỉ ngăn nhớ dữ liệu Bộ đếm dữ liệu: chứa số từ dữ liệu cần trao đổi Logic điều khiển: điều khiển hoạt động của DMAC
10/19/16 Chương 6: Thiết bị ngoại vi 22
Hoạt động DMA
Hoạt động DMAC
Vào hay Ra dữ liệu Địa chỉ thiết bị vào-ra (cổng vào-ra tương ứng) Địa chỉ đầu của mảng nhớ chứa dữ liệu (cid:0) nạp vào thanh
ghi địa chỉ
Số từ dữ liệu cần truyền (cid:0) nạp vào bộ đếm dữ liệu
CPU làm việc khác DMAC điều khiển trao đổi dữ liệu Sau khi truyền được một từ dữ liệu thì: nội dung thanh ghi địa chỉ tăng nội dung bộ đếm dữ liệu giảm
Khi bộ đếm dữ liệu = 0, DMAC gửi tín hiệu ngắt CPU để báo kết
thúc DMA
10/19/16 Chương 6: Thiết bị ngoại vi 23
Đặc điểm của DMA
CPU không tham gia trong quá trình trao đổi dữ liệu DMAC điều khiển trao đổi dữ liệu giữa bộ nhớ chính với mô-đun vào-ra (hoàn toàn bằng phần cứng) (cid:0) tốc độ nhanh
Phù hợp với các yêu cầu trao đổi mảng dữ liệu có
kích thước lớn
10/19/16 Chương 6: Thiết bị ngoại vi 24
Bàn phím
Là thiết bị nhập đơn giản tập hợp các công tắc bố
Mỗi tổ hợp phím xác định được ấn xuống mạch
trí thành 1 ma trận Tín hiệu ngõ ra của ma trận công tắc này được Tín hiệu ngõ ra của ma trận công tắc này được đưa vào mạch tạo mã bàn phím. đưa vào mạch tạo mã bàn phím.
Chip 8048 xử lý điều khiển bàn phím : Theo dõi có
sẽ tạo ra 1 con số nhận diện cho phím đó, sau đó con số này sẽ gửi cho CPU.
phím nào được ấn không thì báo cho CPU thông qua ngắt 09h.
10/19/16 Chương 6: Thiết bị ngoại vi 25
Bàn phím
Nếu có phím nào bị ấn quá ½s , 8048 sẽ lặp lại phím
Mỗi lần ấn 1 phím, các mạch điện tử của bàn phím sẽ tạo ra 1 mã dài 1 byte gọi là mã scan , đặc trưng cho vị trí trên bàn phím của phím tác động, giá trị nằm trong khoảng 1 ..83
Làm sao MT phân biệt được khi 1 phím được nhấn
này sau những khoảng thời gian nhất định (typematic)
và khi phím đó được nhả ?
10/19/16 Chương 6: Thiết bị ngoại vi 26
Bàn phím
Khi nhả phím bị ấn, bàn phím tạo ra 1 mã scan khác với mã scan lúc phím bị ấn, có giá trị bằng mã trước cộng thêm 128 (80h) , nghĩa là đổi bit 7 của byte mã scan trước từ 0 1
VD : khi ta ấn chữ z , scan code là 44, nhả phím này
ra bàn phím tạo mã scan 172
10/19/16 Chương 6: Thiết bị ngoại vi 27
Bộ mã hoá quét trên ma trận
KEY DOWN
COL1
COL2
COL3
4 line To 1 line DEMUX
1
COL4
0
2
1
0 1 1
0
4 8
0 1 1 0
1
0
ROW4
Q0 Q1 Q2 Q3 4 Bit Counter
ROW3
ROW2
SCAN OSC
2 line To 4 line DECODER
ROW1
10/19/16 Chương 6: Thiết bị ngoại vi 28
Liên lạc giữa bàn phím và CPU
Cứ mỗi lần có 1 tác động ấn phím
mạch bàn phím gây ra ngắt 9 mạch bàn phím gây ra ngắt 9 gọi 1 chương trình con phục vụ ROM BIOS. gọi 1 chương trình con phục vụ ROM BIOS. INT 9 sẽ đọc cổng 60H để biết tác động phím nào
đã xãy ra (đọc mã scan tương ứng).
INT 9h chuyển mã scan này thành mã dài 2 bytes, byte thấp chứa mã ASCII của phím đó, byte cao chứa mã scan.
10/19/16 Chương 6: Thiết bị ngoại vi 29
Các cổng vào-ra thông dụng trên PC
Các cổng PS/2: nối ghép bàn phím và chuột
Cổng nối ghép màn hình
Cổng LPT (Line Printer): nối ghép với máy in, là cổng
Cổng COM (Communication): nối ghép với MODEM,
song song (Parallel Port) – 25 chân
Cổng USB (Universal Serial Bus): Cổng nối tiếp đa
là cổng nối tiếp (Serial Port) - 9 hoặc 25 chân
năng, cho phép nối ghép tối đa 127 thiết bị, nhờ các USB Hub
10/19/16 Chương 6: Thiết bị ngoại vi 30

