Перейти к содержанию

Мажоритарная выборка в UART

Приёмник UART не доверяет одному отсчёту на бит: короткая помеха в неудачный момент исказила бы данные. Вместо этого он берёт три отсчёта около середины бита и решает по большинству. Так устроены USART в AVR и eUSCI в MSP430.

Обновлено Редакция GAW

Мажоритарная выборка (majority vote) — способ, которым приёмник UART определяет значение бита: он берёт три отсчёта около середины бита и выбирает значение, которое встречается в большинстве. Приёмник тактируется в несколько раз быстрее скорости передачи — это передискретизация, — поэтому внутри каждого бита у него есть несколько отсчётов.

ПриёмникОтсчётов на битКакие идут в решение
AVR USART, обычный режим (Microchip DS40002061B)168, 9 и 10
AVR USART, удвоенная скорость84, 5 и 6
MSP430 eUSCI_A, UCOS16 = 0 (TI SLAU445)N тактов BRCLKN/2 − 1/2, N/2 и N/2 + 1/2
MSP430 eUSCI_A, UCOS16 = 116три соседних, через 1/16 бита

Этот же механизм проверяет старт-бит. Приёмник AVR после спада на линии считает отсчёты, и если на отсчётах 8, 9 и 10 большинство единиц, спад объявляется помехой и приёмник ждёт следующего. По Microchip мажоритарная выборка работает как фильтр нижних частот для сигнала на входе RxD.

Положение отсчётов определяет и допуск по скорости: синхронизация происходит по фронту старт-бита, а дальше ошибка частоты сдвигает отсчёты к краю бита с каждым следующим битом. Пока отсчёты стоп-бита попадают внутрь него, кадр принимается. Как это считается для AVR и MSP430 — в калькуляторе скорости UART, устройство кадра — в статье UART.

Частые вопросы

Как приёмник UART решает, 0 или 1?

По большинству из трёх отсчётов в середине бита. У AVR в обычном режиме приёмник делит бит на 16 состояний и смотрит отсчёты 8, 9 и 10: если два или три из них в единице, бит — единица. В режиме удвоенной скорости — отсчёты 4, 5 и 6 из 8.

Зачем три отсчёта, а не один?

Чтобы короткая помеха на линии не испортила бит. По Microchip мажоритарная выборка работает как фильтр нижних частот для сигнала на входе RxD. Тот же механизм отсекает ложные старт-биты: если из отсчётов 8, 9 и 10 после спада большинство в единице, приёмник считает спад помехой.

Как выборка связана с допустимой ошибкой скорости?

Отсчёты берутся в середине бита, а ошибка скорости смещает их к краю с каждым следующим битом кадра. Пока последние отсчёты стоп-бита ещё попадают в него, кадр принимается. Поэтому допуск зависит от длины кадра и от того, насколько отсчёты удалены от краёв, — это и считают в таблицах допустимой ошибки приёмника.

Источники

  1. Microchip. ATmega48A/PA/88A/PA/168A/PA/328/P Data Sheet (DS40002061B, 2020) — разд. 20.8.1 — проверка старт-бита по отсчётам 8, 9 и 10 в обычном режиме и 4, 5 и 6 в режиме удвоенной скорости, большинство единиц — помеха; разд. 20.8.2 — 16 или 8 состояний на бит, решение по трём центральным отсчётам, процесс работает как фильтр нижних частот; приёмник использует только первый стоп-бит
  2. Texas Instruments. MSP430FR4xx and MSP430FR2xx Family User's Guide (SLAU445I, revised March 2019) — разд. 22.3.9 — в режиме UCOS16 = 0 три отсчёта в моменты N/2 − 1/2, N/2 и N/2 + 1/2 периода BRCLK; в режиме UCOS16 = 1 отсчёты отстоят на 1/16 периода бита; рис. 22-11 — выборка и ошибка синхронизации ±0,5 такта BRCLK

Нашли ошибку?