Vyšlo v týdeníku CHIPweek č. 32/95, 7. prosince 1995
Vytištěno z adresy: http://www.earchiv.cz/a95/a532k130.php3

Synchronní

Chtějí-li si dvě komunikující strany předat za určitý čas co možná nejvíce dat, pak obvykle sáhnou po takovém druhu přenosu, který se honosí přívlastkem „synchronní". Co si ale pod tím správně představit, a jak se tento druh přenosu liší od přenosu asynchronního (správně arytmického), o kterém jsme si povídali v minulém vydání této rubriky?

Minule jsme si pomohli představou vlastních hodinek na straně příjemce i na straně odesilatele, které „tikají" svým vlastním tempem, nezávisle na sobě. V případě asynchronního přenosu jsme si vysvětlili, že hodinky příjemce se vždy „seřídí" na začátku každého jednotlivého znaku (bytu) podle tzv. start bitu, kterým každý takovýto znak či byte začíná, a po dobu příjmu daného znaku (bytu) se nesmí příliš rozejít. Při takovémto pohledu na věc si pak můžeme definovat synchronní přenos jako takový případ, kdy hodinky příjemce se seřídí na začátku bloku dat, a nesmí se rozejít po dobu přenosu celého zmíněného bloku.

Podívejme se na to také z trochu jiného pohledu: v případě asynchronního přenosu je synchronizace mezi příjemcem a odesilatelem (tj. stejně „tikající" hodinky) udržována vždy jen po dobu přenosu jednotlivých znaků, zatímco v případě synchronního přenosu v podstatě trvale (přesněji po dobu přenosu celého bloku dat). Větší efektivnost synchronního přenosu je pak dána tím, že do přenášených dat nepotřebuje vkládat speciální prvky (tzv. start bity), které příjemci slouží k opětovnému získání synchronizace pro potřeby příjmu daného znaku (bytu). Na druhé straně je asi zřejmé, že synchronní přenos zase náročnější na kvalitu „hodinek" příjemce, které musí zůstat trvale v synchronizaci.

Je ale vůbec možné sestrojit takové hodinky, které by na straně příjemci vydržely v synchronizaci libovolně dlouho, pro přenos libovolně dlouhého bloku? Naštěstí to ale není nezbytně nutné, protože udržení trvalé synchronizace lze dosáhnout i jinými způsoby. Například tím, že příjemce si bude své hodinky průběžně seřizovat podle jednotlivých datových bitů - zde je možné si pro jednoduchost představit, že například jednička je reprezentována skokovou změnou přenášeného signálu, zatímco logická nula absencí takovéto skokové změny. Pak není větší problém zařídit věci tak, aby si příjemce seřídil hodinky při každé skokové změně, reprezentující jedničku. Má to ale jeden malý háček - co když bude přenášena dlouhá posloupnost samých nul? Pak hrozí nebezpečí, že tato posloupnost bude příliš dlouhá, že hodinky příjemce se rozejdou více než by bylo únosné, a při příští jedničce a skokové změně se již „chytnou" špatně. Vzájemná záměna nul a jedniček tento problém neřeší - pomůže až takové opatření, které se v případě potřeby postará o zařazení nějaké té nuly či jedničky navíc, aby byla přerušena příliš dlouhá posloupnost stejných číslic - jde vlastně o nám již dobře známé techniky vkládání bitů (bit stuffing), o kterých jsme si povídali v souvislosti s bitově orientovanými protokoly (viz CHIPweek č. 29).

Ještě další možností pak jsou takové způsoby kódování, neboli takové způsoby znázornění logických nul a jedniček prostřednictvím změn přenášeného signálu, které v sobě nějakým způsobem zahrnují časování - tedy které průběžně přenáší „tep" hodinek odesilatele. Například může jít o takové kódování, které pro vyjádření každého jednotlivého bitu používá až dvě změny přenášeného signálu - jednu vždy, a druhou v případě, že je přenášena jednička (nebo naopak nula). Pak první „povinná" změna reprezentuje jeden „tik" hodin, a tím přesně vymezuje bitový interval, zatímco druhá nepovinná změna svou existencí či neexistencí teprve nese užitečnou informaci.

Z právě naznačené podstaty synchronního přenosu pak také vyplývá jedna jeho významná odlišnost oproti asynchronnímu přenosu: ten je vhodný v situaci, kdy jsou na straně odesilatele průběžně generovány jednotlivé znaky k odeslání s víceméně náhodnými odstupy mezi sebou - jako je tomu například při psaní na klávesnici znakově orientovaném terminálu či obdobném zařízení. Naproti tomu synchronní způsob přenosu svou podstatou vychází vstříc spíše situaci, kdy data jsou zadávána k odeslání v celých větších blocích, a nikoli jednotlivě po bytech či znacích.