TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
------------
BÀI TẬP LỚN
ĐỀ TÀI : NGHIÊN CỨU TÌM HIỂU VỀ VI MẠCH TRUYỀN TIN
NỐI TIẾP USART 8251A
GIÁO VIÊN HƯỚNG DẪN : Th.S NGUYỄN THANH HẢI
NHÓM THỰC HIỆN
: NHÓM 5
SINH VIÊN THỰC HIỆN
: NGUYỄN VĂN CẢNH
PHẠM VĂN NGUYÊN
HÀN NGỌC QUÂN
VŨ DUY QUANG
PHẠM XUÂN TUẤN
HÀ NỘI - 2016
Đề Tài Kiến Trúc Máy Tính
Tên đề tài: Nghiên cứu tìm hiểu về vi mạch truyền tin nối tiếp
USART 8251A (Universal Synchronous-Asynchronous Receiver-Transmitter).
Nội dung và yêu cầu: Trình bày được đặc điểm, chức năng
tổng quát của USART 8251A, sơ đồ chân, chức năng các chân, sơ đồ
khối, chức năng các khối, các thanh ghi của 8251A để thấy được
nguyên lý làm việc của nó.
Lớp: Khoa học máy tính 1.
Khóa: 10.
Nhóm 5: Nguyễn Văn Cảnh, Phạm Văn Nguyên , Hàn Ngọc Quân,
Vũ Duy Quang, Phạm Xuân Tuấn.
2
Mục lục
I.Đặc điểm USART-8251.…………………………………………3
II.Chức năng tổng quát USART-8251A……………………..…...3
III.Sơ đồ nối chân USART-8251A………………………………..4
1.Chức năng các chân.………………………………………....5
IV.Sơ đồ khối USART-8251……………………………………....6
1.Chức năng các khối.………………………………………….7
V.Mô tả các tín hiệu của USART 8251A………….……………..8
VI. Các thanh ghi của USART 8251A……………………..……………..12
1. Các thanh ghi điều khiển……………………….……….…………...….13
2. Thanh ghi trạng thái đường dây………………….…………....….16
3. Các thanh ghi đệm…………………………………..……………...18
VII.Nguyên lý làm việc của USART 8251A…………….………..….19
3
Ӏ.Đặc điểm USART-8251 (Universal Synchronous/Asynchronous Receiver
Transmitter)
USART-8251 là một mạch giao diện vào/ra khả lập trình của hãng Intel. CácӀ tính
năng chủ yếu của mạch bao gồm:
Hoạt động ở một trong hai chế độ đồng bộ hoặc không đồng bộ .
- Chế độ đồng bộ :
Phát: 8251A bắt đầu phát dữ liệu ngay sau khi CPU nạp từ SYNC cho đến
khi không còn tín hiệu để phát, thanh ghi đệm phát trống mà CPU không
nạp ký tự kế tiếp thì 8251A tự động thêm từ SYNC vào và phát đi.
Thu: Khi sự đồng bộ được thực hiện từ bên trong, lệnh ENTER HUNT phải
được lập trình trong từ lệnh đầu tiên, việc này khiến 8251A dò từ SYNC
trong dòng dữ liệu đến, sau khi dò ra USART chấm dứt chế độ HUNT và
máy thu trong tình trạng đồng bộ hóa, chân SYNDET lên cao để báo cho
μP biết.
Hoạt động đồng bộ với mã 5 – 8 bits, ký tự đồng bộ nội bộ hoặc từ bên
ngoài, có chế độ đồng bộ tự động.
- Chế độ không đồng bộ:
Ở chế độ truyền bất đồng bộ máy thu dò và ngưng hoạt động tự động mà
không cần sự điều khiển của CPU. Kết thúc một cuộc liên lạc, TxD line
luôn trở về trạng thái nghỉ.Trạng thái logic của bit D0 (Tx Enable) cho phép
máy truyền xong các ký tự đã nạp vào thanh ghi mặc dù có lệnh dừng.
Hoạt động không đồng bộ với mã 5 – 8 bits, hệ số xung nhịp 1, 16 hoặc 64
lần tốc độ Baud, tạo ký tự tạm dừng; với 1, 2 1 1 và 2 bits Stop, phát hiện
lỗi bit Start và ký tự Break (tạm dừng).
Tốc độ truyền cực đại trong chế độ đồng bộ là 64K baud, trong chế độ cận
đồng bộ là 19,2 K baud.
Hoạt động truyền nhận dữ liệu song công, với hai bộ đệm truyền và nhận
riêng biệt.
Phát hiện các lỗi truyền như : chẵn lẻ, sai khung, overrun.
Hoạt động tương thích với các vi xử lý họ Intel.
Tất cả các tín hiệu vào ra tương thích logic TTL.
ӀӀ. Chức năng tổng quát của USART 8251
cấu hình chức năng của mạch USART-8251 rất uyển chuyển nhờ được thiết lập bằng
phần mềm. Trong môi trường trao đổi dữ liệu, giao diện nối tiếp thực hiện việc biến
đổi dữ liệu song song của hệ thống thành dạng dữ liệu nối tiếp để gửi đi và biến dạng
dữ liệu nối tiếp thu nhận được thành dữ liệu song song để CPU đọc vào. Tất nhiên,
khi thực hiện công việc biến đổi, USART-8251 sẽ tự động bỏ đi hoặc thêm vào các bit
4
hoặc ký tự đồng nhất chức năng trong kỹ thuật thu phát thông tin. Chính nhờ vậy, giao
diện giữa CPU và USART-8251 là hoàn toàn minh bạch, chỉ đơn thuần là gửi đi hay
nhận về một byte dữ liệu.
Truyền nối tiếp với dữ liệu được chuyển thành từng bit, sử dụng một dây dẫn duy nhất
để truyền dữ liệu., cách truyền nối tiếp thường được sử dụng khi khoảng cách truyền
khá xa, do chỉ phải sử dụng một dây dẫn và một bộ nhập xuất dữ liệu
Dạng biểu diễn song song sử dụng các dây dẫn riêng rẽ đối với từng bit truyền.
Ví dụ: Nếu một hệ số sử dụng các số 8-bit thì cần 8 dây song song. Chi phí sẽ tốn kém
hơn, nhưng bù lại toàn bộ 8 bit sẽ được truyền trong một xung đồng hồ, tốc độ là cực
nhanh. Cách chuyền song song thường được truyền trên một khoảng cách ngắn ví dụ
các thiết bị trong cùng một phòng như từ máy tính sang máy in.
ӀӀӀ. Sơ đồ nối chân của USART 8521
D2
D3
RxD
GND
D4
D5
D6
D7
TxC
WR
CS
CD
RD
RxRDY
D1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
28
27
26
25
24
23
22
21
20
19
18
17
16
15
D0
Vcc
RxC
RTS
DTR
DSR
RESET
LCK
TxD
TxEMPTY
CTS
SYNDET/BD
TxRDY
USART 8251A được chế tạo bằng kỹ thuật NMOS và có 28 chân, tốc độ truyền dữ
liệu lên tới 64 Kpbs. Khác với 6402, ở 8251A tất cả dữ liệu đến và từ µP đều đi qua
Bus dữ liệu (Data Bus) nối với các chân D7 - D0.
1.Chức năng các chân
5
a. Nhóm tín hiệu ghép nối với vi xử lý gồm:
- CS (chân 11) nối với bộ giải mã địa chỉ (A1 - An) để chọn hai thanh ghi (A0 điều khiển
trạng thái, A0 = 0 đệm số liệu).
- C/D (chân 12) nối với đường dây địa chỉ A0 để chọn một trong hai cặp thanh ghi trên.
- WR (chân 10) nối với đường dây WR của vi xử lý.
- RD (chân13) nối với đường dây RD của vi xử lý.
- CLK (chân 20) nối với đường dây CLK của vi xử lý.
Reset (chân 21) nối với đường dây Reset của vi xử lý.
- D0 - D7 (chân 27, 28, 1, 2, 5, 6, 7, 8) nối với các đường dây số liệu D0-D7 của vi xử lý.
b. Nhóm tín hiệu ghép nối với Modem:
- DTR (chân 24), RTS (chân 23) .
- DSR (chân22), CTS (chân 17) .
c. Nhóm tín hiệu ghép nối với đường dây truyền - nhận và khối ghép nối:
- TxEMPTY (chân 18) thanh ghi đệm truyền rỗng.
- TxD (chân 19) cho số liệu truyền.
- RxD (chân 3) cho số liệu nhận.
- TxRDY (chân 15) báo số liệu truyền sẵn sàng.
- RxRDY (chân 14) báo số liệu nhận sẵn sàng.
- Syn/Break : chỉ đồng bộ/ đứt dòng tin.
d. Nhóm tín hiệu ghép nối với máy phát xung nhịp:
- TxC : nhịp truyền.
- RxC : nhịp nhận.
IV. Sơ đồ khối
6
D0 - D7
RESET
CLK
C/D
RD
WR
Bộ đệm
bus dữ
liệu
Bộ đệm
truyền (P:S)
Bộ điều
khiển
truyển
Logic điều
khiển đọc
ghi
TxD
TxRDY
TxE
TxC
CS
Bộ đệm nhận
(S:P)
RxD
DSR
DTR
CTS
Các tín hiệu
điều khiển
Modem
RTS
Bộ điều
khiển nhận
RxRDY
RxC
SYNDET
Trong đó:
CS : Chip Select - chọn vi mạch .
RD : Read - đọc .
WR : Write - ghi .
C/D : Control/Data - điều khiển/số liệu .
CLK : Clock - Nhịp .
D0-D7 : Data bus I/O - Bus dữ liệu vào/ra .
TxC : Transmit Clock - Nhịp truyền .
RxC : Receiver Clock - Nhịp nhận .
RST : Reset - Xóa .
DTR : Data Terminal Ready - Số liệu của TBĐC sẵn sàng .
7
DSR : Data Set Ready - Bộ số liệu sẵn sàng .
RTS : Request To Send - yêu cầu gởi .
CTS : Clear To Send - Xóa gởi .
TxD : Transmit Data - Số liệu truyền .
RxD : Receiver Data - Số liệu nhận .
TxRDY : Transmit Ready - Sẵn sàng truyền.
RxRDY : Receiver Ready - Sẵn sàng nhận .
TxEMTY : Transmit Register Emty - Thanh ghi truyền rỗng .
Syn/BRK : Synch / Break Detect - Đồng bộ / phát hiện đức đoạn tin.
1.Chức năng các khối:
- Bộ đệm dữ liệu.
Là bộ đệm 3 trạng thái hai chiều với độ rộng 8 bits dùng làm giao diện giữa
CPU và mạch 8251. Dữ liệu được gửi đi hay nhận về qua bộ đệm khi thực hiện lệnh
INPut hay lệnh OUTput trong CPU. Các từ lệnh (Command Word), từ điều khiển
(Control Word) hay thông tin trạng thái cũng được chuyển qua thanh đệm dữ liệu.
Thanh ghi trạng thái lệnh (Command Status Register), thanh ghi dữ liệu ra (Data
Out Register) và thanh ghi dữ liệu vào (Data In Register) là những thanh ghi độc lập
và cùng được kết nối BUS dữ liệu của hệ thống thông qua đệm dữ liệu.
- Khối logic điều khiển đọc ghi.
Khối này sẽ nhận các tín hiệu cung cấp từ Bus điều khiển của hệ thống sẽ tạo ra
các tín hiệu điều khiển cho toàn bộ hoạt động của 8251.
- Khối điều khiển modem (Modem Control).
Vi mạch 8251 có một tập tín hiệu vào/ra có thể sử dụng để đơn giản hoá việc
phối ghép với các MODEM. Các tín hiệu do khối chức năng điều khiển Modem tạo
ra nhằm mục đích hoàn toàn tương thích với các tín hiệu điều khiển trao đổi thông
tin thông qua thiết bị Modem khi cần thiết. Đó là các tín hiệu DSR (Data Set
Ready), DTR (Data Terminal Ready), RTS (Request To Send), và CTS (Clear To
Send).
- Bộ đệm truyền (Transmitter Buffer).
Đệm phát tiếp nhận dữ liệu song song từ đệm dữ liệu, chuyển đổi thành chuỗi
bits nối tiếp, chèn thêm các ký tự hoặc các bit thích hợp cần thiết trong kỹ thuật
truyền tin và gửi chuỗi bits này ra đầu phát TxD theo sườn xuống của xung nhịp
phát TxC. Khối phát bắt đầu công việc ngay khi tín hiệu CTS = “0” và dừng lập tức
với trạng thái được giữ nguyên khi TxE là “0” hay CTS = “1”.
- Bộ điều khiển truyền (Transmitter Control).
8
Khối điều khiển phát giám sát toàn bộ mọi hoạt động liên quan đến truyền dữ
liệu nối tiếp. Khối có nhiệm vụ chấp nhận và tạo ra tất cảc các tín hiệu tương ứng để
thực hiện việc tuyền dữ liệu.
- Bộ đệm nhận (Receiver Buffer).
Đệm thu thu nhận dữ liệu nối tiếp và chuyển đổi thành dữ liệu song song sau khi
đã loại bỏ những ký tự hoặc bit tương ứng sử dụng trong kỹ thuật thu phát thông tin.
Tín hiệu thu được đưa qua chân RxD và được dịch chuyển vào thanh ghi đệm thu
theo sườn lên của xung RxC.
- Bộ điều khiển nhận (Receiver Control).
Khối này có chức năng quản lý tất cả các hoạt động liên quan đến bộ nhận, bao
gồm các chức năng sau:
+ Ngăn chặn các lỗi nhận dữ liệu của 8251, như xác định mức thấp trên đường
RxD là trạng thái không sử dụng (điều kiện ngắt) hay trạng thái dữ liệu thấp. Trước
khi bắt đầu nhận các kí tự nối tiếp, mức 1 phải có trên đường RxD ngay sau tín hiệu
Reset. Sau đó bộ nhận sẽ kiểm tra để phát hiện bit thấp (Start bit) để xác định trạng
thái bắt đầu nhận dữ liệu. Chức năng này chỉ hoạt động trong chế độ cận đồng bộ và
chỉ thực hiện một lần sau mỗi lần Reset.
+ Ngăn chặn sai Start bit do xung nhiễu tức thời, bộ điều khiển nhận sẽ lấy mẫu
start bit ở cạnh xuống và xác nhận lại nó một lần nữa trong khoảng giữa bit.
+ Phát hiện lỗi chẵn lẻ của dữ liệu nhận được và thiết lập bit thông báo lỗi tương
ứng trong thanh ghi trạng thái.
+ Trong chế độ cận đồng bộ sẽ phát hiện lỗi sai khung khi không tìm thấy bit
stop sau byte dữ liệu vừa nhận được.
V. Mô tả các tín hiệu của 8251:
- RESET: là một ngõ vào tác động mức cao để khởi động lại 8251, sau khi nhận được
tín hiệu này 8251 sẽ trở về trạng thái ban đầu và cần phải lập trình lại các từ lệnh mới.
Xung Reset cần kéo dài ít nhất trong 6 chu kỳ xung clock. Ngoài ra từ lệnh cũng có thể
khởi động lại cho 8251, đó là chế độ khởi động mềm. Tín hiệu này có thể nối tới RESET
của CPU để 8251 được reset cùng với toàn bộ hệ thống.
- CLK (Clock): Là ngõ vào cung cấp xung nhịp định thời cho hoạt động cho các khối
bên trong 8251. Tín hiệu này có thể lấy từ một bộ tạo clock TTL. Không có ngõ vào ra
nào tác động phụ thuộc vào CLK, nhưng tần số xung đưa tới ngõ vào này phải lớn hơn
30 lần tốc độ truyền nhận.
*Các tín hiệu điều khiển chế độ hoạt động của 8251.
9
- WR (ghi): Ngõ vào tác động mức thấp, 8251 nhận tín hiệu này từ bus điều khiển hệ
thống để xác định chế độ CPU ghi dữ liệu hoặc từ điều khiển tới 8251.
- RD (đọc): Là một ngõ vào tác động mức thấp nhận tín hiệu từ bus điều khiển hệ thống
xác định chế độ CPU đọc dữ liệu hoặc từ trạng thái từ 8251.
- C/D: Ngõ vào này tác động cùng với các tín hiệu RD hoặc WR để xác định tín hiệu ghi
tới 8251 là dữ liệu hay từ điều khiển, và dữ liệu đọc từ 8251 là dữ liệu hay từ trạng thái.
Một đường địa chỉ có thể nối tới ngõ vào, này để xác định 1 địa chỉ đọc ghi dữ liệu, và
một địa chỉ để đọc chi điều khiển.
- CS (Chip Select): Là ngõ vào tác động mức thấp chọn mạch của 8251. Việc đọc ghi
8251 chỉ thực hiện được khi đã chọn mạch (CS=0). Khi CS=1 bus dữ liệu sẽ treo lên
trạng thái trở kháng cao và các tín hiệu RD, WR sẽ không có tác dụng. Tín hiệu này
được nối tới bộ giải mã địa chỉ vào ra. Các chế độ hoạt động của 8251 tương ứng với các
tín hiệu điều khiển được mô tả trong bảng sau:
CS
0
0
0
0
0
1
CD
0
0
1
1
x
x
WR
1
0
1
0
1
x
RD
0
1
0
1
1
x
Chế độ
CPU gi dữ liệu tới 8251
CPU đọc dữ liệu từ 8251
CPU ghi các từ lệnh tới 8251
CPU đọc từ trạng thái từ 8251
Data bus ở trở kháng cao
Không chọn mạch data bus ở trở kháng cao
*Các tín hiệu điều khiển modem
8251 có một loại các tín hiệu tạo ra từ bộ điều khiển modem để giao tiếp một cách
đơn giản với hầu hết các loại modem. Các tín hiệu này tạo ra nhằm mục đích giao tiếp
với các modem nhưng cũng có thể sử dụng các mục đích khác nếu cần thiết.
- DSR (Data Set Ready): Là một ngõ vào nối tới DSR của modem. Khi ngõ vào này tác
động, bit DSR trong thanh ghi trạng thái sẽ tác động, vì thế CPU có thể kiểm tra ngõ vào
này bằng cách đọc từ trạng thái. Ngõ vào này được sử dụng để kiểm tra trạng thái của
modem. Modem tác động tín hiệu này bằng 0 là để thông báo tới CPU việc nó đã nối
ghép hoàn chỉnh với đường điện thoại, và đang sẵn sàng cho việc truyền dữ liệu. Các
modem quay số tự động sẽ gửi tín hiệu này tới CPU khi nó quay số thành công tới một
đầu cuối khác.
10
- DTR (Data Terminal Ready): Là một ngõ ra tác động mức thấp, tín hiệu này có thể
lập xoá bằng các ghi dữ liếu tới bit DTR của từ lệnh lập trình cho 8251. Tín hiệu này nối
tới modem để điều khiển hoạt động của modem. CPU sẽ tác động tín hiệu này khi đã
khởi động xong 8251 để sẵn sàng truyền dữ liệu với modem. Một số modem sẽ không thể
thông báo trạng thái đã nối ghép được với đường điện thoại cho đến khi tín hiệu này tác
động. Một số modem không sử dụng tín hiệu này. Một số modem có công tắc để chuyển
chế độ sử dụng hoặc không sử dụng tín hiệu này.
- RTS (Request To Send): Là một ngõ ra tác động mức thấp khi lập trình bit RTS trong
từ lệnh lập trình cho 8251. Tín hiệu này được gửi tới modem để yêu cầu gửi dữ liệu tới
đường ra TxD. Tín hiệu này sử dụng kết hợp với CTS để điều khiển luồng dữ liệu giữa
CPU và modem. Trong chế độ đồng bộ tín hiệu này sử dụng để điều khiển luồng tín hiệu
giữa các modem.
- CTS (Clear to Send): Là ngõ vào tác động mức thấp cho phép 8251 truyền chuỗi dữ
liệu nối tiếp khi bit TxEnable trong từ lệnh bằng 1. Còn nếu TxEnable = 0 hoặc CTS =1
trong khi đang truyền thì 8251 sẽ truyền xong hết tất cả các bit dữ liệu hiện có và ghi lệnh
TxDisable trước khi ngưng. Tín hiệu này từ modem gửi tới 8251 để thông báo nó sẵn
sàng nhận dữ liệu. Trong chế độ đồng bộ tín hiệu này sử dụng điều khiển luồng thông tin
giữa các modem.
*Các tín hiệu truyền dữ liệu
- TxD: (Transmit Data): Là ngõ ra sử dụng để truyền dữ liệu nối tiếp từ 8251 ra ngoài
thiết bị ngoại vi. Dữ liệu song song tại bộ đệm truyền sẽ dịch lần lượt ra ngõ này tại mỗi
cạnh lên của TxC.
- TxReady: (Transmitter Ready): Ngõ ra này sử dụng thông báo cho CPU biết bộ đệm
truyền đã sẵn sàng nhận một kí tự dữ liệu. Tín hiệu này có thể sử dụng ngắt CPU để yêu
cầu CPU truyền tới 8251 một byte dữ liệu mới. Tín hiệu này sẽ bị che bởi bit TxEnable,
CPU cũng có thể kiểm tra trạng thái ngõ ra này bởi phần mềm bằng lệnh đọc từ trạng thái
của 8251 và kiểm tra bit TxREADY. Ngõ ra này sẽ tự động reset ở cạnh xuống của tín
hiệu WR\ (tức là khi một kí tự dữ liệu được nạp tới từ CPU).
- TxEmpty: ( Transmitter Empty ): khi 8251 không có kí tự để gửi ra, TxEmpty sẽ tác
động mức cao. Nó sẽ được reset khi nhận được một kí tự từ CPU (nếu bộ đệm truyền
được cho phép). Ngoài ra khi bộ truyền không được cho phép ngõ ra này cũng ở mức
cao. TxEmpty có thể sử dụng để thông báo kết thúc một chế độ truyền, khi đó CPU sẽ
hiểu cần phải chuyển đường truyền trong chế độ truyền nhận bán công. Trong chế độ
đồng bộ mức cao ở ngõ ra này thông báo không có kí tự dữ liệu nào được nạp tới, các kí
tự đồng bộ bắt đầu được dịch ra một cách tự động.
11
- TxC: (Transmitter Clock) là ngõ vào cung cấp xung nhịp điều khiển tốc độ truyền các
kí tự. Trong chế độ đồng bộ tốc độ baud là 1x tức là bằng tần số xung TxC. Trong chế độ
truyền cận đồng bộ tốc độ baud truyền sẽ bằng 1, 1/16, 1/64 lần tốc độ TxC tùy thuộc vào
tốc độ đã lập trình là 1x, 16x hay 64x.
Ví dụ: nếu tốc độ baud là 110 baud
TxC = 110Hz trong chế độ 1x.
TxC = 1,72KHz trong chế độ 16x
TxC = 7.04 KHz trong chế độ 64x
Cạnh lên của TxC sẽ dịch các bit ra khỏi 8251.
Lưu ý: Tốc độ Baud Rate là một tốc độ phải chọn theo quy chuẩn quốc tế, thông thường
là 300, 600, 1200, 2400, 4800, 9600, 19200 Baud, v.v…, chứ không phải là một số bất
kỳ, nên việc tạo xung tần số cho RxC và TxC thường được sủ dụng những thạch anh có
tần số là bội 16, bội 64 của chuỗi số trên với độ chính xác rất cao, chứ không sử dụng tuỳ
tiện. Hơn nữa, trong phần lớn các hệ thống thu phát thông tin, tốc độ thu và tốc độ phát
là như nhau, dẫn đến tần số RxC và TxC cũng là một và được lấy chung từ bộ tạo tốc độ
Baud Rate Generator để đơn giản hoá phần giao diện.
*Các tín hiệu cho việc nhận dữ liệu
- RxD (Receiver Data): Là ngõ vào sử dụng cho việc nhận dữ liệu nối tiếp từ bên
ngoài vào 8251. Các bit của dữ liệu nối tiếp sẽ lần lượt được dịch vào bộ đệm nhận ở mỗi
cạnh lên của RxC.
- RxRDY (Receiver Ready): Là ngõ ra tác động cao chỉ thị 8251 có một dữ liệu sẵn
sàng để CPU đọc. RxRDY có thể sử dụng là tín hiệu yêu cầu ngắt CPU, để CPU dừng
công việc hiện tại đọc dữ liệu từ bộ đệm nhận của 8251. CPU cũng có thể kiểm tra trạng
thái của ngõ vào này bằng cách đọc từ trạng thái của 8251 và kiểm tra bit RxRDY. Khi
bit RxEnable trong từ lệnh không tác động thì RxRDY sẽ bị giữ ở trạng thái reset, ở chế
độ cận đồng bộ RxRDY chỉ thiết lập khi bộ nhận được lập trình cho phép hoạt động, Start
bit đã được gửi cùng với một kí tự đã được nhận và chuyển xong sang dạng song song
trong bộ đệm. Trong chế độ đồng bộ RxRDY cũng chỉ thiết lập khi bộ nhận được cho
phép hoạt động, và kí tự dữ liệu đã được chuyển vào hoàn chỉnh trong thanh ghi dữ liệu.
Khi có một kí tự mới truyền tới, mà kí tự cũ chưa được đọc ra khỏi bộ đệm sẽ xảy ra lỗi
overrun, bit báo lỗi trong thanh ghi trạng thái được thiết lập và kí tự cũ sẽ bị mất. Nếu dữ
liệu bắt đầu đọc trong khi xảy ra việc truyền dữ liệu bên trong thì lỗi overrun cũng xảy ra
tương tự như trên.
- RxC (Receiver Clock): Ngõ vào nhận xung nhịp điều khiển tốc độ nhận dữ liệu nối
tiếp. Trong chế độ đồng bộ tốc độ baud là 1x, tức là bằng với tần số của RxC. Trong chế
12
độ cận đồng bộ tốc độ baud cũng tùy thuộc vào chế độ chọn trong khi khởi động 8251 là
1x, 16x hay 64x như khi truyền.
Ví dụ: với tốc độ nhận là 300 baud thì:
trong chế độ 1x tần số RxC phải là 300 Hz
trong chế độ 16x tần số RxC phải là 4800 Hz
trong chế độ 64x tần số RxC phải là 19.2 kHz
Dữ liệu được lấy mẫu vào ở mỗi cạnh lên của RxC.
Chú ý: trong hầu hết các hệ thống sử dụng 8251 để truyền dữ liệu nối tiếp, 8251 sẽ xử lý
cả hai hướng truyền và nhận trên một đường truyền bên ngoài (ví dụ như đường dây điện
thoại). Do đó tốc độ truyền và nhận dữ liệu thường là bằng nhau. TxC và RxC sẽ được
lấy chung từ một bộ tạo xung nhịp.
- SYNDET (SYNC Detect/ BRKDET Break Detect): Tín hiệu này được sử dụng
cho chức năng phát hiện đồng bộ SYNDET, và nó có thể sử dụng như một ngõ vào, hoặc
một ngõ ra tùy thuộc vào từ điều khiển lập trình cho 8251. Nó sẽ bị reset về mức thấp khi
có tín hiệu Reset chip. Trong chế độ đồng bộ tín hiệu này là một ngõ ra, SYNDET sẽ tác
động mức cao khi 8251 xác định được kí tự đồng bộ trong chế độ nhận. Nếu 8251 được
lập trình ở chế độ có hai kí tự đồng bộ (bi-sync) thì SYNDET sẽ tác động tại thời điểm
giữa của bit cuối cùng kí tự đồng bộ thứ hai. SYNDET sẽ tự động Reset khi đọc từ trạng
thái. Trong chế độ đồng bộ ngoài tín hiệu này là một ngõ vào, ngõ vào này tác động mức
cao để thông báo rằng 8251 sẽ bắt đầu nhận dữ liệu vào ở cạnh lên của chu kỳ RxC kế
tiếp. Khi chế độ đồng bộ ngoài được lập trình thì chế độ đồng bộ trong sẽ không hoạt
động. Trong chế độ truyền cận đồng bộ tín hiệu này mang chức năng BRKDET, nó sẽ
tác động mức cao bất cứ khi nào bộ nhận phát hiện ra hai bit thấp liên tiếp sau stop bit
(Trong chế độ cận đồng bộ khung dữ liệu truyền bao gồm : Start bit, các bit dữ liệu, bit
chẵn lẻ và Stop bit). Phát hiện ngắt cũng có thể đọc trong từ trạng thái của 8251. Tín hiệu
này sẽ bị xóa khi reset chip, hoặc khi ngõ vào RxD trở về mức cao.
VI. Các thanh ghi của chip 8251A :
Cũng như CPU, Chip UART chứa đựng một số thanh ghi hoặc bộ nhớ trong, có ba kiểu
thanh ghi:
- Những thanh ghi điều khiển: Chúng nhận những lệnh từ CPU và không tự động thay đổi
trạng thái.
- Những thanh ghi trạng thái: Chúng thông báo đến CPU những gì xảy ra trong UART.
- Những thanh ghi đệm: Chúng lưu giữ những ký tự chuẩn bị phát đi hoặc chờ xử lý.
13
Cách truy xuất các thanh ghi phụ thuộc vào cấu trúc của máy tính mà UART được cài
đặt. Trong trường hợp máy IBM PC, những giá trị được đặt vào bên trong các thanh ghi
nghĩa là dùng lệnh OUT từ chip CPU gởi đến những địa chỉ tương ứng của các thanh ghi.
tương tự, những thanh ghi được truy xuất theo cách đọc nghĩa là dùng lệnh IN với các địa
chỉ tương ứng.
1. Các thanh ghi điều khiển: dùng để nhận và thực hiện các lệnh từ CPU.
Có 4 thanh ghi điều khiển dùng để nhận lệnh từ CPU:
a. Thanh ghi điều khiển đường dây (Line Control Register) :
Thanh ghi này được dùng để SET các thông số liên lạc. Mỗi bit của thanh ghi này có ý
nghĩa và được mô tả như sau:
Bit
0
1
2
3
4
5
6
7
Ý nghĩa
Hai bit này dùng để xác định chiều dài của một từ
Số bit Stop
Cho phép kiểm tra chẳn lẻ
Chọn kiểm tra chẳn lẻ
Chọn bit chẳn lẻ
Ngắt
Bit truy xuất và chốt số liệu
Mô tả :
- Bit 0 và 1 : chỉ chiều dài của một từ như sau :
Bit 0
0
0
1
1
Bit 1
0
1
0
1
Số ký tự
5
6
7
8
- Bit 2 : Xác định số STOP bit. Nếu Bit 2 là 0, một Stop bit được tạo ra. Nếu bit 2 là 1, 2
Stop bit được tạo ra trừ khi chiều dài ký tự là 5 (tức là bit 0 và bit 1 bằng 00), lúc này sẽ
tạo ra 1.5 Stop bit.
14
- Bit 3, 4, 5 là những bit lựa chọn sự kiểm tra chẵn lẻ (trong đồ án này không sử dụng nên
luôn được Set bằng 0).
- Bit 6 : là bit tạo ra một lệnh ngắt, khi được Set lên 1 nó sẽ treo ngõ ra OUT ở mức logic
0 (SPACING) cho tới khi được SET trở lại bằng 0 (Bit này không được dùng nên luôn
luôn được Set bằng 0).
- Bit 7 : là bit duy nhất và chốt số chia (DLAB : Division Latch Access Bit). nó phải được
SET lên 1 khi truy xuất việc chốt số chia, tức là lúc cài tốc độ truyền theo BAUD_RATE.
Khi SET trở về 0, nó sẽ cho phép các thao tác đọc hoặc ghi từ vùng đệm thu, vùng đệm
phát hoặc thanh ghi cho phép ngắt.
b. Thanh ghi điều khiển modem: (Modem Control Register)
Thanh ghi này điều khiển những tín hiệu bắt tay gởi ra ngoài từ UART. Mỗi bit của
thanh ghi này được mô tả như sau :
Bit
0
1
2
3
4
Chữ viết tắt
DTR
RST
OUT1
OUT2
LOOP
Tên gọi
Dữ liệu trạm cuối sẵn sàng
Yêu cầu gởi
Ngõ ra 1
Ngõ ra 2
Kiểm tra chế độ vòng lặp
- Bit 0 : thường dùng để SET ngõ ra DTR về mức logic 0, cho phép các thiết bị từ xa gởi
tín hiệu đến chúng ta hoặc khi nó được SET trở về mức logic 1 yêu cầu thiết bị xa không
gởi đến chúng ta nữa. Trong đồ án này ta sử dụng Bit này để gởi ra mạch khi nhận dược
tín hiệu gọi kết nối từ đối phương. Lúc đó, nó phải được Set lên 1 để xem như bắt tay
phần cứng với đối phương.
- Bit 1,2,3,4 : không dùng nên luôn được set bằng 0 .
- Bit 5,6,7 : luôn Set = 0.
c. Thanh ghi cho phép ngắt : (Interrupt Enable Register )
Tám bit thanh ghi này cho phép 4 kiểu điều khiển ngắt tác động lên "chip ngắt" bằng ngõ
ra INTRPT. Khi RESET các bit từ 0 đến 3 của thanh ghi này, ta có thể bỏ kiểu ngắt hệ
thống của nó. Khi SET các bit từ 0 đến 3, ta chọn kiểu ngắt cho phép.
Bit
Kiểu ngắt
15
0
1
2
3
4
5
6
7
Cho phép ngắt để thu dữ liệu
Cho phép ngắt báo vùng đệm phát rỗng
Cho phép ngắt báo trạng thái đường dây
Cho phép ngắt báo trạng thái Modem
Bằng 0
Bằng 0
Bằng 0
Bằng 0
d. Thanh ghi chốt số chia BAUD_RATE:
BAUD_RATE được cài đặt phụ thộc vào 2 thanh ghi mà con số của chúng phải được
chia bởi xung nhịp 1.8432 MHz. Kết quả cho ra tần số bằng 16 lần BAUD_ RATE. Hai
thanh ghi này mang 2 byte: 1 byte chốt số chia có nghĩa thấp nhất (LSB), và 1 byte chốt
số chia có nghĩa cao nhất (MSB). Những số chia này dùng để tạo ra những tốc độ theo
BAUD_RATE khác nhau.
BAUD_RATE
50
100
300
1200
2400
4800
9600
DECEMAL
2304
1152
384
96
48
24
12
HEX
900
480
180
60
30
18
0C
MSB
9
4
1
0
0
0
0
LSB
00
80
80
60
30
18
0C
Tốc độ dãy BAUD_RATE trong bảng không phải là cố định. Những giá trị ở khoảng giữa
chúng cũng có thể được tạo ra bằng cách chọn số chia tương ứng.
2.
Các thanh ghi trạng thái: dùng để thông báo cho CPU biết về trạng thái của
USART hay USART đang làm gì.
16
Có 3 thanh ghi trạng thái tường trình đến CPU những gì đang xảy ra ở những vùng khác
nhau của UART.
a. Thanh ghi trạng thái đường dây: (Line Status Register)
Tám bit thanh ghi này tường trình đến CPU những thông tin trạng thái về sự chuyển biến
dữ liệu.
Bit
0
1
2
3
4
5
6
7
Chữ viết tắt
DR
OE
PE
FE
BI
THRE
TSRE
=0
Tên gọi
Data set ready
Overrun error
Parity error
Frame error
Break interrup
Transmitter hold register empty
Tx shift register empty
- Bit 0 : Đây là bit thông báo dữ liệu thu đã sẵn sàng. Nó SET lên một bất kỳ khi nào 1 ký
tự vừa mới được nhận và chuyển vào bên trong thanh ghi vùng đệm thu. Bit 0 có thể
Reset trở về 0 bằng việc đọc dữ liệu thu từ thanh ghi đệm thu hoặc ghi mức 0 lên nó.
- Bit 1 : Bit này thông báo lỗi tràn. Nó thông báo là dữ liệu bên trong thanh ghi đệm thu
chưa được đọc trước khi ký tự kế tiếp được đến, vì vậy nó sẽ phá hỏng ký tự trước.
- Bit 2 : là bit báo lỗi cực tính, thông báo đã thu một ký tự không đúng chẳn (hoặc lẻ) như
đã được chọn trong Bit chọn lựa trong Bit chọn lựa chẳn lẻ ở thanh ghi điều khiển đường
dây.
- Bit 3 : Là bit báo lỗi Frame, nó thông báo đã thu một ký tự không có Stop bit.
- Bit 4 : là một ngắt của phần thu, nó được Set lên 1 bất kỳ khi nào ngõ vào thu dữ liệu ở
mức 0 lâu hơn thời gian chiều dài của 1 từ.
- Bit 5 : Bit này thông báo thanh ghi đệm phát rỗng. Nó báo cho bộ điều khiển là sẵn sàng
nhận một ký tự mới để phát đi. Bit này Set lên mức 1 khi 1 ký tự nữa mới được chuyển từ
thanh ghi lưu giữ phần phát. Nó được Set trở về mức 0 khi CPU nạp một từ mới vào
thanh ghi lưu giữ phần phát.
17
- Bit 6 : Bit này cũng báo phần đệm phát rỗng. Nó được Set lên 1 bất kỳ khi nào mà cả
hai thanh ghi đệm phát và thanh ghi dịch chuyển phần phát đều rỗng. Nó được Reset trở
về mức 0 khi THR và TSR được chứa ký tự dữ liệu.
- Bit 7 : không dùng.
b . Thanh ghi trạng thái Modem: (Modem Control Register)
Thanh ghi này cho những thông tin về trạng thái của những đường bắt tay.
Mô tả như sau:
Bit
0
1
2
3
4
5
6
7
Tên
Delta CTS
Delta DSR
TERI
Delta RLSD T
CTS
DSR
RI
RLSD
Ý nghĩa
CTS bị thay đổi trạng thái
DSR bị thay đổi trạng thái
Đường dây đổ chuông đổi từ ON lên OFF
Tín hiệu tách sóng bị thay đổi
Ngõ vào xóa để gởi ở mức cao
Ngõ vào dữ liệu sẵn sàng ở mức cao
Chỉ thị chuông ở mức cao
Đường dây tách sóng ở mức cao
c. Thanh ghi đặc tính ngắt: (Interrupt Identification Register)
Thanh ghi này cung cấp thông tin về trạng thái hiện hành của những ngắt được phát
đi.
Bit 0 Set lên 1 là không có một ngắt nào gởi đi. Khi bit 0 ở mức 0, bit 1 và bit 2 chỉ ra
ngắt nào đã được gởi đi theo bảng sau :
2
Bit
1
0
Mức ưu tiên
Kiểu ngắt
Nguyên nhân ngắt
Reset lạo ngắt
0
0
1
-
0
0
-
1
1
0
Cao nhất
Trạng thái
đường dây thu
1
0
0
Thứ hai
Cho phép thu
dữ liệu
- Lỗi tràn
- Lỗi cực tính
- Lỗi khung
- Break interrup
Cho phép thu dữ
liệu
Đọc thanh ghi trạng
thái đường dây
Đọc thanh ghi đệm
thu
18
0
0
1
0
0
0
Thứ ba
Thanh ghi lưu
giữ phần phát
rỗng
Thanh ghi lưu giữ
phần phát rỗng
Đọc IIR hoặc ghi
vào thanh ghi lưu
giữ phần phát
Thứ tư
Trạng thái
Modem
- CTS
- DSR
- RI
Đã nhận tin
Đọc thanh ghi trạng
thái Modem
3. Các thanh ghi đệm:
Kiểu thanh ghi thứ 3 trong UART là các thanh ghi đệm, có hai thanh ghi đệm: Thanh ghi
lưu giữ phần phát (Transmitter Holding Register) và thanh ghi đệm thu (Receiver Buffer
Register).
a. Thanh ghi đệm thu:
Thanh ghi này lưu giữ ký tự sau cùng vừa mới nhận được. Mỗi lần nó được đọc, thanh
ghi trạng thái đường dây sẽ chỉ thị vùng đệm thu rỗng cho tới khi nhận được một ký tự
khác. Nếu ký tự thứ hai nhận được trước ký tự thứ nhất đọc xong, mỗi lỗi tràn sẽ được
thông báo.
b. Thanh ghi lưu giữ phần phát:
Thanh ghi lưu giữ phần phát lưu lại ký tự kế tiếp để chuẩn bị phát đi. Ký tự được đặt vào
bằng chương trình của người viết. Thanh ghi trạng thái đường dây sẽ thông báo khi một
ký tự vừa được phát đi.
Địa chỉ của các thanh ghi được chọn như sau:
Địa chỉ
XF8
XF8
XF8
XF9
XF9
XFA
XFB
XFC
XFD
XFE
Thanh ghi được chọn
Thanh ghi đệm phát
Thanh ghi đệm thu
Thanh ghi chốt số chia LSB
Thanh ghichốt số chia MSB
Thanh ghi cho phép ngắt
Thanh ghi đặc tính ngắt
Thanh ghi điều khiển đường dây
Thanh ghi điều khiển modem
Thanh ghi trạng thái đường dây
Thanh ghi trạng thái modem
19
Trong đó : Chữ X dùng để chọn cổng COM1 hoặc COM2. X = 3 dùng cho COM1, X = 2
dùng cho COM2.
VII.Vận hành và nguyên lý làm việc của USART 8251A.
Được mô tả qua các bước: khởi động, phát 1 ký tự và thu 1 ký tự.
-Khởi động 8251A
Reset chip
Ghi vào thanh ghi chọn chế độ một byte (từ CPU) để chon giao thức mong
muốn
-Phát một ký tự
Để phát một ký tự, bit TxEN trong thanh ghi điều khiển phải ở logic 1 và
chân CTS phải ở mức thấp:
Đợi cho đến khi chân TxRDY lên cao hoặc cho đến khi bit TxRDY trong
thanh ghi trang thái là 1.
Ghi ký tự cần phát vào thanh ghi đệm phát.
USART tự đông thêm các bit start, stop, kiểm tra chắn lẻ. Ký tự được phát đi nối tiếp
Trên đường TxD với bit LSB được phát trước, các bit được dời ra ngoài mỗi khi có
canh xuống của xung đồng hồ TxC với vận tốc bằng 1, 1/16, 1/64 tần số xung đồng
hồ.
-Thu một ký tự
Để thu1 ký tự đông thời kiểm tra lỗi của ký tự này, cần phải thực hiện các bước sau:
Đợi cho đến khi chân RxRDY lên các hoặc cho đến khi bit RxRDY trong
thanh ghi trang thái là .
Đọc trạng thái lỗi từ thanh ghi trạng thái.
Đọc ký tự từ thanh ghi đệm thu.
Reset trạng thái lỗi bằng cách ghi bit ER=1 (D4) trong thanh ghi command.
Tốc độ phát và thu bit được quyết đinh bời tần số của xung clock đưa vào chân
RXC/TxC chia theo hệ sô 1, 16 hoặc 64 đã chọn trong từ chọn mode. Hoạt động thư
của 8251A bắt đầu sau khi hiệu lực hóa bit start, dữ liệu được lấy mẫu khi có cạnh lên
của xung đồng hồ RxC.
20