Как некоторые микроконтроллеры реализуют скорости передачи, даже если он использует частоту кристалла, не масштабируемую до стандартных скоростей передачи?

16

Я только что понял, что семейство 8051 использует частоту 11.0592 МГц и ее кратные значения для генерации стандартных скоростей передачи. Но есть SoC, которые используют 15 МГц. Как они это делают тогда?

Фебин Санни
источник
5
В основном они используют делители не-степени-2 для генерации скоростей, приемлемо близких к стандартным скоростям в бодах.
Брайан Драммонд
4
более того, UART могут пересдвигать сигнал (например, 16 выборок на бит UART), что решает проблемы синхронизации (и шума): electronicdesign.com/embedded/…
Флориан Кастеллан
1
Для всех, кто интересуется, таблицы ошибок синхронизации AVR USART доступны для типичных часов в таблице данных (далее на стр. 168) .
Себи

Ответы:

22

UART не волнует, пока он достаточно точен.

1500000023040065

65230400=14976000

Таким образом, ваш UART будет слишком быстрым в . Это становится проблемой при1+115000149761.002204, когда сдвиг времени по 11 битам больше половины.1+12111,045

Саймон Рихтер
источник
9
Стоит отметить, что у передатчика и приемника есть часы, поэтому, если они оба ошибаются в неправильном направлении ..
Спехро Пефхани,
7
Что еще более важно, соответствующие последовательные протоколы (RS-232 и т. Д.) Используют стартовые и стоповые биты для дальнейшей синхронизации часов. Даже если бы у обеих сторон были идеальные часы с частотой 230400 Гц, эти две частоты, вероятно, были бы не в фазе. Стартовый бит позволяет принимающей стороне синхронизировать свои часы с отправителем. Поскольку это может происходить с первым битом каждого байта, несовершенные тактовые импульсы просто означают более частые регулировки фазы.
MSalters
1
На практике это может быть больше, чем указано в этом посте, потому что система делителей вряд ли будет на 100% гибкой.
Питер Грин
2
15MЧАСZ/64230400бaUdзнак равно1,01725
2
@DaveTweed: Но чипы, серьезно относящиеся к асинхронным последовательным каналам, имеют тенденцию допускать коэффициент суперсэмплинга 13 в своих последовательных периферийных устройствах, что дает симпатичную низкую ошибку, рассчитанную Саймоном, начиная с любых тактовых импульсов, кратных 3 МГц. В качестве альтернативы, некоторые используют дробный делитель, где битовое время усредняется до правильного значения, даже если отдельные биты могут иметь ошибку синхронизации> 2%.
Бен Фойгт
12

Вот описание возможностей «крупного шрифта» относительно высокопроизводительного микроконтроллера ARM.

введите описание изображения здесь

Существует несколько ФАПЧ и делителей с прескалерами и постскалерами, которые способны создавать практически любую частоту, которая может вам понадобиться в виде целочисленного соотношения. ФАПЧ умножает его частота входного сигнала с помощью некоторого целого, и делитель можно разделить на некоторое число ( не обязательно полномочия 2 в каждом случае).

Внутренние относительно высокие частоты (в данном случае около половины ГГц) не являются проблемой (как это было бы, если бы не было чипа) - потребляется относительно мало энергии.

Дни деления только на степени 2 закончились довольно давно, и теперь, когда ФАПЧ обычно применяются, нам не нужно беспокоиться о точной частоте кристалла почти столько же. С другой стороны, нам может понадобиться много разных тактовых частот для нескольких внутренних шинных шин, периферийных устройств USB, Ethernet, UART и т. Д.

Если вы хотите узнать больше о том, как они работают, вы можете изучить некоторые из специализированных чипов синтеза тактовых импульсов, которые относительно просты (хотя все еще достаточно сложны, чтобы некоторые производители поставляли программное обеспечение для вычисления констант настройки).

Спехро Пефхани
источник
2
(его = притяжательное, это = «оно есть» или «оно имеет». См., например, как использовать его и оно есть .)
Питер Мортенсен
4
@PeterMortensen Спасибо, исправлено. По некоторым причинам подобные опечатки (и размещение неправильных омонимов) легче сделать в режиме разговорного мышления, а не в режиме написания отчета.
Спехро Пефхани
10

Это может быть достигнуто с помощью модулятора .

См., Например, руководство пользователя MSP430x1xx. . На странице 260 написано:

Генератор скорости передачи данных USART способен генерировать стандартные скорости передачи данных из нестандартных исходных частот. Генератор скорости передачи использует один прескалер / делитель и модулятор, как показано на рисунке 13-7. Эта комбинация поддерживает дробные делители для генерации скорости передачи.

Скорость передачи в бодах

(обратите внимание на серую область)

Коэффициент деления N часто является нецелым значением, целая часть которого может быть реализована прескалером / делителем. Вторая ступень генератора скорости передачи, модулятор, используется для максимально возможного соответствия дробной части.

[...]

BITCLK может быть отрегулирован от бита к биту с помощью модулятора, чтобы соответствовать требованиям синхронизации, когда необходим нецелочисленный делитель. Время каждого бита увеличивается на один тактовый цикл BRCLK, если установлен бит модулятора mi. Каждый раз, когда бит принимается или передается, следующий бит в регистре управления модуляцией определяет синхронизацию для этого бита. Установленный бит модуляции увеличивает коэффициент деления на единицу, в то время как очищенный бит модуляции поддерживает коэффициент деления, заданный UxBR

[...]

AndreKR
источник
5

Многие люди предполагают, что UART на самом деле работает на фиксированных часах, т.е. Tсекунд. Это не обязательно правда. По крайней мере, не во всех модулях UART, которые я разработал.

Как это работает, у вас есть внутренние образцы часов. Скажем, вы можете попробовать каждые 100 нс. Вы знаете, где находится середина каждого бита. Таким образом, вы выбираете точку выборки, которая ближе всего к середине. Это даст вам ошибку не более 50 нс.

Что происходит, вы получаете стартовый бит. Затем вы определяете, где находится середина бита, то есть ваша точка отсчета. Затем вы знаете, как долго вам нужно ждать, чтобы сэмплировать следующий бит. Итак, вы загружаете счетчик, и когда он сбрасывает ваш образец. Теперь вы будете отключены максимум на 1 такт ваших быстрых внутренних часов, но в большинстве случаев это наносекунды. Кроме того, вы знаете, сколько вы на. Для следующего бита вы загружаете свой счетчик с другим значением, чтобы вы были как можно ближе к середине, и так далее.

В реальных системах также происходит много других вещей. Например, вы не берете одну выборку, вы можете взять пару и выполнить некоторую обработку на них и т. Д. По сути, это 1-битный АЦП со всеми последствиями, такими как шум квантования. Но вы должны получить общее представление.

user110971
источник
3

Современные SoC используют так называемые PLL для генерации (почти) любых тактовых импульсов, которые могут потребоваться для интерфейсов. Проще говоря, схема ФАПЧ использует высокочастотный ГУН (генератор, управляемый напряжением), затем использует дифференциальные делители частоты как на ГУН, так и на входном тактовом сигнале, и генерирует обратную связь по напряжению на основе отношения частот. Эта обратная связь управляет ГУН, так что весь цикл фиксируется на желаемой частоте.

Ale..chenski
источник
2

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

Это означает, что максимально допустимая разность тактовых импульсов между передатчиком и приемником составляет около 5%. Однако могут быть ошибки на обоих концах линии, и синхронизация приемников может быть не идеальной. Поэтому на практике я бы рекомендовал, чтобы фактическая скорость передачи данных находилась в пределах 1% от номинальной скорости передачи данных.

Микроконтроллеры, с которыми я наиболее знаком, это устройства PIC18. Старые модели используют гибкий 8-битный счетчик для масштабирования скорости передачи, в то время как более новые модели имеют гибкий 16-битный счетчик. Есть также дополнительные режимы «высокой» и «низкой» скорости, которые изменяют скорость передачи данных в четыре раза.

При входном тактовом сигнале 20 МГц 8-битной версии этой схемы генерации достаточно, чтобы получить в пределах 0,25% от номинальной скорости передачи данных для всех скоростей от 1800 до 19200. 16-битная версия позволяет снизить скорость.

http://www.nicksoft.info/el/calc/?ac=spbrg&submitted=1&mcu=+Generic+16bit+BRG&Fosc=20&FoscMul=1000000&FoscAutoSelector=0&MaxBaudRateError=1 (игнорируя синхронизацию для США, они равны 1, синхронный режим)

ФАПЧ, дробные делители и т. Д. На самом деле не нужны для серийного UART.

Питер Грин
источник
0

Для обмена последовательными данными контроллер должен выводить или отбирать данные в пределах определенного окна «идеального» времени. Хотя проще всего иметь контроллер, который делит тактовую частоту на программируемый коэффициент, а затем на дополнительный жестко закодированный коэффициент, не требуется, чтобы биты читались или записывались с равными интервалами. Если дальний конец соединения выводит биты с точно одинаковыми интервалами, соответствующими скорости передачи, приемник может обойтись с любой частотой дискретизации, которая больше, чем удвоенная скорость передачи, при условии, что он производит выборку в нужное время. Например, предположим, что данные выводятся с частотой 19 200, а один - с частотой дискретизации 48 000 Гц (2,5x).

Когда вы видите падающий фронт, вы будете знать, что стоповый бит начался между 0 и 1 разом отсчетов назад. Если пометить первую выборку, где стартовый бит наблюдался как время 0, бит 0 начнется где-то между временем 1,5 и 2,5; бит 1 начнется где-то между временем 4.0 и 5.0, бит 2 начнется где-то между временем 6.5 и 7.5, а бит 3 начнется где-то между временем 9.0 и 10.0. Таким образом, гарантируется, что выборка, взятая в момент времени 3, захватит бит 0 [который начинается между временем 1,5 и 2,5 и заканчивается между временем 4,0 и 5,0]. Аналогично, выборка, взятая во время 6, будет захватывать бит 1, а выборка, взятая во время 8, 11, 13, 16, 18 и 20, будет захватывать биты 2-7.

Использование более высокой частоты дискретизации сделало бы приемник более терпимым к недостаткам в источнике, но даже при частоте дискретизации, равной всего лишь 2,5-кратной скорости передачи, поля не являются ужасными [около 1/5 части времени передачи].

Supercat
источник