Hãy lùi lại một chút và nói về giao thức báo hiệu mức thấp được sử dụng bởi UARTs. TX và RX là các dòng dữ liệu, không phải đồng hồ. Các đồng hồ chỉ ở bên trong mỗi UART, đó là lý do tại sao phải có thỏa thuận trước về tốc độ truyền.
Khi không truyền được dòng còn lại ở trạng thái không hoạt động. Để truyền một byte (ví dụ, độ rộng dữ liệu khác là có thể), đầu tiên máy phát sẽ gửi bit start . Máy thu sử dụng thời gian của cạnh đầu của bit start và tốc độ truyền đã biết để sau đó giải mã phần còn lại của ký tự. Hãy nói đơn giản rằng 100 kBaud đang được sử dụng. Điều đó có nghĩa là mỗi bit thời gian dài 10 lần. Điều này bao gồm bit start, bit dữ liệu và bit stop. Do đó, phần giữa của bit dữ liệu đầu tiên sẽ ở mức 15 sau khi cạnh đầu của bit bắt đầu, phần thứ hai ở 25 Lời, v.v.
Miễn là đồng hồ máy thu và máy phát giống nhau, điều này có thể diễn ra mãi mãi. Tuy nhiên, chúng sẽ không bao giờ giống hệt nhau nên nó không thể tiếp tục mãi mãi. Để cho phép đồng bộ hóa lại đồng hồ của máy thu với đồng hồ của máy phát, ký tự dữ liệu kết thúc, dòng không hoạt động một chút, sau đó quá trình được lặp lại. Lỗi thời gian tích lũy bắt đầu từ cạnh đầu của bit start, do đó độ trôi tối đa là ở bit cuối cùng. Khi ký tự đó kết thúc, người nhận đặt lại chờ bit bắt đầu tiếp theo và quá trình lặp lại.
Với 8 bit dữ liệu, trường hợp xấu nhất về thời gian là lấy mẫu bit cuối cùng. Đó là 8,5 bit lần so với tham chiếu thời gian, là cạnh hàng đầu của bit start. Nếu máy thu bị tắt 1/2 bit trở lên thì nó sẽ lấy mẫu bit cuối cùng trong một bit khác. Rõ ràng đó là xấu. Điều này xảy ra ở tần số xung nhịp không đúng 1/2 bit trong 8 1/2 bit, tương đương 5,9%. Đó là sự đảm bảo để không phù hợp. Về độ tin cậy, bạn thường muốn đảm bảo máy thu khớp với máy phát trong vòng một nửa, hoặc 2,9%. Điều đó thể hiện lỗi thời gian 1/4 bit ở bit cuối cùng.
Tuy nhiên, nó không hoàn toàn đơn giản. Trong kịch bản được mô tả ở trên, máy thu về cơ bản bắt đầu một đồng hồ bấm giờ ở cạnh đầu của bit start. Về lý thuyết điều đó có thể được thực hiện trong các thiết bị điện tử tương tự, nhưng điều đó sẽ phức tạp và tốn kém và không dễ tích hợp vào các chip kỹ thuật số. Thay vào đó, hầu hết các triển khai UART kỹ thuật số có đồng hồ bên trong chạy ở tốc độ bit dự kiến 16 lần. "Đồng hồ bấm giờ" sau đó đếm các chu kỳ 16x này. Điều đó có nghĩa là có một lỗi có thể xảy ra là 1/16 bit được thêm vào tất cả các lần lấy mẫu bit, giống như một lỗi không khớp khác .7% ở bit cuối cùng.
Hy vọng rằng điều này cho thấy rõ bit stop là gì, thời gian bit hoạt động như thế nào và đồng hồ 16x là gì. Tôi chủ yếu bỏ qua các bit stop, nhưng có lẽ bạn có thể tự mình nhìn thấy tại sao cần ít nhất một bit stop. Về cơ bản, các bit dừng là thời gian nhàn rỗi được thực thi tối thiểu giữa các ký tự. Đây là thời gian mà người nhận đã hoàn thành việc nhận một ký tự và sẵn sàng cho cạnh đầu tiếp theo của bit start. Nếu không có bit stop, thì bit dữ liệu cuối cùng có thể có cùng cực với bit start và bộ thu sẽ không có cạnh để khởi động đồng hồ bấm giờ.
Từ lâu, giao thức này đã được giải mã bằng cam, đòn bẩy và bánh xe quay. Hai bit stop thường được sử dụng để cho phép cơ chế thiết lập lại. Ngày nay, mọi thứ đều được thực hiện theo logic kỹ thuật số và 1 bit stop được sử dụng khá phổ biến. Bạn thường thấy giao thức cấp thấp được viết tốc ký là 8-N-1, nghĩa là 8 bit dữ liệu, không có bit chẵn lẻ (hãy quên đi, chúng hiếm khi được sử dụng ngày nay) và 1 bit stop. Bit bắt đầu được ngụ ý vì không có tùy chọn ở đó.
Sử dụng 8-N-1, một byte dữ liệu 8 bit thực sự mất 10 lần để gửi. Đây là một lý do có sự phân biệt giữa "tốc độ bit" và "tốc độ truyền". Tốc độ Baud đề cập đến thời gian báo hiệu bit riêng lẻ, bao gồm các bit start và stop. Ở tốc độ 100 kBaud, mỗi bit được truyền sẽ mất 10 bit, bao gồm các bit bắt đầu và dừng. Do đó, toàn bộ nhân vật mất 100 mật khẩu, nhưng chỉ có 8 bit dữ liệu thực được truyền. Tốc độ truyền là 100 k, nhưng tốc độ bit truyền dữ liệu theo quan điểm của các mức cao hơn chỉ là 80 kBits / s.