Введение
Схема в компьютере, поддерживающая точное время.
Часы реального времени (англ. real time clock, RTC) — это электронное устройство (чаще всего в виде интегральной схемы), которое измеряет течение времени. Хотя этот термин часто относится к устройствам в персональных компьютерах, серверах и встраиваемых системах, RTC присутствуют практически в любом электронном устройстве, которому необходимо точно отслеживать текущее время.
Терминология
Термин "часы реального времени" используется, чтобы избежать путаницы с обычными аппаратными тактовыми генераторами, которые представляют собой лишь сигналы, управляющие цифровой электроникой, и не отсчитывают время в единицах, привычных человеку. RTC не следует путать с вычислениями в реальном времени, которые, несмотря на одинаковую аббревиатуру, не связаны напрямую с текущим временем суток.
Источник питания
RTC часто имеют резервный источник питания, позволяющий им продолжать отсчитывать время, когда основной источник питания выключен или недоступен. Обычно этот резервный источник питания – литиевая батарея в более старых системах, но в некоторых новых системах используется суперконденсатор, поскольку он перезаряжаемый и может быть припаян. Резервный источник питания также может обеспечивать питание оперативной памяти с резервным питанием.
Время
Большинство RTC используют кварцевый генератор, но некоторые имеют возможность использовать частоту сетевого напряжения. Частота кварца обычно составляет 32,768 кГц. Типичные характеристики точности RTC на основе кварца составляют от ±100 до ±20 частей на миллион (8,6–1,7 секунды в день), но доступны термокомпенсированные интегральные схемы RTC с точностью менее 5 частей на миллион. На практике этого достаточно для выполнения небесной навигации – классической задачи хронометра. В 2011 году стали доступны атомные часы в чипе. Хотя они значительно дороже и потребляют больше энергии (120 мВт против <1 мкВт), они обеспечивают точность хода до 50 частей на триллион (5).
Typical crystal RTC accuracy specifications are from ±100 to ±20 parts per million (8.6 to 1.7 seconds per day), but temperature compensated RTC ICs are available accurate to less than 5 parts per million. In practical terms, this is good enough to perform celestial navigation, the classic task of a chronometer. In 2011, chip scale atomic clocks became available. Although vastly more expensive and power hungry (120 mW vs. <1 μW), they keep time within 50 parts per trillion (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, но фактические методы эффективного высокоскоростного производства являются коммерческой тайной.
time = time + rate. When the "time" variable exceeds a constant, usually a power of two, the nominal, calculated clock time (say, for 1/50 of a second) is subtracted from "time", and the clock's timing chain software is invoked to count fractions of seconds, seconds, etc. With 32 bit variables for time and rate, the mathematical resolution of "rate" can exceed one part per billion. The clock remains accurate because it will occasionally skip a fraction of a second, or increment by two fractions. The tiny skip ("jitter") is imperceptible for almost all real uses of an RTC. The complexity with this system is determining the instantaneous corrected value for the variable "rate". The simplest system tracks RTC time and reference time between two settings of the clock, and divides reference time by RTC time to find "rate". Internet time is often accurate to less than 20 milliseconds, so 8000 or more seconds (2.2 or more hours) of separation between settings can usually divide the forty milliseconds (or less) of error to less than 5 parts per million to get chronometer like accuracy. The main complexity with this system is converting dates and times to counts of seconds, but methods are well known. If the RTC runs when a unit is off, usually the RTC will run at two rates, one when the unit is on and another when off. This is because the temperature and power supply voltage in each state is consistent. To adjust for these states, the software calculates two rates. First, software records the RTC time, reference time, on seconds and off seconds for the two intervals between the last three times that the clock is set. Using this, it can measure the accuracy of the two intervals, with each interval having a different distribution of on and off seconds. The rate math solves two linear equations to calculate two rates, one for on and the other for off. Another approach measures the temperature of the oscillator with an electronic thermometer, (e. g. a thermistor and analog to digital converter) and uses a polynomial to calculate "rate" about once per minute. These require a calibration that measures the frequency at several temperatures, and then a linear regression to find the equation of temperature. The most common quartz crystals in a system are SC cut crystals, and their rates over temperature can be characterized with a 3rd degree polynomial. So, to calibrate these, the frequency is measured at four temperatures. The common tuning fork style crystals used in watches and many RTC components have parabolic (2nd degree) equations of temperature, and can be calibrated with only 3 measurements. MEMS oscillators vary, from 3rd degree to fifth degree polynomials, depending on their mechanical design, and so need from four to six calibration measurements. Something like this approach might be used in commercial RTC ICs, but the actual methods of efficient high speed manufacturing are proprietary.