You are on page 1of 57

CHƯƠNG 5 – GIAO TIẾP SỐ LT6

5.1 GIAO TIẾP SONG SONG


5.1.1 Nguyên lý
Các cổng vào ra song song được thực hiện theo nguyên tắc của các bộ đệm
(buffer), cài (latch) trên hình 5.1. Với cổng đệm, khi tín hiệu cho phép OC ở trạng thái
không tích cực (mức 1), ngõ ra sẽ ở trạng thái trở kháng cao, khi tín hiệu cho phép OC
tích cực (mức 0), trạng thái ngõ ra sẽ có mức logic giống trạng thái ngõ vào. Còn đối
với các cổng cài, khi tín hiệu cho phép G không tích cực, ngõ ra giữ nguyên trạng thái
hiện tại của nó, nếu tín hiệu cho phép tích cực trạng thái logic ngõ ra sẽ tương ứng với
logic ngõ vào. Trong các hệ thống vi xử lý, các bộ đệm cài này một đầu sẽ nối tới Bus
dữ liệu của CPU, đầu còn lại nối tới thiết bị, ngõ vào cho phép sẽ được nối tới ngõ ra
của giải mã địa chỉ. Khi truy cập dữ liệu, CPU cung cấp địa chỉ tương ứng làm ngõ vào
cho phép của các cổng này tích cực, sau đó nó sẽ truyền dữ liệu với thiết bị qua cổng.
Giải mã địa chỉ đảm bảo cho ứng với một giá trị địa chỉ của CPU cung cấp, chỉ có một
cổng vào ra duy nhất được cho phép hoạt động.

D Q

G
OC

Cổng đệm 3 trạng thái Cổng cài

Hình 5.1: Các thành phần tạo nên các cổng vào ra song song cơ bản.
Với nguyên tắc của các cổng đệm cài nêu trên, có rất nhiều mạch tích hợp mật độ
vừa được sản xuất sử dụng làm các cổng vào ra cơ bản trong hệ thống vi xử lý. Thông
thường các vi mạch này có 8 hoặc 16 đường vào ra, hình 5.2 mô tả cấu trúc của các vi
mạch đệm 74LS244 và cài 74LS373.

74LS244 74LS373
D0 Q0 D0
D Q Q0
.. .. ..
. . . G
..
D7 Q7
.

OC
G OC
Hình 5.2: Các vi mạch vào ra cơ bản.

122
Hình 5.3 mô tả việc giải mã địa chỉ và ghép nối một cổng ra cơ bản 8 bit điều khiển
8 led đơn trong một hệ thống vi xử lý 8088. Trên hình vẽ, các ngõ vào của các D-Flip
Flop trong vi mạch 74LS373 được nối tới bus dữ liệu của hệ thống vi xử lý. Các
đường địa chỉ và tín hiệu IOW cấp tới ngõ vào của cổng AND. Ngõ ra của cổng AND
sẽ ở mức cao khi tất cả các ngõ vào bằng 1. Và khi đó, dữ liệu từ ngõ vào 74LS373 sẽ
được chuyển tới ngõ ra làm các Led sáng tắt theo dữ liệu này. Lệnh “OUT DX,AL” sẽ
cấp tín hiệu IOW=0, giá trị của DX=F000H sẽ cung cấp tới các đường địa chỉ A15-A0,
ngõ ra cổng AND sẽ bằng 1 và dữ liệu từ AL=55H cung cấp tới các đường dữ liệu D7-
D0 sẽ được chuyển qua ngõ ra các cổng cài trong 74LS373 làm các Led sáng – tắt xen
kẽ. Khi lệnh OUT thực hiện xong, IOW trở về mức 1, cổng cài đóng lại nhưng các led
vẫn giữ nguyên trạng thái do được cấp từ chân Q của Flip-Flop.

A19
A18
:
A0

D7 D0 Q0
D6 D1 Q1
D5 D2 Q2
D4 D3 Q3
D3 D4 Q4
D2 D5
74LS373 Q5
8088 D1 D6 Q6
Minimum D0 D7 Q7
Mode
LE OE

IOR
IOW
:
mov al, 55H
mov dx, F000H
A A A A A A A A A A A A A A A A IOW out dx, al
1111119876543210
543210 :
Hình 5.3: Kết nối cổng ra cơ bản trong hệ thống vi xử lý

Hình 5.4 mô tả kết nối một cổng vào cơ bản 8 bit nhận dữ liệu từ 8 phím nhấn.
Tương tự như lệnh OUT, lệnh “IN DX,AL” sẽ cấp tín hiệu IOR=0, A15-
A0=DX=F000H làm ngõ ra cổng NAND bằng 0. Tín hiệu này sẽ mở các cổng đệm 3
trạng thái chuyển dữ liệu từ các nút nhấn vào bus dữ liệu và lấy vào trong CPU. Chú ý
không được sử dụng các mạch cài cho các cổng vào, vì dữ liệu luôn giữ ở ngõ ra mạch
cài sẽ gây xung đột bus dữ liệu khi CPU truy cập một vị trí khác trong hệ thống.

123
A19 5V
A18
:
A0

D7 A B
D6 0
A 0
B
D5 1
A 1
B
D4 2
A 2
B
D3 3
A 3
B
D2 4
A
74LS245 4B
8088 D1 5
A 5
B
Minimum D0 6
A 6
B
7 7
Mode
E DI
R
IOR
IOW :
mov dx, F000H
in al, dx
:
A A A A A A A A A A A A A A A A IOR
1111119876543210
543210

Hình 5.4: Kết nối cổng vào cơ bản trong hệ thống vi xử lý

Hình 5.5: Cấu trúc một cổng vào ra số kết hợp

Với các cấu trúc đệm cài cơ bản như trên, chúng chỉ đóng vai trò hoặc là cổng vào,
hoặc là cổng ra cơ bản. Trong các vi mạch vào ra tích hợp mật độ cao hoặc các cổng
vào ra của các bộ vi điều khiển, một cổng số thường tích hợp tích năng của cả ngõ vào
và ngõ ra, chúng sẽ có cấu trúc như mô tả trên hình 5.5. Trên hình vẽ, khi cung cấp tín
hiệu Read Pin, dữ liệu trên ngõ IO sẽ được lấy vào bên trong mạch qua cổng đệm 3
trạng thái. Khi muốn ghi một dữ liệu ra ngoài chân I/O, đặt dữi liệu cần ghi vào chân
Data và cấp tín hiệu Write. Giả sử đặt mức 0 vào chân data, sau khi cấp Write ngõ ra
124
Q của D – Flip Flop sẽ bằng 0, Q đảo bằng 1 làm MOSFET dẫn bão hoà, ngõ ra sẽ có
mức logic 0. Mạch còn có chức năng đọc lại giá trị đang được giữ tại cổng bằng cách
cung cấp tín hiệu Read Latch.

Hình 5.6: Cấu trúc một cổng vào ra số có bắt tay

Đối với các cổng vào ra cơ bản trên, khi muốn cung cấp dữ liệu tới thiết bị, CPU
chỉ đơn giản thực hiện một lệnh OUT, hoặc khi muốn nhận dữ liệu từ thiết bị CPU sẽ
thực hiện lệnh IN. Trong khi đó, có thể các thiết bị mà CPU truy cập chưa sẵn sàng
hoạt động. Ví dụ như, máy in chưa được bật nguồn thì không thể nhận dữ liệu từ CPU
để in, bàn phím không được nhấn thì không cung cấp được mã phím nhấn khi CPU
đọc. Để chắc chắn dữ liệu được truyền nhận giữa CPU và các thiết bị ngoại vi, trong
các hệ thống vi xử lý thường thiết kế thêm các mạch điện tử thực hiện các chức năng
bắt tay giữa CPU và thiết bị.
Hình 5.6 mô tả một mạch ra có tín hiệu bắt tay. Khi CPU muốn ghi dữ liệu tới thiết
bị, trước hết nó cấp địa chỉ tới bộ giải mã địa chỉ làm CS=0, cấp tín hiệu IOW=0. Hai
tín hiệu CS và IOW được đưa vào cổng NOR cấp tới LE của 74HC154 mức logic 1,
tín hiệu này sẽ mở cổng để dữ liệu từ bus dữ liệu của CPU chuyển qua 74HC574 cấp
tới thiết bị. Tín hiệu đưa tới LE cũng đồng thời đưa tới ngõ vào S của D Flip Flop, làm
ngõ ra Q của nó tác động mức 1, mức 1 này được cấp tới ngõ vào IBF của thiết bị, báo
cho thiết bị biết đã có một dữ liệu từ CPU được gởi tới cho nó. Khi thiết bị nhận dữ
liệu mà CPU đã cung cấp, nó tác động tín hiệu Strobe mức 0 để lấy dữ liệu từ trong
74HC574 ra, đồng thời Strobe cũng được đảo trạng thái cấp tới ngõ và R của D Flip-
Flop xoá tín hiệu IBF. CPU cũng có thể đọc tín hiệu IBF để xác định xem dữ liệu đã

125
được thiết bị lấy xong chưa bằng cách thực hiện lệnh IN làm IOR=0 và với địa chỉ làm
CS=0.
Để việc truyền nhận dữ liệu tốt hơn trong các hệ thống vi xử lý thường sử dụng các
vi mạch vào ra tích hợp mật độ cao với các cơ chế vào ra phức tạp hơn.

5.1.2 Cổng vào ra song song lập trình được


Các cổng vào ra lập trình trước hết cung cấp thêm các tín hiệu bắt tay với thiết bị
ngoại vi kết nối với nó, ngoài ra nó còn được tích hợp nhiều chế độ hoạt động khác
nhau mà người sử dụng có thể chọn bằng cách lập trình bằng các lệnh thích hợp trong
chương trình. Trong phần này sẽ giới thiệu bộ vào ra song song lập trình PPI 8255 của
hãng Intel được sử dụng trong hầu hết các hệ thống máy tính.
Vi mạch 8255 được gọi là mạch nối ghép vào ra lập trình được (programmable
peripheral interface – PPI) có sơ đồ khối biểu diễn trên hình 5.7.

Bus nội
Nhóm A PA0 – PA7
Điều Cổng A
khiển
Nhóm A

Nhóm A
Đệm Bus PC0 – PC3
D0 – D7 dữ liệu Cổng C
(cao)

Nhóm B
PC4 – PC7
Cổng C
Điều
RD (thấp)
Logic khiển
WR điều Nhóm B
A0 khiển
đọc ghi
A1 Nhóm B PB0 – PB7
Reset Cổng B

CS

Hình 5.7: Sơ đồ khối bộ vào ra lập trình 8255.

8255 có ba cổng vào ra song song PA, PB và PC được chia thành hai nhóm A và B
để điều khiển. Các cổng PA và PB có đệm cài cả ngõ vào và ngõ ra, còn cổng PC đệm
cài ngõ ra, ngõ vào chỉ có đệm. Các cổng có các chế độ hoạt động khác nhau phụ

126
thuộc vào sự điều khiển của các bộ điều khiển nhóm A và B. Bộ đệm Bus dữ liệu
tương thích mức logic giữa CPU và thiết bị, đồng thời đóng vai trò kiểm soát việc
truyền dữ liệu giữa các cổng vào ra và CPU. Khối logic điều khiển đọc ghi cung cấp
tín hiệu chọn cổng và chọn chiều truyền dữ liệu tương ứng theo trạng thái của các tín
hiệu điều khiển ngõ vào như mô tả trong bảng 5.1:

Bảng 5.1: Tín hiệu điều khiển các chế độ hoạt động của 8255
CS A0 A1 RD WR Chế độ hoạt động
1 X X X X Không chọn mạch
0 0 0 0 1 Đọc PA
0 0 0 1 0 Ghi PA
0 0 1 0 1 Đọc PB
0 0 1 1 0 Ghi PB
0 1 0 0 1 Đọc PC
0 1 0 1 0 Ghi PC
0 1 1 1 0 Ghi từ điều khiển
0 1 1 0 1 Cấm

Các cổng của 8255 chỉ có thể truy cập được khi nó đã được lập trình trước, việc lập
trình cho 8255 được thực hiện bằng cách ghi từ điều khiển tới địa chỉ cổng điều khiển
của nó. 8255 có hai dạng từ điều khiển là từ điều khiển lập xoá bit cổng C và từ điều
khiển chế độ, hai loại từ điều khiển này được xác định bằng trạng thái bit D7 của
chúng.

0 x x x C2 C1 C0 S/R

Hình 5.8: Từ điều khiển lập xoá bit cổng C của 8255.

Từ điều khiển lập xoá bit cổng C biểu diễn trên hình 5.8, bit D7 cho từ điều khiển
này luôn bằng 0, các bit D6 D5 D4 có thể mang giá trị bất kỳ, các bit D3 D2 D1 = C2 C1
C0 mã hoá vị trí bit cổng C được lập xoá, bit D0 = S/R (Set/Reset) xác định việc lập
hoặc xoá bit. Ví dụ, muốn lập bit PC2 của cổng C lên 1 có thể ghi dữ liệu 00000101
tới địa chỉ của cổng điều khiển.

1 MA1 MA0 A CH MB B CL

Hình 5.9: Từ điều khiển chọn chế độ của 8255.

Từ điều khiển chọn chế độ cho 8255 biểu diễn trên hình 5.9: bit D7 của nó luôn
bằng 1, D6 D5 = MA1 MA0 chọn chế độ cho nhóm A bao gồm PA và phần cao PC (00:

127
chế độ 0; 01: chế độ 1; 1x: chế độ 2), D4 = A sử dụng chọn chiều truyền dữ liệu cho
PA (1: vào; 0: ra), D3 = CH chọn chiều truyền dữ liệu cho PC phần cao, D2 = MB chọn
chế độ cho nhóm B gồm cổng PB và PC phần thấp (0: chế độ 0; 1: chế độ 1), D1 = B
chọn chiều truyền cho PB và D0 = CL chọn chiều truyền cho PC phần thấp.
Các cổng của 8255 có 3 chế độ làm việc:
- Chế độ 0: vào ra dữ liệu cơ bản, các cổng giống như các bộ đệm cài thông thường
được chọn theo trạng thái của các ngõ vào địa chỉ A0 và A1. Tùy theo việc lập trình
từ điều khiển, các cổng này hoặc chỉ vào, hoặc chỉ ra.
- Chế độ 1: là chế độ truyền dữ liệu một chiều có bắt tay, chế độ này chỉ sử dụng cho
các cổng PA và PB cổng PC sử dụng cho các tín hiệu bắt tay.
- Chế độ 2: là chế độ truyền dữ liệu hai chiều có bắt tay, chế độ này chỉ sử dụng cho
PA, PC đóng vai trò là tín hiệu bắt tay, PB lúc này có thể hoạt động trong chế độ 0
hoặc 1.
Hình 5.10 mô tả việc truyền dữ liệu giữa hai bộ vào ra 8255 ở chế độ 1, trong đó
8255 bên trái có cổng A truyền, cổng B nhận, ngược lại 8255 bên phải có cổng A
nhận, cổng B truyền dữ liệu.

D0 – D7 PA0 – PA7 PA0 – PA7 D0 – D7

INTEA INTEA
PC7 OBFA STBA PC4
ACKA IBFA
PC6 PC5 RD
WR

INTA INTA
PC3 PC3

INTEB STBB INTEA


OBFB
PC2 PC1
IBFB ACKB
PC1 PC2

INTB INTB
PC0 PC0

RD PB0 – PB7 PB0 – PB7

Hình 5.10: Truyền dữ liệu bằng 8255 ở chế độ 1.

128
Các tín hiệu của cổng truyền bao gồm:
- OBF (Output Buffer Full): là tín hiện ngõ ra tác động mức thấp khi bộ đệm ngõ ra
đầy. Tức là tín hiệu này sẽ tích cực khi CPU ghi tới cổng truyền 1 byte dữ liệu mà
bên nhận chưa nhận lấy nó. Tín hiệu này sẽ được nối tới STB của cổng nhận, để
chốt dữ liệu vào cổng nhận.
- ACK (acknowledge): là tín hiệu ngõ vào tác động mức thấp sử dụng cho việc nhận
tín hiệu trả lời từ cổng nhận, thông báo để cổng truyền biết cổng nhận đã nhận
xong dữ liệu, lúc này cổng truyền có thể truyền tiếp một dữ liệu khác.
- INTR (interrupt): là tín hiệu ra tác động mức cao thông báo một byte CPU ghi tới
cổng truyền đã được truyền xong tới thiết bị. Tín hiệu này có thể sử dụng yêu cầu
ngắt CPU để thực hiện việc ghi tới một dữ liệu khác.
- INTE (Interrupt Enable): là cờ cho phép ngắt truyền bên trong 8255, nó có thể lập
xoá bằng bit PC5 cho cổng A và PC6 cho cổng B (khi truyền). Khi INTE bị xoá,
yêu cầu sẽ không được gửi tới CPU khi 8255 truyền xong một dữ liệu.
Định thời các tín hiệu điều khiển cho cổng truyền biểu diễn trên hình 5.11

WR

OBF

INTR

ACK

Data Out

Hình 5.11: Định thời hoạt động các tín hiệu điều khiển cho PA chế độ 1

Các tín hiệu bắt tay cho cổng nhận dữ liệu trong chế độ 1 bao gồm:
- STB (Strobe): là ngõ vào, khi ngõ vào này tác động dữ liệu trên các đường nối tới
cổng vào sẽ được chốt vào bộ đệm ngõ vào đó. Trên hình 5.17, tín hiệu này được
cấp từ OBF của cổng truyền.
- IBF (Input Buffer Full): là tín hiệu ngõ ra tác động mức cao thông báo dữ liệu đã
được chốt vào bộ đệm nhận, tín hiệu này chỉ được xoá khi CPU đọc dữ liệu.
- INTR (Interrupt Request): là tín hiệu yêu cầu ngắt, thông báo cho CPU biết đã có
một dữ liệu sẵn sàng để CPU đọc, tín hiệu này chỉ được xoá khi CPU thực hiện một
chu kỳ đọc kéo tín hiệu RD của nó xuống mức thấp.
- INTE (Interrupt Enable):cờ cho phép ngắt trong 8255 được lập xoá thông qua việc
lập xoá bit PC4.

129
Data IN

STB

IBF

INTR

RD

Hình 5.12: Định thời hoạt động các tín hiệu bắt tay ngõ vào chế độ 1.

Định thời hoạt động của các tín hiệu bắt tay cho cổng nhận dữ liệu biểu diễn trên
hình 5.12.

D0 – D7 PA0 – PA7 PA0 – PA7 D0 – D7


INTEA INTEA
PC7 OBFA STBA PC4
WR ACKA IBFA
PC6 PC5 RD
RD
WR

INTEB STBB OBFB INTEA


PC2 PC1
IBFB ACKB
PC1 PC2

INTA INTA
PC3 PC3

Hình 5.13: Truyền dữ liệu bằng 8255 ở chế độ 2.


Có thể mô tả giao tiếp truyền nhận trong chế độ 1 như sau: trước hết khi cổng
truyền còn trống, 8255 truyền sẽ yêu cầu CPU bên truyền ghi một byte tới cho nó bằng
tín hiệu yêu cầu ngắt. Khi CPU ghi dữ liệu (tín hiệu WR tác động mức thấp), ngõ ra
OBF của cổng truyền được kéo xuống mức thấp đưa tới ngõ vào STB để cài dữ liệu
vào cổng nhận. Khi nhận được dữ liệu, cổng nhận thông báo trở lại cho cổng truyền

130
bằng tín hiệu IBF mức cao đưa tới ngõ vào ACK, và đồng thời yêu cầu CPU điều
khiển nhận đọc dữ liệu bằng tín hiệu INTR mức cao. Khi CPU chưa đọc, bộ nhận vẫn
duy trì IBF = ACK = 1, do đó OBF của bộ truyền vẫn tác động. CPU đọc dữ liệu kéo
RD của 8255 xuống mức thấp xóa tín hiệu yêu cầu ngắt, đồng thời IBF trở về mức 0
bên truyền sẽ dừng tác động tín hiệu OBF và yêu cầu ngắt để CPU ghi tới một dữ liệu
mới.

WR
OBF
INTR
ACK
STB

IBF
Data
RD
Hình 5.14: Định thời tín hiệu bắt tay trong chế độ 2.

Hình 5.13 mô tả nguyên tắc kết nối truyền dữ liệu của hai bộ vào ra 8255 ở chế độ
2 bằng cổng A. Các tín hiệu bắt tay cho chế độ này có ý nghĩa tương tự như trong chế
độ 1, riêng tín hiệu yêu cầu ngắt INTR sử dụng chung cả hai chiều truyền và nhận. Do
đó khi có tín hiệu INTR, hệ thống phải xác định nguồn yêu cầu ngắt từ các tín hiệu
tương ứng ở cổng C. Các Định thời hoạt động của các tín hiệu bắt tay trong chế độ 2
biểu diễn trên hình 5.14.

5.1.3 Cổng vào ra song song LPT (Centronics Port)


Cổng song song LPT tiền thân là cổng do hãng Centronics phát triển vào năm
1970. Sau này trở thành cổng song song phổ biến trên các máy tính cá nhân trong một
thời gian dài, và được tiêu chuẩn hoá thành chuẩn IEEE 1284. Cổng vào ra song song
là hình thức truyền thông dụng thường sử dụng giao tiếp: printer, plotter,… Dữ liệu
được truyền song song, hỗ trợ duplex. Các chuẩn giao tiếp song song (IEEE 1284): có
3 kiểu cổng song song thông dụng:
- SPP - standard parallel port: Là cổng song song chuẩn có tín hiệu truyền một chiều,
tốc độ tương đối thấp từ 50 – 150 KBps. Khi muoán nhaäp döõ lieäu vaøo maùy tính coù
theå duøng mode Nibble truyeàn 4 bit hay mode Byte truyeàn 8 bit.

131
- EPP - enhanced parallel port: Là cổng song song tăng cường, chuẩn này truyền dữ
liệu theo hai chiều nên tốc độ tương đối nhanh hơn SPP.
- ECP - Extended capabilities port: Là cổng song song mở rộng khả năng truyền dữ
liệu theo hai chiều, chiếm một kênh DMA.
Các chế độ cổng có thể thay đổi trong BIOS SETUP của máy tính khi khởi động máy.

5.1.3.1 Cổng SPP


Cổng song song SPP có đầu nối 25 chân cái thường dùng để kết nối với máy in
đầu nối Centronics 34 chân như trên hình 5.15.

Hình 5.15: Đầu nối Centronics cổng LPT


Bảng 5.2 cho sơ đồ chân và ý nghĩa các chân của cổng SPP khi dùng với máy in,
dấu “/” có nghĩa tích cực thấp. Ví dụ, chân 15 là /Error hướng vào, nếu chân này
xuống mức 0 là có lỗi. Cột Đảo ghi chữ Có tức là tín hiệu được đảo mức, ví dụ chân
17 khi đưa mức logic 0 ứng với chân này vào thanh ghi điều khiển thì ở chân 17 xuất
hiện mức 1.

Bảng 5.2: Sơ đồ chân của đầu nối phía máy tính (cổng SPP) và phía máy in
Chaân D – Chaân
Höôùng Thanh ghi Ñaûo
25 Centronics Tín hieäu SPP
1 1 /Strobe Vaøo/Ra Ñieàu khieån Coù
2 2 Data 0 Ra Data
3 3 Data 1 Ra Data
4 4 Data 2 Ra Data
5 5 Data 3 Ra Data
6 6 Data 4 Ra Data
7 7 Data 5 Ra Data
8 8 Data 6 Ra Data
9 9 Data 7 Ra Data

132
10 10 /Ack Vaøo Traïng thaùi
11 11 Busy Vaøo Traïng thaùi Coù
12 12 Paper Out Vaøo Traïng thaùi
13 13 Select Vaøo Traïng thaùi
14 14 /Auto-Linefeed Vaøo/Ra Ñieàu khieån Coù
15 32 /Error Vaøo Traïng thaùi
16 31 /Init Vaøo/Ra Ñieàu khieån
17 36 /Select Printer Vaøo/Ra Ñieàu khieån Coù
18 - 25 19 - 30 Mass

Hình 5.16: Kết nối máy in và máy tính qua cổng LPT

Ngõ ra cổng song song tương thích với cổng TTL, dòng cấp và thu khoảng vài mA
đến 16mA tùy loại kết cấu phần cứng (công nghệ ASIC). Giao tiếp cổng song song với
máy in thường được thực hiện theo hình 5.16.
Ban đầu dữ liệu 8 bit được đưa ra, máy tính đọc chân Busy nếu ở mức thấp thì
máy in rảnh, sẽ đưa ra tín hiệu Strobe rộng 1msec và máy in đọc dữ liệu, máy in đọc
xong sẽ báo trở lại bằng ACK rộng 5msec. Nếu máy in bận thì nó sẽ cấp tín hiệu Busy
sẽ ở mức cao. Việc giao tiếp được thực hiện qua 3 thanh ghi: thanh ghi dữ liệu, thanh

133
ghi điều khiển và thanh ghi trạng thái. Thông thường sử dụng hai địa chỉ gốc là:
378H cho LPT1 (line printer 1)
278H cho LPT2 Một số máy dùng địa chỉ 03BC.
Thanh ghi dữ liệu của LPT có địa chỉ gốc +0, 8 bit, nó sử dụng để nhận dữ liệu để
xuất ra ngoài, dữ liệu được chốt. Thanh ghi trạng thái địa chỉ gốc +1 là thanh ghi chỉ
đọc dùng để nhận tín hiệu từ ngoài vào, có 5 tín hiệu vào như trên hình 5.17. Bit Busy
sẽ lấy trạng thái đảo của ngõ vào Busy

Hình 5.17: Thanh ghi trạng thái cổng LPT

Thanh ghi điều khiển có bốn đường ra điều khiển, địa chỉ gốc +2, các đường này
dùng cực thu hở do đó có thể giao tiếp hai chiều. Các chân 1, 11, 14 và 17 được đảo
phần cứng, bit D6 thanh ghi trạng thái (chân số 10) từ 1 → 0 thì gây ra ngắt IRQ7 nếu
được cho phép bởi D4 của thanh ghi điều khiển =1.

Hình 5.18: Thanh ghi điều khiển cổng LPT

Hình 5.19: Kết nối các thanh ghi đến cổng LPT

Hình 5.19 mô tả kết nối giữa các thanh ghi bên trong và các chân cổng bên ngoài
trên SPP. Một số mainboard hỗ trợ giao tiếp hai chiều qua thanh ghi dữ liệu hình 5.20.
Khi đó bit D5 của thanh ghi điều khiển bằng 1 thì cho phép các chân 2..:9 của thanh
ghi dữ liệu có chiều đi vào, nghĩa là có thể đưa tín hiệu vào các chân này rồi đọc thanh
ghi dữ liệu.
134
Các chân của thanh ghi điều khiển có ngõ ra cực thu hở nên có thể nhận tín hiệu
vào nếu trước đó ta đã nạp 8 bit sao cho các ngõ ra ứng với thanh ghi này lên 1 (hình
5.21). Do các tín hiệu /Busy, /Select, /AF và /Strobe đã được đảo phần cứng nên ta
thêm các cổng đảo, logic đọc vào phản ảnh đúng mức tín hiệu.

Hình 5.20: Thanh ghi dữ liệu hai chiều trên cổng LPT

Hình 5.21: Giao tiếp song song hai chiều trên cổng LPT

135
Trong một số trường hợp, các chân ra của thanh ghi điều khiển không dùng loại
cực thu hở mà dùng cột totem chỉ có một chiều xuất, lúc đó có thể dùng bộ phân kênh
để đọc 4 bit dữ liệu vào thanh ghi trạng thái, đọc hai lần sẽ được 8 bit dữ liệu (hình
5.22). Trên sơ đồ này, chân /Strobe được dùng để chọn nửa byte thấp khi ở mức 0 tức
là bit D0 của thanh ghi điều khiển ở mức 1. Với sơ đồ này, việc xuất nhập dữ liệu 8 bit
được thực hiện như sau:
1- Xác định địa chỉ gốc của cổng LPT
2- Muốn xuất dữ liệu, ghi dữ liệu 8 bit vào thanh ghi dữ liệu, muốn xuất nhiều hơn
8 bit có thể dùng kèm các tín hiệu Init, Select … bằng cách ghi vào thanh ghi điều
khiển byte thích hợp.
3- Muốn đọc dữ liệu, ghi bit D0 = 1 vào thanh ghi điều khiển, đọc 4 bit cao của
thanh ghi trạng thái (4 bit thấp của dữ liệu vào), rồi dời phải 4 bit, sau đó cho D0 của
thanh ghi điều khiển bằng 0, đọc 4 bit cao của thanh ghi trạng thái (4 bit cao của dữ
liệu vào), kết hợp hai lần đọc ta được 1 byte rồi XOR với 88H để đảo hai bit D7 và D3
(do Busy đảo).

Hình 5.22: Vào ra 8 bit với 74LS157

5.1.3.2 Cổng epp (enhanced parallel port)


Cổng EPP là sản phẩm liên kết của Intel, Xircom và Zenith, có hai chuẩn là
EPP1.7 và EPP1.9, vận tốc truyền từ 500 Kbytes/s đến 2 Mbytes/s nhờ sự hỗ trợ của
phần cứng và kỹ thuật DMA. Khi chuyển cổng song song sang chế độ EPP (vào mục
Setup khi khởi động máy tính để đặt chế độ) các chân cổng sẽ mang tên gọi và ý nghĩa
khác như trong bảng 5.3, và cổng sẽ có thêm một số thanh ghi chức năng mới như
bảng 5.4.

136
Bảng 5.3: Các tín hiệu trên cổng EPP
Chân Tên Vào/Ra Chức năng
1 Ghi /Write Ra Khi thấp xuất dữ liệu ra Khi
cao đọc vào
2-9 Data 0 - 7 Vào - Ra Tuyến dữ liệu hai hướng
10 Ngắt Interrupt Vào Ngắt ở cạnh lên
11 Chờ /Wait Vào Dùng để bắt tay, chu kỳ EPP
bắt đầu khi thấp, chấm dứt khi
cao
12, 13, 15 Không dùng
14 /Data Strobe Ra Khi ở mức thấp truyền dữ liệu
16 /Reset Ra Reset, tích cực thấp
17 /Address Strobe Ra Khi ở mức thấp truyền địa chỉ
18 – 25 Mass

Bảng 5.4: Các thanh ghi cổng EPP

Địa chỉ Tên Đọc / Ghi


Gốc + 0 Thanh ghi dữ liệu (SPP) Ghi
Gốc + 1 Thanh ghi trạng thái (SPP) Đọc
Gốc + 2 Thanh ghi điều khiển (SPP) Ghi
Gốc + 3 Thanh ghi địa chỉ (EPP) Đọc / Ghi
Gốc + 4 Thanh ghi dữ liệu (EPP) Đọc / Ghi
Gốc + 5
Gốc + 6 Dùng để truyền 16/32 bit
Gốc + 7

Ba thanh ghi đầu giống như trong SPP. Muốn truyền dữ liệu theo EPP ta đưa dữ
liệu vào thanh ghi gốc +4 và mạch logic sẽ tạo các tín hiệu cần thiết.

Hình 5.23: Giản đồ xuất nhập dữ liệu

137
Giản đồ đọc ghi dữ liệu trên cổng EPP như trên hình 5.23. Trong chu kỳ ghi dữ
liệu, chân /Write và /Data Strobe tích cực thấp chờ cho đến khi /Wait lên mức cao (báo
bên kia đã nhận dữ liệu), sau đó /Data Strobe và /Write trở lại mức cao kết thúc truyền.
Khi nhận dữ liệu, đầu tiên chương trình đọc thanh ghi gốc +4. Nếu /Wait mức thấp
thì /Data Strobe sẽ ở mức thấp chờ khi /Wait ở mức cao bên kia báo đã gửi dữ liệu tới,
/Data Strobe sẽ ở mức cao và dữ liệu được đọc vào. Chu kỳ xuất và nhập dữ liệu cũng
giống như chu kỳ xuất và nhập địa chỉ. Thường kết hợp địa chỉ và dữ liệu để truy xuất
dữ liệu từ các địa chỉ ngoại vi khác nhau.
Phần cứng ngoại vi có nhiệm vụ xử lý các chân /Write, /Data Strobe, /Address
Strobe đưa vào các mạch cài hay cho phép và xuất tín hiệu /wait phù hợp. Thông qua
tín hiệu Interrupt (chân số 10) ngoại vi sẽ tác động đến máy tính, bit 0 của thanh ghi
trạng thái là bit báo hết thời gian EPP. Nếu trong khoảng 10µs đường /Wait không tác
động khi /Data Strobe hay /Address strobe tác động thì bit này sẽ được đặt lên 1.

Bảng 5.5: Các tín hiệu trên cổng ECP

Chân Tín hiệu ECP Hướng Chức năng


1 HostClk Ra Thấp cho biết có dữ liệu, cạnh lên dùng để cài
dữ liệu ra
2–9 Data 0 – 7 Hai Tuyến dữ liệu hai chiều
chiều
Thấp cho biết ngoại vi cần đưa dữ liệu vào
10 PeriphClk Vào
máy tính, cạnh lên dùng để cài dữ liệu vào
Khi ngoại vi nhận dữ liệu thì lên mức cao. Nếu
11 PeriphAck Vào ngoại vi gởi dữ liệu thì mức cao báo chu kỳ dữ
liệu, mức thấp báo chu kỳ lệnh
12 /AckReverse Vào Khi thấp ngoại vi chấp nhận truyền dữ liệu
13 X – Flag Vào Cờ mở rộng
HostAck Ra Ở mức cao báo chu kỳ dữ liệu, ở mức thấp báo
14
chu kỳ lệnh
15 PeriphRequest Vào Yêu cầu máy tính nhận số liệu
16 / Ra Khi ở mức thấp cho biết dữ liệu nhập vào máy
ReverseRequest tính
18 – 29 Mass

5.1.3.3 Cổng ECP


Cổng ECP được phát triển bởi Hewlett Packard và Microsoft, sử dụng phần cứng
hỗ trợ cho việc truyền dữ liệu nên có vận tốc truyền nhanh, tương tự cổng EPP. Đặc
điểm của cổng ECP là nén dữ liệu khi truyền, cho phép tăng tốc độ truyền dữ liệu.

138
Cổng ECP dùng 11 thanh ghi từ gốc+0 đến gốc+7 và gốc+400H đến gốc +402H. Chân
cổng ECP được qui định trong bảng 5.5.

Khi truyền dữ liệu từ máy tính ra ngoại vi thì HostAck sẽ đổi mức, còn truyền dữ
liệu từ ngoại vi vào máy tính thì PeriphAck đổi mức. Trên tuyến dữ liệu có thể truyền
dữ liệu hay lệnh. Nếu Host Ack và Periph Ack ở mức cao là truyền dữ liệu. Nếu máy
tính gởi lệnh, Host Ack mức thấp; nếu ngoại vi gởi lệnh, Periph Ack mức thấp. Lệnh
gồm hai loại, nếu bit 7 của tuyến dữ liệu (chân 9) ở mức thấp thì 7 bit còn lại dùng để
cho biết thông tin về nén dữ liệu. Nếu bit 7 ở mức cao thì 7 bit còn lại là địa chỉ kênh.
Khi truyền dữ liệu nén, đầu tiên truyền số lần lặp lại của byte dữ liệu, sau đó truyền
byte dữ liệu, ví dụ truyền 25 byte ký tự ‘A’ thì gởi byte 24 (Run length Count) sau đó
gởi byte ‘A’.

Hình 5.24: Giản đồ truyền dữ liệu từ máy tính ra ngoại vi

Hình 5.25: Giản đồ truyền dữ liệu từ ngoại vi vào máy tính

Ngoại vi nhận được byte 24 trong chu kỳ lệnh sẽ lặp lại byte ‘A’ ở chu kỳ dữ liệu
25 lần. Tỷ số nén tối đa 64/1. Để tăng tốc độ truyền dữ liệu, cổng ECP dùng các thanh
ghi sắp xếp kiểu FIFO và một số thanh ghi phụ như mô tả trong bảng 5.6
139
Bảng 5.6: Các thanh ghi cổng ECP

Địa chỉ Tên Đọc / Ghi


Thanh ghi dữ liệu (SPP) Ghi
Gốc + 0
Địa chỉ FIFO (ECP) Đọc / Ghi
Gốc + 1 Thanh ghi trạng thái (mọi mode) Đọc / Ghi
Gốc + 2 Thanh ghi điều khiển (mọi mode) Đọc / Ghi
Data FIFO (mode FIFO cổng song song) Đọc / Ghi
Gốc + 400 H Data FIFO (ECP) Đọc / Ghi
Test FIFO (mode Test) Đọc / Ghi
Thanh ghi cấu hình A Đọc / Ghi
Gốc + 401 H Thanh ghi cấu hình B Đọc / Ghi
Gốc + 402 H Thanh ghi điều khiển mở rộng Đọc / Ghi

Thanh ghi điều khiển mở rộng cho phép chọn kiểu hoạt động của cổng song song.
Thanh ghi cấu hình A và B sử dụng để đặt cấu hình của cổng ECP.

5.1.4 Bộ nhới RAM hai cổng - Dual ported Ram


Bộ nhớ Ram hai cổng được phát triển cho việc truyền khối dữ liệu giữa hai hệ
thống vi xử lý với tốc độ cao. Nó được ứng dụng nhiều trong các hệ thống chuyển
mạch, PLC hay cho các card tăng tốc đồ họa (AGP). Thông thường các bộ nhớ hai
cổng sử dụng các khối nhớ SRAM 1 – 64KB nhưng được thiết kế thêm các mạch phụ
cận để có thể truy cập đồng thời hai chu kỳ tại cùng một thời điểm. Sơ đồ khối một bộ
nhớ RAM hai cổng như trên hình 5.26.

Hình 5.26: Sơ đồ khối bộ nhớ Ram hai cổng

140
Để truy cập đồng thời bộ nhớ Ram hai cổng sẽ có hai bus địa chỉ, hai bus dữ liệu,
và hai bus điều khiển đọc ghi trái và phải. Ngoài ra nó còn có thêm khối điều khiển
logic để tránh các tranh chấp trong quá trình truy cập.
Cấu tạo một bit RAM hai cổng như trên hình 5.27. Trên hình vẽ, khi đặt một dữ
liệu vào DATA BIT LINE bên trái hoặc bên phải, nếu chọn đúng địa chỉ đường
SELECT DECODE ADDRESS sẽ bằng 1, tín hiệu WRITE mức 1, thì ngõ ra cổng
NAND WR 1 sẽ bằng 0 làm Flip – Flop chứa bit 1. Ngược lại, khi chọn đúng địa chỉ
và WRITE =1, nhưng dữ liệu đưa vào là 0 thì ngõ ra cổng NAND WR 0 sẽ bằng 1, bit
nhớ sẽ chứa giá trị 0. Cấu trúc mạch hoàn toàn đối xứng nên bit nhớ này có thể ghi
được cả từ hai hướng. Khi muốn đọc dữ liệu, cần chọn đúng địa chỉ và cấp tín hiệu
WRITE bằng 0, dữ liệu có thể đọc đồng thời ra từ cả hai hướng.

Hình 5.27: Cấu tạo một bit nhớ Ram hai cổng

Hình 5.28: Cấu tạo mạch tạo ngắt chống tranh chấp
141
Để tránh tranh chấp cùng một ô nhớ khi đồng thời đọc ghi từ hai cổng các bộ nhớ
RAM hai cổng sử dụng các loại mạch như: ngắt, báo bận (busy) hoặc báo cờ. Hình
5.28 mô tả cấu trúc mạch ngắt. Trên hình vẽ, khi bên phải đang thực hiện chu kỳ đọc ô
nhớ 3FFh, các tín hiệu R SIDE READ và ngõ ra mạch giải mã địa R SIDE ADDRESS
sẽ đồng thời bằng 1 cấp vào cổng NAND là ngõ ra của nó bằng 0, mức 0 này được đưa
tới mạch Flip – Flop tạo tín hiệu ngắt ở trên. Lúc này, nếu bên trái không thực hiện chu
kỳ ghi dữ liệu, hoặc đang ghi dữ liệu vào địa chỉ khác, L SIDE WRITE =0 hoặc ngõ ra
mạch giải mã địa chỉ bên trái L ADDRESS =0), thì ngõ ra ngắt bên phải sẽ bằng 0, các
hoạt động đọc ghhi xảy ra bình thường. Nhưng nếu bên trái đang ghi ngay tại địa chỉ
3FFh mà bên phải đang đọc, tín hiệu ngắt bên phải sẽ tác động bằng 1, hệ thống CPU
bên phải sẽ nhận biết tín hiệu này để quyết định có đọc tiếp dữ liệu hay ngưng lại.

Hình 5.28: Cấu tạo mạch tạo tín hiệu bận chống tranh chấp

Hình 5.29: Cấu tạo mạch tạo cờ chống tranh chấp


Hình 5.28 là mạch tạo tín hiệu bận và cấm ghi khi xảy ra tranh chấp. Khi hai địa
chỉ cung cấp từ hai phía truy cập bằng nhau, ngõ ra bộ so sánh tác động bằng 1, nếu
hai bên đều cung cấp tín hiệu chọn mạch CE=1 thì một trong hai đường A hoặc B sẽ

142
có mức 0, một bên sẽ bị cấm ghi. Bên nào có tín hiệu cấm ghi bằng 0 (CE đang bằng
1) thì bên đó sẽ có tín hiệu báo bận BUSY bằng 0.
Hình 5.29 mô tả mạch tạo tín hiệu cờ trong Ram hai cổng. Trong mạch khi hai bên
cấp trùng địa chỉ và cùng yêu cầu truy cập, hai tín hiệu R REQUEST và L REQUEST
sẽ đồng thời bằng 0. Hai cờ báo ghi WR SEMAPHORE cũng đồng thời bằng 1, thì
một trong hai ngõ ra GRANT sẽ tác động mức 0, để hệ thống bên đó tạm ngưng chu
kỳ truy cập dữ liệu.

5.1.5 PCMCIA (Personal Computer Memory Card International Association)


PCMCIA là chuẩn giao diện cho phép gằn các card giao tiếp nhỏ vào máy tính
laptop, notebook hoặc palm top. Giao diện này đầu tiên được thiết kế cho các thẻ nhớ
(Version 1.0), nhưng sau đó được phát triển cho rất nhiều bộ tương thích ngoại vi như
fax modem, card âm thanh, card mạng, bộ điều khiển CD-ROM, các card vào ra số ….
Hầu hết các card giao tiếp PCMCIA đều được thiết kết theo chuẩn loại II (Type II)
hoặc loại III (Type III). Thẻ nhớ Type I có độ dày 3.3 mm, Type II nâng lên 5 mm,
Type III cho phép card có độ dày 10.5 mm. Một chuẩn mới Type IV cho phép cắm các
card có độ dày lớn hơn 10.5 mm. Các chuẩn sau luôn cho phép tương thích sử dụng
các chuẩn card trước đó, ví dụ chuẩn Type IV cho phép sử dụng các card Type I, Type
II và Type III.
Chuẩn PCMCIA sử dụng bus dữ liệu 16 bit (D0 – D15) và bus đại chỉ 26 bit (A0 –
A25), và như vậy nó cho phép định vị tới dung lượng nhớ 226 word (64 Mword). Dải
bộ nhớ của cổng PCMCIA bao gồm:
- Vùng bộ nhớ chung và bộ nhớ thuộc tính với dung lượng là 128 MB.
- Không gian địa chỉ vào ra 65,536 (64k) địa chỉ vào ra truy xuất 8 bit.
Tuỳ theo chế độ truy xuất cổng PCMCIA sẽ có tốc độ truy xuất khác nhau:
- Chế độ cardbus (32 bit burst mode): truy xuất theo byte (byte mode) sẽ có tốc độ
32 MBps, theo từ (word mode) 66 MBps, và theo từ kép (Dword mode) sẽ là 132
MBps.
- Chế độ truyền dữ liệu với bộ nhớ 16 bit (chu kỳ nhỏ nhất là 100 nsec): Truyền theo
byte đạt tốc độ cực đại 10 MBps, theo từ sẽ là 20 MBps.
- Chế độ truyền dữ liệu với vào ra 16 bit (chu kỳ nhỏ nhất là 255 nsec): truyền theo
byte đạt tốc độ 3.92 MBps, theo từ đạt tốc độ 7.85 MBps.
Giao diện PCMCIA cho phép thiết bị giao tiếp sử dụng không gian địa chỉ bộ nhớ
chính, hoặc không gian địa chỉ vào ra. Ví dụ, một modem PCMCIA sẽ sử dụng vùng
nhớ cổng COM chuẩn cho các thanh ghi của nó (như các địa chỉ 3F8H – 3FFh của
COM1 hoặc 2F8h – 2FFh của COM2). Bất kỳ việc truy xuất một không gian nhớ nào
cũng được chuyển hướng tới PCMCIA thay vì tới vùng nhớ chính hoặc vùng vào ra

143
của hệ thống. Các vùng không gian địa chỉ này được gọi là các cửa sổ. MỘt địa chỉ
được định nghĩa với địa chỉ bắt đầu (START) và địa chỉ cuối (LAST). Các thanh ghi
điều khiển của PCMCIA sẽ giữ các địa chỉ này.
Bảng 5.7 mô tả các chân kết nối và các tín hiệu chính trên PCMCIA, các tín hiệu
của nó bao gồm:
Bảng 5.7: Các tín hiệu chính trên PCMCIA

Chân Tín hiệu Chân Tín hiệu Chân Tín hiệu Chân Tín hiệu
nối nối nối nối

1 GND 18 Vpp1 35 GND 52 Vpp2

2 D3 19 A16 36 Card Detect 1 53 A22

3 D4 20 A15 37 D11 54 A23

4 D5 21 A12 38 D12 55 A24

5 D6 22 A7 39 D13 56 A25

6 D7 23 A6 40 D14 57 RFU

7 /Card Enable 1 24 A5 41 D15 58 RESET

8 A10 25 A4 42 Card Enable 2 59 /Wait

9 /Output Enable 26 A3 43 Refresh 60 /Inpack

10 A11 27 A2 44 /IOR 61 Reg. Select

11 A9 28 A1 45 /IOW 62 /SPKR

12 A8 29 A0 46 A17 63 /STSCHG

13 A13 30 D0 47 A18 64 D8

14 A14 31 D1 48 A19 65 D9

15 /WR Enable- 32 D2 49 A20 66 D10


Program

16 Ready-/Busy 33 /IOIS16 50 A21 67 /Card Detect 2

17 +5V 34 GND 51 +5V 68 GND

- A25-A0: bus địa chỉ, định vị 226 đại chỉ bộ nhớ hoặc 216 địa chỉ vào ra.
- D7 – D0: bus dữ liệu 16 bit.

144
- /CARD DETECT 1, /CARD DETECT 2: Sử dụng cho việc nhận dạng card có
được cắm vào bus hay không. Khi có card được cắm vào bus, một trong các tín
hiệu này sẽ được kéo xuống mức thấp.
- /Card Enable1: sử dụng cho phép 8 bit cao của bus dữ liệu.
- /Card Enable 2: sử dụng cho phép 8 bit thấp của bus dữ liệu.
- /Output Enable: được thiết lập mức thấp từ máy tính để đọc dữ liệu từ PCMCIA.
- /Register Select: thiết lập mức cao khi truy xuất vùng nhớ chung, và thiết lập mức
thấp khi truy cập vùng nhớ thuộc tính.
- Reset: sử dụng để reset card PCMCIA.
- Refresh: sử dụng để làm tươi bộ nhớ trên PCMCIA
- /Wait: được cấp từ PCMCIA khi nó không thể truyền dữ liệu đủ nhanh theo yêu
cầu, tín hiệu này sẽ tạo ra các chu kỳ chờ trong hệ thống.
- /Write Enable-Program: sử dụng để lập trình thiết bị PCMCIA.
- Vpp1, Vpp2: cấp điện áp lập trình cho bộ nhớ Flash.
- Ready-/busy: sử dụng để thông báo trạng thái sẵn sàng hoặc bận của thiết bị
PCMCIA (khi thiết bị sẵn sàng tín hiệu này sẽ ở mức cao).
- /IOIS16: sử dụng để thông báo trạng thái chống ghi trên PCMCIA card. Mức cao
sẽ chỉ thị công tắc chống ghi đang được bật.
- /InpAck: sử dụng để thiết bị PCMCIA chấp nhận chu kỳ truyền dữ liệu.
- /IOR: được cấp từ hệ thống để đọc dữ liệu từ card PCMCIA (nó phải được sử dụng
cùng với tín hiệu tích cực trên Register Select).
- /IOW: được cấp từ hệ thống để ghi dữ liệu tới card PCMCIA (nó phải được sử
dụng cùng với tín hiệu tích cực trên Register Select).
- /SPKR: tín hiệu này được sử dụng để card PCMCIA truyền dữ liệu âm thanh tới
loa của hệ thống.
- /STGCHG: sử dụng để nhận dạng sự thay đổi trạng thái của card.
Bộ điều khiển PCMCIA (PCIC) điển hình thường được sử dụng là vi mạch
82365SL của Intel. Bảng 5.8 mô tả các thanh ghi chính của đầu nối PCMCIA thứ nhất.
Địa chỉ cho các thanh ghi của đầu cắm thứ 2 sẽ dời địa chỉ đi 40H. Địa chỉ cơ sở của
PCIC trong Windows được thiết lập giá trị mặc định là 3E0h. PCIC sẽ truy cập vùng
địa chỉ từ 3E0h tới 3E1h. Cửa sổ vào ra 0/1 sẽ được truy xuất thông qua:
- 08h/0Ch cho byte thấp của địa chỉ vào ra đầu tiên.
- 09h/0Dh cho byte cao của địa chỉ vào ra đầu tiên.
- 0Ah/0Eh cho byte cao của địa chỉ vào ra cuối cùng.
- 0Bh/0Fh cho byte cao của địa chỉ vào ra cuối cùng.
145
Các thanh ghi được truy xuất bằng các nạp giá trị chỉ số thanh ghi vào 3E0h và sau
đó thanh ghi này sẽ được truy cập qua địa chỉ 3E1h. Các cửa sổ bộ nhớ 0/1/2/3/4 sẽ
được truy xuất thông qua:
- 10h/18h/20h/28h/30h cho byte thấp của địa chỉ bộ nhớ đầu tiên.
- 11h/19h/21h/29h/31h cho byte cao của địa chỉ bộ nhớ đầu tiên.
- 12h/1Ah/22h/2Ah/32h cho byte thấp của địa chỉ bộ nhớ cuối cùng.
- 13h/1Bh/23h/2Bh/33h cho byte cao của địa chỉ bộ nhớ cuối cùng.
- 14h/1Ch/24h/2Ch/34h cho byte thấp của card offset.
- 15h/1Dh/25h/2Dh/35h cho byte cao của card offset.
Ví dụ khi muốn nạp giá trị 22h vào thanh ghi thay đổi trạng thái của card có thể sử
dụng các lệnh C sau:
_outp (0x3E0, 4h); /trỏ tới thanh ghi thay đổi trạng thái của card.
_outp (0x3E1, 22h); /nạp giá trị 22h vào thanh ghi thay đổi trạng thái card.

Bảng 5.8: Các thanh ghi của bộ điều khiển PCMCIA

Chỉ số Tên thanh ghi Chú giải


thanh ghi

00h PCIC Identification Thanh ghi nhận dạng PCIC

01h Interface Status Trạng thái giao tiếp

02h Power Supply (RESETDRV) Nguồn cung cấp (điều khiển reset)

03h Interrupt Control Điều khiển ngắt

04h Card status change Thay đổi trạng thái card

05h Configuration Cấu hình

06h Memory windows Enable Cho phép cửa sổ bộ nhớ

07h I/O windows control Điều khiển cửa sổ vào ra

08h First setup for IO window 0 (low) Thiết lập địa chỉ đầu cho cửa sổ IO
số 0 byte thấp

09h FIRST setup for IO window 0 Thiết lập địa chỉ đầu cho cửa sổ IO
(high) số 0 byte cao

0Ah LAST setup for IO window 0 Thiết lập địa chỉ cuối cho cửa sổ IO

146
(low) số 0 byte thấp

0Bh LAST setup for IO window 0 Thiết lập địa chỉ cuối cho cửa sổ IO
(low) số 0 byte cao

0Ch FIRST setup for IO window 1 Thiết lập địa chỉ đầu cho cửa sổ IO
(low) số 1 byte thấp

0Dh FIRST setup for IO window 1 Thiết lập địa chỉ đầu cho cửa sổ IO
(high) số 1 byte cao

0Eh LAST setup for IO window 1 Thiết lập địa chỉ cuối cho cửa sổ IO
(low) số 1 byte thấp

0Fh LAST setup for IO window 1 Thiết lập địa chỉ cuối cho cửa sổ IO
(low) số 1 byte cao

10h FIRST setup for memory window Thiết lập địa chỉ đầu cho cửa sổ bộ
0 (low) nhớ số 0 byte thấp

11h FIRST setup for memory window Thiết lập địa chỉ đầu cho cửa sổ bộ
0 (low) nhớ số 0 byte cao

12h LAST setup for memory window Thiết lập địa chỉ cuối cho cửa sổ bộ
0 (low) nhớ số 0 byte thấp

13h LAST setup for memory window Thiết lập địa chỉ cuối cho cửa sổ bộ
0 (low) nhớ số 0 byte cao

Bảng 5.9: Chức năng các bit của thanh ghi cho phép cửa sổ (chỉ số 06h hoặc 46h)

Bit Tên Chức năng

7 IOW1 IO Window 1 - Bằng 1 cho phép IO Window 1

6 IOW0 IO Window 0 - Bằng 1 cho phép IO Window 0

5 DEC Bằng 1 thì tín hiệu /MEMCS16 tạo ra từ A23-A12, nếu bằng 0 sẽ tạo
ra từ A23-A17

4 MW4 Memory Window 4 - Bằng 1 cho phép cửa sổ bộ nhớ số 4

3 MW3 Memory Window 3 - Bằng 1 cho phép cửa sổ bộ nhớ số 3

2 MW2 Memory Window 2 - Bằng 1 cho phép cửa sổ bộ nhớ số 2

147
1 MW1 Memory Window 1 - Bằng 1 cho phép cửa sổ bộ nhớ số 1

0 MW0 Memory Window 0 - Bằng 1 cho phép cửa sổ bộ nhớ số 0

Bảng 5.10: Chức năng các bit thanh ghi thiết lập địa chỉ đầu cho cửa sổ bộ nhớ

Bit Tên Chức năng

7 DS Data bus Size - Bằng 1 cho phép bus dữ liệu 16 bit, 0 bus dữ liệu 8 bit

6 0WS Zero Wait State - Bằng 1 không có chu kỳ chờ, 0 cộng thêm chu kỳ
chờ

5 SCR1 Scratch bit - Không sử dụng

4 SCR0 Scratch bit - Không sử dụng

3-0 WSA Window Start Address – Địa chỉ bắt đầu cửa sổ A23 – A20

Byte thấp của thanh ghi này chứa các bit A19-A12 địa chỉ bắt đầu cửa sổ.

Bảng 5.11: Chức năng các bit thanh ghi thiết lập địa chỉ cuối cho cửa sổ bộ nhớ

Bit Tên Chức năng

7,6 WS1, WS0 Wait state – Trạng thái chờ

5,4 Reserved - Dự phòng

3-0 WEA Window End Address – Địa chỉ cuối cửa sổ A23 – A20

Byte thấp của thanh ghi này chứa các bit A19-A12 địa chỉ cuối cửa sổ.

Bảng 5.12: Chức năng các bit thanh ghi thiết lập card offset

Bit Tên Chức năng

7 WP Write Protect – Bằng 1 chống ghi

6 REG /REGISTER SELECT Enable – bằng 1 cho phép truy cập vùng
nhớ thuộc tính, bằng 0 truy cập vùng nhớ chung

5-0 WSA Window Start Address – Địa chỉ bắt đầu cửa sổ A23 – A20

Byte thấp của thanh ghi này chứa các bit A19-A12 địa chỉ bắt đầu cửa sổ.

148
Bảng 5.13: Chức năng các bit thanh ghi thiết lập địa chỉ đầu cho cửa sổ vào ra

Bit Byte Chức năng

7-0 Byte cao Giữ các bit địa chỉ A15-A8 của địa chỉ bắt đầu của sổ vào ra

7-0 Byte thấp Giữ các bit địa chỉ A7-A0 của địa chỉ bắt đầu của sổ vào ra

Bảng 5.14: Chức năng các bit thanh ghi thiết lập địa chỉ cuối cho cửa sổ vào ra

Bit Byte Chức năng

7-0 Byte cao Giữ các bit địa chỉ A15-A8 của địa chỉ cuối của sổ vào ra

7-0 Byte thấp Giữ các bit địa chỉ A7-A0 của địa chỉ cuối của sổ vào ra

Bảng 5.15: Chức năng các bit thanh ghi điều khiển cho cửa sổ vào ra

Bit Tên Chức năng

7,3 WS1, WS0 Wait State for Window 1 and 0 – Bằng 1 cho phép trạng thái
chờ tại cửa số vào ra (số 1 và số 0)

6,2 0WS1, 0WS0 Zero Wait State for Window 1 and 0 – Bằng 1 không có
trạng thái chờ tại các cửa sổ vào ra

5,1 CS1, CS0 /IOIS16 source: bằng 1 chọn /IOIS16 từ máy tính, bằng 0
chọn data size từ DS1 và DS0

Bảng 5.16: Thông số kỹ thuật các loại PCMCIA

PC Card Small PC Miniature SmartMedia MultiMedi Compact


Card card card a card Flash

Độ dài (mm) 85.6 45.0 33.0 45.0 32.0 36.0

Rộng (mm) 54.0 42.8 38.0 37.0 24.0 43.0

Cao (mm) 3.3/5.0/10.5 3.3/5.0/10.5 3.5 0.76 1.4 3.3/5.0

Đầu nối Chân/Đầu cắm Chân/Đầu cắm Elastrometic Bề mặt Bề mặt Chân/Đầu cắm

Số chân 68 68 60 22 7 50

Sử dụng Bộ nhớ, vào Bộ nhớ, DRAM, Flash, Flash, Bộ nhớ


ra, Card bus vào ra ROM,
ROM ROM
FLASH

149
5.1.6 Giao tiếp điều khiển hiển thị màn chỉ thị LED, LCD
5.1.6.1 Giao tiếp với bộ hiển thị led 7 đoạn
Vcc
U1
7 13

BCD Input
1
2
6
1
2
4
8
A
B
C
D
12
11
10
8
4 9
5 BI/RBO E 15
3 RBI F 14
LT G
7447

Hình 5.30: Bộ hiển thị sử dụng bằng mạch lái LED 7 đoạn.

Các bộ hiển thị led 7 đoạn là loại giao tiếp hiển thị được sử dụng phổ biển trong
các hệ thống vi xử lý vừa và nhỏ, chúng rất tiện dụng trong việc hiển thị các con số
cho phép xác định được các thông số mà người sử dụng muốn thiết lập cho hệ thống
hoạt động. Một lợi điển quan trọng của các bộ hiển thị LED 7 đoạn là có thể nhìn thấy
với khoảng các khá xa.

Cổng ra cho phép


từng LED.

Vcc

Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q7
PNP PNP PNP PNP PNP PNP PNP PNP

a a a a a a a a
b
c
d
e
8 8 8 8 8 8 8 8
b
c
d
e
b
c
d
e
b
c
d
e
b
c
d
e
b
c
d
e
b
c
d
e
b
c
d
e
f f f f f f f f
g g g g g g g g
dp dp dp dp dp dp dp dp

Cổng ra cấp
mã LED.

Hình 5.31: Hiển thị LED theo chế độ quét.

Việc điều khiển hiện thị các con số có thể thực hiện bằng cách cung cấp mã BCD
qua một cổng ra, tới bộ giải mã led 7 đoạn như trình bày trên hình 5.30. Khi sử dụng
nhiều LED có thể sử dụng nhiều cổng ra cài dữ liệu.

150
Khi muốn hiển thị cả dấu phân cách thập phân và một số ký tự với cách hiển thị qui
định trước, có thể cung cấp các mã tương ứng cho LED thẳng từ một cổng ra của vi xử
lý. Để tiết kiệm số lượng cổng ra, có thể sử dụng kiểu điều khiển quét với mạch phần
cứng như hình 5.31. Trong sơ đồ này, mã hiển thị trên các được cấp chung để đưa tới
tất cả mọi LED, muốn LED nào chỉ thị giá trị cung cấp ở trên chỉ cần cung cấp bit 1 để
mở transistor tương ứng cấp điện vào Kathode chung. Để tất cả các đèn đều sáng, cung
cấp tuần tự các mã hiển thị và bit 1 cấp điện áp cho đèn và thực hiện nhiều lần để lưu
ánh sáng lại trên đèn. Nếu tần số quét đèn lớn hơn đáp ứng của mắt (khoảng 40Hz),
mắt người sẽ không thấy sự chớp tắt của đèn.

5.1.6.2 Giao tiếp bộ hiển thị LED ma trận


Để hiển thị các ký tự hoặc hình ảnh người ta còn sử dụng các LED ma trận điểm
hoặc các màn hình tinh thể lỏng loại ma trận điểm. Với các bộ hiển thị LED dạng ma
trận hình 5.32, để sáng lên một điểm cần cung cấp mức 1 vào cột và mức 0 vào hàng
tương ứng với nó. Như vậy với ma trận điểm 8 hàng 5 cột trên hình 5.32, thì để hiển
thị một ký tự cần cung cấp lần lượt 5 byte mã của nó ra các hàng, tương ứng với 5 cột
lần lượt bằng 1.

Hình 5.32: Cấu tạo đèn hiển thị LED ma trận.

Các ma trận LED có thể chế tạo dưới dạng khối, một khối thông thường là một ma
trận điểm 5x8, 8x8 …. Hình 5.33 mô tả các mã hiển thị số 4 trên một LED ma trận
điểm 5x8. Các bộ hiển thị LED ma trận cũng có thể thực hiện bằng các LED đơn với
bản mạch in kết nối chúng thành ma trận. Các LED cũng được chế tạo nhiều màu sắc,
và với công nghệ Ultra LED, người sử dụng có thể thực hiện các bảng LED có độ sáng
cao, các bảng hiển thị LED có thể nhì thấy rất rõ khi đặt ngoài trời dưới ánh sáng mặt

151
trời. Với phần mềm điều khiển hợp lý các ký tự và hình ảnh hiển thị trên LED có thể
chuyển động theo nhiều chiều.
Với các màn hình ma trận LED mà mỗi điểm bao gồm ba màu cơ bản (Red, Green,
Blue), với công nghệ điều chế độ rộng xung để điều khiển độ sáng của từng màu,
người ta có thể thực hiện các màn hình màu bằng ma trận LED có kích thước rất lớn.

Hình 5.33: Mã hiển thị trên bộ hiển thị LED ma trận

5.1.6.3 Giao tiếp với các bộ hiển thị LCD


Tương tự đối với việc điều khiển màn hình LED ma trận, các màn hình tinh thể
lỏng dạng cũng được điều khiển dưới dạng ma trận điểm, nhưng chú ý các màn hình
tinh thể lỏng cần phải điều khiển bằng tín hiệu điện áp đảo cực liên tục để tránh từ hoá
các tinh thể lỏng. Vì vậy các màn hình tinh thể lỏng thường được gắn sẵn mạch lái khi
thương mại. Các màn hình LCD lớn thường có các cổng chuẩn để nhận dữ liệu, các
cổng náy có thể là các cổng nhận tín hiệu tương tự (R, G, B), cũng có thể là các cổng
nhận tín hiệu số. Để sử dụng các màn hình này cần phải thực hiện các cổng chuẩn và
định dạng dữ liệu trên các cổng này.
Đối với các bộ hiển thị LCD loại nhỏ, mã hiển thị cung cấp cho chúng có thể dưới
dạng ASCII, hoặc một dạng qui định trước, vị trí hiển thị trên màn hình sẽ tính theo
các bit địa chỉ cung cấp cho mạch lái, hoặc vị trí hiển thị có thể thay đổi theo các lệnh
mà chúng được cung cấp. Để cụ thể sau đây sẽ xem xét cấu tạo và hoạt động của bộ
hiển thị loại nhỏ LCD1602A.
Sơ đồ của LCD1602A như mô tả trên hình 5.34 bao gồm các tín hiệu sau:
- CONST (contrast): chỉnh độ tương phản (độ sáng của hình ảnh trên LCD).

152
- EN (Enable): cho phép đọc/ghi dữ liệu. Trong chế độ đọc, EN tác động bằng xung
dương (cạnh lên) và trong chế độ ghi, EN tác động bằng xung âm (cạnh xuống).
- RS (register selection): chọn thanh ghi lệnh (RS = 0) hoặc thanh ghi dữ liệu (RS =
1).
- R/W: đọc (R/W = 1) hay ghi (R/W = 0).
- D7 – D4: bus dữ liệu (chế độ 8 bit: 4 bit cao, chế độ 4 bit: dùng cho truyền 4 bit
cao và 4 bit thấp). Ngoài ra, bit D7 còn dùng làm ngõ ra cho cờ Busy.
- D3 – D0: 4 bit thấp trong chế độ 8 bit hay bỏ trống trong chế độ 4 bit.
- A, K: anode và cathode đèn nền của LCD.

Hình 5.34: Các tín hiệu của bộ hiển thị LCD 1602A

Các thành phần chức năng của LCD1602A gồm:


Cờ Busy (BF – Busy flag): Nếu BF = 1, LCD đang trong quá trình thực thi một lệnh.
Khi đó, các lệnh gởi tiếp theo sẽ bị bỏ qua. BF được đọc tại chân D7 khi RS = 0 và
R/W = 1. Do đó, trước khi thực hiện một lệnh, cần kiểm tra BF trước, nếu BF = 0 thì
mới gởi lệnh.
- DDRAM (Display Data RAM): chứa các ký tự sẽ hiển thị trên LCD, tối đa là 80x8
bit (80 ký tự). Khi hiển thị ở chế độ 1 dòng, địa chỉ của DDRAM có phạm vi từ 00h ÷
4Fh còn khi ở chế độ 2 dòng, địa chỉ DDRAM từ 00h ÷ 27h cho dòng 1 và 40h ÷ 67h
cho dòng 2.
- Bộ đếm địa chỉ (AC - Address Counter): dùng để lưu địa chỉ hiện hành của
DDRAM và CGRAM, có thể thực hiện đọc AC khi RS = 0 và R/W = 1.
- CGROM (Character Genaration ROM): chứa các mô hình ký tự sẽ hiển thị trên
LCD, bao gồm 192 ký tự 5x7 theo bảng mã ASCII (nghĩa là khi DDRAM chứa giá trị
41h tương ứng với mã ASCII của ký tự ‘A’ thì trên LCD sẽ hiện ‘A’), trong đó chỉ có
các mã từ 00h – 0Fh sẽ không lấy theo mã ASCII mà lấy theo các ký tự đã định nghĩa
trong CGRAM.
- CGRAM (Character Genaration RAM): chứa các mô hình ký tự do người sử dụng
định nghĩa để hiển thị các ký tự không có sẵn trong CGROM. CGRAM cho phép tạo
tối đa 8 ký tự 5x8 (xem bảng 5.17).

153
Bảng 5.17 – Các ký tự định nghĩa trong CGRAM
Mã ký tự (dữ liệu Địa chỉ CGRAM Dữ liệu trong CGRAM Mẫu
DDRAM)
D7 D6 D5 D4 D3 D2 D1 D0 A5 A4 A3 A2 A1 A0 P7 P6 P5 P4 P3 P2 P1 P0 Số
0 0 0 0 X 0 0 0 0 0 0 0 0 0 X X X 0 1 1 1 0 mẫu 1
0 0 1 1 0 0 0 1
0 1 0 1 0 0 0 0
0 1 1 1 1 1 1 1
1 0 0 1 0 0 0 1
1 0 1 1 0 0 0 1
1 1 0 1 0 0 0 1
1 1 1 0 0 0 0 0
: : : :
0 0 0 0 X 1 1 0 1 1 0 0 0 0 X X X 0 1 1 1 0 mẫu 7
0 0 1 1 0 0 0 1
0 1 0 1 0 0 0 0
0 1 1 1 0 1 1 1
1 0 0 1 0 0 0 1
1 0 1 1 0 0 0 1
1 1 0 0 1 1 1 1
1 1 1 0 0 0 0 0
0 0 0 0 X 1 1 1 1 1 1 0 0 0 X X X 1 0 0 0 1 pattern 8
0 0 1 1 0 0 0 1
0 1 0 1 0 0 0 1
0 1 1 1 1 1 1 1
1 0 0 1 0 0 0 1
1 0 1 1 0 0 0 1
1 1 0 1 0 0 0 1
1 1 1 0 0 0 0 0

Ví dụ: Để định nghĩa chữ Đ tại vị trí 1 trong CGRAM, địa chỉ và dữ liệu tương ứng là:

Địa chỉ Dữ liệu


00h 1 1 1 1 0 1Eh
01h 0 1 0 0 1 09h
02h 0 1 0 0 1 09h
03h 1 1 1 0 1 1Dh
04h 0 1 0 0 1 09h
05h 0 1 0 0 1 09h
06h 1 1 1 1 0 1Eh
07h 0 0 0 0 0 00h

Nghĩa là tại địa chỉ 00h của CGRAM chứa giá trị là 1Eh và tương tự cho đến địa chỉ
07h.
Các chế độ truyền dữ liệu: LCD1602A có 2 chế độ truyền dữ liệu: chế độ 8 bit (dùng
cả D0 – D7) và chế độ 4 bit (không dùng D3 – D0, chỉ dùng D7 – D4). Trong trường
hợp dùng chế độ 4 bit, dữ liệu 8 bit sẽ được truyền 2 lần: truyền 4 bit cao rồi tiếp tục
truyền 4 bit thấp. Sau khi thực hiện truyền xong 8 bit, BF mới chuyển lên 1. Hai chế
độ truyền này mô tả như hình 5.35 và 5.36.

154
RS

R/W

Internal Internal operation


signal

DB7
No busy

DB7 DATA DATA


Busy Busy

INSTRUCTION Busy Flag Check Busy Flag Check Busy Flag Check INSTRUCTION

Hình 5.35: Định thời chế độ truyền 8 bit LCD 1602A

RS

R/W

Internal Internal operation


signal

DB7
No busy

DB7 D7 D3 D7 D3
Busy

INSTRUCTION Busy Flag Check Busy Flag Check INSTRUCTION

Hình 5.36: Định thời chế độ truyền 4 bit LCD 1602A

155
Bảng 5.18: Bảng mã lệnh LCD
Lệnh Mã lệnh Mô tả Thời
gian(fosc=
270kHz)

RS R/W DB DB DB DB DB DB DB DB
7 6 5 4 3 2 1 0
Clear 0 0 0 0 0 0 0 0 0 1 Write “20H” to DDRAM, and set 1.53ms
Display DDRAM address to “00H” from AC.
Return 0 0 0 0 0 0 0 0 1 X Set DDRAM address to “00H” from 1.53ms
Home AC and return cursor to its original
position if shifted. The contents of
DDRAM are not changed.
Entry 0 0 0 0 0 0 0 1 I/D S Assign cursor moving direction. 39us
Mode Set I/D=”1”: increment,
I/D=”0”: decrement
and display shift enable bit.
S=”1”: make entire display shift
of all lines during DDRAM
write.
S=”0”: display shift disable
Display 0 0 0 0 0 0 1 D C B Set display/cursor/blink on/off 39us
ON/OFF D=”1”: display on,
Control D=”0”: display off,
C=”1”: cursor on,
C=”0”: cursor off,
B=”1”: blink on,
B=”0”: blink off.
Cursor 0 0 0 0 0 1 S/C R/L X X Cursor or display shift, 39us
or S/C=”1”: display shift,
Display S/C=”0”: cursor shift,
Shift R/L=”1”: shift to right,
R/L=”0”: shift to left.
Function 0 0 0 0 1 DL N F X X Set interface data length 39us
Set DL=”1”: 8-bit
DL=”0”: 4-bit
N=”1”: 2-line display
N=”0”: 1-line.display
F=”0” 5*7-dot
F=”1” 5*10-dot
Set 0 0 0 1 AC AC AC AC AC AC Set CGRAM address in address 39us
CGRAM 5 4 3 2 1 0 counter
Address
Set 0 0 1 AC AC AC AC AC AC AC Set DDRAM address in address 39us
DDRAM 6 5 4 3 2 1 0 counter
Address
Read Busy 0 1 BF AC AC AC AC AC AC AC Can be known whether during 0us
Flag and 6 5 4 3 2 1 0 internal operation or not by reading
Address BF. The contents of address counter
can also be read.
BF=”1”: busy state,
BF=”0”: ready state.
Write Data 1 0 D7 D6 D5 D4 D3 D2 D1 D0 Write data into internal RAM 43us
(DDRAM/CGRAM).
Read Data 1 1 D7 D6 D5 D4 D3 D2 D1 D0 Read data from internal RAM 43us
(DDRAM/CGRAM)

156
Bảng 5. 19: Các lệnh thông dụng của LCD 1602A
Hex Lệnh
01H Xóa màn hình màn hình
02H Trở về đầu chuỗi
04H Dịch con trỏ sang trái
06H Dịch con trỏ sang phải
05H Dịch màn hình sang phải
07H Dịch màn hình sang trái
08H Tắt con trỏ, tắt hiển thị
0AH Tắt hiển thị, bật con trỏ
0CH Bật hiển thị, tắt con trỏ
0EH Bật hiển thị, nhấp nháy con trỏ
0FH Tắt hiển thị, nhấp nháy con trỏ
10H Dịch vị trí con trỏ sang trái
14H Dịch vị trí con trỏ sang phải
18H Dịch toàn bộ màn hình sang trái

5.1.7 Cảm biến vòng quay (Rotary Encoder)

Bộ cảm biến vòng quay (Rotary Encoder) là một thiết bị biến đổi sự chuyển động
thành một chuỗi xung số. Bằng các đếm các xung, hoặc xét mã mà Encoder cung cấp
có thể xác định được vi trí chuyển động chính xác của thiết bị. Encoders có hai loại
cấu hình là tuyến tính (linear encoder) và quay (rotary encoder). Bộ mã hoá vị trí quay
được sản xuất ở hai dạng cơ bản là:

- Mã hoá tuyệt đối (absolute encoder): Tạo ra một từ số duy nhất tương ứng với mỗi
vị trí quay của nó.
- Mã hoá tăng (incremental encoder): cung cấp các xung số khi quay cho phép đo
được vị trí tương ứng với góc quay.

Hầu hết các cảm biến quay được chế tạo từ một đĩa thuỷ tinh hoặc nhựa được xẻ
rãnh, bộ thu phát quang đặt hai bên đĩa quay sẽ cảm nhận các rãnh trên đĩa để tạo ra
các xung hoặc các tổ hợp số nhị phân. Hình 5.37 mô tả nguyên lý của một encoder với
một đĩa mã hoá quay tròn và một mặt nạ che đứng nguyên. Tấm che đứng nguyên này
thường không được sử dụng.

Trong bộ cảm biến vòng quay tuyệt đối, đĩa quang được thiết kế để tạo ra một từ
mã nhị phân riêng cho N vị trí khác nhau của trục quay. Ví dụ, nếu encoder có 8 vạch
thì nó có thể tạo ra 256 giá trị nhị phân cho một vòng quay hay cứ 1,406 độ thì tổ hợp
nhị phân do encoder cung cấp sẽ thay đổi. Hầu hết các absolute encoder đều tạo ra các
mã nhị phân tự nhiên (binary) hoặc mã gray. Hình 5.38 mô tả cấu trúc đĩa quang 4

157
vạch để tạo ra mã nhị phân tư nhiên 4 bit và mã gray 4 bit. Bộ cảm biến quang sẽ cảm
nhận các vùng trắng trên các vạch đĩa để tạo ra bit 0 và vùng đen để tạo ra bit 1 của
mã. Mã tạo ra tương ứng với góc quay của trục được cho trong bảng 5.20.

Hình 5.37: Nguyên lý rotery encoder

Hình 5.38: Đĩa quang 4 vạch trong các absolute encoder tạo mã gray và nhị phân
Bảng 5.20: Mã ngõ ra của absolute encoder

Thập phân Khoảng góc quay (độ) Mã nhị phân Mã Gray


0 0-22.5 0000 0000
1 22.5-45 0001 0001
2 45-67.5 0010 0011
3 67.5-90 0011 0010
4 90-112.5 0100 0110
5 112.5-135 0101 0111
6 135-157.5 0110 0101
7 15.75-180 0111 0100

158
8 180-202.5 1000 1100
9 202.5-225 1001 1101
10 225-247.5 1010 1111
11 247.5-270 1011 1110
12 270-292.5 1100 1010
13 292.5-315 1101 1011
14 315-337.5 1110 1001
15 337.5-360 1111 1000

Hình 5.39: Đĩa quang và dạng sóng ngõ ra encoder tăng

Các bộ encoder tăng (đôi khi được gọi là các encoder tương đối), có thiết kế đơn
giản hơn các encoder tuyệt đối. Nó gồm đĩa quay hai vạch với hai bộ cảm biến cung
cấp các xung ngõ ra được gọi là các kênh A và B. Khi trục quay chuỗi xung tạo ra trên
các kênh này có tần số tỷ lệ thuận với tốc độ quay của trục. Cấu tạo của đĩa quang và
dạng sóng ra trên các kênh được mô tả trên hình 5.39. Bằng cách đếm số xung tạo ra
và nếu biết trước khoảng chia trên đĩa quang sẽ có thể đo được góc chuyển dịch của
trục quay. Góc lệch pha giữa xung hai kênh A và B cũng cho phép xác định được
chiều quay, bằng cách xác định kênh dẫn hướng cho kênh kia. Hai tín hiệu ở hai kênh
sẽ lệch pha ¼ chu kỳ. Thông thường encoder tăng thường được thiết kế để tạo ra xung
thứ 3, gọi là xung chỉ số (INDEX), một xung sẽ được tạo ra sau một vòng quay, và
xung này rất tiện dung để đếm số vòng quay, hoặc xác định đã quay hết một vòng. Nó
cũng thường được sử dụng cho việc xác định vị trí bắt đầu của các chuyển động tịnh
tiến (home base hoặc zero position). Để việc chế tạo đơn giản và giảm giá thành chế
tạo encoder, người ta còn sử dụng các đĩa quang một vạch.
Việc giải mã các tín hiệu hai kênh A và B để xác định chiều quay như mô tả trên
hình 5.40. Việc giải mã này có thể sử dụng các mạch tuần tự theo các cách khác nhau,
trên hình 5.40 mô tả ba cách để tạo ra các xung 1X, 2X, 4X. Ngõ ra 1X chỉ cung cấp
một xung sau một chu kỳ của tín hiệu kênh A hoặc kênh B. Ngõ ra 4X sẽ tạo ra một

159
xung tại mỗi cạnh lênh và xuống của các tín hiệu A và B, như vậy nếu có 1 xung 1X
thì sẽ có 4 xung ở ngõ ra 4X. Hướng quay cùng hay ngược chiều kim đồng hồ sẽ được
xác định bằng mức 1 của một tín hiệu tại cạch chuyển mức của tín hiệu thứ 2. Ví dụ,
trong chế độ 1X, tại cạnh xuống của tín hiệu kênh A, kênh B có trạng thái bằng 1, suy
ra chiều truyền đang cùng chiều kim đồng hồ, và nếu tại cạnh xuống của B tín hiệu A
bằng 1 thì trục đang quay ngược chiều kim đồng hồ. Như vậy nếu chỉ có một xung ngõ
ra sẽ không thể xác định được hướng quay của trục.

Hình 5.40: Xác định chiều quay theo xung hai kênh A và B

5.1.8 Giao tiếp công suất cao


Các ngõ ra của các bộ vào ra số thông thường chỉ cung cấp dòng điện khoảng vài
chục mA khi mức thấp, và khoảng 1 tới 2 mA khi ở mức cao. Vì vậy nếu muốn điều
khiển các thiết bị có công suất lớn như: các bóng đèn điện, các công tắc điện từ
(solenoid), các động cơ … bằng hệ thống vi xử lý, chúng ta cần phải sử dụng các bộ
giao tiếp công suất lớn để khuếch đại các tín hiệu số này cả về dòng điện mức và dạng
điện áp.
Khi cần giao tiếp với các thiết bị với công suất không lớn lắm, có thể sử dụng các
bộ đệm TTL như 74LS07, 7406 …. Các bộ đệm loại này có thể cho dòng điện 40mA
khi cung cấp mức thấp, hoặc một số IC lái thông dụng họ ULN có thể cung cấp dòng

160
điện tới gần 1 A. Hình 5.41 mô tả cấu trúc bên trong của các IC họ ULN và ví dụ về
việc sử dụng để điều khiển động cơ bước.

Hình 5.41: Cấu trúc và ứng dụng IC khuếch đại dòng DC

Với các tải yêu cầu dòng điện lớn hơn như các công tắc điện từ, các relay có thể sử
dụng các transistor đệm làm việc ở chế độ khoá (hình 5.42a). Khi cần dòng điện lớn
hơn có thể sử dụng các transistor công suất, nếu dòng điện tải yêu cầu lớn (dòng cực C
lớn) sẽ yêu cầu cung cấp dòng điện cực B lớn lúc này cần ghép hai hoặc nhiều tầng
transistor (hình 5.42b). Cấu trúc này có thể cho dòng điện tải lên tới vài chục Ampere.
Nhưng với dòng điện vài chục đến vài trăm mA, thông thường người ta sử dụng các hệ

161
thống kết nối Relay – Contactor. Khi tần số đóng ngắt yêu cầu lớn, các thiết bị đóng
cắt tiếp điểm dễ hư hỏng và không đáp ứng kịp, có thể sử dụng các linh kiện điện tử
công suất như: SCR, Triac, IGBT, hay thông dụng và hiệu quả nhất là các contactor
điện tử (Solid – State Relay), như trên hình 5.43. Các linh kiện này có khả năng đóng
ngắt với tần số rất lớn và không gây nhiễu nguồn điện, cũng như các thiết bị khác.
LAMP MOTOR AC

+Vcc
+Vcc K1 220V
K1 220V

RELAY CONTACTOR

Out Rb Rb
NPN Out NPN DAR

(a) (b)
Hình 5.42: Mạch đệm transistor.

Hình 5.43: Cấu tạo contactor điện tử

Hình 5.44: Giao tiếp công suất bằng MOSFET (a) và IGBT (b)
Các linh kiện bán dẫn như MOSFET và IGBT có tổng trở vào lớn nên thường yêu
cầu dòng kích vào khá nhỏ, nhưng vẫn có khả năng cung cấp dòng tải lớn. Hình 5.44
trình bày việc sử dụng MOSFET và IGBT trong việc đóng ngắt dòng cho các cuộn dây
hoặc động cơ điện.
162
5.2 GIAO TIẾP NỐI TIẾP
5.2.1 Khái niệm
Trong các hệ thống vi xử lý thông tin thường được truyền song song dưới dụng
byte hoặc từ (nhiều byte). Khi truyền dữ liệu với thiết bị bên ngoài ở khoảng cách xa,
để tiết kiệm dây dẫn và tránh nhiễu xuyên kênh giữa các đường tín hiệu song song,
người ta thường truyền chuỗi bit nối tiếp trên một đường dây. Đường truyền nối tiếp
giữa hai thiết bị có thể theo ba chế độ như mô tả trên hình 5.45.

Hình 5.45: Truyền dữ liệu nối tiếp (a) Simplex, (b) Hafl Duplex, (c) Full duplex

Trong chế độ đơn công (simplex) dữ liệu chỉ truyền theo một chiều, hệ thống có
một bộ phận chỉ truyền và một bộ phận chỉ nhận (hình 5.34a). Chế độ bán song công
sử dụng một đường truyền, nhưng có thể chuyển kết nối qua các bộ thu phát dữ liệu ở
hai đầu, để có thể truyền dữ liệu theo hai chiều (hình 5.45b). Chế độ song công sử
dụng hai đường dây để truyền nhận dữ liệu theo hai chiều.

Hình 5.46: Các thành phần trong hệ thống truyền dữ liệu nối tiếp
Hình 5.46 mô tả các thành phần trong hệ thống truyền nhận dữ liệu nối tiếp trên
đường truyền xa, dữ liệu song song trong hệ thống vi xử lý (Central system) được biến
đổi thành tín hiệu nối tiếp qua bộ truyền nhận nối tiếp (UART/SIO).
Bộ truyền nhận nối tiếp có chức năng chuyển dữ liệu song song từ hệ thống thành
chuỗi dữ liệu nối tiếp, thêm các bit chức năng để tạo thành khung truyền dữ liệu, theo
chiều truyền. Theo chiều nhận, nó nhận chuỗi dữ liệu nối tiếp, thông báo lỗi (nếu có)
và loại bỏ các bit chức năng, để chuyển thành dữ liệu song song chuyển cho CPU. Nếu

163
đường truyền ngắn ngõ ra khối UART/SIO có thể kết nối trực tiếp với một hệ thống vi
xử lý khác. Khi đường truyền xa, ngõ ra của UART/SIO được nối tới khối điều chế và
giải điều chế tín hiệu MODEM.
MODEM nhận tín hiệu số và điều chế lên tần số cao để chống nhiễu và giảm suy
hao trên đường truyền, cho phép tín hiệu có thể truyền trên khoảng cách lớn. Tín hiệu
số cũng có thể điều chế đơn giản thành độ lệch điện áp giữa hai đường dây (IEEE
485). Để truyền nhận tín hiệu có thể dùng chung một đường dây cần thêm khối ghép
đường truyền (Coupler Transceiver).
Dữ liệu truyền nối tiếp được đóng gói vào các khung truyền theo các tiêu chuẩn
khác nhau. Có hai chuẩn truyền thường sử dụng cho cổng nối tiếp trong các hệ thống
vi xử lý là: truyền cận đồng bộ (Asynchronous) và truyền đồng bộ (synchronous).
Trong chuẩn cận đồng bộ, mỗi dữ liệu truyền sẽ được đóng gói trong một khung
truyền với các bit chức năng được thêm vào. Còn với chuẩn đồng bộ thì các bit dữ liệu
sẽ được truyền liên tiếp sau khi đã đồng bộ giữa hai bên.

5.2.2 Chuẩn RS-232c/V24


RS-232C (Recommended Standard 232 version C) là một tiêu chuẩn do Electronic
Industries Association ( EIA) đưa ra, liên quan đến việc truyền dữ liệu giữa các máy
tính bằng cổng nối tiếp tương thích RS- 232C, để có thể dùng với modem ngoài, máy
in, máy quét hình, và các thiết bị ngoại vi khác.
Các thiết bị ghép nối trên cổng RS232C được chia thành 2 loại: DTE (Data
Terminal Equipment) và DCE (Data Communication Equipment). DCE là các thiết bị
trung gian như MODEM còn DTE là các thiết bị tiếp nhận hay truyền dữ liệu như máy
tính, PLC, vi điều khiển, …. Việc trao đổi tín hiệu thông thường qua 2 chân RxD
(nhận) và TxD (truyền). Các tín hiệu còn lại có chức năng hỗ trợ để thiết lập và điều
khiển quá trình truyền, được gọi là các tín hiệu bắt tay (handshake). Ưu điểm của quá
trình truyền dùng tín hiệu bắt tay là có thể kiểm soát đường truyền.
Chuẩn RS-232 quy định mức logic 1 ứng với điện áp từ -3V đến -15V (mark), mức
logic 0 ứng với điện áp từ 3V đến 15V (space) và có khả năng cung cấp dòng từ 10
mA đến 20 mA. Ngoài ra, tất cả các ngõ ra đều có đặc tính chống ngắn mạch. Chuẩn
RS-232C cho phép truyền tín hiệu với tốc độ đến 20.000 bps nhưng nếu cáp truyền đủ
ngắn có thể lên đến 115.200 bps.

TxD
Making Các bit dữ liệu được Bit chăn
Start bit lẻ Stop bit
làm dấu lập trình trước

Tạo ra khi được


lập trình
Hình 5.47: Khung truyền dữ liệu bên truyền trong chế độ cận đồng bộ.

164
Các phương thức nối giữa DTE và DCE:
- Đơn công (simplex connection): dữ liệu chỉ được truyền theo 1 hướng.
- Bán song công ( half-duplex): dữ liệu truyền theo 2 hướng, nhưng mỗi thời điểm chỉ
được truyền theo 1 hướng.
- Song công (full-duplex): số liệu được truyền đồng thời theo 2 hướng.
Định dạng của khung truyền dữ liệu theo chuẩn RS-232C theo chế độ cận đồng bộ
như trên hình 5.47.
Khi không truyền dữ liệu, đường truyền sẽ ở trạng thái mark (điện áp -10V). Khi
bắt đầu truyền, DTE sẽ đưa ra xung Start (space: 10V) và sau đó lần lượt truyền từ D0
đến D7 và Parity, cuối cùng là xung Stop (mark: -10V) để khôi phục trạng thái đường
truyền. Dạng tín hiệu truyền mô tả như hình 5.48 (truyền ký tự A). Các đặc tính kỹ
thuật của chuẩn RS-232C cho trong bảng 5.21.
Đầu nối tín hiệu chuẩn RS232 có hai dạng 25 chân (DB25) và 9 chân (DB9) như
mô tả trên hình 5.49. Chức năng của các tín hiệu được cho trong bảng 5.22.

Hình 5.48: Tín hiệu trên cổng RS232C khi truyền ký tự A

Bảng 5.21: Đặc tính kỹ thuật cổng RS232C


Chiều dài cable cực đại 15m
Tốc độ dữ liệu cực đại 20 Kbps
Điện áp ngõ ra cực đại ± 25V
Điện áp ngõ ra có tải ± 5V đến ± 15V
Trở kháng tải 3K đến 7K
Điện áp ngõ vào ± 15V
Độ nhạy ngõ vào ± 3V
Trở kháng ngõ vào 3K đến 7K

165
Hình 5.49: Các loại đều nối tín hiệu theo chuẩn RS232

Bảng 5.22: Chức năng các tín hiệu trên cổng truyền RS232C
D25 DB9 Tín Hướng Mô tả
hiệu truyền
1 - - - Protected ground: nối đất bảo vệ
2 3 TxD DTEDCE Transmitted data: chân truyền dữ liệu
3 2 RxD DCEDTE Received data: chân nhận dữ liệu
4 7 RTS DTEDCE Request to send: DTE yêu cầu truyền dữ liệu
5 8 CTS DCEDTE Clear to send: DCE sẵn sàng nhận dữ liệu
6 6 DSR DCEDTE Data set ready: DCE sẵn sàng làm việc
7 5 GND - Ground: nối đất (0V)
8 1 DCD DCEDTE Data carier detect: DCE phát hiện sóng mang
20 4 DTR DTEDCE Data terminal ready: DTE sẵn sàng làm việc
22 9 RI DCEDTE Ring indicator: báo chuông
23 - DSRD DCEDTE Data signal rate detector: dò tốc độ truyền
24 - TSET DTEDCE Transmit Signal Element Timing: tín hiệu định thời
truyền đi từ DTE
15 - TSET DCEDTE Transmitter Signal Element Timing: tín hiệu định
thời truyền từ DCE để truyền dữ liệu
17 - RSET DCEDTE Receiver Signal Element Timing: tín hiệu định thời
truyền từ DCE để truyền dữ liệu
18 - LL Local Loopback: kiểm tra cổng
21 - RL DCEDTE Remote Loopback: Tạo ra bởi DCE khi tín hiệu nhận
từ DCE lỗi
14 - STxD DTEDCE Secondary Transmitted Data
16 - SRxD DCEDTE Secondary Received Data
19 - SRTS DTEDCE Secondary Request To Send
13 - SCTS DCEDTE Secondary Clear To Send
12 - SDSRD DCEDTE Secondary Received Line Signal Detector
25 - TM Test Mode
9 - Dành riêng cho chế độ test
10 - Dành riêng cho chế độ test
11 Không dùng

166
Kết nối truyền dữ liệu giữa hai thiết bị theo chuẩn RS232C có thể thực hiện theo
kiểu Null Modem, chỉ có các đường dây cho việc truyền nhận dữ liệu, không sử dụng
các tín hiệu bắt tay, như trên hình 5.50. Hoặc cũng có thể kết nối có tín hiệu bắt tay
như trên hình 5.51.

DTE1 DTE2 DTE DCE

Hình 5.50: Kết nối Null Modem trên cổng RS232

Hình 5.51: Kết nối trong truyền thông nối tiếp dùng tín hiệu bắt tay

Khi DTE1 cần truyền dữ liệu thì cho DTR tích cực  tác động lên DSR của DTE2
cho biết sẵn sàng nhận dữ liệu và cho biết đã nhận được sóng mang của MODEM (ảo).
Sau đó, DTE1 tích cực chân RTS để tác động đến chân CTS của DTE2 cho biết DTE1
có thểnhận dữ liệu. Khi thực hiện kết nối giữa DTE và DCE, do tốc độ truyền khác
nhau nên phải thực hiện điều khiển lưu lượng. Quá trinh điều khiển này có thể thực
hiện bằng phần mềm hay phần cứng. Quá trình điều khiển bằng phần mềm thực hiện
bằng hai ký tự Xon và Xoff. Ký tự Xon được DCE gởi đi khi rảnh (có thể nhận dữ
liệu). Nếu DCE bận thì sẽ gởi ký tựXoff. Quá trình điều khiển bằng phần cứng dùng
hai chân RTS và CTS. Nếu DTE muốn truyền dữ liệu thì sẽ gởi RTS để yêu cầu
truyền, DCE nếu có khả năng nhận dữ liệu (đang rảnh) thì gởi lại CTS.

5.2.3 Cổng RS-232 máy tính


Các cổng nối tiếp trong máy tính được đánh số là COM1, COM2, COM3, COM4
với các địa chỉ như trong bảng 5.22.
Bảng 5.22: Địa chỉ các cổng nối tiếp trong máy tính
Tên Địa chỉ Ngắt Vị trí chứa địa chỉ
COM1 3F8h 4 0000h:0400h
COM2 2F8h 3 0000h:0402h
COM3 3E8h 4 0000h:0404h
COM4 2E8h 3 0000h:0406h

167
Giao tiếp cổng nối tiếp trong máy tính sử dụng vi mạch UART với các thanh ghi
cho trong bảng 5.23. Các thanh ghi này có thể truy xuất trực tiếp kết hợp với địa chỉ
cổng (ví dụ như thanh ghi cho phép ngắt của COM1 có địa chỉ là BACOM1 + 1 =
3F9h.
Bảng: 5.23: Các thanh ghi UART cổng nối tiếp
Offset DLAB R/W Tên Chức năng
0 W THR Transmitter Holding Register (đệm truyền)
0 0 R RBR Receiver Buffer Register (đệm thu)
1 R/W BRDL Baud Rate Divisor Latch (số chia byte thấp)
0 R/W IER Interrupt Enable Register (cho phép ngắt)
1
1 R/W BRDH Số chia byte cao
R IIR Interrupt Identification Register (nhận dạng ngắt)
2
W FCR FIFO Control Register – điều khiển FIFO
3 R/W LCR Line Control Register (điều khiển đường dây)
4 R/W MCR Modem Control Register (điều khiển MODEM)
5 R LSR Line Status Register (trạng thái đường dây)
6 R MSR Modem Status Register (trạng thái MODEM)
7 R/W Scratch Register (thanh ghi tạm)

Thanh ghi IIR (Interrupt Identification): IIR xác định mức ưu tiên và nguồn gốc
của yêu cầu ngắt mà UART đang chờ phục vụ. Khi cần xử lý ngắt, CPU thực hiện đọc
các bit tương ứng để xác định nguồn gốc của ngắt. chức năng các bit của IIR như hình
5.52.

Hình 5.52: Chức năng các bit thanh ghi IIR

168
Chức năng của các bit trong các thanh ghi: thanh ghi cho phép ngắt IER (Interrupt
Enable Register), thanh ghi điều khiển modem MCR (Modem Control Register), thanh
ghi trạng thái modem MSR ( Modem Status Register) như mô tả trên hình 5.53.
Thanh ghi IER

MCR (Modem Control Register)

MSR (Modem Status Register)

Hình 5.53: Chức năng các bit của các thanh ghi IER, MCR, MSR

Hình 5.54: Thanh ghi LSR


Thanh ghi thông báo trạng thái đường truyền LSR (Line Status Register): có các
bit như trên hình 5.54. Chức năng các bit như sau:
- FIE: FIFO Error – sai trong FIFO.
- TSRE: Transmitter Shift Register Empty – thanh ghi dịch rỗng (=1 khi đã phát 1
ký tự và bị xoá khi có 1 ký tự chuyển đến từ THR.
- THRE: Transmitter Holding Register Empty (=1 khi có 1 ký tựđã chuyển từ THR –
TSR và bị xoá khi CPU đưa ký tự tới THR).
- BI: Break Interrupt (=1 khicó sự gián đoạn khi truyền, nghĩa là tồn tại mức logic 0
trong khoảng thời gian dài hơn khoảng thời gian truyền 1 byte và bị xoá khi CPU
đọc LSR).
169
- FE: Frame Error (=1 khi có lỗi khung truyền và bị xoá khi CPU đọc LSR).
- PE: Parity Error (=1 khi có lỗi parity và bị xoá khi CPU đọc LSR).
- OE: Overrun Error (=1 khi có lỗi thu đè, nghĩa là CPU không đọc kịp dữ liệu làm
cho quá trình ghi chồng lên RBR xảy ra và bị xoá khi CPU đọc LSR).
- RxDR: Receiver Data Ready (=1 khi đã nhận 1 ký tự và đưa vào RBR và bị xoá
khi CPU đọc RBR).
Thanh ghi điều khiển đường truyền LCR (Line Control Register) có các bit sau:

- DLAB (Divisor Latch Access Bit) = 0: truy xuất RBR, THR, IER, = 1 cho phép
đặt bộ chia tần trong UART để cho phép đạt tốc độ truyền mong muốn.
- UART dùng dao động thạch anh với tần số 1.8432 MHz đưa qua bộ chia 16 thành
tần số 115,200 Hz. Khi đó, tuỳ theo giá trị trong BRDL và BRDH, ta sẽ có tốc độ
mong muốn. Ví dụ nhưđường truyền có tốc độ truyền 2,400 bps có giá trị chia
115,200 / 2,400 = 48d = 0030h BRDL = 30h, BRDH = 00h.
Một số giá trị thông dụng xác định tốc độ truyền cho như sau:

Tốc độ (bps) BRDH BRDL


1,200 00h 60h
2,400 00h 30h
4,800 00h 18h
9,600 00h 0Ch
19,200 00h 06h
38,400 00h 03h
57,600 00h 02h
115,200 00h 01h

- SBCB (Set Break Control Bit) =1: cho phép truyền tín hiệu Break (=0) trong
khoảng thời gian lớn hơn một khung.
- PS (Parity Select):

PS2 PS1 PS0 Mô tả


X X 0 Không kiểm tra
0 0 1 Kiểm tra lẻ
0 1 1 Kiểm tra chẵn
1 0 1 Parity là mark
1 1 1 Parity là space

- STB (Stop Bit) = 0: 1 bit stop, =1: 1.5 bit stop (khi dùng 5 bit dữ liệu) hay 2 bit
170
stop (khi dùng 6, 7, 8 bit dữ liệu).
- WLS (Word Length Select):

WLS1 WLS0 Độ dài dữ liệu


0 0 5 bit
0 1 6 bit
1 0 7 bit
1 1 8 bit

Hình 5.55: Các mạch chuyển mức giao tiếp TTL và RS232C

171
Cổng nối tiếp máy tính được thực hiện theo chuẩn RS232C nên có mức tín hiệu
khác với các hệ thống vi xử lý bên ngoài (thông thường các hệ thống CPU chạy với
mức logic TTL (0 – 5Volt). Vì vậy, cần các vi mạch tương thích mức điện áp cho việc
giao tiếp này. Các vi mạch thường dùng là cặp MC1488-MC1489, MAX232 (Maxim)
hoặc DS275 (Dallas), hình 5.55. Loại MAX232 thông dụng hơn cả vì chỉ cần nguồn
5V, nguồn ±10V do mạch dao động 16KHz bên trong cung cấp.
Chuẩn RS 232 dùng đường truyền không cân bằng vì các tín hiệu đều lấy điểm
chuẩn là đường mass chung, bị ảnh hưởng của nhiễu tác động, do đó tốc độ truyền và
khoảng cách truyền bị giới hạn. Khi cần tăng khoảng cách và tốc độ truyền, phương
pháp truyền hai dây vi sai trở nên hữu hiệu hơn vì hai dây có đặc tính giống nhau, tín
hiệu truyền đi là hiệu số điện áp giữa hai dây, do đó loại trừ được nhiễu chung. Hai
chuẩn thường dùng là RS422 và RS485. Tuy nhiên chuẩn RS422 ít thông dụng hơn
RS485.

Hình 5.56: Ghép nối truyền nhận nối tiếp vi sai RS422
Chuẩn RS422 dùng 4 dây do đó cho phép truyền song công, tức là cùng lúc có thể
thu phát. Tín hiệu từ máy tính theo chuẩn RS 232 có mức điện áp ±15V phải đổi sang
mức TTL 0 - 5V dùng vi mạch MAX232, sau đó tín hiệu đơn được đổi sang tín hiệu vi
sai dùng vi mạch MAX485 (488, 489, 490, 491). Điện áp vi sai phải lớn hơn 200mV.
Nếu VAB > 200mV ta coi như trị logic 1 được truyền còn nếu VAB <− 200mV thì trị
logic 0 được truyền. Hình 5.56 mô tả kết nối trên đường truyền RS422.

Hình 5.57: Cấu trúc mạng truyền nối tiếp RS485

Chuẩn RS422 không cho phép có hơn hai thiết bị truyền nhận tin trên đường dây.
Với chuẩn RS485 ta có thể nối 32 thiết bị thu phát trên hai dây có khoảng cách tối đa
1200m và vận tốc truyền đến 10Mbit/s. Hai điện trở kết thúc 120 Ohm được nối với

172
hai đầu xa nhất của mạng, dây dẫn là loại dây xoắn đôi 26AWG. Chuẩn này dùng vi
mạch lái SN75176 hay họ Maxim MAX481, 483, 485 , 487, 488, 489, 490, 1487. Tiêu
biểu là vi mạch MAX485 chuyển đổi từ tín hiệu đơn sang tín hiệu vi sai, có chân điều
khiển cho ngõ ra vi mạch ở tổng trở cao, nhờ vậy có thể nối chung nhiều vi mạch lái
với nhau. Hình 5.57 mô tả mạng truyền dữ liệu nối tiếp kết nối theo chuẩn RS 485.
MAX485 gồm bộ lái và bộ thu, tín hiệu vào bộ lái D logic TTL đổi thành hai tín
hiệu A và B, khi tín hiệu điều khiển DE mức thấp thì hai chân AB cách ly với vi mạch.
Tín hiệu vào bộ thu là A và B, tín hiệụ ra R logic TTL tùy thuộc hiệu điện áp giữa A
và B, khi /RE logic 1 thì R cách ly với vi mạch. Hình 5.58 mô tả cấu trúc và các đặc
tính kỹ thuật của IC Max485 và SN75176.

Input D Control DE OUTPUT A B


H H HL
L H LH
X L ZZ

VID=VA-VB Control /RE Output R


VID≥ 0.2 V L H
--
L ?
0.2V≤VID≤0.2V
VID≤-0.2V L L
X H Z
Ngõ vào hở L H

Hình 5.58: Cấu tạo và hoạt động vi mạch truyền nối tiếp RS485

5.2.4 Modem
Modem (modulator + demodulator) cho phép ghép nối hai DTE qua khoảng cách
nhờ đường dây điện thoại công cộng có sẵn hay đường dây điện thoại riêng. Tín hiệu
số từ DTE dùng để điều chế sóng mang rồi truyền đi, ở nơi thu sóng mang được giải
điều chế rồi đổi lại thành tín hiệu số đưa vào DTE.
Ngoài việc truyền tín hiệu số thông qua modem còn có thể trao đổi thoại, fax,

173
videophone. Modem (xuất hiện từ thập niên 60) chia làm hai loại là: modem trong và
modem ngoài. Modem trong, được cắm vào slot PCI của máy tính và thường được gắn
địa chỉ là COM3 hay COM4, vận tốc truyền tối đa 56kbps, có giá rẻ hơn. Modem
ngoài ghép với máy tính qua đường cáp 25 – 9, 9 – 9 hay 25 – 25, tín hiệu được truyền
theo chuẩn RS 232 (± 12V) hoặc USB.

Bảng 5.23 Các tín hiệu giao tiếp của modem


DTE 9 chân DTE 25 chân DCE Modem
1 FG 1 FG
3 2 TD → 2 TD
2 3 RD ← 3 RD
7 4 RTS → 4 RTS
8 5 CTS ← 5 CTS
6 6 DSR ← 6 DSR
5 7 SG 7 SG
1 8 DCD ← 8 DCD
4 20 DTR → 20 DTR
9 22 RI ← 22 RI
Truyền đồng 15 TXCLK ← 15 TXCLK
bộ 17 RXCLK ← 17 RXCLK
24 XTCLK → 24 XTCLK

Hình 5.59: Truyền dữ liệu trên đường điện thoại bằng modem

Hai modem kết nối với nhau thông qua quay số và tổng đài điện thoại sẽ thực hiện
kết nối. Cấu trúc kết nối truyền dữ bằng modem qua đường điện thoại được mô tả trên
hình 5.59. Việc trao đổi dữ liệu giữa máy tính và modem thực hiện theo cơ chế bắt tay
phần cứng hay phần mềm.
- Bắt tay phần cứng: DTE muốn truyền dữ liệu liên quan DCE thì cho RTS = H và
chờ CTS trả lời modem. Ngược lại modem muốn truyền dữ liệu thì cho DSR = H và
174
chờ DTR. Khi DTE là vi điều khiển có thể cho RTS và DTR của modem ở mức cao
hoặc điều khiển các chân này qua cổng nhập xuất I/0.
- Bắt tay phần mềm: dùng hai ký tự XON (CtrlS) (transmitter ON) và XOFF
(CtrlQ) (transmitter off) để bắt đầu truyền hay ngưng truyền dữ liệu. Dùng phương
pháp này có thể gây ra sai lầm khi dữ liệu trùng với XON hay XOFF.
Do đường dây điện thoại công cộng chủ yếu dùng cho điện thoại nên tần số giới
hạn 3300Hz, điều này làm hạn chế vận tốc truyền dữ liệu (định lý Shannon) do đó các
hãng sản xuất modem phải tìm cách nâng cao tốc độ truyền và độ tin cậy thông tin
bằng các phương pháp điều chế, nén tín hiệu và sửa sai. Hiện nay tốc độ tối đa là
56kbps trên lý thuyết, còn thông thường sử dụng modem ngoài tốc độ là 33,6kbps.
Modem có thể thực hiệc các giải pháp điều chế như:
- Điều biên AM: mức 0 và 1 được biểu thị bằng hai điện áp khác nhau của sóng mang.
- Điều tần FM: dùng hai tần số khác nhau 1070 Hz cho logic 0 và 1270 Hz cho logic 1
ở một chiều, còn chiều ngược lại theo thứ tự là 2025 Hz và 2225 Hz. Hai dải tần số
khác nhau nên modem hoạt động song công trên một đường dây.
- Điều pha PM: sóng mang có tần số cố định nhưng dùng pha 0 và pha 180° để biểu thị
logic.
- Điều chế TCM (Trellis Coded Modulation): kết hợp điều pha và điều biên.
Có các tổ chức quốc tế về tiêu chuẩn truyền thông như ITU (International
TeleCommunications Union) của Liên Hiệp Quốc, ISO (International Standards
Organization) và CCITT (International Telegraph and Telephone Consultative
Committee) thuộc ITU.
Các tổ chức này định ra các chuẩn về modem ký hiệu V.XX. Bảng 5.24 là các
chuẩn gần nhất:
Bảng 5.24 Các chuẩn modem
Điều chế Chuẩn Năm Vận tốc
QAM V 32 1984 9600
TCM V 32 bis 1991 14400
TCM V 32 Ter 19200
TCM V 34 1994 28800
TCM V 90 1998 56000

Để tăng vận tốc truyền, modem dùng phương pháp nén dữ liệu, ví dụ như phương
pháp mã Huffman, ký tự thường truyền được mã hóa ít bit hơn các ký tự khác hay
phương pháp run length coding thay một loạt bit giống nhau bằng bit đó và số lần lặp.
Tỷ số nén có thể lên đến 4: 1 hay 2: 1 tùy thuộc loại dữ liệu.
Các giao thức phổ biến là MNP (Microcom Networking Protocol) V.42 bis với
LAPM (Link Access Protocol for Modems). Khi truyền file cần phải tuân thủ các qui
định của giao thức truyền FTP (File Transfer Protocol).
XMODEM chia tập tin thành khối 128 byte, mỗi khối được kèm tổng kiểm tra hay

175
CRC (cyclic redundancy check) 4 byte . YMODEM dùng khối 1024 byte. ZMODEM
dùng khối kích thước thay đổi tùy theo trạng thái đường truyền. Trong trường hợp
dùng máy tính đo lường điều khiển có thể dùng các giao thức khác
Khi thực hiện kết nối, đầu tiên DTE gởi lệnh kiểm tra đến modem xem có liên lạc
được không, sau đó gởi lệnh quay số, modem sẽ quay số điện thoại nơi cần kết nối,
nếu kết nối được sẽ báo cho DTE để truyền dữ liệu, đầu tiên modem sẽ truyền với vận
tốc cao nhất có thể có, nếu không trao đổi thông tin được nó sẽ chuyển sang vận tốc
truyền thấp hơn hay giao thức khác, quá trình tiếp tục cho đến khi kết nối được hay
không có khả năng kết nối, hết thời gian.
Tập lệnh modem, thường gọi là tập lệnh Hayes (do hãng chế tạo modem Hayes
Micro Computer Products đề nghị), còn gọi là tập lệnh AT vì bắt đầu mỗi lệnh bằng ký
tự chú ý AT (attention) . Thông qua tập lệnh, DTE có thể điều khiển modem và nhận
thông tin từ nó. Trong modem có một số thanh ghi gọi là thanh ghi S, cho phép DTE
thay đổi cấu hình modem.
Lệnh AT luôn luôn khởi đầu bằng AT và gồm một hay nhiều lệnh kế tiếp nhau kết
thúc bằng Enter ( mã ASCII 13); chiều dài chuỗi lệnh không quá 40 hay 64 ký tự, tùy
loại modem.
Lệnh +++ và A/ không cần khởi đầu bằng AT và không cần phím enter. Với máy
tính, muốn kiểm tra modem có thể dùng tiện ích hyperterminal của Windows 9X. Trên
màn hình sẽ xuất hiện khung soạn thảo và ta có thể đánh lệnh đến modem, nhận trả lời
từ modem. Chương trình kết nối hai DTE phải thực hiện việc gởi các lệnh AT đến
modem và nhận trả lời từ modem.

Bảng 5.25: Các lệnh của modem


Lệnh Mô tả
+++ Chuyển modem từ chế độ dữ liệu sang chế độ lệnh
A\ Lặp lại lệnh trước
A Nhấc điện thoại trả lời cuộc gọi
DPn Quay số điện thoại n dạng xung.
DTn Quay số điện thoại n dạng tone.
H0 Gác máy (cắt kết nối)
H1 Nhấc máy (chuẩn bị quay số)
O0 Trở về chế độ dữ liệu
O1 Bắt đầu chế độ điều chỉnh modem để đạt kết quả truyền thông tốt nhất
Q0 Cho phép modem gởi thông báo đến DTE (mặc định)
Q1 Cấm modem gởi thông báo
Q2 Gởi thông báo khi modem chủ động kết nối, không gởi thông báo khi
modem nhận cuộc gọi.
V0 Nhận thông báo dạng ngắn (số thập phân)
V1 Nhận thông báo dạng dài (ký tự) mặc định

176
Sn = V Nạp giá trị V vào thanh ghi Sn
S0 = V : modem chờ V hồi chuông trước khi nhấc máy trả lời V = 1 ÷ 255
(mặc định S0 = 0 không trả lời)
S6 = V chờ V sec trước khi quay số.
V = 2 ÷ 255 (mặc định V = 2)
Sn? đọc giá trị thanh ghi Sn
Z0 Đưa modem về cấu hình 0
Z1 Đưa modem về cấu hình 1
L0-3 Đặt âm lượng loa modem
M0 Tắt loa
M1 Mở loa cho đến khi nhận được sóng mang (mặc định)
M2 Mở loa.
M3 Tắt loa khi quay số và nhận sóng mang.
&Kn n=0 Không nén dữ liệu
n= 1 nén

Bảng 5.26: Các thông báo của modem


Dạng
Dạng chữ Ý nghĩa
số
OK 0 Thực hiện lệnh thành công
CONNECT 1 Kết nối 300 bps
RING 2 Có chuông gọi
NO CARRIER 3 Không có sóng mang
ERROR 4 Nhận lệnh không giá trị, sai tổng kiểm tra, hàng
lệnh quá dài
CONNECT 1200 5 Kết nối 1200 bps
NO DIAL TONE 6 Không có âm hiệu mời quay số
BUSY 7 Máy bên kia bận
NO ANSWER 8 Máy bên kia Không trả lời
CONNECT 2400 10 Báo kết nối vận tốc 2400 baud
CONNECT 4800 11
CONNECT 9600 12
CONNECT 14400 13
CONNECT 19200 14
CONNECT 16800 15
CONNECT 57600 18
CONNECT 7200 24
CONNECT 12000 25
CONNECT 28800 32

177
CONNECT 115200 33
CARRIER 300 40 Phát giác sóng mang
CARRIER 9600 50
CARRIER 28800 58
COMPRESSION : CLASS 5 66 Nén MNP
COMPRESSION : V42 BIS 67 Nén V42 bis
COMPRESSION : NONE 69 Không nén
PROTOCOL : NONE 70 Không giao thức
PROTOCOL : LAPM 77 Giao thức V42 LAPM
PROTOCOL : MNP 80
PROTOCOL : MNP 2 81
PROTOCOL : MNP 3 82
PROTOCOL : MNP 2, 4 83
PROTOCOL MNP 3, 4 84

178

You might also like