Một hoặc hai bit dừng UART?


15

UART thường cho phép bạn chọn giữa 1, 1,5 và 2 bit stop. Với hiệu suất tải trọng 1 bit dừng là 80% (8/10), với 2 bit stop giảm xuống 72,7% (8/11). Vì vậy, lợi thế của bit stop thứ hai là gì?

Câu trả lời:


19

Các bit dừng thêm có thể là một cách hữu ích để thêm một chút thời gian xử lý nhận thêm, đặc biệt là ở tốc độ truyền cao và / hoặc sử dụng UART mềm, trong đó cần có thời gian để xử lý byte nhận được.

Khi tốc độ quá chặt và UART của bạn chỉ cung cấp tỷ lệ phân chia ở mức 2, việc thêm một điểm dừng bổ sung có thể là một lựa chọn để giảm tốc độ ít hơn so với tốc độ baud thấp nhất tiếp theo.

Tôi tin rằng đây có thể là một lý do khiến tiêu chuẩn DMX512 chỉ định 2 điểm dừng.

Một tình huống khác có thể hữu ích là nếu bạn có các thiết bị chuyển tiếp luồng dữ liệu mà không có bất kỳ bộ đệm hoặc gói nào - sự khác biệt nhỏ về tốc độ xung nhịp giữa các nút và độ chi tiết lấy mẫu hữu hạn có thể gây ra lỗi khi dữ liệu được nhận và truyền lại bởi một số nút trong một chuỗi, nhưng nếu dữ liệu được gửi với 2 điểm dừng và bộ thu được đặt thành một điểm dừng, nó sẽ thêm đủ biên để chứa các lỗi này và để lại ít nhất một khoảng thời gian dừng hợp lệ để các nút ở xa chuỗi nhận được một cách đáng tin cậy.

Tôi cũng đã gặp phải một tình huống trong đó một lần chạy dây cáp rất dài gây ra sự bất cân xứng trong thời gian tăng và giảm, dẫn đến độ dài điểm dừng không đủ - gửi 2 điểm dừng và yêu cầu người nhận chỉ yêu cầu một lần sửa lỗi này.


6

Trong những ngày dài, máy in là (hầu hết) các cấu trúc cơ khí. Baudrates đã được chuẩn hóa phần nào ngay cả sau đó, vì vậy việc thêm một bit stop sẽ giúp máy in có thêm thời gian để in ký tự. Các khía cạnh thời gian đã rõ ràng trở lại sau đó. Đối với máy in đầu tiên của tôi, một http://en.wikipedia.org/wiki/Teletype_Model_33 ồn ào , tôi đã phải chèn tạm dừng hai ký tự sau khi gửi Trả về vận chuyển.


Mô hình 33 được điều chỉnh đúng chỉ cần một ký tự sau khi Vận chuyển trở lại. Đó là khi bạn phải gửi Linefeed! Tôi quên rằng họ cần 2 bit stop, nhưng bạn nói đúng và vì vậy những gì tôi đã nói bên dưới câu trả lời của Russel được áp dụng (nhưng 1,5 bit stop đó là dành cho phần cứng Baudot). Mặc dù vậy, các bit dừng thêm (10ms) không giúp ích cho bất kỳ độ trễ Vận chuyển nào.
gbarry

4

Hai bit stop dường như không hữu ích hơn nhiều so với một trên một hệ thống có tỷ lệ thời gian dừng đáng kể và đang hoạt động trong môi trường có độ ồn thấp (BER thấp) như bên trong thiết bị hoặc trong giao diện ngoại vi với một vài mét của cáp và / hoặc không có giai đoạn modem-modem.

2 bit stop cung cấp cho bạn thời gian đồng bộ hóa lớn hơn, nhiều thời gian hơn để xử lý giữa các ký tự và có thể, tùy thuộc vào phần cứng và thuật toán, cơ hội tốt hơn để đạt được hoặc lấy lại đồng bộ hóa trong một luồng dữ liệu liên tục. Thời gian xen kẽ có giá trị ít hơn nhiều trên các hệ thống hiện đại so với khi tốc độ xung nhịp thấp và thông lượng bộ xử lý thấp hơn.

Nếu bạn có một luồng dữ liệu cơ bản liên tục, thì nếu không được đồng bộ hóa, bất kỳ bit cao nào cũng sẽ trông giống như một bit stop. Bất kỳ chuyển đổi cao thấp nào sẽ trông giống như một ranh giới byte. Nếu máy thu của bạn bắt đầu ở ranh giới 10 và đó không phải là ranh giới bắt đầu thực sự thì điều này sẽ chỉ được phát hiện 50% thời gian) (nghĩa là nếu "bit stop" cuối cùng được tìm thấy thực sự là một bit dữ liệu thấp và bạn cũng sẽ đã bỏ qua ranh giới dừng / bắt đầu chính hãng trên đường đi. Trung bình bạn có 1/4 triển vọng của một ranh giới byte là 1/0 và trông giống như một cặp dừng / bắt đầu. Ở trên cho thấy rằng nếu bạn chọn dừng dừng sai bắt đầu cặp sau đó có thể có khoảng 50% cơ hội bạn sẽ chọn một cái khác trong lần thử sau.

Nếu bạn sử dụng 2 bit stop (11) thì chuỗi bắt đầu dừng hợp lệ là 110 có khả năng xảy ra 1/8 trong lưu lượng dữ liệu ngẫu nhiên. Việc trộn các bit dừng và bắt đầu chính hãng trong luồng không đồng bộ sẽ thay đổi các sats một chút nhưng có vẻ như không chắc chắn rằng nếu bạn nhận được một chuỗi dừng / bắt đầu sai 110 trên một chu kỳ mà bạn sẽ thử một lần tiếp theo trước khi vấp phải 110 chính hãng trình tự tiếp theo xảy ra.

Như bạn lưu ý, 1 bit stop mang lại 8/10 = 80% thông lượng tối đa và 2 bit stop mang lại hiệu suất 8/11 = 72%. Sự khác biệt về thông lượng ở giới hạn hoàn toàn là 80% / 72% = ~ 11% nữa. đây là một lợi ích hữu ích trong hoàn cảnh khắc nghiệt nhưng không lớn và nếu mạch không hoạt động nhiều hơn khoảng 10% thì nó có giá trị tối thiểu. Nếu mạch của bạn bị nhiễu và dễ bị mất đồng bộ hóa thường xuyên thì bit dừng thêm có thể giúp ích rất nhiều. NHƯNG nếu bạn quan tâm nhiều đến thông lượng, bạn thường có thể tăng tốc độ truyền (không phải luôn luôn) hoặc thay đổi thành hoạt động đồng bộ hoàn toàn.


Tôi không biết bất kỳ UART nào có thể được cấu hình để bỏ qua bất kỳ bit bắt đầu rõ ràng nào không có trước một thời gian đánh dấu đầy đủ (thực sự, hầu hết sẽ chấp nhận một bit bắt đầu trước một nửa thời gian đánh dấu và không thể được cấu hình để làm khác). Một tính năng như vậy có thể hữu ích, mặc dù.
supercat

Bạn đã vấp phải câu trả lời đúng, nếu chúng ta có thể chấp nhận rằng thực tiễn này quay trở lại thời cơ học. Trước đó, cơ chế thu nhận cần khoảng 1 bit thời gian để dừng lại để sẵn sàng cho bit bắt đầu tiếp theo. Vì vậy, máy phát được xây dựng để có bit dừng thời gian 1,5 bit. Nó có tác dụng bạn mô tả. Nếu đồng bộ hóa bị mất, có thể có một vài ký tự rác cho đến khi bạn lấy lại được đồng bộ hóa. Khi chúng tôi bắt đầu triển khai điện tử, người nhận có thể bắt đầu chờ bit bắt đầu tiếp theo ngay lập tức khi thấy quá trình chuyển sang mức dừng - nó không cần đệm
gbarry

@gbarry - Methinks Hàng ngàn người không vấp ngã trong bình luận của bạn.
Russell McMahon

Trên thực tế, tôi đã hết nhân vật :) Có gì sai?
gbarry

3

Để khuếch đại quan điểm của mike Electrical ware về thời gian nhận bằng "UART mềm", một ứng dụng nhận sẽ luôn biết khi nào nên chấp nhận dữ liệu và trên cơ sở bỏ phiếu thường có thể xử lý tốc độ truyền nhanh hơn so với thực tế với UART mềm điều khiển ngắt. Tuy nhiên, các ứng dụng như vậy chỉ có thể xử lý dữ liệu đến trong khoảng thời gian giữa lúc bắt đầu bit dừng của một byte và bit bắt đầu của byte tiếp theo; thời gian cần thiết để xử lý mỗi byte kết thúc là yếu tố giới hạn cho tốc độ truyền thông. Xử lý dữ liệu ở 115.200-N-8-2 không đòi hỏi nhiều hơn so với xử lý dữ liệu ở 57.600-N-8-1, nhưng nhanh hơn 80%.

Đôi khi người ta có thể đẩy mọi thứ đi xa hơn bằng cách sử dụng các định dạng dữ liệu dường như kém hiệu quả hơn. Ví dụ, người ta có thể gửi mỗi byte thành hai phần, một có bảy bit và một với một (tất cả các MSB của phần một bit đều được đặt). Nếu một người làm điều đó, thậm chí chỉ với một bit stop, sẽ có tám lần đánh dấu giữa điểm cuối của một cặp byte và điểm bắt đầu của lần tiếp theo, do đó cho phép một người đẩy tốc độ bit cao gấp bốn lần tốc độ bit có thể làm chỉ với hai bit stop (và cao gấp tám lần so với những gì người ta có thể làm với một bit). Mặc dù phải gửi gấp đôi số byte, tốc độ dữ liệu tăng gấp bốn lần sẽ là một chiến thắng lớn. Ngoài ra, mặc dù mỗi cặp byte truyền có thể được sử dụng để gửi tám bit dữ liệu, chỉ có 130 trong số 256 giá trị byte có thể được sử dụng bởi mã hóa,


Bạn cũng có thể làm mềm tốc độ cao UART (250K trở lên) bằng cách tạo ra một ngắt trên cạnh bắt đầu và ở bên trong mã ngắt cho toàn bộ byte - một điểm dừng bổ sung có thể rất hữu ích ở đây.
mike Electrical ware

@mike Electrical ware: Một bit stop bổ sung có thể rất hữu ích, vì chỉ có thể sử dụng một số bit trong mỗi byte (yêu cầu LSB của mỗi byte có thể hữu ích vì người ta có thể lấy được thời gian từ cạnh tăng của bit đó, thậm chí nếu có thể có một chút trượt trong khi xảy ra gián đoạn). Tuy nhiên, một hạn chế lớn của cách tiếp cận bit-kích hoạt-bắt đầu-khởi động-bit là không có cách nào tốt để gửi dữ liệu trong khi dữ liệu đến có thể đến. Dữ liệu được truyền hoặc dữ liệu nhận được (hoặc cả hai) sẽ bị mất.
supercat

2

Ngày xửa ngày xưa có những con quái vật điện cơ gọi là teletypes. Hầu hết chạy trên động cơ AC đồng bộ với tần số dòng điện. Do đó, luôn có khả năng hai máy giao tiếp có thể không được đồng bộ hóa với cùng một lưới điện hoặc thậm chí chạy trên dòng điện xoay chiều sử dụng các tần số khác nhau cho vấn đề đó.

Do đó, để cho phép một máy chậm hơn bắt kịp và không bị mất đồng bộ, hai bit stop đã được gửi.

Đối với các mục đích khác như cho phép cỗ máy in quay trở lại điểm bắt đầu của một dòng mới, CR, LF cộng với hai lần cọ xát đã được gửi (tất cả các lỗ trên băng 8 cấp).

Đó là thông lệ cho các mạch chạy ở tốc độ 110 Baud và chỉ chậm hơn.


1

Sự chậm chạp của các thiết bị cơ học nhận là lý do đằng sau việc thêm các bit dừng bổ sung, tuy nhiên các thiết bị ngày nay đủ nhanh và hoạt động với tốc độ truyền cao hơn mà không cần thêm bit stop

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.