Во многих задачах требуется синхронная работа двух и более независимых устройств. Если каждое устройство будет работать от собственного генератора, то различия в характеристиках и условиях работы отдельных генераторов ограничат возможности синхронизации. Решить проблему призван стандарт IEEE 1588, который позволяет синхронизировать устройства с точностью до наносекунд. Хотя стандарт допускает и программную реализацию, столь высокая точность достижима лишь аппаратными средствами. Поэтому в статье не только описаны ключевые положения стандарта, но и рассмотрен пример реализации устройства на базе процессоров Blackfin, оснащенных аппаратной поддержкой IEEE 1588.
Введение
Стандарт IEEE 1588, введенный в действие в 2002 г., определяет протокол синхронизации множественных тактовых сигналов в сетевом окружении. Этот стандарт постепенно становится предпочтительным методом синхронизации тактовых сигналов в самых разных системах, например, в тестовом и измерительном оборудовании, системах связи и потоковой передачи мультимедийных данных. Используемый в нем метод синхронизации тактовых сигналов эффективен с экономической точки зрения, поддерживает гетерогенные системы и обеспечивает точность синхронизации на уровне наносекунд.
Данная статья содержит вводную информацию об оригинальном стандарте IEEE 1588-2002, а также об усовершенствованиях, включенных в его обновленную версию IEEE 1588-2008. Ввиду возросшей важности IEEE 1588 для некоторых задач, на которые ориентировано семейство процессоров для встраиваемых систем Blackfin, в процессоре ADSP BF518 [1] была интегрирована аппаратная поддержка этого стандарта. В статье приводится обзор функциональных возможностей аппаратного модуля синхронизации ADSP BF518, а также рассматривается пример, иллюстрирующий показатели синхронизации тактовых сигналов в системе на базе процессоров ADSP BF518.
Который час?
Во многих системах требуется поддерживать отсчет времени при помощи локального генератора тактовых сигналов. На рисунке 1 показано, какие аппаратные и программные компоненты используются для формирования информации о времени в системе.

Эта информация может быть использована как программными, так и аппаратными ресурсами системы. На аппаратном уровне один или несколько физических тактовых сигналов, сформированных из сигнала генератора, могут быть использованы для управления другими частями системы. Время, которое поддерживается в программном обеспечении системы, обычно называется системным временем. Системное время может быть представлено в виде количества импульсов тактового сигнала или в виде реальных секунд/наносекунд. Информация о времени формируется программным обеспечением системы на основе подсчета числа импульсов и информации о частоте генератора и доступна другим программным компонентам через функции интерфейса API (application-programming interface). Если в системе необходимо поддерживать абсолютное время, то системное время может быть привязано к предварительно заданному значению точного времени, которое используется как точка отсчета.
Синхронизация часов
Во многих задачах требуется синхронная работа двух независимых устройств. Если каждое устройство будет формировать информацию о времени только от своего собственного генератора, то различия в характеристиках и условиях работы отдельных генераторов ограничат возможность синхронизации двух тактовых сигналов. Для преодоления этих ограничений можно предложить несколько простых решений:
- все устройства могли бы работать от одного физического генератора. Этот вариант подходит только для систем, которые разнесены друг от друга на небольшое расстояние. Передать высокочастотный тактовый сигнал на большие расстояния без потери качества невозможно;
- все устройства могли бы использовать генераторы с практически идентичными характеристиками. Этот подход не реализуем на практике из-за того, что найти подобные генераторы и предотвратить дрейф их характеристик во времени очень сложно. И, что особо важно, рабочие условия генераторов неизбежно будут различаться;
- если все устройства соединены сетью передачи данных (например, через Интернет), то они могут динамически подстраивать внутренние часы относительно единого «ведущего» тактового сигнала, обмениваясь сообщениями с информацией о времени. При работе с сетевым протоколом NTP (network time protocol) — традиционным протоколом синхронизации времени — каждое устройство в системе подстраивает свои внутренние часы в соответствии с информацией, получаемой от сервера времени NTP. Однако достижимая при помощи данного протокола точность синхронизации ограничена миллисекундами.
Стандарт IEEE 1588 определяет новый протокол, способный обеспечить точность синхронизации на уровне наносекунд. О том, каким образом достигается подобная точность, мы расскажем в следующих разделах.
Что делает IEEE 1588?
Стандарт IEEE 1588 определяет протокол синхронизации во времени устройств, которые разнесены географически, однако связаны между собой той или иной технологией передачи данных, например, по сети Интернет. Обмениваясь друг с другом информацией о времени, эти устройства могут поддерживать одинаковое абсолютное время, которое выражается в секундах и наносекундах.
Интуитивно понятный способ достижения этой цели заключается в широковещательной передаче одним из устройств, которое имеет «наилучший» (наиболее точный) тактовый сигнал и называется ведущим синхронизацию (master clock), информации о своем времени остальным устройствам. Остальные устройства при таком подходе корректируют свои часы соответствии с информацией, полученной от задающего синхронизацию устройства. Такое решение имеет ряд ограничений:
- Период, через который ведущее устройство производит широковещательные посылки информации о времени, не может быть бесконечно мал, поэтому для интерполяции временных точек между двумя посылками «ведомые» устройства должны использовать собственные независимые генераторы, характеристики которых заведомо хуже. В результате качество синхронизации в интервалах между обновлениями информации от ведущего устройства ухудшается.
- В процессе прохождения широковещательных посылок неизбежно возникают задержки, величина которых зависит от используемой технологии передачи данных. Даже минимальная задержка равна времени, необходимому для прохождения физического сигнала по проводу от одного устройства к другому. Эта задержка приводит к появлению дополнительного сдвига между временем ведущего и временем каждого из ведомых устройств.
- Различия в путях прохождения широковещательных сообщений от ведущего устройства до каждого из ведомых устройств приведут к дальнейшему ухудшению синхронизации между отдельными ведомыми устройствами.
Протокол, описанный в стандарте IEEE1588, решает вторую и третью проблемы путем измерения задержки в пути прохождения сообщения. Он также позволяет корректировать тактовый сигнал ведомого устройства для согласования с параметрами тактового сигнала ведущего устройства, чтобы уменьшить влияние первой проблемы. В ряде случаев эффект от первой проблемы можно дополнительно уменьшить, сократив интервалы между широковещательными посылками и используя более качественные генераторы.
Как в IEEE 1588 измеряется задержка в линии связи?
В стандарте IEEE 1588-2002 [2] введены четыре формата сообщений, предназначенных для измерения задержки в прямом (от ведущего к ведомому) и обратном (от ведомого к ведущему) каналах: Sync, Followup, DelayReq и DelayResp. В более новой версии, IEEE 1588-2008 [3], добавлены новые механизмы для измерения задержки от узла к узлу (peer to peer) при помощи трех дополнительных сообщений: PdelayReq, PdelayResp и PdelayRespFollowup.
Четыре из этих сообщений (Sync, DelayReq, PdelayReq и PdelayResp) — это так называемые событийные сообщения (event message), которые должны сопровождаться временной меткой (записью локального времени) при получении или отправлении устройством. Существует два метода для добавления временных меток к пакетам:
- Программные временные метки добавляются, когда сообщения обрабатываются программным обеспечением. Обычно это происходит в процедуре обслуживания прерывания приема/передачи сообщения, и такая временная метка содержит текущее значение системного времени.
- Аппаратные временные метки добавляются в момент времени, соответствующий физическому приему/передаче сообщения. Операция добавления временной метки выполняется аппаратными средствами, которые ведут собственный непрерывный отсчет времени.
Стандарт IEEE 1588 допускает любой из двух методов добавления временных меток, однако аппаратный метод, как будет показано в дальнейшем, способен обеспечить гораздо большую точность.
Задержка в пути от ведущего устройства к ведомому
Сообщения Sync и Followup посылаются ведущим устройством, а ответственность за их прием и вычисление задержки в прямом канале лежит на ведомом устройстве.
На рисунке 2 в момент времени Tm1 программное обеспечение ведущего устройства считывает значение текущего локального системного времени (Tm1, программная временная метка), вставляет его в сообщение Sync и посылает это сообщение. Реально оно поступает на выход ведущего устройства с некоторой задержкой в момент времени Tm1′ (аппаратная временная метка). В момент времени Ts1′ (локальное время ведомого устройства) сообщение прибывает в аппаратный модуль ведомого устройства, и программное обеспечение ведомого устройства получает его также с некоторой задержкой в момент времени Ts1. Программное обеспечение ведомого устройства считывает аппаратную временную метку и получает, таким образом, значение Ts1′. Если задержка в канале связи отсутствует, то Ts1′ должно быть равно (Tm1′ + Tms), где Tms — это разница во времени между тактовыми сигналами ведомого и ведомого устройств. Цель протокола заключается в компенсации этой разницы.

После того, как сообщение Sync послано, программное обеспечение ведущего устройства считывает время его отправления, Tm1′, с помощью блока временных меток, вставляет его в сообщение Followup и посылает это сообщение в момент времени Tm2. Программное обеспечение ведомого устройства получает сообщение Followup в момент времени Ts2. На данном этапе программное обеспечение ведомого устройства знает два времени: Ts1′ (время прихода сообщения Sync) и Tm1′ (время отправления сообщения Sync). Задержка в канале ведущий–ведомый, Tmsd, определяется при помощи выражения (1):
Tmsd = (Ts1′ + Tms) — Tm1′. (1)
Задержка в пути от ведомого устройства к ведущему
Ведомые устройства посылают сообщение DelayReq, в ответ на которое ведущее устройство посылает сообщение DelayResp. При помощи этих сообщений ведомые устройства могут вычислить задержку в обратном канале связи (от ведомого устройства к ведущему).
В момент времени Ts3 (см. рис. 3) программное обеспечение ведомого устройства считывает значение текущего локального системного времени (Ts3), помещает его в сообщение DelayReq и отправляет это сообщение. После того, как сообщение послано, программное обеспечение ведомого устройства считывает временную метку для получения реального времени отправления, Ts3′, и ожидает отклика от ведущего устройства.

Сообщение DelayReq поступает в ведущее устройство с некоторой задержкой в момент времени Tm3′, и обрабатывается его программным обеспечением в момент времени Tm3. Затем программное обеспечение ведущего устройства считывает временную метку для получения времени прибытия Tm3′, помещает его в сообщение DelayResp и посылает это сообщение в ведомое устройство в момент времени Tm4. В момент времени Ts4 программное обеспечение ведомого устройства получает сообщение DelayResp и может извлечь значение времени Tm3′ для вычисления задержки в канале ведомый–ведущий, Tsmd, при помощи выражения (2):
Tsmd = Tm3′ – (Ts3′ + Tms). (2)
Выражения (1) и (2) имеют общую неизвестную переменную — разницу во времени между ведущим и ведомым устройствами, поэтому получить значения Tmsd или Tsmd по отдельности невозможно. Однако, сделав предположение о том, что канал связи симметричен (это предположение обычно приемлемо на практике и является ключевым для корректной работы стандарта IEEE 1588), то есть:
Tmsd = Tsmd = Td, (3)
можно сложить выражения (1) и (2), что дает:
Td = 1/2 [(Ts1′ – Tm1′) + (Tm3′ – Ts3′)]. (4)
Все эти вычисления выполняются ведомыми устройствами, поскольку именно им необходимо синхронизироваться с ведущим устройством. Они получают значение Tm1′ из сообщения Followup ведущего устройства, Ts1′ — из внутренних временных меток приема (Rx), Ts3′ — из внутренних временных меток передачи и Tm3′ — из сообщения DelayResp ведущего устройства.
Как вычислить разницу между временами ведущего и ведомого устройств?
После нахождения задержки в канале связи Td, разницу во времени между ведущим и ведомым устройствами можно легко вычислить на основании выражения (1) или (2), как показано ниже:
Tms = Td – (Ts1′ – Tm1′), (5)
Tms = (Tm3′ – Ts3′) – Td. (6)
Как подстроить время ведомого устройства?
После того как становится известна разница во времени относительно ведущего, каждому из ведомых устройств необходимо подстроить собственное локальное время таким образом, чтобы оно совпадало с временем ведущего устройства. Эта задача имеет два аспекта. Во-первых, ведомым устройствам необходимо подстроить свое абсолютное время, добавив разницу во времени так, чтобы их собственное время точно совпадало с временем ведущего устройства в данный момент. Во-вторых, каждому ведомому устройству необходимо подстроить собственную тактовую частоту таким образом, чтобы она совпадала с частотой тактового сигнала ведущего устройства. Полагаться исключительно на абсолютное время нельзя, поскольку значение разницы во времени распространяется только на определенный интервал и может иметь любой знак; в результате после подстройки возможны скачки времени ведомого устройства или даже его обратная отстройка. Таким образом, на практике подстройка состоит из двух этапов:
– если разница во времени слишком велика (например, более одной секунды), то применяется регулировка абсолютного времени;
– если разница во времени мала, то к тактовым сигналам ведомых устройств применяется процентное изменение частоты.
Вообще говоря, система превращается в замкнутый контур управления, где время ведущего устройства является опорным сигналом, время ведомого устройства — это выходной сигнал, следящий за временем ведущего устройства, а их разность управляет регулируемым тактовым сигналом. Для такого слежения может быть применено пропорциональное интегрально-дифференциальное (ПИД) регулирование, которое широко используется во многих аппаратных реализациях IEEE 1588. Подобный контур управления изображен на рисунке 4.

Задержка от узла к узлу
В обновленной версии стандарта, IEEE 1588-2008, введен новый механизм для измерения задержки в каналах связи, который называется задержкой от узла к узлу (peer to peer delay, или P2P delay). В свою очередь, обсуждавшийся в предыдущих разделах механизм ведущий–ведомый — это механизм вычисления сквозной задержки (end to end delay, или E2E delay). В сети, поддерживающей стандарт IEEE 1588-2008, ведущее устройство может соединяться с ведомыми устройствами либо напрямую, либо через несколько промежуточных сегментов (hops). Задержка E2E — это полная задержка на пути от ведущего устройства к ведомому, включая все промежуточные сегменты. В свою очередь, P2P-задержка — это задержка между двумя устройствами, непосредственно соединенными друг с другом. Таким образом, суммарная задержка в канале — это сумма P2P-задержек всех сегментов. С точки зрения сохранения симметрии канала механизм P2P обеспечивает более высокую точность.
Как уже отмечалось выше, для измерения P2P-задержки в стандарте IEEE 1588-2008 добавлены три дополнительных сообщения: PdelayReq, PdelayResp и PdelayRespFollowup. Принцип измерения P2P-задержки аналогичен обсуждавшемуся выше принципу измерения E2E-задержки. Подробности можно найти в [3].
Факторы, влияющие на качество синхронизации
Грамотно спроектированные устройства с поддержкой IEEE 1588 могут обеспечивать очень высокую точность синхронизации времени. В то же время, важно иметь представление о ключевых факторах, напрямую влияющих на качество синхронизации. К ним относятся:
- Задержка в канале. Как отмечалось ранее, при измерении задержек в стандарте IEEE 1588 подразумевается, что задержки в канале связи симметричны; то есть, задержка передачи в прямом канале равна задержке передачи в обратном канале. Кроме того, задержка не должна меняться в процессе ее измерения. Изменение задержки в процессе ее измерения приведет к асимметрии и джиттеру, которые неизбежно повлияют на точность синхронизации. Контролировать симметрию задержек и джиттер вне совместимого с IEEE 1588 устройства невозможно, однако внутри него эти показатели можно улучшить, используя при измерениях аппаратные временные метки. При использовании программных временных меток джиттер значительно выше из-за задержек обслуживания прерываний, переключения контекста и переключения между задачами.
- Дрейф и джиттер тактовых сигналов. Частота и фаза задающего тактового сигнала являются входами для следящей системы управления, которая управляет тактовым сигналом ведомого устройства. Любое изменение характеристик тактового сигнала ведущего устройства во времени будет восприниматься системой управления как возмущающее воздействие и приводить к переходным процессам и ошибкам в установившемся состоянии. Таким образом, для повышения точности синхронизации следует использовать тактовые сигналы с как можно меньшим уровнем джиттера и дрейфа.
- Закон управления. Метод управления определяет то, каким образом производится коррекция разницы во времени между ведущим и ведомым устройствами. Параметры закона управления, включая время установления, уровень выбросов и ошибку в установившемся состоянии, напрямую влияют на качество синхронизации.
- Разрешающая способность часов. Как показано на рисунке 1, разрешающая способность локального времени определяется частотой тактового сигнала; минимальное приращение времени равно одному периоду тактового сигнала. Предельная разрешающая способность протокола IEEE 1588 равна 1 нс (IEEE 1588-2002) или 2–16 нс (IEEE 1588-2008). На практике использование тактового сигнала с частотой 216 (!) ГГц (и даже 1 ГГц) не представляется возможным. Таким образом, период локальных тактовых сигналов будет влиять на точность измерения и управления локальным временем.
- Как часто происходит посылка сообщений Sync. Частота, с которой происходит обновление часов ведомых устройств, в конечном счете влияет на точность синхронизации. Как правило, чем больше период обновления, тем больше величина ошибки, наблюдаемая в момент прихода следующего сообщения Sync. Это вызвано тем, что ошибка времени равна интегральной сумме ошибки рассогласования частот тактовых сигналов ведомого и ведущего устройств.
- Как часто производится измерение задержки. Измерение задержки производится периодически с интервалами, выбранными на основании предположения о том, что изменение задержки между двумя соседними измерениями незначительно. Если в сети IEEE 1588 присутствуют большие отклонения задержки, то для улучшения качества синхронизации можно увеличить частоту измерений.
Как выбрать ведущее устройство?
Выше мы рассмотрели, как точно определить разницу во времени между ведущим и ведомыми устройствами. Еще один важный вопрос заключается в определении того, какое из объединенных в сеть устройств (число которых может составлять сотни) будет играть роль ведущего устройства.
Для выбора ведущего устройства в стандарте IEEE 1588 используется метод, называемый алгоритмом определения наилучшего задающего тактового сигнала (BMC, best master clock). Данный метод основан на том, что каждое устройство сети IEEE 1588 хранит набор данных, описывающих тип, качество, стабильность, уникальный идентификатор и приоритетность своего локального генератора тактового сигнала. Когда новое устройство подключается к сети IEEE 1588, оно передает в широковещательном режиме набор данных о своем генераторе тактового сигнала и принимает наборы данных от других устройств. Используя наборы всех устройств сети IEEE 1588, каждое устройство выполняет один и тот же алгоритм BMC для определения своего будущего статуса (ведущее или ведомое). Поскольку один и тот же алгоритм выполняется всеми устройствами над одними и теми же данными, все придут к одинаковому решению без необходимости обмена информацией друг с другом в режиме запрос/ответ. Дополнительную информацию о деталях работы алгоритма BMC можно найти в [2] и [3].
Поддержка IEEE 1588 в процессоре ADSP BF518
Семейство цифровых сигнальных процессоров Blackfin компании Analog Devices недавно пополнилось новым процессором ADSP BF518. Как и его предшественник, ADSP BF537 [4], он имеет встроенный модуль контроллера доступа к среде (MAC, media access controller) Ethernet. Функциональные возможности EMAC в этом процессоре были расширены для поддержки стандарта IEEE 1588 за счет добавления дополнительного модуля TSYNC, а также ряда других функций, позволяющих обеспечивать работу по стандарту IEEE 1588 в сети Ethernet. Блок схема модуля TSYNC показана на рисунке 5. Дополнительную информацию можно найти в руководстве [5].

Обнаружение пакетов
Процессор ADSP BF518 может распознавать и формировать аппаратные временные метки для всех событийных сообщений IEEE 1588 во входящих и исходящих пакетах. Точность системы IEEE 1588 сильно зависит как от точности временных меток в событийных сообщениях, так и от того, где они берутся (поскольку это влияет на требования к симметрии и постоянству задержки в пути распространения). Модуль TSYNC процессора ADSP BF518 осуществляет постоянный мониторинг аппаратного интерфейса между контроллером MAC и трансивером физического уровня (PHY, physical interface transceiver) Ethernet (другими словами, не зависящего от среды интерфейса (MII, media independent interface)) и вырабатывает временную метку при каждом обнаружении событийного сообщения. Такой механизм позволяет процессору ADSP BF518 обеспечивать повышенную точность синхронизации.
Обнаружение событийных сообщений настраивается программно и может быть сконфигурировано для поддержки IEEE 1588-2002 (вариант, устанавливаемый по умолчанию) или IEEE 1588-2008. Более того, возможность программирования облегчает поддержку будущих версий IEEE 1588, а также других протоколов, требующих временных меток. Возможен даже вариант, при котором временная метка будет проставляться для каждого входящего и исходящего пакета Ethernet.
Источники тактового сигнала
Свойства генераторов локальных тактовых сигналов очень важны для достижения хороших показателей в системе IEEE 1588. Чтобы удовлетворить потребностям самых разных приложений, в процессоре ADSP BF518 имеется возможность выбора трех вариантов источника локального тактового сигнала: тактовый сигнал системы, внешний тактовый сигнал или тактовый сигнал контроллера Ethernet. В случае, когда в приложении предъявляются особые требования к тактовому сигналу, может быть выбран внешний источник тактового сигнала с необходимыми характеристиками. Вариант работы от тактового сигнала контроллера Ethernet может дать хорошую точность, если ведущее и ведомые устройства соединены друг с другом напрямую, поскольку тактовый сигнал формируется из сигналов данных, передаваемых по сети Ethernet, и два устройства, таким образом, будут работать от одного тактового сигнала. В самом общем случае в качестве источника тактового сигнала может использоваться тактовый сигнал системы процессора.
Выбранный тактовый сигнал синхронизации также выдается модулем TSYNC на выход через вывод Clockout процессора для предоставления другим частям системы возможности извлечения информации о локальном времени.
Выход PPS
Сигнал «импульс в секунду» (PPS, pulse per second) — это физическая интерпретация информации о времени. Он представляет собой сигнал частотой 1 Гц в виде импульса, который совпадает с началом новой секунды. Этот сигнал может использоваться для управления локальными устройствами или для обеспечения вспомогательного канала информации о времени в случае сбоя сети. Он также может использоваться для тестирования. Разность фаз между сигналами PPS двух устройств является физической мерой разницы их времен.
Выходной сигнал PPS в процессоре ADSP BF518 обеспечивает гибкие возможности. Для его формирования используются программируемые значения времени запуска (PPS_ST) и периода (PPS_P). В результате выходной сигнал имеет вид импульсов в моменты времени (PPS_ST + n . PPS_P), где n = 1, 2, 3… В базовом варианте применения сигнала PPS величина PPS_P задается равной 1 с, а PPS_ST — любому еще не наступившему моменту времени, кратному секунде. Выходной сигнал PPS может быть использован в качестве опорного для формирования периодического сигнала с полностью программируемыми частотой и временем запуска.
Вспомогательная функция Snapshot
В некоторых приложениях может потребоваться установка временной метки по определенному событию, о котором сигнализирует переключение сигнала флага. Для этих целей в модуле TSYNC процессора ADSP BF518 имеется вспомогательная функция Snapshot («моментальный снимок») с использованием отдельного вывода в качестве входа внешнего сигнала флага. По переключению флага модуль сохраняет текущее значение локального времени в регистре временной метки, который впоследствии может быть считан программным обеспечением.
Будильник
Если в приложении требуется выполнять задачи в определенное время, для этого может быть использована функция будильника модуля TSYNC. Эта функция позволяет задавать абсолютное локальное время, по наступлению которого будет вызвано прерывание процессора. Программное обеспечение процессора обслужит это прерывание и выполнит требуемую задачу.
Регулируемый тактовый сигнал
Регулируемый тактовый сигнал модуля TSYNC формируется с использованием добавочного слагаемого. Как показано на рисунке 6, модуль TSYNC принимает на вход тактовый сигнал фиксированной частоты и выдает версию этого сигнала с меньшей частотой.

Добавочное слагаемое прибавляется к значению аккумулятора при каждом такте входного тактового сигнала, и всякий раз, когда аккумулятор переполняется, бит переноса поступает на счетчик локального времени, выдающий информацию о локальном времени в виде количества сосчитанных импульсов. Частоту локального тактового сигнала можно установить, изменяя величину добавочного слагаемого, поскольку это определяет частоту переполнения аккумулятора и, следовательно, частоту инкрементирования счетчика локального времени. Если частота входного тактового сигнала равна Fin, а величина добавочного слагаемого равна А, то частота локального тактового сигнала равна:
Реализация IEEE 1588 на процессоре ADSP BF518
На базе процессора ADSP BF518 была построена полнофункциональная совместимая с IEEE 1588-2088 система, структура которой показана на рисунке 7.

Модуль TSYNC процессора обнаруживает входящие и исходящие сообщения IEEE 1588 и использует программные средства для проставления временных меток в событийных сообщениях. Протокол обмена сообщениями, заданный стандартом IEEE 1588, реализован с помощью программного стека IEEE 1588, поставляемого компанией IXXAT (IXXAT Automation GmbH). В нем используется драйвер TSYNC для чтения, записи и регулировки тактового сигнала TSYNC, а также драйвер контроллера MAC для посылки и приема сообщений через уровень MAC Ethernet (уровень 2 модели взаимодействия открытых систем, OSI). Он также реализует закон управления и фильтрацию измерений задержки P2P. В качестве контроллера PHY Ethernet выбрана микросхема DP83848 компании National Semiconductor [6], поскольку она обладает очень малым джиттером задержки. Для упрощения системы в качестве источника тактового сигнала модуля TSYNC был выбран тактовый сигнал системы процессора (80 МГц).
Рисунок 8 иллюстрирует качество синхронизации тактового сигнала устройства в виде гистограммы распределения измеренной ошибки между двумя идентичными системами IEEE 1588 на базе ADSP BF518. Для построения гистограммы было произведено 6938 измерений с периодом приблизительно 1700 с. По результатам измерения было получено среднее значение ошибки 0,015 нс и стандартное отклонение 12,96 нс. Для проведения теста интервал сообщений Sync был выбран равным 0,25 с.

Заключение
Стандарт IEEE 1588 представляет собой недорогой метод синхронизации распределенных тактовых сигналов с высокой точностью. Несмотря на то, что стандарт не требует в явном виде аппаратной поддержки, достигнуть максимальной точности синхронизации без использования аппаратных средств при обнаружении сообщений и установке временных меток невозможно. В процессоре ADSP BF518 реализована аппаратная поддержка обеих версий стандарта, IEEE 1588-2002 и IEEE 1588-2008, а также функции, позволяющие работать с иными вариантами синхронизации. Высокая точность синхронизации была продемонстрирована на примере системы IEEE 1588, построенной на базе процессора ADSP BF518 и программного обеспечения протокола IEEE 1588-2008 компании IXXAT.
Литература
- Техническое описание процессора ADSP BF518
- IEEE Std. 1588-2002. IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control
- IEEE Std. 1588 2008. IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control
- Техническое описание процессора ADSP BF537
- ADSP-BF51x Blackfin Processor Hardware Reference Preliminary, Revision 0.1 (Preliminary). January 2009. Analog Devices,
- 6. AN-1507: DP83848 and DP83849 100Mb Data Latency. 2006. National Semiconductor Corporation