Введение

Схема в компьютере, поддерживающая точное время.

Часы реального времени (англ. real time clock, RTC) — это электронное устройство (чаще всего в виде интегральной схемы), которое измеряет течение времени. Хотя этот термин часто относится к устройствам в персональных компьютерах, серверах и встраиваемых системах, RTC присутствуют практически в любом электронном устройстве, которому необходимо точно отслеживать текущее время.

Терминология

Термин "часы реального времени" используется, чтобы избежать путаницы с обычными аппаратными тактовыми генераторами, которые представляют собой лишь сигналы, управляющие цифровой электроникой, и не отсчитывают время в единицах, привычных человеку. RTC не следует путать с вычислениями в реальном времени, которые, несмотря на одинаковую аббревиатуру, не связаны напрямую с текущим временем суток.

Источник питания

RTC часто имеют резервный источник питания, позволяющий им продолжать отсчитывать время, когда основной источник питания выключен или недоступен. Обычно этот резервный источник питания – литиевая батарея в более старых системах, но в некоторых новых системах используется суперконденсатор, поскольку он перезаряжаемый и может быть припаян. Резервный источник питания также может обеспечивать питание оперативной памяти с резервным питанием.

Время

Большинство RTC используют кварцевый генератор, но некоторые имеют возможность использовать частоту сетевого напряжения. Частота кварца обычно составляет 32,768 кГц. Типичные характеристики точности RTC на основе кварца составляют от ±100 до ±20 частей на миллион (8,6–1,7 секунды в день), но доступны термокомпенсированные интегральные схемы RTC с точностью менее 5 частей на миллион. На практике этого достаточно для выполнения небесной навигации – классической задачи хронометра. В 2011 году стали доступны атомные часы в чипе. Хотя они значительно дороже и потребляют больше энергии (120 мВт против <1 мкВт), они обеспечивают точность хода до 50 частей на триллион (5).

Примеры

Многие производители интегральных схем выпускают RTC, включая Epson, Intersil, IDT, Maxim, NXP Semiconductors, Texas Instruments, STMicroelectronics и Ricoh. Распространенным RTC, используемым в одноплатных компьютерах, является Maxim Integrated DS1307. RTC впервые появился в PC-совместимых компьютерах с IBM PC/AT в 1984 году, где использовалась микросхема Motorola MC146818 RTC. Впоследствии Dallas Semiconductor начала производить совместимые RTC, которые часто применялись в старых персональных компьютерах и легко узнаваемы на материнских платах по характерному черному колпачку батарейки и логотипу, нанесенному шелкографией. Для RTC PC доступен стандартный CMOS-интерфейс. В современных компьютерных системах RTC интегрирован в чип южного моста. Некоторые микроконтроллеры имеют встроенные часы реального времени, как правило, это модели с большим количеством дополнительных функций и периферийных устройств.

Радио-приемные телекоммуникационные станции

Некоторые современные компьютеры получают информацию о времени по цифровому радио и используют её для поддержания точности времени. Существует два основных способа: большинство протоколов сотовой связи (например, LTE) напрямую предоставляют текущее местное время. Если доступно интернет-соединение, компьютер может использовать сетевой протокол времени (NTP). Компьютеры, используемые в качестве локальных серверов времени, иногда применяют GPS или сверхнизкочастотные радиосигналы, передаваемые национальной службой точного времени (например, радиочасы).

Программные RTC

Следующая система хорошо известна программистам встраиваемых систем, которым иногда приходится создавать RTC в системах, не имеющих их. Большинство компьютеров имеют один или несколько аппаратных таймеров, использующих сигналы синхронизации от кварцевых кристаллов или керамических резонаторов. Они обладают невысокой абсолютной точностью (более 100 частей на миллион), но при этом отличаются высокой стабильностью (часто менее 1 ppm). Программное обеспечение может выполнять необходимые вычисления для преобразования их в точные RTC. Аппаратный таймер может генерировать периодические прерывания, например, 50 Гц, имитируя работу традиционного RTC (см. ниже). Однако для повышения точности используется математическая коррекция цепочки синхронизации: time = time + rate. Когда значение переменной "time" превышает константу, обычно степень двойки, от "time" вычитается номинальное, вычисленное время такта (например, для 1/50 секунды), и вызывается программное обеспечение цепочки синхронизации для подсчета долей секунд, секунд и т. д. При использовании 32-битных переменных для времени и скорости математическое разрешение "rate" может превышать одну часть на миллиард. Такты остаются точными, поскольку время от времени пропускают долю секунды или увеличивают её на две доли. Этот незначительный сдвиг ("jitter") незаметен в большинстве практических применений RTC. Сложность этой системы заключается в определении мгновенного скорректированного значения переменной "rate". Самый простой способ – отслеживать время RTC и опорное время между двумя установками тактов, а затем разделить опорное время на время RTC для определения "rate". Сетевое время часто точно до 20 миллисекунд, поэтому разница между установками в 8000 секунд и более (2,2 часа и более) обычно позволяет разделить ошибку в 40 миллисекунд (или меньше) на менее чем 5 частей на миллион, достигая точности, сравнимой с хронометром. Основная сложность этой системы – преобразование дат и времени в количество секунд, но методы решения этой задачи хорошо известны. Если RTC работает при выключенном устройстве, обычно он работает с двумя разными частотами: одной при включенном устройстве и другой при выключенном. Это связано с тем, что температура и напряжение питания в каждом состоянии остаются стабильными. Для учета этих состояний программное обеспечение вычисляет две частоты. Сначала программное обеспечение записывает время RTC, опорное время, время работы в секундах и время простоя в секундах для двух интервалов между последними тремя установками тактов. На основе этих данных можно измерить точность каждого интервала, учитывая разное соотношение времени работы и простоя. Вычисление частоты сводится к решению двух линейных уравнений для определения двух частот: одной для работы и другой для простоя. Другой подход заключается в измерении температуры осциллятора с помощью электронного термометра (например, терморезистора и аналого-цифрового преобразователя) и использовании полинома для вычисления "rate" примерно раз в минуту. Для этого требуется калибровка, включающая измерение частоты при нескольких температурах и последующую линейную регрессию для определения уравнения температуры. Наиболее распространенные кварцевые кристаллы в системах – кристаллы SC-среза, характеристики их частоты в зависимости от температуры можно описать полиномом третьей степени. Для их калибровки необходимо измерить частоту при четырех температурах. Кристаллы, используемые в часах и многих компонентах RTC, имеют параболическую (второй степени) зависимость частоты от температуры и могут быть откалиброваны всего по трем точкам. Осцилляторы MEMS могут иметь полиномиальную зависимость от третьей до пятой степени в зависимости от их механической конструкции, что требует от четырех до шести калибровочных измерений. Подобный подход может использоваться в коммерческих интегральных схемах RTC, но фактические методы эффективного высокоскоростного производства являются коммерческой тайной.