CÁC LOẠI MÃ TRONG TRUYỀN DỮ LIỆU
4.3 VÀI IC THỰC HIỆN TRUYỀN NỐI TIẾP BẤT ÐỒNG BỘ
Trước ủõy việc thu phỏt bất ủồng bộ ủược thiết kế dựa trờn cỏc IC loại SSI và MSI.
Vớ dụ, ủể tạo và kiểm tra chẵn lẻ, người ta cú thể dựng cỏc cổng EX-OR .
Hiện nay sự phát triển của công nghệ chế tạo IC cho phép sử dụng các vi mạch LSI ủể thực hiện cỏc chức năng thu phỏt thỏa món giao thức truyền bất ủồng bộ. Chỳng ta giới thiệu dưới ủõy vài IC thu phỏt bất ủồng bộ (Universal Asynchronous Receiver,Transmitter, UART) hoặc IC ủiều hợp giao tiếp thụng tin bất ủồng bộ (Asynchronous Communication Interface Adapter, ACIA), ủú là cỏc IC :
- UART 6402 của Intersil - ACIA 6850 của Motorola - USART 8251A của Intel
4.3.1 UART 6402 của Intersil . 4.3.2 ACIA 6850 của Motorola .
4.3.1. UART 6402 của Intersil :
4.3.1.1 - Tính năng kỹ thuật tổng quát . 4.3.1.2 - Mô hình .
4.3.1. 3 - Vận hành .
4.3.1.4 Giao tiếp của 6402 với vi xử lý .
4.3.1.1 - Tính năng kỹ thuật tổng quát :
6402 là UART loại IC CMOS/LSI dựng ủể giao tiếp với mỏy tớnh hoặc mP qua kờnh dữ liệu nối tiếp bất ủồng bộ.
- Mỏy phỏt ủổi dữ liệu song song thành nối tiếp và tự ủộng thờm vào cỏc bớt Start và Stop.
- Mỏy thu chuyển ủổi cỏc bớt Start, ký tự dữ liệu, bớt parity và bớt Stop thành dữ liệu song song, kiểm tra lỗi.
Chiều dài của các ký tự dữ liệu có thể là 5, 6, 7 hoặc 8 bít. Parity có thể là chẵn hay lẻ, việc kiểm tra và tạo bít parity có thể bỏ qua, nếu không có yêu cầu. Có thể dùng 1, 1,5 hoặc 2 bít Stop.
4.3.1.2 - Mô hình (H 4.4) :
(H4.4)
- Ý nghĩa các chân của IC :
TRE : Transmit Reg. Empty : Ngã ra, báo thanh ghi phát trống.
: Trans. Buf. Reg. Load : Ngó vào, nạp dữ liệu vào thanh ghi ủệm phỏt & phỏt TBRE : Trans. Buf. Reg. Empty : Ngó ra, mức cao bỏo thanh ghi ủệm phỏt trống, sẵn sàng nhận dữ liệu
TBR7 – TBR0 : Trans. Buf. Reg. Data : Dữ liệu ủể nạp vào thanh ghi ủệm phỏt DR : Data Received : Ngó ra, lờn cao bỏo ủó thu ủược một ký tự dữ liệu
: Data Received Reset : Reset thanh ghi thu
: Receive Buffer Output Enable : Cho phộp thu tớn hiệu từ thanh ghi ủệm thu RBR7 – RBR0 : Receive Buf.Reg. Data : Dữ liệu thu từ thanh ghi ủệm thu
CRL : Control Reg. Load :
Ngó vào, mức cao cho phộp nạp từ ủiều khiển vào thanh ghi ủiều khiển CR4 – CR0 : Control Reg. Data : Tổ hợp 5 bit tạo thành một từ ủiều khiển
PE,FE,OVE : Parity, Framing, Overflow flags : Cờ báo lỗi chẵn lẻ, lỗi khung, lỗi tràn
: Status O/P Enable : Cho phép ngã ra trạng thái
MRST : Master Reset : Ðặt lại IC
RC,TC : Receive Clock, Trans. Clock : Xung ủồng hồ Thu, Phỏt RxD, TxD : Receive Data, Trans. Data : Dữ liệu thu phát.
Việc chọn cỏc chuẩn trong giao thức theo qui ủịnh của bảng 4.1 dưới ủõy Bảng 4.1 : 6402 control word
CR4 CR3
Chọn chiều dài ký tự CLS1
CLS0
00 = 5 bit 01 = 6 bit 10 = 7 bit 11 = 8 bit CR2 Có Kiểm Tra chẵn lẻ ?
PI
1 = không kiểm tra chẵn lẻ và PE = 0 0 = có kiểm tra chẵn lẻ
CR1 Chọn Kiểm Tra chẵn EPE
1 = kiểm tra chẵn 0 = kiểm tra lẻ CR0 Chọn số bit stop
SBS
0 = 1 bit stop 1 = 1,5 (ký tự 5 bit) 1 = 2 (ký tự 6, 7, 8 bit)
4.3.1. 3 - Vận hành :
- Vận hành của IC ủược thực hiện qua cỏc thao tỏc sau ủõy : - Khởi ủộng :
éể khởi ủộng 6402, lần lượt thực hiện 3 bước :
- éặt từ ủiều khiển vào cỏc chõn CR4 – CR0 ủể chọn giao thức truyền.
- éưa chõn CRL lờn cao ủể nạp từ ủiều khiển vào thanh ghi ủiều khiển.
- éưa chõn MRST lờn cao ủể reset mỏy thu và mỏy phỏt.
- Phát một ký tự :
éể nạp một ký tự vào thanh ghi phỏt và phỏt ủi, lần lượt thực hiện cỏc bước : - Chõn TBRE lờn cao bỏo thanh ghi ủệm phỏt trống.
- Cỏc bớt của ký tự ủược nạp vào chõn TBR7 - TBR0. -
éưa lờn cao ủể nạp data vào thanh ghi ủệm.
- Tín hiệu
phỏt ủi khi xuống thấp.
- Thu một ký tự :
Ðể thu một ký tự, lần lượt thực hiện các bước sau : - Chõn DR lờn cao bỏo ủó thu một ký tự mới
- Ðưa
xuống thấp ủể ủọc ký tự từ ngó ra của bộ ủệm vào CPU
- Ðọc các trạng thái lỗi ở các ngã PE, FE và OVE (Các chân này cho phép bởi
ở trạng thái
thấp). Mức cao của cỏc chõn này cho biết ủó phỏt hiện lỗi. PE cho biết lỗi chẵn lẻ, FE cho biết lỗi khung và OVE cho biết lỗi tràn (Overrun) là lỗi do tốc ủộ thu ký tự lớn hơn tốc ủộ ủọc ký tự.
- Reset thanh ghi thu bằng cách
ủưa chõn xuống mức thấp
Tốc ủộ phỏt và thu bớt tựy thuộc vào xung ủồng hồ trờn hai chõn TC và RC. 6402 cú mạch chia 16 cố ủịnh ủể tần số xung clock vào phải bằng 16 lần tốc ủộ baud mong muốn. Tốc ủộ cú thể lờn tới 250 kbps.
4.3.1.4 Giao tiếp của 6402 với vi xử lý :
Giao tiếp giữa 6402 và bộ vi xử lý có phần phức tạp (H 4.5), nhưng ít sử dụng phần mềm khi thực hiện các chức năng thu phát
(H 4.5)
- Việc thực hiện giao thức bất ủồng bộ (tức tạo từ ủiều khiển) nhờ vào khúa chuyển mạch ủiện tử.
- Việc báo lỗi thực hiện nhờ một led.
- Mạch ủược Reset bởi cả phần cứng và phần mềm.
- Mạch ủơn ổn thực hiện chức năng Reset thanh ghi thu tự ủộng sau khi thu ủược ký tự.
- Việc ủọc ký tự thu tỏc ủộng bởi tớn hiệu RD ở CPU và tớn hiệu select UART từ mạch giải mó ủịa chỉ.
- Tương tự cho việc nạp dữ liệu vào thanh ghi ủệm phỏt ủể phỏt : tỏc ủộng bởi tớn hiệu WR của CPU và tín hiệu select UART.
- Cỏc ngắt riờng biệt của IP ủược tạo ra bởi tớn hiệu DR và TBRE
4.3.2 . ACIA 6850 của Motorola :
4.3.2.1 - Ðặc tính tổng quát . 4.3.2.2 - Mụ hỡnh và sơ ủồ khối . 4.3.2.3 - Vận hành .
4 .3.2.4 - Giao tiếp của 6850 với vi xử lý .
4.3.2.1 - Ðặc tính tổng quát :
Về tớnh chất vật lý, 6850 thuộc loại NMOS cú 24 chõn, ủược thiết kế ủể giao tiếp với bus của họ àP 6800 của Motorola.
6850 cú thể lập trỡnh phần mềm và chỉ cú một thanh ghi ủiều khiển Ngoài ra, với 6850 ta cú thể thiết lập cỏc giao thức sau ủõy :
- Có thể truyền 8 hoặc 9 bít - Có thể chọn parity chẵn hoặc lẻ
- Kiểm tra lỗi parity, overrun, và framing
- Cú thể chọn cỏc mode hoạt ủộng với tần số xung ủồng hồ chia cho hệ số 1, 16 hoặc 64
- Tốc ủộ truyền dữ liệu lờn tới 500 kbps
- Cú cỏc chức năng ủiều khiển ngoại vi/modem - Có 1 hoặc 2 bít Stop
- Cú thanh ghi dữ liệu ủụi.
4.3.2.2 - Mụ hỡnh và sơ ủồ khối (H 4.6):
(H 4.6)
• Ý nghĩa các chân :
- , CS1, CS0 : Chip slect : chọn chip
- RS : Reg. Select : Chọn thanh ghi (1: Dữ liệu; 0: Ðiều khiển) - R / : Read / Write
- : Interrupt request : Yêu cầu ngắt - D7-D0 : Data Bus I/O : Bus dữ liệu vào/ra
- E : Data I/O Enable and Clkng (Ðiều khiển xuất nhập dữ liệu vào/ra bus) - RxCLK, TxCLK : Ngó vào xung ủồng hồ thu, phỏt
- : Clear To Send - : Request To Send
- : Carrier Detect : Dò sóng mang - RxD, TxD : Dữ liệu thu, phát
- VSS : Mass nguồn (GND) - VDD : Nguồn dương (+5 V)
Cỏc chi tiết của giao thức ủược chọn bằng cỏch ghi 1 byte vào thanh ghi ủiều khiển dựa theo bảng 4.2. Trạng thỏi thu phỏt và trạng thỏi lỗi ủược ủọc từ thanh ghi trạng thỏi, dựa vào bảng 4.3
Thanh ghi ủiều khiển hoặc thanh ghi trạng thỏi ủược chọn khi chõn RS xuống thấp và thanh ghi dữ liệu thu hoặc phỏt ủược chọn khi RS lờn cao. Thanh ghi dữ liệu phỏt và ủiều khiển chỉ cú thể ghi (write). Thanh ghi dữ liệu thu và trạng thỏi chỉ cú thể ủọc (read).
Bảng 4.2 6850 Control Register Word Bits
D7
Cho phép ngắt thu
C7 1 = ở thấp khi thanh ghi ủệm thu ủầy
0 = Không cho phép ngắt thu
D6
Ðiều khiển ngắt phát - phát C6
00 = low. Không cho phép ngắt phát 01 = low. Cho phép ngắt phát
10 = high. Không cho phép ngắt phát 11 = low. Không cho phép ngắt phát &
D5
C5 Phát bit 0 (break level)
D4
Chọn chiều dài ký tự, KTchẵn lẻ, Số bit stop
C4
000 = 7 bit + Chẵn + 2 Stop 001 = 7 bit + Lẻ + 2 Stop 010 = 7 bit + Chẵn + 1 Stop
D3
C3 011 = 7 bit + Lẻ + 1 Stop
100 = 8 bit + 2 Stop 101 = 8 bit + 1 Stop
D2
C2 110 = 8 bit + Chẵn + 1 Stop
111 = 8 bit + Lẻ + 1 Stop
D1
Chon hệ số chia tần xung CK
C1
00 = : 1 01 = : 16
D0
C0 10 = : 64
11 = Master Reset
Ghi chỳ : * Master reset, thanh ghi ủiều khiển cú bớt C1 C0 = 11, Reset tất cả cỏc bớt của thanh ghi trạng thỏi và ủưa chõn và lờn cao
* Bít C7 = 1, CPU bị ngắt nếu:
- Thanh ghi dữ liệu thu ủầy - Bị tràn
- Cú một biến ủổi từ thấp lờn cao ở chõn (modem khụng dũ ra súng mang) Bảng 4 .3 6850 Status Register Bits
D7 Trạng thái pin IRQ
1 = low
Reset bởi việc ủọc thanh ghi ủệm thu hay viết vào thanh ghi phát
D6 Lỗi chẵn lẻ PE
1 = Có lỗi chẵn lẻ
Set/Reset khi chuyển dữ liệu thu D5 Lỗi tràn
(Overrun) OVRN
1 = Báo lỗi tràn và giữ bit RDRF = 1 Set/Reset khi chuyển dữ liệu thu D4 Lỗi khung
FE
1 = Có lỗi khung
Set/Reset khi chuyển dữ liệu thu
D3 Xúa ủể phỏt CTS
Tuỳ trạng thái chân
Chân ở mức cao sẽ vô hiệu hóa bit TDRE D2 Dò sóng mang
CD
1 = chân ở mức cao (no carrier) ( xem ghi chú)
D1 Thanh ghi phát trống TDRE
1= Phần phát chờ nhận ký tự.
Reset bởi việc ghi vào thanh ghi phát D0 Thanh ghi thu ủầy
RDRF
1 = Phần thu chờ ủọc ký tự.
Reset bởi việc ủọc thanh ghi ủệm thu
Ghi chú : bit CD lên 1 làm cho chân xuống thấp khi bit C7 set = 1. Bit CD vẫn giữ 1 sau khi pin xuống thấp và bị xúa sau khi ủọc thanh ghi trạng thỏi, và thanh ghi dữ liệu thu, hoặc cho ủến khi MRST xảy ra.
Thụng tin trong thanh ghi trạng thỏi ủược ủọc bởi CPU và cho biết trạng thỏi hiện hành của 6850
Bớt D0 : (RDRF) Bớt này set 1 sau khi data nhận ủược ủó truyền từ thanh ghi dịch thu tới thanh ủệm thu và nú ủược xúa sau khi CPU ủó ủọc data
Bớt D1 : (TDRE) Bớt này ủược set khi data ủó chuyển từ thanh ghi ủệm phỏt ủến thanh ghi dịch phỏt, nú ủược xúa khi CPU viết từ mới vào thanh ghi ủệm phỏt
Bớt D2 : (CD) Bớt này ủược set nếu Modem khụng dũ ra súng mang
Bớt D3 : (CTS) Bớt này ủược reset ( =0) nếu cú tớn hiệu tỏc ủộng xúa ủể gửi Bít D4 : (FE) Bít này set nếu máy thu không dò ra bít stop ( sai khung)
Bớt D5 : (OVRN) Bớt này set nếu 6850 chuyển data thu ủược từ thanh ghi dịch thu vào thanh ghi ủệm thu trước khi CPU ủọc nội dung trong thanh ghi này, nú chỉ rằng cú một phần bản tin bị mất. Bớt này ủược reset khi CPU ủọc thanh ghi ủệm thu
Bít D6 : (PE) Bít này set khi máy thu dò ra lỗi parity
Bớt D7 : (IRQ) Bớt này set khi cú tớn hiệu tỏc ủộng trờn ngó ra tới CPU 4.3.2.3 Vận hành :
Vận hành 6850 ủược mụ tả qua cỏc bước : Khởi ủộng, phỏt một ký tự và thu một ký tự
- Khởi ủộng :
Chỳ ý rằng 6850 khụng cú reset phần cứng. Việc reset chip ủược ủiều khiển bằng cỏch ghi byte ủiều khiển vào thanh ghi ủiều khiển (lập cỏc bớt C0 = C1 = 1)
- Reset chip: các bit trong thanh ghi trạng thái về 0 và hai chân và lên cao - Lập trỡnh từ ủiều khiển ủể chọn giao thức hoạt ủộng.
- Phát một ký tự:
Khi ủó khởi ủộng chip ta chỉ cần 2 bước ủể phỏt một ký tự - Chân phải ở mức thấp
- éợi cho ủến khi bớt TDRE = 1 (trong thanh ghi trạng thỏi) - Ghi ký tự cần phát vào thanh ghi dữ liệu phát
Một vớ dụ ủể thấy hoạt ủộng phỏt của 6850. Từ ủiều khiển ghi vào thanh ghi cú dạng 10101101. Do bớt D6 và D5 là 0 và 1, một tớn hiệu mức thấp tỏc ủộng cho bởi chõn gửi tới modem, sau một thời gian trể xỏc ủịnh, modem gửi tớn hiệu tỏc ủộng mức thấp tới chõn C , bỏo dữ liệu sẵn sàng ủể gửi ủi. CPU ủọc thanh ghi trạng thỏi và nếu bớt D1 (TDRE) lờn 1 nú sẽ gửi từ kế tiếp ủến thanh ghi ủệm phỏt, từ này ủược chốt vào thanh ghi khi chõn E chuyển từ mức cao xuống thấp, ủiều này khiến cho bớt TDRE reset xuống 0. Mạch logic bên trong tạo bít kiểm tra lẻ theo yêu cầu và chuyển dữ liệu cùng với bít start, bớt parity và bớt stop vào thanh ghi dịch phỏt. Dữ liệu ủược chuyển ra ngoài trờn ủường TxD với bit rate bằng 1/16 tần số xung ủồng hồ ở chõn TxCLK .
Khi dữ liệu ủó chuyển vào thanh ghi dịch phỏt bớt TDRE của thanh ghi trạng thỏi lờn 1, một lần nữa vỡ bớt D6 và D5 của thanh ghi ủiều khiển là 0 và 1 nờn khi TDRE lờn 1 một tớn hiệu ngắt tự ủộng gửi ủến CPU ở ngó ra .CPU trả lời bằng cỏch gửi từ thứ 2 tới thanh ghi ủệm phỏt mặc dự từ thứ nhất cú thể chưa hoàn toàn chuyển ra ngoài. Sở dĩ ủược như vậy vỡ 6850 dựng thanh ghi ủụi và việc này làm gia tăng vận tốc truyền
.- Thu một ký tự
Cú 3 bước cần thiết ủể thu một ký tự
Chân phải ở mức thấp
- éợi cho ủến khi bớt RDRF = 1
- Ðọc trạng thái lỗi từ thanh ghi trạng thái - Ðọc ký tự thu từ thanh ghi dữ liệu thu
Cỏc ngắt phỏt và/hoặc thu cú thể ủược cho phộp bởi từ ủiều khiển (xem bảng 4.2) Chân sẽ ở mức thấp bất cứ khi nào các bít trạng thái TDRE và/hoặc RDRF là 1. Trong khi chân ở thấp bít trạng thái IRQ là 1.
Dưới ủõy là quỏ trỡnh thu một ký tự
Tín hiệu nối tiếp tới chân RxD của ACIA. Thông thường chân này ở mức cao khi khụng cú tớn hiệu vào. Khi cú tớn hiệu tới bớt ủầu tiờn là bớt start (bớt D0) làm chõn RxD chuyển từ cao xuống thấp. Giả sử tần số xung ủồng hồ thu bằng 16 lần vận tốc bớt, thỡ sau 8 chu kỳ ủồng hồ kể từ khi chõn RxD chuyển từ cao xuống thấp, ngó vào này ủược kiểm tra một lần nữa và nếu nó vẫn còn ở mức thấp, bít start mới có giá trị, nếu không ACIA xem tớn hiệu nhận ủược là nhiễu và tiếp tục giỏm sỏt sự thay ủổi ở chõn này ủể tỡm ra bớt start. Dựng 8 chu kỳ ủồng hồ sau khi cú sự thay ủổi trạng thỏi của chõn RxD khiến cho data ủược lấy mẫu ủỳng ngay ủiểm giữa và ủược chuyển vào thanh ghi dịch thu sau mỗi 16 xung ủồng hồ. Việc kiểm tra lỗi ủược thực hiện và khi cú lỗi xảy ra cỏc bớt bỏo lỗi tương ứng trong thanh ghi trạng thỏi sẽ ủược set. Sau khi số bớt dữ liệu mong muốn ủó nhận ủược, bản tin ủược chuyển song song từ thanh ghi dịch thu tới thanh ghi ủệm thu và bớt 0 (RDRF) của thanh ghi trạng thỏi ủược set lờn 1. Nếu bớt 7 của thanh ghi ủiều khiển ủược set (ủưa lờn 1) trong suốt thời gian khởi ủộng, một ngắt tới CPU ủược tự ủộng tạo ra do chõn xuống thấp. CPU thực hiện chương trỡnh phục vụ ngắt và ủọc thanh ghi
trạng thỏi ủể biết nguyờn nhõn ngắt. Nếu CPU tỡm thấy bớt RDRF ủó set nú sẽ ủọc dữ liệu trong thanh ghi ủệm thu. Hành ủộng này xúa bớt RDRF của thanh ghi trạng thỏi.
Phần thu của 6850 cũng dựng thanh ghi ủụi cho phộp từ kế tiếp chuyển vào thanh ghi dịch trong khi từ trước ủú chưa hoàn toàn ủược ủọc vào CPU nhằm tăng vận tốc truyền như nói trên.
4 .3.2.4 Giao tiếp của 6850 với vi xử lý :
ACIA 6850 có thể giao tiếp với họ vi xử lý 6800 hoặc 6502 (H 4.7)
(H 4 .7)
Ghi chú:
Trong mạch (H 4.7)
- Φ2 là tớn hiệu xung ủồng hồ chuẩn cho tất cả thiết bị ngoại vi của 6800.
- : Valid memory address, ngã ra chỉ báo cho các thiết bị ngoại vi của 6800 biết cú một ủịa chỉ cú hiệu lực trờn bus ủịa chỉ.
- Mạch giao tiếp trên không truyền qua modem (các chân và nối mass) - Việc giải mó ủịa chỉ ủược thực hiện từ bờn ngoài cho ngó vào
- Chân CS1 và CS0 phải nối lên mức cao
- Cỏc ngắt ủược bỏo cho CPU từ chõn ủể bỏo cho CPU biết cỏc thanh ghi thu hoặc phỏt ủó sẵn sàng. Cỏc thao tỏc này cũng cú thể chọn lựa bởi việc lập trỡnh thớch hợp cho cỏc bit cho phộp ngắt trong thanh ghi ủiều khiển.
4.3.3. USART 8251A của Intel :
4 .3.3.1 - Tính năng tổng quát . 4.3.3.2 - Mụ hỡnh và sơ ủồ khối . 4.3.3.3 - Vận hành .
4.3.3.4 Giao tiếp với CPU của 8251A .
4 .3.3.1 - Tính năng tổng quát :
8251A là một chuẩn cụng nghiệp USART, ủược chế tạo từ kỹ thuật NMOS, cú 28 chõn, ủược thiết kế ủể truyền dữ liệu tốc ủộ lờn ủến 64 kbps tương thớch với họ àP của Intel như MCS-48, 80, 85 và iAPX-86, 88...8251A ủược dựng như một thiết bị ngoại vi và ủược lập trỡnh bởi CPU ủể truyền dữ liệu nối tiếp. USART nhận cỏc ký tự dữ liệu từ àP ở dạng song song, sau ủú ủổi chỳng thành dạng nối tiếp ủể phỏt ủi. éồng thời, 8251A cú thể thu dũng dữ liệu nối tiếp và ủổi chỳng thành cỏc ký tự dữ liệu song song gửi ủến àP. USART sẽ bỏo cho àP biết khi nào cú thể nhận một ký tự từ àP ủể phỏt, hoặc khi nào ủó thu ủược một ký tự ủể cho àP ủọc. àP cú thể ủọc trạng thỏi của USART bất cứ lỳc nào.
Những trạng thỏi này bao gồm cỏc lỗi truyền dữ liệu và cỏc tớn hiệu ủiều khiển như là RxRDY (Receiver Ready) và TxRDY (Transmitter Ready)
4.3.3.2 - Mụ hỡnh và sơ ủồ khối (H 4.8):
(H 4.8)
8251A cú thanh ghi dữ liệu ủụi và cỏc thanh ghi ủiều khiển và trạng thỏi riờng biệt, ủiều này làm ủơn giản việc lập trỡnh và tăng hiệu quả sử dụng thời gian của CPU (tăng vận tốc thu, phát).
- Nú chỉ ủược 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