조금 뒤로 물러서서 UART가 사용하는 저수준 신호 프로토콜에 대해 이야기합시다. TX와 RX는 클럭이 아닌 데이터 라인입니다. 클럭은 각 UART 내부에만 있기 때문에 전송 속도에 대한 사전 동의가 필요합니다.
전송하지 않으면 회선이 유휴 상태로 유지됩니다. 바이트를 전송하기 위해 (예를 들어, 다른 데이터 폭이 가능), 송신기는 먼저 시작 비트를 전송합니다 . 수신기는 시작 비트의 선행 에지 시간과 알려진 전송 속도를 사용하여 나머지 문자를 디코딩합니다. 100kBaud를 사용하고 있다는 것을 간단히 말해 보겠습니다. 이는 각 비트 시간이 10 µs 길이임을 의미합니다. 여기에는 시작 비트, 데이터 비트 및 중지 비트가 포함됩니다. 따라서 첫 번째 데이터 비트의 중간은 시작 비트의 선행 에지 이후 15µs, 두 번째 데이터 비트는 25µs 등입니다.
수신기와 송신기 클럭이 동일한 한, 이것은 영원히 지속될 수 있습니다. 그러나 그것들은 정확히 동일하지 않으므로 영원히 지속될 수 없습니다. 수신기의 클록을 송신기의 클록으로 재 동기화하기 위해, 데이터 문자는 종료되고, 라인은 비트 동안 유휴 상태로 남은 다음, 프로세스가 반복된다. 타이밍 오류는 시작 비트의 선행 에지에서 시작하여 누적되므로 최대 드리프트는 마지막 비트입니다. 해당 문자가 끝나면 수신기는 다음 시작 비트를 기다리는 동안 재설정하고 프로세스가 반복됩니다.
8 데이터 비트의 경우 타이밍에 대한 최악의 경우는 마지막 비트를 샘플링하는 것입니다. 시작 타이밍의 리딩 엣지 인 타이밍 레퍼런스에서 8.5 비트 시간입니다. 수신기가 1/2 비트 이상 꺼져 있으면 다른 비트 동안 마지막 비트를 샘플링합니다. 분명히 그것은 나쁘다. 이는 8 1/2 비트 또는 5.9 %에서 1/2 비트의 클록 주파수 불일치에서 발생합니다. 그것은 불일치가 보장됩니다. 안정성을 위해 일반적으로 수신기가 송신기를 절반 또는 2.9 % 이내로 일치 시키십시오. 이는 마지막 비트에서 1/4 비트 시간 오류를 나타냅니다.
그러나 그렇게 간단하지 않습니다. 전술 한 시나리오에서, 수신기는 본질적으로 시작 비트의 전연에서 스톱워치를 시작한다. 이론적으로는 아날로그 전자 장치에서 수행 될 수 있지만 복잡하고 비싸며 디지털 칩에 쉽게 통합 할 수 없습니다. 대신 대부분의 디지털 UART 구현에는 예상 비트 전송률의 16 배로 실행되는 내부 클럭이 있습니다. 그런 다음 "스톱워치"는이 16 배주기를 계산합니다. 이는 모든 비트 샘플링 시간에 1/16 비트의 추가 가능한 오류가 있음을 의미하며, 이는 마지막 비트의 다른 .7 % 클록 불일치와 같습니다.
잘만되면 이것은 정지 비트가 무엇인지, 비트 타이밍이 어떻게 작동하는지, 그리고 16x 클록이 무엇인지 명확하게합니다. 나는 대부분 정지 비트를 건너 뛰었지만 적어도 하나 이상의 정지 비트가 필요한 이유를 지금 알 수 있습니다. 기본적으로 정지 비트는 문자 사이의 최소 강제 행 유휴 시간입니다. 이것은 수신기가 문자 수신을 마치고 시작 비트의 다음 리딩 엣지를 준비하는 시간입니다. 정지 비트가 없다면, 마지막 데이터 비트는 시작 비트와 동일한 극성 일 수 있으며 수신기는 스톱워치를 시작할 에지가 없습니다.
오래 전에이 프로토콜은 캠, 레버 및 물레로 해독되었습니다. 메커니즘을 재설정하기 위해 두 개의 정지 비트가 종종 사용되었습니다. 요즘에는 모든 것이 디지털 논리로 이루어지며 1 스탑 비트는 거의 보편적으로 사용됩니다. 로우 레벨 프로토콜은 8-N-1로 약칭되어 있으며, 이는 8 데이터 비트, 패리티 비트 없음 (이것은 잊어 버리고 오늘날 거의 사용되지 않음) 및 1 정지 비트를 의미합니다. 옵션이 없으므로 시작 비트가 암시됩니다.
8-N-1을 사용하면 8 비트 바이트 데이터는 실제로 10 비트 시간이 걸립니다. 이것이 "비트 레이트"와 "보드 레이트"가 구별되는 이유 중 하나입니다. 전송 속도는 시작 및 중지 비트를 포함한 개별 비트 신호 시간을 나타냅니다. 100kBaud에서 전송되는 각 비트는 시작 및 중지 비트를 포함하여 10µs가 걸립니다. 따라서 전체 문자는 100 µs가 걸리지 만 8 비트의 실제 데이터 만 전송됩니다. 전송 속도는 100k이지만 더 높은 수준의 관점에서 데이터 전송 비트 전송률은 80kBits / s에 불과합니다.