Tải bản đầy đủ (.doc) (44 trang)

Luận văn Thiết kế CARD vào ra đa năng sử dụng Slot của PC

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 (356.7 KB, 44 trang )

Lời nói đầu
Sự phát triển đi lên vợt bậc của nghành kỹ thuật máy tính và điện tử hiện nay đã đ-
ợc minh chứng cụ thể qua cuộc sống hàng ngày của chúng ta trong tất cả các lĩnh vực.
Việc ứng dụng máy vi tính vào kỹ thuật đo lờng và điều khiển đã đem lại những
kết quả đầy tính u việt. Các thiết bị, hệ thống đo lờng và điều khiển ghép nối với máy
tính có độ chính xác cao, thời gian thu thập số liệu ngắn, nhng đáng quan tâm hơn là
mức độ tự động hoá trong việc thu nhận và xử lý dữ liệu.
Kỹ thuật số ra đời đã khắc phục đợc các khuyết điểm của kỹ thuật tơng tự, làm
cho các bộ phận máy móc trở lên đơn giản, gọn nhẹ, ít tốn kém năng lợng và xử lý
thông tin nhanh, chính xác hơn so với kỹ thuật tơng tự.
Tuy vậy, nếu xử dụng các bộ điều khiển dùng các IC số chúng ta vẫn còn mắc một
số khuyết điểm mà so với kỹ thuật vi xử lý nó vẫn tồn tại nh:
- Kích thớc lớn.
- Năng lợng tiêu thụ lớn.
- Tính mềm dẻo thấp, khó thay đổi.
- Khó sửa chữa, bảo trì.
Kỹ thuật vi xử lý ra đời với sự kết hợp giữa phần cứng và phần mềm đã làm cho
hoạt động của các mạch điện trở lên mềm dẻo hơn với những phần mềm rất linh hoạt
mà ta có thể sửa chữa, thay đổi hoặc bổ xung làm cho chơng trình điều khiển thêm
phong phú tuỳ theo nhu cầu của ngời xử dụng.
Vi xử lý là một vi mạch điện tử có mật độ tích hợp cao, trong đó gồm các mạch
số có khả năng nhận, xử lý và xuất dữ liệu. Đặc biệt là quá trình xử lý dữ liệu đợc điều
khiển theo một chơng trình gồm tập hợp các lệnh từ bên ngoài mà ngời sử dụng có thể
thay đổi đợc một cách dễ dàng. Một vi xử lý có thể thực hiện rất nhiều yêu cầu điều
khiển khác nhau.
Kỹ thuật vi xử lý có tính phức tạp trong hoạt động, thiết kế nhng lại rất kinh tế
vì giá thành hạ và kích thớc chiếm chỗ không nhiều, có dung lợng cao. Ngoài ra kỹ
thuật vi xử lý cũng hơn kỹ thuật số về tính linh hoạt, tốc độ xử lý cao trong quá trình
hoạt động, đồng thời lại có thể mở rộng tính năng hoạt động sau này cho mạch điện.
Đây là u điểm rất thuận lợi mà kỹ thuật vi xử lý mang lại.
Nhận thấy đợc rõ tầm quan trọng và những u điểm của việc lập trình điều


khiển thiết bị, các thầy khoa Điện_Điện Tử Tàu Biển đã giao cho em đề tài Thiết kế
CARD vào ra đa năng sử dụng Slot của PC cho luận văn tốt nghiệp của mình.
Trong thời gian làm tốt nghiệp vừa qua, tuy em đã hết sức cố gắng tìm hiểu,
học hỏi về lĩnh vực mới này nhng do trình độ bản thân cũng nh thời gian làm tốt nghiệp
còn hạn chế nên chắc chắn sẽ còn nhiều sai sót, kính mong các thầy cô đóng góp ý kiến
cho đề tài tốt nghiệp này của em.
Em xin chân thành cảm ơn thầy giáo Hồ Nhật Tiến đã tận tình hớng dẫn để hoàn
thành báo cáo tốt nghiệp này. Em cũng xin chân thành cảm ơn các thầy cô trong khoa
Điện_Điện Tử Tàu Biển, các bạn bè đồng nghiệp đã đóng góp ý kiến và chỉ dẫn em
trong quá trình nghiên cứu, thực hiện đề tài này.

Phần I
Phần lý thuyết cơ sở
Chơng1: Giới thiệu cấu trúc hệ vi xử lý
1.1. Giới thiệu vi xử lý 8088
1.1.1. Giới thiệu cấu trúc bên trong và hoạt động của bộ vi xử lý 8088.
E.U. (execution unit) B.I.U (Bus interface
1
AxBxCx
DxspBpS
idi
CsDsSsE
sip
Bus địa chỉ (20bit)
Các thanh
ghi đoạn và
con trỏ lệnh
Các thanh
ghi đa năng
Các thanh ghi

con trỏ và chỉ số
Các thanh ghi tạm
thời
ALU

Thanh ghi cờ
Khối diều
khiển của
EU
Logic
điều
khiển
BUS
Đệm lệnh (hàng đợi
lệnh)
(6 byte cho 8088)
Bus dữ
liệu
(8 bit)
Bus trong
của CPC 8
bít dữ liệu
20 bít địa
chỉ
Bus
ngoài
Bus dữ liệu
ALU (16 bit)
unit)
Hình1.1.sơ đồ khối cấu trúc bên trong của bộ vi xử lý 8088

E.U: Execution unit, khối thực hiện lệnh.
B.I.U:Bus interface unit, khối phối ghép bus.
ALU: Arithmetic and logic unit, khối số học và lôgic.
a. B.I.U và E.U:
Theo sơ đồ khối trên hình 1.1 ta thấy bên trong CPU 8088 có hai khối chính:
khối phối ghép bus (B.I.U) và khối thực hiện lệnh (E.U). Việc chia CPU ra thành hai
phần làm việc đồng thời có liên hệ với nhau qua đệm lệnh làm tăng đáng kể tốc độ xử
lý của CPU. Các bus bên trong CPU có nhiệm vụ chuyển tải các tín hiệu của các khối
khác. Trong số các bus đó có bus dữ liệu 16 bit của ALU, bus các tín hiệu điều khiển ở
E.U và bus trong của hệ thống ở B.I.U. Trớc khi đi ra bus ngoài hoặc đi vào bus trong
của bộ vi xử lý, các tín hiệu truyền trên bus thờng đợc cho đi qua các bộ đệm để nâng
cao tính tơng thích cho nối ghép hoặc nâng cao khả năng phối ghép.
B.I.U đa ra địa chỉ, đọc mã lệnh từ bộ nhớ, đọc/ ghi dữ liệu từ /vào cổng hoặc bộ
nhớ. Nói cách khác B.I.U chịu trách nhiệm đa địa chỉ ra bus và trao đổi dữ liệu với bus.
Trong E.U ta thấy có một khối điều khiển (control unit, CU) chính. Tại bên trong
khối điều khiển này có mạch giải mã lệnh. Mã lệnh đọc vào từ bộ nhớ đợc đa đến đầu
vào của bộ giải mã, các thông tin thu đợc từ đầu ra của nó sẽ đợc đa đến mạch tạo xung
diều khiển. Kết quả là ta thu đợc các dãy xung khác nhau (tuỳ theo mã lệnh) để điều
khiển hoạt động của các bộ phận bên trong và bên ngoài CPU. Trong khối E.U còn có
2
Bus dữ
liệu 8
bit
khối số học và logic (arithmetic and logic unit,ALU) dùng để thực hiện các thao tác
khác nhau với các toán hạng của lệnh.
Tóm lại, khi CPU hoạt động E.U sẽ cung cấp thông tin về địa chỉ cho B.I.U để
khối này đọc lệnh và dữ liệu, còn bản thân nó thì giải mã lệnh và thực hiện lệnh.
Trong B.I.U còn có một bộ nhớ đệm lệnh với dung lợng 4 byte dùng để chứa các
mã lệnh đọc đợc nằm sẵn để chờ E.U xử lý. Đây là một cấu trúc mới đợc cấy vào bộ vi
xử lý8088 do việc INTEL đa cơ chế xử lý xen kẽ liên tục dòng mã lệnh (instruction

pipeling) vào ứng dụng trong các bộ vi xử lý thế hệ mới.
Trong bộ vi xử lý 8088 ta còn thấy có các thanh ghi 16 bit nằm trong cả hai khối
B.I.U và E.U. Ngoài ra cũng có một số thanh ghi 8 hoặc 16 bit tại E.U.
Ta sẽ lần lợt giới thiệu các thanh ghi nói trên cùng chức năng chính của chúng.
b/ Các thanh ghi đoạn:
Khối B.I.U đa ra trên bus địa chỉ 20 bit địa chỉ, nh vậy 8088 có khả năng phân
biệt ra đợc 2 = 1.048.576 =1M ô nhớ hay 1Mbyte, vì các bộ nhớ nói chung tổ chức theo
byte. Nói cách khác: Không gian địa chỉ của 8088 là 1Mbyte.
Trong không gian 1Mbyte này bộ nhớ cần đợc chia thành các vùng khác nhau giành
riêng để:
- Chứa mã chơng trình
- Chứa dữ liệu và kết quả trung gian của chơng trình
- Tạo ra một vùng nhớ đặc biệt gọi là ngăn xếp (stack) dùng vào việc quản lý các
thông số của bộ vi xử lý khi gọi chơng trình con hoặc trở về từ chơng trình con.
Trong thực tế bộ vi xử lý 8088 có các thanh ghi 16 bit liên quan đến địa chỉ đầu
của các vùng (các đoạn) kể trên và chúng đợc gọi là các thanh ghi đoạn (segment
registers).
Đó là:
+ thanh ghi đoạn mã CS (code segment)
+ thanh ghi đoạn dữ liệu DS (data segment)
+ thanh ghi đoạn ngăn xếp SS (stack segment)
+ thanh ghi đoạn dữ liệu phụ ES (extra segment).
Các thanh ghi đoạn 16 bit này chỉ ra địa chỉ đầu của 4 đoạn trong bộ nhớ, dung
lợng lớn nhất của mỗi đoạn này là 64Kbyte và tại một thời điểm nhất định bộ vi xử lý
chỉ làm việc đợc với 4 đoạn nhớ 64Kbyte này. Việc thay đổi giá trị của các thanh ghi
đoạn làm cho các đoạn tơng ứng có thể dịch chuyển linh hoạt trong phạm vi không gian
1Mbyte, vì vậy các đoạn này có thể nằm cách nhau khi thông tin cần lu trong
chúng đòi hỏi dung lợng đủ 64Kbyte hoặc cũng có thể nằm trùm nhau do có những
đoạn không cần dùng hết độ dài 64Kbyte và vì thế những đoạn này có thể bắt đầu nối
tiếp ngay sau đó. Điều này cũng cho phép ta truy nhập vào bất kỳ đoạn nhớ ( 64Kbyte)

nào nằm trong toàn bộ không gian 1Mbyte. Nội dung các thanh ghi đoạn sẽ xác định
địa chỉ của ô nhớ nằm ở đầu đoạn. Địa chỉ này còn gọi là địa chỉ cơ sở. Địa chỉ của các
ô nhớ khác nằm trong đoạn tính đợc bằng cách cộng thêm vào địa chỉ cơ sở một giá trị
gọi là địa chỉ lệch hay độ lệch (offset). Gọi nh thế vì nó ứng với khoảng lệch của toạ độ
một ô nhớ cụ thể nào đó so với ô đầu đoạn. Độ lệch này đợc xác định bởi các thanh ghi
16 bit đóng vai trò thanh ghi lệch
(offset register). Cụ thể, để xác định địa chỉ vật lý 20 bit của một ô nhớ nào đó trong
một đoạn bất kỳ, CPU 8088 phải dùng đến 2 thanh ghi 16 bit (một thanh để chứa địa
chỉ cơ sở, còn thanh ghhi kia chứa độ lệch) và từ nội dung của thanh ghi đó nó tạo ra
địa chỉ vật lý theo công thức sau:
Địa chỉ vật lý = Thanh ghi đoạn ì 16 + Thanh ghi lệch
Việc dùng 2 thanh ghi để ghi nhớ thông tin về địa chỉ thực chất tạo ra một loại
địa chỉ gọi là điạ chỉ logic và đợc kí hiệu: Thanh ghi đoạn : Thanh ghi lệch hay segment
: offset.
Địa chỉ kiểu segment : offset là logic vì nó tồn tại dới dạng của các thanh ghi cụ
thể bên trong CPU và khi cần thiết truy nhập ô nhớ nào đó thì nó phải đợc đổi ra địa chỉ
vật lý để rồi đợc đa lên bus địa chỉ. Việc chuyển đổi này do một bộ tạo địa chỉ thực hiện
(phần tử trên hình).
c. Các thanh ghi đa năng:
3
Trong khối EU có 4 thanh ghi đa năng 16 bit: Ax, Bx, Cx, Dx. Điều đặc biệt là
khi cần chứa các dữ liệu 8 bit thì mỗi thanh ghi này có thể tách ra thành 2 thanh ghi 8
bit cao và thấp để làm việc dộc lập, đó là các thanh ghi AH và AL, BH và BL, CH và
CL, DH và DL.
Mỗi thanh ghi có thể đợc dùng một cách vạn năng để chứa các loại dữ liệu khác
nhau, nhng cũng có những công việc đặc biệt nhất định chỉ thao tác với một vài thanh
ghi nào đó và chính vì vậy các thanh ghi thờng đợc gán cho những cái tên đặc biệt rất
có ý nghĩa.
Cụ thể:
* Ax (Accumulator): Thanh chứa. Các kết quả của các thao tác thờng đợc chứa ở

đây (Kết quả của phép phân chia). Nếu kết quả là 8 bit thì thanh ghi AL đợc coi là Acc.
* Bx (Base): Thanh ghi cơ sở, thờng chứa địa chỉ cơ sở của một bảng dùng trong
lệnh XLAT.
* Cx (Count): Bộ đếm. Cx thờng đợc dùng để chứa số lần lặp trong trờng hợp
các lệnh LOOP ( lặp), còn CL thờng đợc số lần dịch hoặc quay trong các lệnh dịch hoặc
quay thanh ghi.
*Dx (Data): Thanh ghi dữ liệu. Dx cùng Ax tham gia vào các thao tác của phép
nhân hoặc chia các số 16 bit. Dx còn dùng để chứa địa chỉ của các cổng trong các lệnh
vào / ra dữ liệu trực tiếp (In / Out).
d. Các thanh ghi trỏ và chỉ số:
Trong 8088 còn có 3 thanh ghi con trỏ và 2 thanh ghi chỉ số 16 bit. Các thanh
ghi này (trừ IP) đều có thể đợc dùng nh các thanh ghi đa năng, nhng ứng dụng chính
của mỗi thanh ghi là chúng đợc ngầm định nh là thanh ghi lệch cho các đoạn tơng ứng.

Cụ thể
* IP: Con trỏ lệnh (intruction pointer), IP luôn trỏ vào lệnh tiếp theo sẽ đợc thực
hiện nằm trong đoạn mã CS. Địa chỉ đầy đủ của lệnh tiếp theo này ứng với
CS: IP và đợc xác định theo cách đã nói ở trên.
* BP: Con trỏ cơ sở (base pointer), BP luôn trỏ vào một dữ liệu nằm trong đoạn
ngăn xếp SS: BP và đợc xác định theo cách đã nói trên.
* SP: Con trỏ ngăn xếp (stack poniter), SP luôn trỏ vào đỉnh hiện thời của ngăng
xếp nằm trong đoạn ngăn xếp SS. Địa chỉ đầy đủ của đỉnh ngăn xếp ứng với SS: Sp và
đợc xác định theo cách đã nói ở trên.
* SI: Chỉ số gốc hay nguồn (Sourse index), SI chỉ vào dữ liệu trong đoạn dữ liệu
DS mà địa chỉ cụ thể đầy đủ với DS: SI và đợc xác định theo cách đã nói ở trên.
* DI: Địa chỉ đích (destination index), DI chỉ vào dữ liệu trong đoạn dữ liệu DS
mà địa chỉ cụ thể đầy đủ ứng với DS: DI và đợc xác định theo cách đã nói ở trên.
Riêng trong các lệnh thao tác với dữ liệu kiẻu chuỗi thì cặp ES: DI luôn ứng với
địa chỉ của phần tử thuộc chuỗi đích còn cặp DS: SI ứng với địa chỉ của phần tử thuộc
chuỗi gốc.

e. Thanh ghi cờ FR (Flag Register):
Đây là thanh ghi khá đặc biệt trong CPU, mỗi bit của nó đợc dùng để phản ảnh
một trạng thái hoạt động của kết quả phép toán do ALU thực hiện hoặc một trạng thái
hoạt động của EU. Dựa vào các cờ này ngời lập trình có thể có các lệnh thích hợp tiếp
theo cho bộ vi xử lý (các lệnh nhảy có điều kiện). Thanh ghi cờ gồm 16 bit nhng ngời ta
chỉ dùng hết 9 bit của nó để làm các bit cờ (hình 1.2)
Các cờ của bộ vi xử lý 8085
X: Không đợc định nghĩa.
Hình 1.2: Sơ đồ thanh ghi cờ của bộ vi xử lý 8086/88
Các cờ cụ thể:
* C hoặc CF (Corry Flag): Cờ nhớ, CE = 1 khi có nhớ hoặc mợn từ MSB.
4
X X X X O D I T S Z X A X P X C
* P hoặc PE (Parity Flag): Cờ parity, PE phản ánh tính chẵn lẻ (parity) của tổng
số bit 1 có trong kết quả là chẵn (even parity, parity chẵn).
* A hoặc AE (auxiliary corry flag): Cờ nhớ phụ, rất có ý nghĩa khi ta làm việc
với các số BCD. AE = 1 khi có nhớ hoặc mợn từ một số BCD thấp (4bit thấp) sang một
số BCD cao (4 bit cao).
* Z hoặc ZE (Zero flag): Cờ rỗng, ZE = 1 khi kết quả bằng 0.
* S hoặc SF (Sign flag): Cờ dấu, SF = 2 khi kết quả âm.
* O hoặc OE (Overlow flag): Cờ tràn, OF = 1 khi kết quả là một số bù hai vợt ra
ngoài giới hạn biểu diễn dành cho nó.
Trên đây là 6 bit cờ trạng thái phản ảnh các trạng thái khác nhau của kết quả sau
một thao tác nào đó 5 bit cờ đầu thuộc byte thấp của thanh cờ là các cờ giống nh của bộ
vi xử lý 8 bit 8085. Chúng đợc lập hoặc xóa tuỳ theo các điều kiện cụ thể sau các thao
tác của ALU. Ngoài ra, bộ vi xử lý 8088 còn có các cờ điều khiển sau đây (các cờ này
đợc lập hoặc xoá bằng các lệnh riêng):
T hoặc (trap flag): Cờ bẫy, TF = 1 thì CPU làm việc ở chế độ chạy từng lệnh
(chế độ này dùng khi cần tìm lỗi trong một chơng trình).
* I hoặc IF (interrupt enable flag): Cờ cho phép ngắt, IF = 1 thì CPU cho phép

các yêu cầu ngắt (cho đợc) đợc tác động.
* D hoặc DF (direction flag): Cờ hớng, DF = 1 khi CPU làm việc với chuỗi ký tự
theo thứ tự từ phải sang trái (vì vậy D là cờ lùi).

Sơ đồ chân CPU 8088
Min Max
GND 1 40 Vcc
[AD14] A14 2 39 A15
[AD13] A13 3 38 A16/ S3
[AD12] A12 4 37 A17/ S4
[AD11] A11 5 36 A18/ S5
[AD10] A10 6 35 A19/ S6
[AD9] A9 7 34
SSO
(
BHE
/ S7)
[AD8] A8 8 33
MN/
MX
AD7 9 32
RD
AD6 10 31 HOLD
(
BQ
/
0GT
)
AD5 11 30 HLDA
(

BQ
/
1GT
)
AD4 12 29
WR
(
LOCK
)
AD3 13 28
IO/
M
(
2S
)
AD2 14 27
DT/
R
(S1)
AD1 15 26
DEN
(
0S
)
AD0 16 25 ALE (QS0)
NMI 17 24
INTA
(QS1)
INTR 18 23
TEST

CLK 19 22 READY
GND 20 21 RESET
1 2 . Hệ vi xử lý và các mã lệnh thực hiện:

5
UP
8088
1 2.1 Cấu trúc và hoạt động của hệ vi xử lý:
Sơ đồ khối tổng quát và hoạt động của hệ vi xử lý
BUS dữ liệu
BUS điều khiển
Thanh Thanh
ghi ghi
trong ngoài
BUS địa chỉ

Trong sơ đồ này ta thấy các khối chức năng chính của bộ vi xử lý gồm:
- Khối xử lý trung tâm (central processiry unit, CPU).
- Bộ nhớ bán dẫn (memory, M).
- Khối phối ghép với các thiết bị ngoại vi (input/ output, I/O).
- Các BUS truyền thông tin.
Ba khối chức năng đầu tiên liên hệ với nhau thông qua tập các đờng dây để
truyền tín hiệu gọi chung là bus hệ thống. BUS hệ thống bao gồm 3 bus thành phần. ỉng
với các tín hiệu địa chỉ, dữ liệu và điều khiển ta có bus địa chỉ, bus dữ liệu và bus điều
khiển.
CPU đóng vai trò chủ đạo trong hệ vi xử lý. Đây là một mạch vi điện tử có độ
tích hợp rất cao. Khi hoạt động, nó đọc mã lệnh đợc ghi dới dạng các bit 0 và bit 1 từ bộ
nhớ, sau đó nó sẽ giải mã các lệnh này thành dãy các xung điều khiển ứng với các thao
tác đó. Để làm đợc việc này bên trong CPU có thanh ghi dùng để chứa địa chỉ của lệnh
sắp thực hiện gọi là thanh ghi con trỏ lệnh (instruction pointer, IP) hoặc bộ đếm chơng

trình (program counter, PC), một số thanh ghi đa năng khác cùng với bộ tính toán số
học và logic (ALU) để thao tác với dữ liệu. Ngoài ra ở đây còn có các hẹ thống mạch
điện tử rất phức tạp để giải mã lệnh và từ đó tạo ra các xung điều khiển cho toàn hệ.
Bộ nhớ bán dẫn hay bộ nhớ trong là một bộ phận khác rất quan trọng của hệ vi
xử lý. Tại đây (trong ROM) ta có thể chứa chơng trình điều khiển hoạt động của toàn
hệ để khi bật điện thì CPU có thể lấy lệnh từ đây mà khởi đầu hệ thống. Một phần của
chơng trình điều khiển hệ thống, các chơng trình ứng dụng, dữ liệu cùng các kết quả
của chơng trình thờng đợc để trong RAM các dữ liệu và chơng trình muốn lu trữ lâu dài
sẽ để ở bộ nhớ ngoài.
Khối phối ghép vào / ra (I/0) tạo ra khả năng giao tiếp giữa hệ vi xử lý với thế
giới bên ngoài. Các thiết bị ngoại vi nh bàn phím, chuột, màn hình, máy in, chuyển đổi
số / tơng tự (D/A converter, DAC) và chuyển đổi tơng tự / số (A/D converter, ADC), ổ
đĩa từ đều liên hệ với hệ vi xử lý qua bộ phận này. Bộ phận phối ghép cụ thể giữa bus
hệ thống với thế giới bên ngoài thờng đợc gọi là cổng. Nh vậy ta sẽ có các cổng vào để
lấy thông tin từ ngoài vào và các cổng ra để đa thông tin từ trong hệ thống ra ngoài. Tuỳ
theo nhu cầu cụ thể của công việc, các mạch cổng này có thể đợc xây dựng từ các mạch
logic cơ bản hoặc từ các vi mạch chuyên dụng lập trình đợc.
BUS địa chỉ thờng có từ 16, 20, 14 đến 32 đờng dây song song chuyển tải thông
tin của các bit địa chỉ. Khi đọc/ghi bộ nhớ CPU sẽ đa ra trên bus này địa chỉ của ô nhớ
liên quan. Khả năng phân biệt địa chỉ (số lợng địa chỉ cho ô nhớ mà CPU có khả năng
phân biệt đợc) phụ thuộc vào số bit của bus địa chỉ. Ví dụ nếu một CPU có số đờng dây
địa chỉ là N = 16 thì nó có khả năng địa chỉ hoá đợc 2
N
= 65536 = 64 kilô ô nhớ khác
nhau (1K = 2
10
= 1024). Khi đọc/ghi với cổng vào/ra CPU cũng đa ra trên bus địa chỉ
các bit địa chỉ tơng ứng của cổng. Trên sơ đồ khối ta dễ nhận ra tính một chiều của bus
địa chỉ qua chiều của mũi tên. Chỉ có CPU mới có khả năng đa ra địa chỉ trên bus địa
chỉ.

6
Bộ xử lý
trung tâm
(CPU)
Thiết bị
vào
Thiết bị
ra
Bộ nhớ
(MEMORY)
Rom - Ram

Phối ghép
vào ra
(I/O)
Bus dữ liệu thờng có từ 8, 16, 20, 24, 32 đến 64 đờng dây tuỳ theo các bộ VXL
cụ thể. Số lợng đờng dây này quyết định số bit dữ liệu mà CPU có khả năng xử lý cùng
một lúc. Chiều mũi tên trên bus số liệu chỉ ra rằng đây là bus 2 chiều. Các phần tử có
đầu ra nối thẳng với bus dữ liệu đều phải đợc trang bị đầu ra 3 trạng thái để có thể ghép
vào đợc và hoạt động bình thờng với bus này.
Bus điều khiển thờng gồm hàng chục đờng dây tín hiệu khác nhau. Mỗi tín hiệu
điều khiển có một chiều nhất định. Vì khi hoạt động CPU đa ra tín hiệu điều khiển tới
các khối khác trong hệ, đồng thời nó cũng nhận các tín hiệu điều khiển từ các khối
đó để phối hợp hoạt động của toàn hệ nên các tín hiệu này. Trên hình vẽ đợc thể hiện
bởi các đờng có mũi tên 2 chiều, điều đó không phải để chỉ tính
2 chiều của một tín hiệu mà là tính 2 chiều của một nhóm tín hiệu.
Hoạt động của hệ thống VXL trên cũng có thể đợc nhìn theo một cách khác.
Trong khi hoạt động và tại một thời điểm nhất định, về mặt chức năng mỗi khối trong
hệ thống trên tơng đơng với các thanh ghi trong (nằm trong CPU) hoặc các thanh ghi
ngoài (nằm rải rác trong bộ nhớ ROM, RAM và trong khối phối ghép I/O). Hoạt động

của toàn hệ thực chất là sự phối hợp hoạt động của các thanh ghi trong và ngoài nói trên
để thực hiện sự biến đổi dữ liệu hoặc sự trao đổi dữ liệu theo các yêu cầu đã định trớc.
1.2.2 Cách mã hoá lệnh của bộ vi xử lý 8088.
Lệnh của bộ vi xử lý đợc ghi bằng các kí tự dới dạng gợi nhớ (memonk) để ngời
sử dụng dễ nhận biết. Đối với bản thân bộ vi xử lý thì lệnh cho nó đợc mã hoá dới dạng
các số 0 và 1 ( còn gọi là mã máy) vì đó là dạng biểu diễn thông tin duy nhất mà máy
hiểu đợc. Vì lệnh cho bộ VXL đợc cho dới dạng mã nên sau khi nhận đợc lệnh, bộ VXL
phải thực hiện giải mã lệnh. Việc hiêu rõ bản chất cách ghi lệnh bằng số hệ hai cho bộ
VXL sẽ có lợi khi ta cần dịch bằng tay một lệnh gợi nhớ khi làm việc với các
kitVXL.
Một lệnh có thể có một vài byte tuỳ theo bộ VXL. Giả thiết một bộ VXL nào đó
dùng 1 byte để chứa các mã lệnh (opcode) của nó. Ta có thể tính đợc số lệnh lớn nhất
mà 1 byte này có thể mã hoá đợc là 256 lệnh. Trong thực tế việc ghi lệnh không phải
hoàn toàn đơn giản vậy. Việc mac hóa lệnh cho bộ VXL là rất phức tạp và bị chi phối
bởi nhiều yếu tố khác nữa.
Đối với bộ VXL 8088 một lệnh có thể có độ dài từ 1 đến 6 byte. Ta sẽ chỉ lấy tr-
ờng hợp lệnh MOV để giải thích cáh ghi lệnh nói chung của 8088.
Lệnh MOV đích, gốc dùng để chuyển dữ liệu giữa 2 thanh ghi hoặc giữa ô nhớ
và thanh ghi. Chỉ nguyên với các thanh ghi của 8088, nếu ta lần lợt đặt các thanh ghi
vào vị trí các toán hạng đích và toán hạng gốc ta thấy đã phải cần tới hàng trăm mã lệnh
khác nhau để mã hoá tổ hợp các lệnh này.
byte1 byte 2 byte 3 byte 4
D W Mod REG MIR
DISP: displacement (dịch chuyển) hoặc
H 1.2.2 - Dạng thức các byte mã lệnh của MOV
Ta thấy để mã hóa lệnh MOV ta cần ít nhất 2 byte, trong đó 6 bit của byte đầu
dùng chứa mã lệnh. Đối với lệnh MOV, để chuyển dữ liệu kiểu:
- Thanh ghi thanh ghi (trừ thanh ghi đoạn) hoặc
- Bộ nhớ thanh ghi (trừ thanh ghi đoạn).
thì 6 bit đầu này luôn là 100010. Với các thanh ghi đoạn thì điều này lại khác.

7
1 0 0 0 1 0
Disp
L
Disp
H
Địa chỉ trực tiếp Địa chỉ trực tiếp
Phần thấp Phần cao
Bit W để chỉ rằng 1 byte (W = 0) hoặc 1 từ (W = 1) sẽ đợc chuyển. Trong các
thao tác chuyển dữ liệu, một toán hạng luôn bắt buộc phải là thanh ghi. Bộ VXL dùng 2
hoặc 3 bit để mã hoá các thanh ghi trong CPU nh sau:
Bit D dùng để chỉ hớng đi của dữ liệu, D = 1 thì dữ liệu đi đến thanh ghi bởi 3 bit
của REG, D =0 thì dữ liệu đi từ thanh ghi cho bởi 3 bit của REG. Hai bit MOD(chế độ)
cùng với 3 bit R/M (thanh ghi/bộ nhớ) tạo ra 5 bit dùng để chỉ ra chế độ địa chỉ cho các
toán hạng của lệnh.
Chơng 2: Các chuẩn truyền thông trong điều khiển
2.1. Các giao diện vào ra đợc sử dụng trong máy tính.

2.1.1. Giao diện Centronics ( cổng máy in).
Giao diện cổng máy in song song còn gọi là giao diện centronics. Máy in liên
lạc với máy tính qua giao diện này đợc mô tả nh hình 2.1
Giao diện

Centronics
Hình 2.1: Mô tả giao diện Centronics
a.Cấu trúc cổng máy in.
máy in nối với máy tính đợc thực hiện qua ổ cắm 25 chân ở phía sau máy tính.
Nhng đây không chỉ là ổ nối với máy in mà khi sử dụng máy tính vào mục đích đo lờng
và điều khiển thì việc ghép nối cũng đợc thực hiện qua cổng này. Qua cổng này số liệu
đợc truyền song song, nên còn gọi là cổng ghép nối song song và tốc độ truyền số liệu

cũng đạt đợc đến mức lớn đáng kể. Tất cả các đờng dẫn của cổng này đều tơng thích
TTL, nghĩa là chúng đều cung cấp một mức điện áp nằm giữa 0 và 5v. Do đó ta cần
phải lu ý là ở các đờng dẫn lối vào cổng này không đợc đặt ở mức điện áp quá lớn. Sự
phân bố chân cổng máy in nh (hình 2.2)
Ngời ta có thể trao đổi một cách riêng biệt với 17 đờng dẫn, bao gồm có 12 đ-
ờng dẫn ra và 5 đờng dẫn vào. Do 8 đờng dẫn số liệu không phải là đờng dẫn hai chiều
nên chúng đợc xem nh là lối ra. Các lối ra khác nữa là:
8
Thanh ghi mã
W = 1 W = 0
AX AL 000
BX BL 011
CX CL 001
DX DL 010
SP SH 100
DI BH 111
BP CH 101
SI DH 110
Thanh ghi đoạn mã
CS 01
DS 11
ES 00
SS 10
Máy tính Máy in
STROBE, AUTO FEED(AF),INIT,SELECT IN (SLECTIN). Khi trao đổi thông
tin với máy in,các đờng dẫn này có những chức năng xác định.
Thí dụ: INT=0 thực hiện một quá trình khởi động lại(RESET) ở máy in, còn
STROBE có nhiệm vụ ghi các bit số liệu đã đợc gửi đến máy in bằng một xung mức
thấp vào trong bộ nhớ của máy in.
Chân Kí hiệu Vào/ra Mô tả

1 STROBE Lối ra (Output) : byte đợc in
2 D
0
Lối ra Đờng dữ liệu D
0
3 D
1
Lối ra Đờng dữ liệu D
1
4 D
2
Lối ra Đờng dữ liệu D
2
5 D
3
Lối ra Đờng dữ liệu D
3
6 D
4
Lối ra Đờng dữ liệu D
4
7 D
5
Lối ra Đờng dữ liệu D
5
8 D
6
Lối ra Đờng dữ liệu D
6
9 D

7
Lối ra Đờng dữ liệu D
7
10 ACK Lối vào (Input) Acknowledge(xác
nhận)
11 BUSY Lối vào 1 : Máy in bận
12 DE Lối vào Select (lựa chọn)
13 SLCT Lối vào Auto Feed (tự nạp)
14 AF Lối ra Error (lỗi)
15 ERROR Lối vào 0 : Đặt lại máy in
16 INIT Lối ra Select in
17 SLCTIN Lối ra Nối đất
18 GND
19 GND
20 GND
21 GND
22 GND
23 GND
24 GND
25 GND
25

Hình 2.2: Phân bố chân cổng máy in
9




14
1 13

Cổng máy in cũng có những chân dẫn lối vào nhờ vậy mà sự bắt tay giữa máy in
và máy tính đợc thực hiện. Thí dụ khi tắt máy in không còn đủ chỗ trong bộ nhớ thì
máy in sẽ gửi đến máy tính một bit trạng thái (BUSY = 1), điều đó có nghĩa là máy in
tại thời diểm này đang bận, không nên gửi thêm các byte số liệu khác đến nữa.
Khi hết giấy ở máy in thì máy tính sẽ thông báo là Paper Empty (PE). Đờng dẫn
nối vào tiếp theo là Acknowledge (ACK), Select (SLCT) và Error. Tổng cộng có 5 lối
vào hớng tới máy in.
b Trao đổi với các đờng dẫn tín hiệu:
Tất cả các đờng dẫn tín hiệu vừa đợc giới thiệu cho phép trao đổi qua các địa chỉ
bộ nhớ của máy tính. 17 đờng dẫn của cổng máy in sắp xếp thành 3 thanh ghi là thanh
ghi số liệu, thanh ghi trạng thái và thanh ghi điều khiển. Hình 2.3 chỉ ra các sự sắp xếp
của các đờng dẫn tín hiệu tới các bit số liệu riêng biệt của thanh ghi.
Thanh ghi số liệu (Địa chỉ cơ bản)
D7 D6 D5 D4 D3 D2 D1 D0
D
0
(Pin 2)
D
1
(Pin 3)
D
2
(Pin 4)
D
3
(Pin 5)
D
4
(Pin 6)
D

5
(Pin 7)
D
6
(Pin 8)
D
7
(Pin 9)
Hình 2.4(a)
Thanh ghi trạng thái (địa chỉ cơ bản + 1)
Error (Pin 15)
SLCT (Pin 13)
PE (Pin 12)
ACK (Pin 10)
BUSY (Pin 11)
Hình 2.4(b)
Thanh ghi điều khiển (địa chỉ cơ bản)

D7 D6 D5 D4 D3 D2 D1 D0
Hình 2.4(c)
Hình 2.4 Các thanh ghi ở cổng máy in của máy tính
Địa chỉ cơ bản đồng nhất với thanh ghi số liệu. Thanh ghi trạng thái đợc đạt tới địa chỉ
cơ bản + 1. Thanh ghi điều khiển với bốn đờng dẫn đặt dới địa chỉ
cơ bản + 2
2.1.2: Giao diện RS 232 (Cổng nối tiếp):
a) Cấu trúc cổng nối tiếp:
10





14 25
1 13
D
7
D
6
D
5
D
4
D
3
D
2
D
1
D
0
STROBE(Pin 1)
AUTO FEED(Pin14)
INIT(Pin 16)
SLCTIN(Pin 17)
IRQ Enable
Hình 2.5 Sơ đồ bố trí chân cổng nối tiếp.
Loại 9 chân Loại 25 chân Chức năng Hớng
1 8 DCD Data carrier Detect Lối vào
2 3 RxD Receive Data Lối vào
3 2 TxD Transmit Data Lối ra
4 20 DTR Data Terminal Ready Lối ra

5 7 GND Mass
6 6 DSR Data Set Ready Lối vào
7 4 RST Request to Send Lối ra
8 5 CTS Clear to Send Lối vào
9 22 RI Ring Indicator Lối vào
Cổng nối tiếp RS 232 là giao diện phổ biến rộng rãi nhất. Ngời ta gọi cổng COM
1, cổng COM 2 để tự do cho các ứng dụng khác. Giống nh cổng máy in, cổng nối tiếp
RS 232 cũng đợc sử dụng một cách thuận tiện cho mục đích đo lờng và điều khiển.
Việc truyền số liệu qua cổng RS 232 đợc tiến hành theo cách nối tiếp, nghĩa là
các bit số liệu đợc gửi đi nối tiếp nhau có khả năng dùng cho khoảng cách xa, bởi vì các
khả năng gây nhiễu là nhỏ đáng kể khi dùng một cổng song song.
Việc dùng cổng song song có nhợc điểm là cáp truyền dùng nhiều sợi và mức tín
hiệu trong khoảng 0 đến 5V tỏ ra không thích hợp với khoảng cách xa.
Cổng nối tiếp RS 232 không phải là một hệ thống bus, nó cho phép dễ dàng tạo
ra liên kết dới hình thức điểm giữa hai máy cần trao đổi thông tin với nhau. Sự bố trí
chân của cổng RS 232 ch hình 2.5
Việc truyền số liệu xảy ra ở trên hai đờng dẫn. Qua chân cắm ra TxD, máy tính
gửi các số liệu của nó đến máy kia. Trong khi đó số liệu mà máy tính nhận đợc lại đựơc
dẫn đến chân nối RxD. Các tín hiệu khác đóng vai trò nh là tín hiệu hỗ trợ khi trao đổi
thông tin và vì thế không phải trong mọi ứng dụng đều dùng đến.
Mức tín hiệu trên chân ra RxD tuỳ thuộc voà đờng dẫn TxD và thông thờng nằm
trong khoảng 12V đến +12V. Các bit số liệu đợc gửi đảo ngợc lại. Mức điện áp đối
với mức cao nằm giữa 3V và -12V còn mức thấp nằm giữa +3V và +12V. trên hình
2.6 mô tả một dòng số liệu điển hình một số byte số liệu trên cổng nối tiếp RS 232.
Start bit Stop
12 V Low
D
0
D
1

D
2
D
3
D
4
D
5
D
6
D
7
-12V High
1 1 0 1 0 0 1 0
Hình 2.1 Dòng số liệu trên cổng RC 232
Khi ở trạng thái trên đờng dẫn có điện á -12V. Một bit khối động (start bit) sẽ
mở đầu việc truyền số liệu. Tiếp đó là các bit số liệu riêng lẻ sẽ đến, trong đó những bit
giá trị thấp sẽ đợc giữ trớc tiên. Các bit số liệu có thể thay đổi từ 5 đến 8. Cuối cùng số
liệu còn có 1 bit dừng (stop bit) để đặt lại trạng thái lối ra (-12V).
Bằng tốc độ Baund ta có thể thiết lập đợc tốc độ truyền. Thông thờng là 300,
600, 1200, 2400, 9600 và 19.200 baud. Nhợc điểm của cổng truyền nối tiếp là tốc độ
truyền bị hạn chế và khuôn mẫu truyền số liệu cần phải đợc thiết lập nh nhau cả ở bên
nhận cũng nh bên gửi.
11
b Trao đổi đờng dẫn tín hiệu:
Cũng nh cổng máy in, các đờng dẫn tín hiệu riêng biệt cũng cho phép trao đổi
qua các địa chỉ trong máy tính. Trong trờng hợp này, ngời ta thờng sử dụng những vi
mạch có mức độ tích hợp cao. Bên trong máy tính thờng có bộ phát nhận không đồng
bộ vạn năng (gọi tắt là UART: Universal ansychronous Receive/Transmiter) để điều
khiển sự trao đổi thông tin giữa máy tính và thiết bị ngoại vi. Phổ biến nhất là vi mạch

8250 hay 16C550. Bộ UART có 10 thanh ghi để điều khiển tất cả các chức năng của
việc thâm nhập vào ra số liệu theo cách nối tiếp.
Có hai thnah ghi đáng quan tâm là thanh ghi modem và thanh ghi trạng thái
modem. Sự sắp xếp của các thanh ghi này nh sau;
Thanh ghi trạng thái modem (địa chỉ cơ bản +4)
Bit 0 : DTR (lối ra) Giá trị 1
Bit 1 : RTC (lối ra) Giá trị 2
Thanh ghi trạng thái modem
Bit 4 : CTS (lối vào) Giá trị 16
Bit 5 : DSC (lối vào) Giá trị 32
Bit 6 : RI (lối vào) Giá trị 64
Bit 7 : DCD (lối vào) Gias trị 128
Các thanh ghi đợc trao đổi qua ô nhớ trong vùng vào ra. Địa chỉ đầu tiên có thể tới
đợc của cổng nối tiếp đợc gọi là địa chỉ cơ bản. Các địa chỉ ghi tiếp theo đợc đạt tới
bằng việc cộng thêm số thanh ghi đã gặp của bộ UART vào điạ chỉ cơ bản.
2.1.3 Giao diện qua Slot máy tính:
a) Cấu trúc Slot máy tính:
Máy tính cung cấp các slot (rãnh cắm) đợc xem nh các cổng cào/ra. ở máy tính
XT rãnh cắm trong máy tính chỉ có một loại với độ rộng bus là 8 bit và tuân theo chuẩn
ISA (Industry Standard Architecture). Từ máy tính AT trở đi việc bố trí chân trên rãnh
cắm trở lên phức tạp hơn, tuỳ theo tiêu chuẩn đợc lựa chọn khi chế tạo máy tính. Các
loại rãnh cắm theo những tiêu chuẩn khác nhau gồm có:
- Rãnh cắm theo tiêu chuẩn ISA.
- Rãnh căm PS/2 với 16 bit theo tiêu chuẩn MCA (Micro Channel Archhitecture)
- Rãnh cắm PS/2 với 32 bit theo tiêu chuẩn EISA (Extended Industry Standard
Architecture).
- Rãnh cắm 32 bit theo tiêu chuẩn VESA VLB (VESA Local BUS Standard).
- Rãnh cắm 32 bit theo tiêu chuẩn PCI (Peripheral Component Interconect Standard).
Cho đến nay phần lớn các card ghép nối dùng trong kỹ thuật đo lờng và điều
khiển đều đợc chế tạo để đặt vào rãnh cắm theo tiêu chuẩn ISA. Theo tiêu chuẩn này

rãnh cắm có 62 đờng tín hiệu dùng cho mục đích thông tin với một Card cắm vào. Về
cơ bản các đờng tín hiệu này đợc chia thành các đờng dẫn tín hiệu, đờng dẫn địa chỉ và
đờng dẫn điều khiển. Chỉ những Card 8 bit mới đợc cắm vào rãnh này. hình 2.11 cho
thấy mỗi rãnh cắm gồm có 62 chân chia làm 2 hàng, mỗi hàng có 31 chân đợc đánh số
từ A
1
đến A
31
và B
1
đến B
31
.

12
GND
Reset DRV
+ 5V
IRQ 2
- 5V
DRQ 2
- 12V
DWS
+ 12V
GND
SMEMW
SMEMR
OW/I
OR/I
3DACK

DRQ 3
DACK 1
REF
CLOCK
IRQ 7
IRQ 6
IRQ 5
IRQ 4
IRQ 3
2DACK
T/C
ALE
+ 5V
OSC
GND
I/O CHCK
SD 7
SD 6
SD 5
SD 4
SD 3
SD 2
SD 1
SD 0
I/O CHRDY
ALEN
SA 19
SA 18
SA 17
SA 16

SA 15
SA 14
SA 13
SA 12
SA 11
SA 10
SA 9
SA 8
SA 7
SA 6
SA 5
SA 4
SA 3
SA 2
SA 1
SA 0
Hình 2.11: Sơ đồ rãnh cắm ổ 2 chân
* SA0 - SA19: 20 đờng địa chỉ để đánh địa chỉ thiết bị I/O, bộ nhớ.
* SD0 SD7: 8 đờng số liệu dùng để truyền số liệu giữa bộ nhớ và ngoại vi.
* OSC: dao động có tần số 14,31818 MHz, chu kỳ xấp xỉ 70ns.
* CLK : Có tần số 4,77 MHz với chu kỳ 210ns, CLK dùng cho thao tác đọc ghi, trạng
thái chờ và dùng trong việc lấy mẫu.
* RESET DRV: Dùng để Reset hệ thống, tín hiệu này đợc tích cực ở mức cao.
* ALE (Address Latch Enable): Dùng để kiểm tra kênh vào ra và thông báo cho bộ vi
xử lý biết về thông tin bộ nhớ hay các thiết bị I/O nhằm phát hiện ra các sai số chẵn lẻ
trên Card giao tiếp.
* I/O CHRDy (I/O channel ready): Khi ở mức thấp nó sẽ kéo dài chu kỳ BUS vì bộ nhớ
hoặc ngoại vi không đáp ứng trong chu kỳ bình thờng.
* I/OR: Tín hiệu này cho biết thiết bị vào ra số liệu từ thiết bị ngoại vi lên Data bus. Tín
hiệu này tích cực ở mức thấp.

* I/OW: Tín hiệu này báo cho biết ngoại vi cần số liệu trên tuyến Data bus, tín hiệu này
tích cực ở mức thấp.
* MEMR: Chỉ thị bộ nhớ để đa số liệu của nó trên Data bus. Tín hiẹu này tích cực ở
mức thấp.
* MEMW: Chỉ thị bộ nhớ chứa số liệu trên Data bus. Tín hiệu này tích cực ở mức thấp.
* IRQ2 IRQ7: Các tín hiệu này tạo nên yêu cầu ngắt đối với bộ vi xử lý chúng
trực tiếp đến bộ điều khiển ngắt 8259 theo thứ tự tín hiệu IRQ2 có mức u tiên cao
nhất và IRQ7 có mức u tiên thấp nhất.
13
* DRQ1, DRQ2, DRQ3: Các tín hiệu này dùng để báo khi thiết bị ngoại vi muốn
chuyển số liệu giữa chúng và bộ nhớ mà không có sự can thiệp của bộ vi xử lý. Tín hiệu
này tác động ở mức cao.
* DACK1, DACK2, DACK3: Để báo cho biết thiết bị ngoại vi qúa trình DMA đã chấp
nhận tín hiệu này tác động ở mức thấp.
* AEN (Address Enable): Tín hiệu này đợc phát ra từ bộ điều khiển DMA, nó tác động
ở mức cao.
* TC (Terminal Count): Tín hiệu này tạo ra một xung. Khi bộ đếm đếm đến cuối của
một kênh DMA nào đó đạt đén giá trị định trớc, tín hiệu tích cực ở mức cao.
* CARD CLCTD (Card selected): Đờng này đợc tích cực bởi Card trong rãnh cắm mở
rộng thứ 8. Nó báo cho tấm hệ thống là card đã đợc chọn và tấm hệ thống sẽ trực tiếp
đọc hoặc ghi vào rãnh cắm thứ 8.

2.1.4. Chọn địa chỉ cho card giao tiếp:
Vùng vào ra của máy tính đã chiếm giữ 64 kbyte của bộ nhớ tổng cộng với dung
lợng hàng vài Mbyte trở lên. Vì vậy vùng vào ra của một card không đợc phép bao trùm
lên vùng địa chỉ vào/ra của máy tính.
Bảng dới đây sẽ chỉ ra sự sắp xếp của vùng địa chỉ vào/ra của máy tính PC/AT.
Địa chỉ (Hex) I/O Chức năng
000 01F Bộ điều khiển DMA 1 (8232)
020 03F Bộ điều khiển ngắt (8259)

040 01F Bộ phát thời gian (8259)
060 06F Bộ kiểm tra bàn phím (8242)
070 07F Đồng bộ thời gian thực (M146818)
080 09F Thanh ghi trong DMA (LS670)
0A0 0AF Bộ điều khiển DMA 2 (8237)
0E0 0EF Dự trữ cho mảng mạch chính.
0F8 0FF Bộ đồng xử lý 80ì87
1F0 1F8 Bộ điều khiển đĩa cứng.
200 20F Cổng dùng cho trò chơi Game
278 27F Cổng song song 2 (LPT 3)
2B0 2DF Card EGA 2
2E8 2EF Cổng nối tiếp 4 (COM 4)
2F8 2EF Cổng nối tiếp 2 (COM 2)
300 31F Dùng cho card mở rộng
320 32F Bộ điều khiển đĩa cứng
360 36F Cổng nối mạng (LAN)
378 37F Cổng song song 1 (LPT 1)
380 38F Cổng nối tiếp đồng bộ 2
3A0 3AF Cổng nối tiếp đồng bộ 1
3B0 3B7 Màn hình đơn sắc
3C0 3CF Card EGA
3D0 3EF Cổng nối tiếp 3 (COM 3)
3F0 3F7 Bộ điều khiển đĩa mềm
3F8 3FF Cổng nối tiếp 1 (COM 1)
Các địa chỉ 300(H) đến 31F(H) đã đợc dự tính cho các card mở rộng. Các đờng
dẫn địa chỉ đợc sử dụng đối với vùng này là A
0
đến A
9
. Thông thờng thì các địa chỉ, mà

dới các địa chỉ này máy tính có thể trao đổi đợc với Card mở rộng, có thể đặt đợc ở
chính trên Card.
2.2.1. Các chuẩn truyền thông trong điều khiển:
Các chuẩn điển hình:
Chuẩn Tơng đơng ISO/CCITT Mô tả
EIARS_232 CCITTV.28 Truyền nT tới trên 20Kps/20m
EIARS_423 CCITTV.11 Truyền nT tới trên 10Mbps/1200m
EIARS_423 CCRTTV.10 Truyền nT tới trên 300Kbps/1200m
14
ANSIX3T9.5 Mạng LAN: Cáp quang EDDI chuẩn
IEEE802.2 ISO8802.2 Mạng LAN:IEEE chuẩn cho điều khiển m
mối liên kết logic
IEEE802.4 ISO8802.4 Mạng LAN: Chuẩn thẻ bài trong một mạn
mạng vòng với thẻ
IEEE802.5 ISO8802.5 Mạng LAN: Tôpô vòng với thẻ
CCITTX.21 Mạng WAN: Ghép nối lớp vật lý với PSDN
HDL.CCITT Mạng WAN: ghép nối lớp dữ liệu với PSDN
X.212/222
CCITTX.25 Mạng WAN: Ghép nối lớp mạng với PSDN
CCITT 1430/1 Mạng số dịch vụ tích hợp: Ghép nối lớp vật lý tới một mạng số
dịch vụ tích hợp
CCITT 1440/1 Mạng số dịch vụ tích hợp: Ghép nối
lớp dữ liệu với một mạng số dịch vụ tích hợp.
CCITT 14450/1 Mạng số dịch vụ tích hợp: Ghép nối lớp mạng với một mạng số
dịch vụ tích hợp
Các cơ quan lập tiêu chuẩn:
Có 6 cơ quan xây dựng tieu chuẩn quốc tế đã tiến hành qui định và xây dựng các
chuẩn áp dụng cho các hệ thống truyền thông dữ liệu.
Đó là:
1- Tổ chức quốc tế và tiêu chuẩn hoá (ISO: International Organzation Standardization)

2- Uỷ ban t vấn quốc tế về điện thoại và viễn thông (CCITT)
3- Hiệp hội các nhà công nghiệp điện (EIA: Electrical Indutries Association)
4- Liên đoàn viễn thông quốc tế (ITU: Internation Telecommunications Union)
5- Viện tiêu chuẩn quốc gia Hoa Kỳ (ANSI: American National Standards Institute)
6- Viện các kỹ s điện và điện tử (IEEE - Institute of Electrical and Electronic
Engineers)
2.3. Các phơng pháp trao đổi dữ liệu điều khiển.
2.3.1. Giới thiệu chung về các phơng pháp điều khiển vào/ra dữ liệu
Có thể phân biệt ra làm 3 phơng pháp điều khiển vào/ra dữ liệu:
Vào /ra dữ liệu điều khiển bằng cách thăm dò trạng thái sẵn sàng của thiết bị
ngoại vi
Vào /ra dữ liệu điều khiển bằng cách ngắt bộ vi xử lý.
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 vào bộ nhớ.
Mỗi phơng pháp điều khiển vào/ra dữ liệu nói trên có những đặc điểm khác nhau
và sẽ đợc ứng dụng trong các hoàn cảnh khác nhau.
2.3.2. Vào/ra dữ liệu bằng phơng pháp thăm dò:
Vấn đề điều khiển vào/ra dữ liệu sẽ trở thành 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 với CPU. Ví dụ, bộ phân đo nhiệt số
(nh là một thiết bị vào) lắp sẵn trong một hệ thống điều khiển lúc nào cũng có thể cung
cấp số đo về nhiệt độ của đối tợng cần điều chỉnh, còn một bộ đèn LED 7 nét (nh là
một thiết bị ra) dùng để chỉ thị một giá trị nào đó của một đại lợng vật lý nhất định
trong hệ thốngtrong hệ thống nói trên thì lúc nào cũng có thể biểu hiện thông tin đó.
Nh vậy, khi CPU muốn có thông tin về nhiệt độ của hệ thống thì nó chỉ việc đọc cổng
phối ghép với bộ đo nhiệt độ, và nếu CPU muốn biểu diễn thông tin vừa đọc đợc trên
đèn LED thì nó chỉ việc đa tín hiệu điều khiển tới đó mà không phải kiểm tra xem các
thiết bị này có đang sẵn sàng làm việc hay không.
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 đối tợng
"liên tục sẵn sàng" nh trên. Thông thờng khi CPU muốn làm việc vơi một đối tợng nào
đó, trớc tiên nó phải kiểm tra xem thiết bị đó có đang ở trạng thái sẵn sàng làm việc
hay không , nếu có thì nó mới thực hiện việc trao đổi dữ liệu. Nh vậy, nếu làm việc theo

phơng pháp thăm dò thì hệ thông thờng CPU phải đợc dành riêng cho 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
15
tÝn hiÖu mãc nèi (handshake signal). C¸c tÝn hiÖu nµy ®îc lÊy tõ m¹ch phèi ghÐp, do
ngêi thiÕt kÕ t¹o ra, ®Ó ch¬ng tr×nh th¨m dß ho¹t ®éng trªn ®ã.
16

Một cổng vào số 0 (Có địa chỉ 00) đợc dùng để đọc trạng thái sẵn sàng của 2
thiết bị ngoại vi nói trên. Tín hiệu sẵn sàng của thiết bị ngoại vi số 1 (cổng vào 01) đ ợc
đặt vào bit D
0
, tín hiệu sẵn sàng của thiết bị ngoại vi só 2 (cổng vào 02) đợc đặt vào bit
D
1
. Các thiết bị này sẽ có giá trị 1 khi thiết bị ngoại vi tơng ứng ở trạng thái sẵn sàng
làm việc 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 vào số 0.
Mô tả hoạt động của phần mạch vào dữ liệu.
Khi thiết bị vào số 1 có 1 byte số liẹu cần trao đổi, nó đa ra xung STB để cho
phép mạch chốt 8 bit lấy byte 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. CPU sẽ thăm dò trạng thái sẵn sàng của thiết bị vào số 1 qua bit D
0
khi nó đọc cổng D
0.
Đến khi CPU đọc 1 byte dữ liệu vào thì nó đồng thời xoá luôn
mạch tạo trạng thái sẵn sàng để chuẩn bị cho lần làm việc tới với 1 byte dữ liệu khác.
17
Mạch 3
trạng
thái

OC
Chốt 8
bít
G
Thiết
bị 1
(vào)
STB
Chốt 8
bít
Mạch 3
trạng
thái
Thiết
bị 2
(ra)
STB
Pr
D
Q
CLK
clr
OSPO2
OSPO2
ISPO1
ISPOO
Pr
q
clk
clr

Vòng Vòng
thăm dò thăm dò
Sai Sai
Đúng Đúng
Sai Sai
Đúng Đúng
a) Đọc dữ liệu từ cổng 01 b) Ghi dữ liệu ra cổng 02
Hình 2.3.2 - Lu đồ chu trình đọc và ghi dữ liệu
2.3.3 - Vào/ra dữ liệu bằng DMA:
Để trao đổi dữ liệu thật nhanh với thiết bị ngoại vi: nh khi cần đa dữ liệu hiển thị
ra màn hình hoặc trao đổi dữ liệu với bộ điều khiển, ta cần có đợc khả năng ghi/ đọc dữ
liệu trực tiếp với bộ nhớ (direct memory access, DMA - thâm nhập vào bộ nhớ trực tiếp
không thông qua CPU) thì mới đáp ứng đợc yêu cầu về tốc độ trao đổi dữ liệu. Để làm
đợc điều này các hệ vi xử lý nói chung đều phải dùng thêm mạch chuyên dụng để điều
khiển việc thâm nhập trực tiếp vào bộ nhớ
(direct memory access controller, DMAC).
Để hỗ trợ cho việc trao đổi dữ liệu với thiết bị ngoại vi bằng cách thâm nhập trực
tiếp vào bộ nhớ, tại mỗi vi mạch CPU thờng tồn tại chân yêu cầu treo HOLD để thiết bị
ngoại vi, mỗi khi có yêu cầu dùng bus cho việc trao đổi dữ liệu với bộ nhớ thì thông
qua chân này mà báo cho CPU biết . Đến lợt CPU khi nhận đợc yêu cầu treo thì nó tự
treo lên (tự tách ra khỏi hệ thống bằng cáh đa các bus vào trạng thái trở kháng cao) và
đa xung HLDA ra ngoài để thông báo CPU cho phép sử dụng bus.
Hình 2.3.3 - Hệ vi xử lý với DMAC
18
Đọc cổng 00
Đọc cổng 01
Đọc cổng 00
Đọc cổng 02
Bắt đầu Bắt đầu
Bit D

0
=1? Bit D
1
=1?
Hết số liệu
Hết số liệu
Kết thúc
Kết thúc
CPU
HOLD
HLDA
DMAC I/O
DRQ
DACK
MEM
Ta nhận thấy trong hệ thống này, khi CPU tự tách ra khỏi hệ thống bằng việc tự
treo (ứng với vị trí hiện thời cảu công tắc chuyển mạch) để trao quyền sử dụng bus cho
DMAC thì DMAC phải chịu trách nhiệm diều khiển toàn bộ hoạt động trao đổi dữ liệu
của hệ thống. Để làm đợc điều đó DMAC phải có khả năng tạo ra đợc các tín hiệu điều
khiển cần thiết giống nh các tín hiệu của CPU và bản thân nó phải là một thiết bị lập
trình đợc.
Quá trình hoạt động của hệ thống;
Khi thiết bị ngoại vi có yêu cầu trâo đổi dữ liệu kiểu DMA với bộ nhớ, nó đa yêu
cầu DRQ = 1 đến DMAC, DMAC sẽ đa yêu cầu trao đổi HRQ = 1 đến chân HOLD của
CPU. Nhận đợc yêu cầu treo, CPU sẽ treo các bus của mình và trả lời chấp nhận treo
qua tín hiệu HLDA = 1 đến chân HACK của DMAC. DMAC sẽ thông báo cho thiết bị
ngoại vi thông qua tín hiệu DACK = 1 là nó cho phép thiết bị ngoại vi trao đổi dữ liệu
kiểu DMA. Khi qúa trình DMA kết thúc thì DMAC đa ra tín hiệu HRQ = 0.
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 dữ liệu.
- Treo CPU để trao đổi từng byte.
- Tận dụng thời gian không dùng bus của CPU để trao đổi dữ liệu.
Trao đổi cả một mảng dữ liệu:
Trong chế độ này CPU bị treo trong suốt quá trình trao đổi mảng dữ liệu. Chế độ
này đợc dùng khi ta 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 thủ tục để chuyển một mnảg dữ liệu từ bộ nhớ ra thiết bị ngoại vi:
1. CPU phải 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 thiết bị ngoại vi có yêu cầu trao đổi dữ liệu, nó đ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 dữ liệu.
4. Nhận đợc yêu cầu treo, CPU kết thúc chu kỳ bus hiện tại sau đó nó treo cá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 thiết bị ngoại vi biết là có thẻ bắt đầu
trao đổi dữ liệu.
6. DMAC bắt đầu chuyển dữ liệu từ bộ nhớ ra thiết bị ngoại vi bằng cách đa địa
chỉ của byte đầu ra bus địa chỉ và đa ra tín hiệu
MEMR
=0 để đọc 1 byte từ bộ nhớ ra
bus dữ liệu. Tiếp đó DMAC đa ra tín hiệu
IOW
= 0 để ghi dữ liệu ra thiết bị ngoại vi,
DMAC sau đó giảm bộ đếm số byte còn phải chuyển, cập nhật địa chỉ của byte cần đọc
tiếp, và lặp lại các động tác trên cho tới khi hết số đếm (TC).
7. Khi quá trình DMA kết thúc, DMAC cho ra tín hiệu HRQ = 0 để báo cho
CPU biết để CPU giành quyền điều khiển hệ thống.
Treo CPU để trao đổi từng byte:
Trong cách trao đổi dữ liệu này CPU không bị treo lâu dài trong một lần nhng
thỉnh thoảng lại bị treo trong một khoảng thời gian rất ngắn đủ để trao đổi 1 byte dữ

liệu (CPU bị lấy mất một số chu kỳ đồng hồ). Do bị lấy đi một số chu kỳ đồng hồ nh
vậy 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 bị
dừng lại. Cách hoạt động cũng tơng tự nh phần trớc, chỉ có điều môic lần DMAC yêu
cầu treo CPU thì chỉ có 1 byte đợc trao đổi.
Tận dụng thời gian CPU không dùng bus để trao đổi dữ liệu:
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) và tận dụng
các chu kỳ đó vào việc trao đổi dữ liệu giữa thiết bị ngoại vi với bộ nhớ. Trong cách làm
này thì 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 bình thờng của CPU.
2.4 - Ngắt và điều khiển ngắt trong điều khiển truyền thông:
2.4.1 - Sự cần thiết phải ngắt CPU:
19
Trong cách tổ chức trao đổi dữ liệu thông qua việc thăm dò trạng thái sẵn sàng
của hitết bị ngoại vi, trớc khi tiến hành bất kỳ một cuộc trao đỏi dữ liệu nào CPU phải
để toàn bộ thời gian vào việc xác định trạng thái sẵn sàng làm viẹc của thiết bị ngoại vi.
Trong hệ thống VXL với cách làm việc nh vậy, thông thờng CPU đợc thiết kế chủ yếu
chỉ là để phục vụ cho việc vào/ra dữ liệu và thc hiện các xử lý liên quan.
Trong thực tế ngời ta rất muốn tận dụng khả năng của CPU để làm thêm đợc
nhiều công việc khác nữa, chỉ khi nào có yêu cầu trao đổi dữ liệu thì mới yêu cầu CPU
tạm dừng công việc hiện tại để phục vụ việc trao đổi dữ liệu. Sau khi hoàn thành việc
trao đổi dữ liệu thì CPU lại phải quay về để làm tiếp công việc hiện đang bị gián đoạn.
Cách làm việc theo kiểu này gọi là ngắt CPU( gián đoạn hoạt động của CPU) để trao
đổi dữ liệu. Một hệ thống với cách hoạt động theo kiểu này có thể đáp ứng rất nhanh
với các yêu cầu trao đổi dữ liệu trong khi vẫn có thể làm đợc các công việc khác. Muốn
đạt đợc điều này ta phải có cách tổ chức hệ thống sao cho có thể tận dụng đợc khả năng
thực hiện các chơng trình phục vụ ngắt tại các địa chỉ xác định của CPU.
2.4.2-Các loại ngắt trong hệ 8088:
Trong hệ vi xử lý 8088 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 ỉNT và NMI.
Ngắt cứng NMI là yêu cầu ngắt không che đợc tơng đơng với ngắt mềm INT2.
Các lệnh CLI ( xoá cờ IF) và STI (lập cờ IF) không ảnh hởng đến việc nhận biết tín hiệu
yêu cầu ngắt NMI.
Ngắt cứng INTR là yêu cầu ngắt che đợc.Các lệnh CLI và STI có ảnh hởng trực
tiếp tới trạng thái của cờ IF trong bộ vi xử lý , tức là ả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. Yêu cầu ngắt tại chân INTR có thể có kiểu ngắt N
nằm trong khoảng 0 - 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.
+ Nhóm các ngắt mềm: Khi CPU thực hiện các lệnh ngắt dạng INTR, trong đó N
là số hiệu (kiểu) ngắt nằm trong khoảng 00 - FFH (0 - 255).
+ Nhóm các hiện tợng ngoại lệ: Đó là các ngắt do 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.
+ Yêu cầu ngắt sẽ đợc CPU kiểm tra thờng xuyên tại chu dồng hồ cuối cùng của
mỗi lệnh.
20
N
(Kiểu
ngắt)
ALE
CLOCK
8088 AD0
AD1
AD7
OC1
LS244
OC2
INTA
Giả thiết ở một thời điểm nhất định chỉ có 1 yêu cầu ngắt 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à khi nó đa ra tín hiệu trả lời
INTA
.
Hình 2.4.3: Quan hệ giữa Iri và số hiệu ngắt N
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 EDH (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 BEH (191)
2 4.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, CPU
thực hiện các công việc sau:
1. SP

SP - 2,
}{
,FRSP
trong đó
}{
SP
là ô nhớ do SP chỉ ra (chỉ ra đỉnh mới của
ngăn xếp, cất thanh ghi cờ vào đỉnh ngăn xếp).
2. IF
0
, TF


0.
(Cấm ngắt khác tác động vào CPU, cho CPU chạy ở chế độ bình thờng).
3. SP

SP - 2,
}{
SP

CS.
(Chỉ ra đỉnh mới của ngăn xếp, cất phần địa chỉ đoạn của đại chỉ trở về vào đỉnh ngăn
xếp)
4. SP

SP - 2,
}{
SP
IP.
(Chỉ ra đỉnh mới của ngăn xếp, cất phần điạ chỉ lệch của địa chỉ trở về vào đỉnh ngăn
xếp).
5.
{
}
4N
*

IP,
{
N
*

4 + 2
}

CS.
(Lờy lệnh tại địa chỉ mới của chơng trình con phục vụ ngắt. Kiểu N tơng ứng trong
bảng véctơ ngắt).
6. 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
(Bộ vi xử lý quay lại chơng trình chính tại địa chỉ trở về và với giá trị cũ của thanh ghi
cờ lấy ra từ ngăn xếp).
2.4.4 - Xử lý u tiên khi ngắt:
21
IR0
IR6
INTR
Có một vấn đề rất thực tế đặt ra là nếu tại cùng một thời điểm có cùng yêu cầu

ngắt thuộc các loại ngắt khác nhau cùng đòi hỏi CPU phục vụ thì CPU xử lý các 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 cao nhất sẽ đợc CPU nhận biết và đợc phục cụ trớc.
Các mức u tiên ngắt (theo thứ tự từ cao tới thấp):
Mức u tiên
+ Ngắt nội bộ: INTO (phép chia cho 0), INTN, INTO Cao nhất
+ Ngắt không che đợc NMI
+ Ngắt che đợc INTR
+ Ngắt để chạy từng lệnh INT 1 Thấp nhất
Để thấy rõ hoạt động của CPU trong cơ chế ngắt u tiên này ta có thể lấy một ví
dụ cụ thể nh sau:
Giả thiết tại một thời điểm nào đó, trong khi CPU (ở trạng thái cho phép ngắt với
cờ IF = 1) đang thực hiện phép chia và có lỗi xảy ra do số bị chia bằng 0, đúng vào lúc
đó CPU cũng nhận đợc yêu cầu ngắt từ đầu vào INTR. CPU sẽ xử lý nh sau:
Theo thứ tự u tiên ngầm định trong việc xử lý ngắt của CPU 8088 thì INT 0 có
mức u tiên cao hơn INTR, vì vậy đầu tiên CPU sẽ thực hiên chơng trình phục vụ ngắt
INT 0 để đáp ứng với lỗi đặc biệt do phép chia cho 0 gây ra và cờ IF bị xoá về 0. yêu
cầu ngắt INTR sẽ tự động bị cấm cho đến khi chơng trình phục vụ ngắt INT 0 đợc hoàn
thành và trở về nhờ IRET, cờ IF cũ đợc trả lại. Tiếp theo đó CPU sẽ đáp ứng yêu cầu
ngắt INTR bằng cách thực hiện chơng trình ngắt dành cho INTR.
2.5. Cấu trúc 8255:
8255 là vi mạch giao tiếp ngoại vi lập trình đợc, thờng sử dụng cho các hệ vi tính
của INTEL. Vi mạch có 40 chân trong đó có chứa 24 đờng dẫn vào ra dợc xếp thành
cổng song song (cổng A, B, C). Tính linh hoạt của vi mạch này thể hiện ở khả năng lập
trình qua một thanh ghi điều khiển. Có sơ đồ chân nh hình 2.5.1 và sơ đồ khối nh hình
2.5.2
Hình 2.5.1 - Sơ đồ chân vi mạch 8255
22
Bộ đếm
bus

số liệu
Khối
logic
điều
khiển
Điều
khiển
nhóm A
Nhóm A
(Port B)
Nhóm B
4 bit thấp
(PortC)
Nhóm A
4 bit cao
(PortC)
Nhóm A
(Port A)
Điều
khiển
nhóm A
1
20
19
18
17
16
15
14
13

12
11
10
9
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
38
40
8
7
6
5
4
3

2
PB3
PB4
PB5
PB6
D
0
Reset
WR
PA7
PA6
PA5
PA4
PB2
PB1
PB0
PC3
PC2
PC1
PC0
PC4
PC5
PC6
PC7
A2
A1
GDN
CS
RD
PA0

PA1
PA2
PA3
D
2
D
1
D
3
D
5
D
4
D
6
D
7
PB7
+5V

D
0
- D
7
RD
RW
A1
A0
RESET
CS0

Hình 2.5.2 - Sơ đồ khối vi mạch 8255

a) Bộ đếm bus số liệu:
Bộ đệm 8 bit, 2 chiều, 3 trạng thái, dùng để giao tiếp 8255 với VXL. Số liệu đợc
phát hay nhận bởi bộ đệm thực hiện lệnh IN, OUT bởi VXL.Các từ điều khiển cũng đ-
ợc truyền qua đệm bus số liệu.
b) Khối logic điều khiển:
Chức năng của khối này là kiểm soát tất cả các sự truyền đạt bên trong và ngoài
của từ điều khiển và số liệu. Nó nhận ngỏ vào từ tuyến địa chỉ và điều khiển của VXL
và phát ra các lệnh cần thiết cho cả 2 nhóm điều khiển A và B.
- CS: Ngỏ vào tác động mức 0 cho phép truyền thông tin giữa 8255 và VXL.
- RD: Ngỏ vào tác động mức 0 cho phép 8255 gởi só liệu đến VXL trên bus số
liệu. Cho phép VXL đọc số liệu từ 8255.
- WR: Ngỏ vào tác động mức 0 cho phép VXL ghi số liệu hay từ điều khiển ra
8255.
- A0, A1: Dùng để chọn cổng.
RESET: Ngỏ vào tác động mức 1, xoá tất cả các thanh ghi bên trong 8255.
A1 A0 Chọn cổng
0
0
1
1
0
1
0
1
cổng A
cổng B
cổng C
cổng D

c) Điều khiển nhóm A và B:
Cấu hình hoạt động mỗi nhóm đợc lập trình bằng phần mềm, chủ yếu là VXL,
phát từ điều khiển đến 8255. Từ điều khiển gồm các thông tin nh chế độ (mode), bit set,
bit reset Sẽ khởi động cấu hình hoạt động của 8255. Thanh ghi điều khiển chỉ có ghi
vào mà không đọc ra.
d) Các cổng A, B, C:
Cổng A gồm bộ đệm, cài ngỏ ra 8 bit, cài ngỏ vào 8 bit.
Cổng B gồm bộ đệm, cài ngỏ ra 8 bit, cài ngỏ vào 8 bit.
Cổng C gồm đệm và cài ngỏ ra 8 bit, đệm 8 bit ngỏ vào (không cài), cổng C có
thể chia làm hai phần, mỗi phần 4 bit cho điều khiển mode.
2.5.1.Hoạt động của 8255:
Có 3 chế độ (mode) hoạt động cơ bản đợc thiết lập do phần mềm.
23
- Mode 0: vào/ra cơ bản.
- Mode 1: vào/ra một chiều có tín hiệu điều khiển.
- Mode 2: vào/ra hai chiều có tín hiệu điều khiển.
Khi reset tất cả các cổng đợc thiết lập ở chế độ nhập (input). Sau khi reset, 8255
có thể duy trì ở chế độ nhập mà không khởi động gì thêm. Trong khi thực hiện chơng
trình hệ thống có thể chọn bất kỳ mode nào bằng cách xuất đến 8255 từ điều khiển
thích hợp.
Các chế độ của cổng A, B có thể định nghĩa riêng biệt, cổng cửa C đợc chia làm
hai phần cho hai nhóm phụ thuộc vào việc định nghĩa chế độ cửa A, B. Từ điều khiển
8255 bao gồm từ điều khiển bit reset và từ điều khiển mode nh sau:
Từ điều khiển bit set - reset: chỉ dùng đối với cổng C khi nó làm tín hiệu trạng
thái, điều khiển cho cổng A hay B.
D7 D6 D5 D4 D3 D2 D1 D0
Hình 3.6 - Cấu trúc điều khiển Bit set/reset.

* Từ điều khiển Mode
D7 D6 D5 D4 D3 D2 D1 D0

24
Bit set/reset
1 =set
0 =0 reset
0 X X X
Bit select
0 1 2 3 4 5 6 7
0 1 0 1 0 1 0 1
0 0 1 1 0 0 1 1
0 0 0 0 1 1 1 1
Nhóm B
Cổng C (thấp)
1 = Lối vào
0 = Lối ra
Cổng B
1 = Lối vào
0 = Lối ra
Mode
1 = Mode1
0 = Mode 0
Nhóm A
Cổng C (cao)
1 = Lối vào
0 = Lối ra
Cổng A
1 = Lối vào
0 = Lối ra
Mode
00 = Mode 0
01 = Mode 1

0x = Mode 2
Hình 3.7 - Cấu trúc từ điều khiển mode
b) Chức năng kiểm soát ngắt:
Khi 8255 đợc lập trình ở mode 1 hay 2, các tín hiệu điều khiển đợc cung cấp có
thể đợc dùng để yêu cầu ngắt vi xử lý. Tín hiệu phát ra từ cổng C có thể bị cấm hay cho
phép bằng cách set/reset cổng C.
Chức năng này cho phép vi xử lý cấm hay cho phép các thiết bị ngoại vi đã xác
định, ngắt vi xử lý mà không làm ảnh hởng các thiết bị khác trong cấu trúc ngắt.
c) Các chế độ (mode) hoạt động:
* Mode 0 (vào/ra cơ bản):
Số liệu đợc ghi vào và đọc ra một cách đơn giản từ một cổng đã chọn trớc.
Các đặc tính cơ bản của mode 0:
- 2cổng vào/ra 8 bit và 2 cổng vào/ra 4 bit.
- Bất kỳ cổng nào cũng có thể là vào hay ra.
- Lối ra đợc cài.
- Lối vào không cài.
* Mode 1(vào/ra một chiều có điều khiển ):
Trong mode này cổng A và B dùng những đờng ở cổng C để phát hay nhận các
tín hiệu điều khiển.
+ Định nghĩa các tín hiệu bắt tay cho phần thu:
- STB (stroube input ): Lối vào tác động mức 0 dùng đẻ nạp số liệu vào 8255.
- IBF (input bufer full): Lối ra mức 1 thông báo số liệu đã đợc ghi vào 8255. Nói cách
khác mức thấp của STB se thiết lập IBF = 1 và IBF bị xoá bởi cạnh lên của RD.
- INTR (interrupt request): Lối ra mức 1 để yêu cầu ngắt vi xử lý, INTR đợc set bởi
STB = 1, IBF = 1, INTE = 1, INTR bị reset bởi cạnh xuống của RD.
- INTEA đợc kiểm soát bởi bit set/reset PC4.
- INTEB đợc kiểm soát bởi bit set/reset PC2.
+ Định nghĩa tín hiệu điều khiển cho phần phát:
- OBF (output buffer full): Lối ra mức thấp thông báo vi xử lý đã ghi số liệu ra cổng xác
định. OBF đợc set bởi cạnh lên của xung WR từ vi xử lý và bị reset bởi ACK = 0 do

ngoại vi.
- ACK (Acknowledge): Lối vào tác động mức 0 báo cho 8255 biết số liệu từ cổng A hay
cổng B đã đợc nhận bởi ngoại vi
Mode 1 cổng A Mode 1 cổng B
Từ điều khiển Mode Từ điều khiển Mode
PC6,7 (1: in; 0: out)
8 8
STBA
IBFA
INTRA
25
1 0 1 1 X X X 1 0 1 1 X X X
PA0 -
PA7
PC6,7
PC4
PC5
INTEA
PC3
PA0 -
PA7

INTEB PC2
PC1
PC0

×