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ơ đồ
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ộ:
để 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
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:
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
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).
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
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ể
đượ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.
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ý.
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
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
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
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
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
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
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
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