Trong trạng thỏi rỗi, giỏ trị logic trờn đường truyền luụn bằng 1. Để bỏo việc bắt đầu truyền dữ liệu, bờn gửi đưa giỏ trị logic 0 lờn đường truyền trong khoảng thời gian
bằng độ dài một bit. Bit đú gọi là bit Start. Khi truyền với tốc độ 300 baud, một bit cú độ dài là 3,3 ms, trong khi với tốc độ 9600 baud thỡ cú độ dài 0,1 ms.
Ngay sau bit Start, bờn truyền gửi tiếp 8 bit dữ liệu kế tiếp nhau, bắt đầu bằng bit LSB. Tiếp sau đú bờn truyền sẽ gửi tiếp một bit cú giỏ trị logic 1 lờn đường truyền và duy trỡ trong khoảng thời gian ớt nhất là độ dài một bit. Ngay sau đú hoặc sau một khoảng thời gian bất kỳ, bit Start tiếp o sẽ được gửi để bắt đầu truyền một byte mới. 6.3.2. Cổng nối tiếp RS 232
• Phần cứng
Những thuộc tớnh của phần cứng
Những thiết bị sử dụng cỏp nối tiếp cho việc truyền thụng được chia làm hai loại. Đú là DCE (Data Communications Equipment) và DTE (Data Terminal Equipment) DCE là những thiết bị được sử dụng như một modem của chỳng ta, bộ tiếp hợp TA, mỏy vẽ, ... trong khi đú DTE lại được sử dụng như mỏy tớnh hoặc Teminal của chỳng ta.
Những phỏt minh về cổng nối tiếp của EIA (Electronics Industry Association) trong đú tiờu biểu là chuẩn RS 232C. Nú đưa ra nhiều thụng số như:
• A “Space” (logic 0) ở giữa +3V và +12V. • A “Mark” (logic 1) ở giữa -3V và -12V. • Vựng giữa +3V và -3V là khụng xỏc định.
Liệt kờ ở trờn chỉ là một phần của danh sỏch của chuẩn EIA. Trong đú bao gồm cả Trở khỏng đường truyền, tốc độ baud tối đa, ... Để biết chi tiết hơn xin tham khảo chuẩn EIA RS-232C. Tuy nhiờn nú thật thỳ vị để ghi nhớ rằng Chuẩn RS -232C chỉ rừ tốc độ tối đa là 20,000 BPS!, điều mà làm cho nú khỏ chậm trước những tiờu chuẩn của ngày nay. Một tiờu chuẩn mới, RS -232D gần đõy đó được phỏt hành.
Cổng nối tiếp cú hai loại, đú là giắc D-Type 25 chõn và giắc D-Type 9 chõn, cả hai loại này đều cú chung một đặc điểm khỏc hẳn với cổng mỏy in là chỗ nối với mỏy in ở mỏy PC là ổ cắm, trong khi ở cỏc cổng nối tiếp lại là phớch cắm nhiều chõn. Bờn dưới là bảng kết nối chõn cho bộ kết nối 9 chõn và 25 chõn D-Type.
D-Type-25 Pin No D-Type-9 Pin No Abbreviation Full Name
Chõn 2 Chõn 3 TD Transmit Data
Chõn 3 Chõn 2 RD Receive Data
Chõn 4 Chõn 7 RTS Request To Send
Chõn 5 Chõn 8 CTS Clear To Send
Chõn 6 Chõn 6 DSR Data Set Ready
Chõn 7 Chõn 5 SG Signal Ground
Chõn 8 Chõn 1 CD Carrier Detect
Chõn 20 Chõn 4 DTR Data Terminal Ready
Bảng 1: D Type 9 Pin and D Type 25 Pin Connectors Chức năng của cỏc chõn
Chữ viết tắt
Tờn đầy
đủ Chức năng
TD Transmit Data Serial Data Output (TXD) - Đầu ra của dữ liệu RD Receive Data Serial Data Input (RXD) - Dữ liệu được nhập vào CTS Clear to Send Bỏo rằng Modem sằn sàng trao đổi dữ liệu.
DCD Data Carrier Detect
Khi nào modem phỏt hiện ra một “Carrier” từ một modem kết thỳc khỏc của phone line, thỡ Line này trở thành tớch cực.
DSR Data Set Ready Thụng bỏo với UART rằng modem sẵn sàng thiết lập một mối liờn kết .
DTR Data Terminal Ready
Đõy là sự đối lập với DSR. Bỏo với Modem rằng UART sẵn sàng để liờn kết .
RTS Request To
Send
Thụng bỏo cho Modem rằng UART sẵn sàng để trao đổi dữ liệu.
RI Ring Indicator Tớch cực khi modem phỏt hiện cú một tớn hiệu chuụng từ đường điện thoại
Null Modems
Một Null Modem được sử dụng để nối cho hai DTE cựng nhau. Những modem này thường được sử dụng như một cỏch để nối mạng cho những trũ chơi hoặc để chuyển giao giữa cỏc file mỏy tớnh sử dụng giao thức Zmodem Protocol, Xmodem Protocol, ... Điều này cũng cú thể được sử dụng với nhiều Microprocessor Development Systems (hệ thống phỏt triển bộ vi xử lý).
Hỡnh 1: Sơ đồ nối dõy Null Modem
Trờn đõy là phương phỏp ưu tiờn của việc nối dõy của một Null Modem. Nú chỉ yờu cầu 3 dõy (TD, RD & SG) để mắc được xuyờn thẳng qua vỡ vậy ảnh hưởng lớn đến chi phớ để sử dụng chạy cỏp dài. Nguyờn lý của thao tỏc khỏ đơn giản. Mục tiờu là làm cho mỏy tớnh cho rằng nú là một modem hơn là một computer khỏc. Bất kỳ dữ
liệu nào được truyền từ mỏy tớnh thứ nhất phải được nhận bởi một mỏy tớnh khỏc do đú TD được nối với RD. Điều thứ hai mỏy tớnh phải cú cựng cơ cấu như vậy thỡ RD được nối tới TD. Tớn hiệu Signal Ground (SG) cũng phải được nối chung cho cả hai mỏy tớnh.
Data Terminal Ready (DTR) được nối vũng vào chõn Data Set Ready (DSR) và Data Carrier Detect (DCD) trờn cả hai mỏy tớnh. Khi chõn Data Terminal Ready ở mức tớch cực thỡ chõn Data Set Ready và chõn Data Carrier Detect ngay lập tức trở thành tớch cực (active). Vào thời điểm này mỏy tớnh cho rằng Virtual Modem sẵn sàng được nối và phỏt hiện ra súng mang của modem khỏc.
Và vấn đề cần lo lắng bõy giờ là chõn Request to Send và chõn Clear To Send. Trong khi cả hai mỏy tớnh giao thiệp với nhau ở cựng một tốc độ, vỡ vậy việc điều khiển luồng là khụng cần thiết do đú hai chõn này được nối vũng với trờn mỗi mỏy tớnh. Khi mỏy tớnh muốn gửi dữ liệu, nú xỏc nhận sự cú mặt của chõn Request to Send ở mức cao và khi đú nú múc nối với chõn Clear to Send, lỳc này ngay lập tức mỏy tớnh nhận được cõu trả lời rằng nú cú thể gửi dữ liệu và nú thực hiện ngay.
Hỡnh 2: Sơ đồ nối dõy Loopback Plug
Loopback plug thiết bị này cú thể trở nờn vụ cựng dễ sử dụng khi viết những chương trỡnh truyền thụng sử dụng cổng nối tiếp RS232. Nú cú thể nhận và truyền nhiều tuyến đường cựng nhau, vỡ thế mà mọi thứ được truyền ra ngoài của cổng nối tiếp thỡ ngay lập tức nhận được bởi cựng cổng đú. Nếu chỳng ta nối thiết bị này với cổng nối tiếp nạp vào Terminal Program, thỡ bất cứ cỏi gỡ chỳng ta đỏnh mỏy sẽ ngay lập tức được hiện lờn trờn màn hỡnh (displayed on screen).
Xin chỳ ý rằng thiết bị này chưa được dự định cho việc sử dụng với những chương trỡnh Chẩn đoỏn (Diagnostic Programs) và sẽ cú lẽ khụng làm việc. Bởi vỡ những chương trỡnh mà chỳng ta yờu cầu khỏc nhau sẽ bỏo cho Loop Back plug cỏi mà cú thể thay đổi từ chương trỡnh này đến chương trỡnh khỏc.
Tốc độ DTE / DCE
Chỳng ta đó núi túm tắt về DTE và DCE. Một thiết bị đầu cuối dữ liệu (Data Terminal Device) tiờu biểu là một mỏy tớnh và một thiết bị truyền thụng dữ liệu (Data Communications Device) tiờu biểu là một Modem. Người ta thường nhắc đến tốc độ của DTE to DCE hoặc DCE to DCE. DTE to DCE là tốc độ giữa modem và mỏy tớnh
của chỳng ta, đụi khi được đề cập đến như là tốc độ của thiết bị cuối của chỳng ta. DTE to DCE cần phải chạy ở một tốc độ nhanh hơn tốc độ của DCE to DCE. DCE to DCE là sự kết nối giữa cỏc modem, đụi khi được gọi là tốc độ đường truyền.
Hầu hết mọi người ngày nay cú những modem với tốc độ 28,8K hoặc 33,6K. Bởi vậy chỳng ta cần phải chờ đợi tốc độ của DCE to DCE cũng như tốc độ của modem là 28,8K hoặc 33,6K. Suy cho cựng vỡ tốc độ cao của modem nờn chỳng ta mong muốn tốc độ của DTE to DCE sẽ đạt đến khoảng 115,200 BPS (Maximum Speed of 16550a UART). Những chương trỡnh truyờn thụng mà chỳng ta sử dụng đó đặt tốc độ cho DCE to DTE. Tuy nhiờn, chỳng chỉ cú tốc độ 9,6 KBPS, 14,4 KBPS ... và coi như nú là tốc độ modem của chỳng ta.
Những modem ngày nay cú thể nộn dữ liệu vào trong chỳng (Data Compression). Điều này cũng như rất nhiều PK-ZIP nhưng phần mềm trong modem của chỳng ta cú thể nộn và giải nộn dữ liệu. Khi đưa ra đỳng cỏch thức chỳng ta cú thể mong đợi việc nộn số truyền với tỷ lệ 1:4 hoặc thậm chớ cũn cao hơn. Tỷ lệ nộn dữ liệu 1:4 là rất tiờu biểu cho việc nộn dữ liệu của những file văn bản. Nếu chỳng ta chuyển những file văn bản đú ở 28,8K (DCE-DCE), thỡ khi modem nộn nú chỳng ta thực sự đang chuyển 115,2 KBPS giữa những computers và như vậy tốc độ của DCE-DTE là 115,2 KBPS. Như vậy dú là lý do tại sao tốc độ của DCE-DTE cần phải cao hơn tốc độ kết nối của modem.
Vài nhà sản xuất modem đó trớch dẫn một tỷ lệ nộn cực đại là 1:8. Để làm vớ dụ cho lời trớch dẫn đú họ đưa ra một modem mới với tốc độ 33,6 KBPS khi đú chỳng ta cú thể cú một sự chuyển đổi cực đại 268,800 BPS giữa modem and UART. Nếu chỳng ta chỉ cú a 16550a nhưng chỳng ta cú thể làm 115,200 BPS tops, n you would be missing out on a extra bit of performance. Buying a 16C650 should fix your problem with a maximum transfer rate of 230,400 BPS.
Tuy nhiờn, hóy khoan lạm dụng modem của chỳng ta nếu chỳng ta khụng cú những tốc độ mong muốn. Đú là những tỷ lệ nộn cực đại. Trong vài trường hợp cỏ biệt nếu chỳng ta cố gắng gửi cho một file nộn, modem của chỳng ta cú thể mất nhiều thời gian hơn nộn nú, vỡ vậy chỳng ta cú tốc độ truyền chậm hơn tốc độ kết nối của modem. Nếu điều này xảy chỳng ta nờn cố gắng tắt việc nộn dữ liệu của chỳng ta lại. Lỳc này cần phải cố định trờn những modem mới hơn. Một vài file nộn dễ dàng hơn những file khỏc vỡ vậy bất kỳ file nào mà nộn đơn giản thỡ tự nhiờn sẽ cú một tỷ lệ nộn cao hơn.
Điều khiển Luồng (Flow Control)
Như vậy nếu tốc độ của DTE to DCE là nhanh hơn gấp vài lần tốc độ của DCE to DTE PC cú thể gửi dữ liệu tới modem của chỳng ta tại 115,200BPS. Sớm hay muộn dữ liệu sẽ bị mất khi bộ đệm bị tràn, trường hợp này điều khiển luồng sẽ được sử dụng. Điều khiển luồng cú hai dạng cơ bản, phần cứng (hardware) hoặc phần mềm (software).
Điều khiển luồng bằng phần mềm (Software flow control), đụi khi được biểu thị như Xon/Xoff sử dụng hai dạng ký tự Xon và Xoff. Xon thường cho biết bởi những ký tự của ASCII 17 trong khi đú ký tự ASCII 19 được sử dụng cho Xoff. Những
modem chỉ cú một bộ đệm nhỏ vỡ thế khi mỏy tớnh ghi đầy nú, Modem gửi một ký tự Xoff để bỏo cho mỏy tớnh dừng cụng việc gửi dữ liệu. Khi modem trống cho nhiều dữ liệu hơn, nú gửi một ký tự Xon và mỏy tớnh sẽ gửi nhiều dữ liệu hơn. Kiểu điều khiển luồng thế này cú nhiều lợi thế rằng nú khụng yờu cầu bất kỳ tớn hiệu riờng nào như những ký tự được gửi qua những đường TD/RD. Tuy nhiờn mỗi ký tự yờu cầu liờn kết chậm mất 10 bits điều đú cú thể làm chậm việc truyền thụng lại.
Điều khiển luồng phần cứng (Hardware flow control) cũng được biết như điều khiển luồng RTS/CTS. Nú sử dụng hai dõy trong cỏp nối tiếp của chỳng ta hơn là truyền thờm những ký tự trong đường dữ liệu của chỳng ta.
Điều khiển luồng Phần cứng cũng được biết như điều khiển luồng RTS / CTS. Vỡ vậy điều khiển luồng phần cứng (hardware flow control) sẽ khụng làm chậm việc truyền thụng lại như việc sử dụng Xon-Xoff thực hiện. Khi mỏy tớnh muốn gửi dữ liệu nú sẽ điều khiển hoạt động của đường Request to Send. Nếu modem cú chỗ trống cho dữ liệu này, thỡ modem sẽ bằng việc điều khiển hoạt động của đường Clear to Send và mỏy tớnh bắt đầu gửi dữ liệu. Nếu modem khụng rỗng thỡ nú sẽ khụng gửi tớn hiệu cho Clear to Send.
• Vi mạch điều khiển truyền thụng khụng đồng bộ van năng UART
UART là viết tắt của Universal Asynchronous Receiver/Transmitter. Đa số cỏc card sẽ cú UART tớch hợp vào trong những mạch điện tử chip khỏc mà cũng cú thể điều khiển cổng song song của chỳng ta, cổng games, floppy hoặc ổ đĩa cứng (hard disk drives) và tiờu biểu là những thiết bị giao tiếp với người sử dụng. Họ vi mạch 8250, bao gồm 16450, 16550, 16650, & 16750 UARTS là những kiểu thường thấy trờn PC của chỳng ta. Về sau chỳng ta sẽ xem xột những kiểu khỏc.
Hỡnh 3: Sơ đồ Chõn cho 16550, 16450 & 8250 UARTs
16550 là chip tương thớch với 8250 & 16450. Chỉ khỏc ở hai chõn 24 và 29. Chõn 24 trờn 8250 là việc lựa chọn chip ở ngoài mà chức năng chỉ là việc Ỏchỉ bỏoế tới nếu chip hoật động hoặc khụng. Chõn 29 khụng được kết nối trờn 8250/16450 UARTs. 16550 đưa vào hai chõn mới trong nú. Đú là Transmit Ready và Receive Ready mà cú thể thực thi với DMA (Direct Memory Access). Những chõn này cú hai kiểu thao tỏc khỏc nhau. Mode 0 hỗ trợ việc chuyển giao đơn DMA trong khi mode 1 hỗ trợ Multi-transfer DMA.
Mode 0 cũng được gọi là mode 16450. Mode này được lựa chọn khi bộ đệm FIFO được vụ hiệu hoỏ qua bit 0 của FIFO Control Register hoặc khi bộ đệm FIFO được
cho phộp nhưng DMA Mode Select = 0. (Bit 3 của FCR) Trong mode này RXRDY là tớch cực ở mức thấp khi ớt nhất một characters (Byte) cú mặt trong Receiver Buffer. RXRDY sẽ khụng hoạt động ở mức cao khi khụng cú nhiều characters tồn tại trong Receiver Buffer. TXRDY sẽ hoạt động ở mức thấp khi khụng cú characters trong Transmit Buffer. Nú sẽ khụng hoạt động ở mức cao sau khi characters/byte đầu tiờn được tải vào trong Transmit Buffer. Mode 1 là khi bộ đệm FIFO được kớch hoạt và DMA Mode Select = 1. Trong mode 1, RXRDY sẽ hoạt động ở mức thấp khi trigger level là reached hoặc khi 16550 Time Out xảy ra và sẽ quay trở lại trạng thỏi khụng hoạt động khi khụng cú characters trong FIFO. TXRDY sẽ được kớch hoạt khi khụng cú characters cú mặt bờn trong Transmit Buffer và sẽ khụng được kớch hoạt khi FIFO Transmit Buffer là hoàn toàn Full.
Chõn Tờn a. Lời ghi chỳ
Chõn 1:8 D0:D7 Data Bus
Chõn 9 RCLK Receiver Clock Input. Tần số đầu vào này cần phải cõn bằng với receivers baud rate * 16
Chõn 10 RD Nhận dữ liệu (Receive Data) Chõn 11 TD Truyền dữ liệu (Transmit Data) Chõn 12 CS0 Chip Select 0 - Active High Chõn 13 CS1 Chip Select 1 - Active High Chõn 14 nCS2 Chip Select 2 - Active Low
Chõn 15 nBAUDOUT Baud Output - Output from Programmable Baud Rate Generator. Frequency = (Baud Rate x 16)
Chõn 16 XIN Đầu vào External Crystal Input – Sử dụng cho Baud Rate Generator Oscillator
Chõn 17 XOUT Đầu ra External Crystal Output Chõn 18 nWR Write Line – Inverted (Đảo)
Chõn 19 WR Write Line - Not Inverted (khụng đảo) Chõn 20 VSS Kết nối tới Common Ground
Chõn 21 RD Read Line - Inverted Chõn 22 nRD Read Line - Not Inverted
Chõn 23 DDIS
Vụ hiệu hoỏ bộ phận điều khiển (Driver Disable). Chõn này rơi vào mức thấp khi CPU đọc từ UART. Cú thể kết nối tới Bus Transceiver trong trường hợp bus dữ liệu cú dung lượng cao.
Chõn 24 nTXRDY Transmit Ready
khụng ổn định trong suốt quỏ trỡnh đọc hoặc ghi cycle Chõn 26 A2 Address Bit 2
Chõn 27 A1 Address Bit 1 Chõn 28 A0 Address Bit 0 Chõn 29 nRXRDY Receive Ready Chõn 30 INTR Interrupt Output Chõn 31 nOUT2 User Output 2 Chõn 32 nRTS Request to Send Chõn 33 nDTR Data Terminal Ready Chõn 34 nOUT1 User Output 1
Chõn 35 MR Master Reset Chõn 36 nCTS Clear To Send Chõn 37 nDSR Data Set Ready Chõn 38 nDCD Data Carrier Detect Chõn 39 nRI Ring Indicator Chõn 40 VDD + 5 Volts
Bảng 2: Pin Assignments for 16550A UART
Tất cả cỏc chõn của UARTs đều thớch hợp với TTL. Bao gồm TD, RD, RI, DCD, DSR, CTS, DTR và RTS mà tất cả cỏc giao diện trong đú là serial plug của chỳng ta, typically a D-type connector. Vỡ vậy RS232 Level Converters (mà chỳng ta sẽ núi cụ thể sau) đó được sử dụng. Cỏi này thụng thường là DS1489 Receiver và DS1488 as PC has +12 and -12 volt rails mà cú thể sử dụng bởi những thiết bị này. Trỡnh chuyển