하나 또는 두 개의 UART 정지 비트?


15

UART를 사용하면 1, 1.5 및 2 스톱 비트 중에서 선택할 수 있습니다. 1 정지 비트 페이로드 효율은 80 % (8/10)이고 2 정지 비트는 72.7 % (8/11)로 떨어집니다. 두 번째 정지 비트의 장점은 무엇입니까?

답변:


19

여분의 정지 비트는 특히 높은 전송 속도 및 / 또는 수신 된 바이트를 처리하는 데 시간이 필요한 소프트 UART를 사용하여 약간의 추가 수신 처리 시간을 추가하는 유용한 방법이 될 수 있습니다.

속도가 빡빡하고 UART가 2의 거듭 제곱 비율 만 제공하는 경우 추가 정지 비트를 추가하면 다음 최저 전송 속도보다 속도가 크게 감소하지 않을 수 있습니다.

이것이 DMX512 표준이 2 정지 비트를 지정하는 이유 중 하나라고 생각합니다.

유용 할 수있는 또 다른 상황은 버퍼링이나 패킷 화없이 데이터 스트림을 전달하는 장치가있는 경우입니다. 노드 간의 클록 속도와 유한 샘플링 입도의 작은 차이로 인해 데이터가 여러 노드에서 수신되고 재전송 될 때 오류가 발생할 수 있습니다. 체인이지만 데이터가 2 개의 정지 비트와 함께 전송되고 수신자가 하나의 정지 비트로 설정된 경우, 이러한 오류를 수용하고 체인의 가장 아래쪽에있는 노드가 안정적으로 수신 할 수 있도록 하나 이상의 유효한 정지 비트 기간을 남겨두기 위해 충분한 여유를 추가합니다.

또한 케이블 길이가 매우 길어 상승 및 하강 시간에 비대칭 성이 발생하여 스톱 비트 길이가 부적절하게 발생하는 상황을 언급했습니다.


6

오래 전부터 프린터는 (거의) 모든 기계적인 구조였습니다. Baudrates는 그때도 다소 표준화되었으므로 정지 비트를 추가하면 프린터가 문자를 인쇄하는 데 약간의 시간이 더 걸립니다. 타이밍 측면은 그때보다 더 눈에 띄게 나타났습니다. 첫 번째 프린터 인 시끄러운 http://en.wikipedia.org/wiki/Teletype_Model_33의 경우 캐리지 리턴을 보낸 후 두 문자의 일시 중지를 삽입해야했습니다.


올바르게 조정 된 모델 33은 캐리지 리턴 후 한 문자 만 필요했습니다. 그때 당신은 Linefeed를 보내야합니다! 나는 그들이 2 스톱 비트가 필요하다는 것을 잊었지만 러셀의 대답 아래에 말한 것이 적용됩니다 (그러나 1.5 스톱 비트는 Baudot 하드웨어 용이었습니다). 그래도 여분의 정지 비트 (10ms)는 캐리지 리턴 지연에 도움이되지 않았습니다.
gbarry

4

두 개의 정지 비트는 정지 시간의 비율이 상당하고 장비 내부 또는 몇 미터의 주변 장치 인터페이스와 같은 저잡음 (낮은 BER) 환경에서 작동하는 시스템에서 하나보다 훨씬 유용하지는 않습니다. 케이블 모뎀 및 / 또는 모뎀 모뎀 단이 없습니다.

2 개의 정지 비트는 동기화 시간을 늘리고 문자 간 처리에 더 많은 시간을 제공하며 하드웨어와 알고리즘에 따라 연속적인 데이터 스트림 동안 동기화를 얻거나 다시 얻을 가능성이 높아집니다. 최신 시스템에서는 클럭 속도가 느리고 프로세서 처리량이 낮을 때보 다 문자 시간이 훨씬 저렴합니다.

본질적으로 연속적인 데이터 스트림이있는 경우 동기화되지 않으면 높은 비트는 정지 비트처럼 보입니다. 높은 낮은 전이는 바이트 경계처럼 보입니다. 수신기가 10 경계에서 시작하고 실제 시작 경계가 아닌 경우 이는 시간의 50 % 만 발견됩니다) (예 : 최종 "정지 비트"가 실제로 낮은 데이터 비트 인 경우 평균적으로 바이트 경계의 1/4이 1/0이고 스톱 / 스타트 쌍처럼 잘못 보이는 경우가 있습니다. 위의 경우 잘못된 스톱을 선택하면 쌍을 시작하면 다음 시도에서 다른 것을 선택할 확률이 약 50 % 일 것입니다.

2 개의 정지 비트 (11)를 사용하는 경우 유효한 정지 시작 시퀀스는 110이며 임의의 데이터 트래픽에서 1/8 번째 확률이 발생합니다. 동기화되지 않은 흐름에서 순 정지 및 시작 비트의 혼합은 sats를 약간 변경하지만 한 사이클에서 잘못된 110 정지 / 시작 시퀀스를 얻는 경우 순정 110을 넘어 뜨리기 전에 다음 시도를 다시 시도 할 가능성이 비교적 낮습니다. 다음에 일어나는 순서.

참고로 1 정지 비트는 8/10 = 80 % 최대 처리량을, 2 정지 비트는 8/11 = 72 % 효율을 생성합니다. 완전 한계에서의 처리량의 차이는 80 % / 72 % = ~ 11 % 더 큽니다. 이것은 극한 상황에서 유용한 이득이지만 방대하지는 않으며 회로가 시간의 약 10 % 이상 유휴 상태이면 최소값입니다. 회로에 노이즈가 있고 가끔 동기화 손실이 발생하는 경우 추가 정지 비트가 많은 도움이 될 수 있습니다. 그러나 처리량에 관심이 많은 경우 전송 속도를 높이거나 (항상 그런 것은 아님) 완전히 동기화 된 작업으로 변경할 수 있습니다.


나는 전체 비트 시간 표시 이상의 시간이 선행되지 않는 명백한 시작 비트를 무시하도록 구성 할 수있는 UART를 모른다. (실제로 대부분은 비트 시간의 절반이 시작되는 시작 비트를 수락합니다. 마킹, 달리 구성 할 수 없음). 그러나 이러한 기능은 유용 할 수 있습니다.
supercat

이 관행이 기계적인 시대로 거슬러 올라간다는 사실을 받아 들일 수 있다면 정답에 넘어졌습니다. 그때, 수신기 메커니즘은 다음 시작 비트를 준비하기 위해 정지하기 위해 약 1 비트 시간이 필요했다. 따라서 송신기는 1.5 비트 시간 정지 비트를 갖도록 구성되었습니다. 당신이 묘사 한 효과가있었습니다. 동기화가 손실 된 경우 동기화를 다시 얻을 때까지 여러 가비지 문자가있을 수 있습니다. 우리가 전자 구현에 도달했을 때, 수신기는 정지 레벨로의 전환을보고 즉시 다음 시작 비트를 기다릴 수있었습니다. 패딩이 필요하지 않았습니다
gbarry

@gbarry-methinks는 귀하의 의견에서 우연히 발견되지 않았습니다.
Russell McMahon

실제로, 나는 문자가 부족 :) 뭔가 잘못?
gbarry

3

"soft UART"를 사용하여 수신 시간에 대한 mikeselectricstuff의 요점을 증폭시키기 위해 데이터 수신 시점을 항상 알고 폴링 기반으로 수신하는 수신 애플리케이션은 종종 인터럽트 구동 소프트 UART보다 실용적인 것보다 빠른 전송 속도를 처리 할 수 ​​있습니다. 그러나 이러한 응용 프로그램은 한 바이트의 정지 비트 시작과 다음 바이트의 시작 비트 사이의 시간 동안 들어오는 데이터 만 처리 할 수 ​​있습니다. 각 바이트를 처리하는 데 필요한 시간은 결국 통신 속도의 제한 요소가됩니다. 115,200-N-8-2에서 데이터를 처리하는 것은 57,600-N-8-1에서 데이터를 처리하는 것보다 훨씬 까다 롭지 않지만 80 % 이상 빠릅니다.

때로는 효율적이지 않은 것처럼 보이는 데이터 형식을 사용하여 더 많은 것을 추진할 수 있습니다. 예를 들어, 각각의 바이트를 2 개의 조각으로 보낼 수 있습니다. 하나는 7 비트이고 다른 하나는 1입니다 (1 비트 부분의 MSB는 모두 설정 됨). 하나의 스톱 비트만으로도 그렇게하면 하나의 바이트 쌍의 끝과 다음 바이트의 시작 사이에 8 비트 시간의 마킹이 발생하여 비트 레이트를 어느 것보다 4 배 높게 밀어 넣을 수 있습니다 두 개의 정지 비트만으로도 가능합니다 (하나로 할 수있는 것의 8 배). 2 배 많은 바이트를 보내야하더라도 데이터 속도가 4 배 증가하면 큰 승리를 거둘 수 있습니다. 또한, 각각의 전송 된 바이트 쌍이 8 비트의 데이터를 전송하는 데 사용될 수 있지만, 256 개의 가능한 바이트 값 중 130 개만이 인코딩에 의해 사용됩니다.


시작 비트 에지에서 인터럽트를 생성하고 전체 바이트에 대한 인터럽트 코드 내부에 머무름으로써 UART 고속 전송 속도 (250K 이상)를 추가 할 수 있습니다. 여기에서 추가 정지 비트가 매우 유용 할 수 있습니다.
mikeselectricstuff

@ mikeselectricstuff : 각 바이트의 일부 비트 만 사용할 수 있으므로 여분의 정지 비트가 매우 유용 할 수 있습니다 (각 바이트의 LSB를 설정해야 함은 비트의 상승 에지에서 타이밍을 도출 할 수 있기 때문에 유용 할 수 있음) 인터럽트가 발생할 때 약간 기울어 질 수 있습니다). 그러나 비트 인터럽트 트리거 온 스타트 비트 방식의 주요 제한 사항은 들어오는 데이터가 도착하는 동안 데이터를 보내는 좋은 방법이 없다는 것입니다. 전송 된 데이터 또는 수신 된 데이터 (또는 둘 다)가 손실됩니다.
supercat

2

옛날 옛적에 텔레타이프 (teletype)라고 불리는 전기 기계 괴물이있었습니다. 대부분은 전력선 주파수와 동기화 된 AC 모터에서 작동했습니다. 따라서 두 대의 통신 시스템이 동일한 전력망에 동기화되지 않았거나 해당 문제에 대해 서로 다른 주파수를 사용하여 교류로 실행되지 않았을 가능성이 항상있었습니다.

따라서, 더 느린 기계가 캐치 업 (catch-up)되고 동기에서 벗어나지 않도록하기 위해, 2 개의 정지 비트가 전송되었다.

인쇄 캐리지가 새로운 줄의 시작 부분으로 돌아갈 수 있도록하는 것과 같은 다른 목적으로, CR, LF 및 두 개의 루브 (8 개 레벨 테이프의 모든 구멍)가 전송되었습니다.

110 Baud의 속도로 작동하는 회로에 대해서만 관례였습니다.


1

수신 기계 장치의 속도 저하가 여분의 정지 비트를 추가 한 이유 였지만 오늘날의 장치는 충분히 빠르며 추가 정지 비트가 없어도 훨씬 높은 전송 속도로 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.