This work refers to the first part, which was describing possibilities of synchronization two devices transmission across packet network. This article deals with design and testing algorithms which have higher accuracy of synchronization.
Za účelem generování synchronizačního signálu byly využity dva vývojové kity od firmy XILINX s označením Spartan-3E. Tyto vývojové kity disponují Ethernet rozhraním a dále jsou osazeny programovatelným polem a řadou dalších periferií.
Pro přenos synchronizace přes paketovou síť byl zvolen protokol NTP, který je velice rozšířen a využíván pro synchronizaci času v počítačích. Navíc implementace NTP protokolu je díky rozsáhlé dokumentaci a volně dostupným zdrojovým kódům dobře realizovatelná. To znamená, že jeden vývojový kit byl naprogramován jako NTP server a druhý jako NTP klient. NTP klient se snaží co nejpřesněji synchronizovat svůj vnitřní čas s NTP serverem a na základě tohoto času je generován výstupní signál o frekvenci 8 kHz. Výstupní signál je generován oběma zařízeními a v ideálním případě má být synchronní (obr. 1).
obr. 1 Princip generování synchronního signálu
V článku Protokoly k synchronizaci času pro paketovou síť jsme se seznámili se základními problémy při přenosu synchronizace přes paketovou síť a s protokoly, které je možno využít. Uvedli jsme si, jakým způsobem jsou přenášeny časové informace mezi NTP serverem a klientem a jak z nich lze vypočítat výslednou korekci času. Tuto korekci však nemůžeme brát jako přesnou hodnotu, což je zapříčiněno různým časovým zpožděním v jednotlivých směrech přenosu. Nyní se budeme zabývat možnostmi zpřesnění této časové synchronizace.
Jednotlivé algoritmy mají za úkol kompenzovat rozptyl hodnot zpoždění jednotlivých paketů při průchodu paketovou sítí. Hodnoty zpoždění jsou značně rozdílné a závisí ve značné míře na okamžité konfiguraci a zatížení sítě. Navrhli jsme zde několik algoritmů.
Algoritmus průměrováníJeden z prvních algoritmů, který jsme pojmenovali průměrování, je založen na zprůměrování hodnot časových korekcí vypočítaných z NTP paketu. Dochází k načítání jednotlivých korekcí do paměti a následnému vyhodnocení těchto hodnot.
Algoritmus můžeme rozdělit do dvou sekcí. První sekce má za úkol korigování frekvenčního offsetu a druhá korigování časového offsetu. Frekvenční korekce kompenzuje frekvenční rozdíly oscilátorů, které jsou umístěné v jednotlivých zařízeních. Hodnota frekvence oscilátorů je také teplotně závislá, a proto se u přesnějších zařízení provádí teplotní stabilizace.
Úkolem časové korekce je nastavení generátoru hodin klienta tak, aby odpovídal hodinám na straně serveru. Toto přesné zasynchronizování hodin zajistí synchronnost generování signálu 8 kHz serveru a klienta. Po přijatém paketu je z přijatých hodnot vypočítána korekce času klienta a je zaznamenána do paměti. Po příjmu dostatečného počtu korekcí jsou tyto korekce zprůměrovány a podle výsledné hodnoty je zkorigován čas klienta. Přesnost korekce je závislá na počtu přijatých paketů, z kterých je počítána průměrná hodnota.
Algoritmus s filtrem FIRDalším algoritmem, který jsme ověřovali pro použití při kompenzaci rozptylu zpoždění v paketové síti, je algoritmus využívající filtru FIR (Finite Impulse Response).
Cílem bylo navrhnout filtry s rozdílným řádem a porovnat vlastnosti těchto filtrů. Návrh filtru a zobrazení výsledků simulace na vývojových kitech, byl proveden v programu Matlab. Výstupem skriptu pro Matlab byli jednotlivé koeficienty filtru. Pro ukázku zde uvádím filtr řádu 30, který je zobrazen na obr. 2. V tomto grafu jsou zobrazeny dvě křivky. Modrá křivka reprezentuje návrh filtru po zaokrouhlení nanormovaných koeficientů a červená bez zaokrouhlení nanormovaných koeficientů. Zaokrouhlování koeficientů na celá čísla je provedeno z důvodu použití celočíselného typu v mikroprocesoru. Z jednotlivých křivek je patrné, že zaokrouhlení koeficientů filtru nemělo výrazný vliv na jeho vlastnosti.
obr. 2 Amplitudová charakteristika filtru FIR řádu 30 s mezním kmitočtem 0,01 Hz
Dalším algoritmem, který jsme navrhli, je algoritmus využívající filtru IIR (Infinit Impulse Response). Filtry jsme navrhli jako dolní propust s Butherworthovou aproximací. Na ukázku zde uvádím filtr s řádem 2 (obr. 3). Jednotlivé křivky mají stejný význam jako u algoritmu s filtrem FIR.
obr. 3 Amplitudová charakteristika filtru IIR řádu 2 s mezním kmitočtem 0,01 Hz
Testování jednotlivých algoritmů bylo prováděno na vývojových kitech. Z vývojového kitu, na kterém běžel NTP klient, jsme přijímali informace o jednotlivých korekcích na sériovém portu počítače.
Testování algoritmu průměrováníNejdříve jsme měřili frekvenční offset, který se pohyboval okolo 500 ns za jednu sekundu. Pro kompenzaci tohoto offsetu musíme každou sekundu tuto hodnotu přičíst k aktuálnímu času běžícímu na NTP klientu.
Dále je prováděna časová korekce. Určitou dobu jsou shromažďovány jednotlivé korekce času a tyto hodnoty jsou pak zprůměrovány. Výslednou hodnotou je čas zařízení zkorigován. Výsledná korekce by se po zasynchronizování času měla blížit 0 (obr. 4). V tomto okamžiku je čas serveru a klienta stejný.
obr. 4 Časová korekce u algoritmu průměrování
Přesnost tohoto algoritmu se pohybuje ±10 µs. Nevýhodou tohoto algoritmu je dlouhá doba synchronizace. K zasynchronizování zařízení dochází po 400 sekundách od začátku synchronizačního procesu. Dále je synchronizace jen nepatrně zpřesňována.
Testování algoritmu s filtrem FIRPři testování jednotlivých řádů filtru se jeví jako nejlepší filtr řádu 10, protože má nejmenší zpoždění. U ostatních filtrů, které mají řád větší, je zpoždění mnohem delší, což se negativně projeví na přesnosti synchronizace. Výsledný průběh korekce pro filtr řádu 10 je zobrazen na obr. 5. Modrá křivka reprezentuje hodnotu korekce vypočítanou po příchodu NTP paketu. Tato hodnota vstupuje do filtru FIR a výstup z filtru je zobrazen červenou křivkou. Čas zařízení je korigován výstupní hodnotou filtru.
obr. 5 Detail naměřených hodnot filtru FIR řádu 10
Algoritmus založený na principu filtrace filtrem FIR, dosahuje lepších výsledků než algoritmus založený na metodě průměrování. Po ustálení filtru dosahujeme přesnosti ±4 µs.
Testování algoritmu s filtrem IIRAlgoritmus využívající filtru IIR je navrhnut úplně stejně jako algoritmus s filtrem FIR. Výsledný graf pro IIR filtr řádu 2 je uveden na obr. 6.
obr. 6 Detail naměřených hodnot filtru IIR řádu 2
Algoritmus založený na principu filtrace filtrem IIR dosahuje přibližně stejné přesnosti jako algoritmus s filtrem FIR. Jako nejlepší varianta se jeví filtr řádu 2 normovaný hodnotou 211. Dosažená přesnost synchronizace ±5 μs.
Z uvedených výsledků je patrné, že synchronizace přes paketovou síť pomocí protokolu NTP je realizovatelná. Lepší výsledky poskytují algoritmy s filtry FIR a IIR. Dosahovaná přesnost synchronizace přes paketovou síť je v jednotkách μs.
[1] RFC 1305, Network Time Protocol (Version 3), 1992.
[2] NTP Reference and Implementation Guide. [online], 2006 [cit.
2007–10–21].
Dostupný z WWW:
http://www.cis.udel.edu/~mills/database/reports/ntp4/ntp4.pdf
[3] Matlab. [online], [cit. 2008–04–24].
Dostupný z WWW: http://www.mathworks.com
[4] Ladislav Strnad. Digitální sítě 1. Vydavatelství ČVUT, Květen 1996.
[5] Ladislav Strnad. Úzkopásmové a širokopásmové sítě. Vydavatelství
ČVUT, Únor 2003.
[6] RFC 3550, RTP: A Transport Protocol for Real-Time Applications,
2003.
[7] IEEE 1588 – Precise Time Synchronization. [online], 2006 [cit.
2007–04–25].
Dostupný z WWW: http://www.industrialnetworking.com/support/general
faqs info/Precise Time Sync.pdf
[8] Vývojový kit spartan-3e. [online], 2006 [cit. 2007–07–12]. Dostupný
z WWW:
http://www.xilinx.com/s3estarter