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
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
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)
đâ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.
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
(
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
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
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
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
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
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
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
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
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.
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à
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
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
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:
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:
đó ở đầ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
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
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
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
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
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
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