Sériový přenos dat
Jako sériový přenos označujeme takový, kdy se signálové prvky téhož datového
proudu předávají za sebou - sériově. Naopak při paralelním přenosu se určitý
počet signálových prvků (např. bitů) přenáší současně.
Synchronní a asynchronní sériový přenos
Při přenosu informace (sériovém i paralelním) musíme zabezpečit,
aby přijímač správně vyhodnotil okamžiky platnosti jednotlivých značek
generovaných vysílačem. Vysílač a přijímač proto spolu musí být nějakým
způsobem časově synchronizovány. Právě podle druhu synchronizace
rozlišujeme sériový přenos na synchronní a asynchronní.
Synchronní přenos se děje pomocí izochronního signálu, tedy takového,
kde odstup dvou libovolných charakteristických okamžiků (např. začátků
a konců jednotlivých značek) je celistvým násobkem určitého
(apriorně daného) jednotkového intervalu. Komunikační kanál je tedy taktován
společným hodinovým signálem (vedeným zvlášť nebo obsaženém v datovém
signálu), který vymezuje intervaly platnosti jednotlivých značek.
Synchronní přenos se nejčasteji používá u bitově orientovaných protokolů,
kde se informace seskupuje do rámců.
V datových komunikacích se používá zejména pro přenos větších objemů dat.
Asynchronní (správněji arytmický) přenos - vysílač a přijímač nemají
společný hodinový signál, který by vymezoval intervaly platosti značek.
Namísto toho mají obě strany své vlastní hodiny, dostatečně přesné, aby se
po fázovém zasynchronizování mohly po několik značkových intervalů
považovat za izochronní. Jelikož je třeba hodiny pravidelně synchronizovat,
používá se tento způsob nejčastěji pro přenos krátkých bitových posloupností,
znaků (5,6,7 nebo 8 bitů). Synchronizace probíhá před každým znakem,i
kdy před prvním významovým bitem vždy předchází tzv. startbit, jenž
je reprezentován opačnou hodnotou signálu, než je klidová úroveň na lince i
a trvá stejnou dobu jako následující bitové intervaly.
Arytmický přenos ze své podstaty vhodný např. pro komunikaci s počítačem
prostřednictvím terminálu.
Poznámka: "čistě" asynchronní přenos se děje prostřednictvím
anizochronního signálu, kdy bitové intervaly obecně nemají stejnou délku;
Prakticky to může být realizováno kupříkladu 3-stavovým signálem.
Poznámka: arytmický přenos je kombinací přenosu synchronního
a asynchronního - jednotlivé znaky mohou započít kdykoli, avšak
po odvysílání startbitu do konce znaku má signál isochronní charakter.
Parametry asynchronního sériového přenosu
- Formát znaku: klidová úroveň, start-bit, parita, počet prvků znaku,
stop-bit.
- Přenosová rychlost (používají se rychlosti 150,300,600,1200,... bps,
další rychlosti vždy vynásobením dvěma), počet datových bitů,
parita, počet stop-bitů
- Chyby přenosu: parity error, framing error, overrun error, (break)
Sériová komunikace na PC
Obvod USART (Universal Synchronous Asynchronous Receiver-Transmitter):
8250,16450,16550
Použitá přerušení: COM1: IRQ4 (INT 0Ch), COM2: IRQ3 (INT 0Bh)
Přes BIOS (INT14h)
- poměrně omezené ovládání
- Adresy portů pro komunikaci s jednotlivými 8250 (resp. 16450, 16550)
v tabulce proměnných BIOSu na adr. 0:400h (standardně COM1: 3F8h-3FFh,
COM2, 2F8h-2FFh)
- Jen synchronní volání pro příjem (a vyslání) znaku
- Nemožnost ovládání modemových signálů
- Modemové signály ovládá BIOS, není standardně stanoveno jak
Poskytované služby:
- Inicializace portu (parametry: přenosová rychlost, počet datových bitů,
parita, počet stop-bitů).
Umožňuje zadat pouze rozsah rychlostí 110-9600 Bd, 7 nebo 8 bitů dat
- Vyslání znaku
- Příjem znaku (čeká, neumožňuje stanovit timeout (!))
- Zjištění některých stavových informací
Přímé ovládání 8250
Porty 8250
- Data Register (xF8h-R/W) - Dvojice registrů pro vstup a výstup;
Je-li DLAB=1: Dělitel pro baudrate (low)
- Interrupt Enable Register (xF9h-W) - povolení přerušení od jednotlivých
událostí (znak byl přijat, vysílací registr prázdný, chyba příjmu
detekce přerušení linky, změna stavu modemových signálů
(CTS, DSR, RI, RSLD)).
Je-li DLAB=1: Dělitel pro baudrate (high)
- Interrupt Identification Register (xFAh-R) - Identifikace důvodu,
ze kterého došlo k přerušení (použitelné i pro polling, pokud generování
přerušení nebylo povoleno)
- Line Control Register (xFBh-R/W) - Nastavení komunikačních parametrů:
šířka slova (5-8b), počet stop-bitů, parita,
DLAB (Divisor Latch Access Bit) - pokud je nastaven, umožňují
porty xF8h a xF9h nastavit konstantu, kterou se dělí kmitočet
dodávaný do 8250 z externího oscilátoru, aby se získala doba
trvání jednoho bitu
- Modem Control Register (xFCh-W) - Ovládání modemových signálů DTR, RTS
a pomocných signálů OUT1, OUT2 (viz pozn. níže)
- Line Status Register (xFDh-R) - příznaky: data ready, overrun error,
framing error, parity error, break, transmitter holding register empty
(OK to send), transmiter empty
- Modem Status Register (xFEh-R) - stavy signálů CD, RI, DSR, CTS
a indikace změn těchto signálů
Poznámka: Signál přerušení z obvodu 8250 nevede v PC do řadiče
přerušení (8259) přímo, ale je hradlován signálem OUT2 (signál obecného
použití, výstup 8250, který lze nastavit na portu xFC). Pokud tedy má dojíti
k přerušení procesoru při události na 8250, je třeba přerušení povolit
na třech místech:
- Na 8250 odmaskovat bity událostí, od kterých se má přerušení generovat
(port xF9)
- Na 8250 nastavit signál OUT2, aby signál o přerušení prošel hradlem
na řadič přerušení
- Na řadiči přerušení (8259) povolit IRQ 4, resp. IRQ 3
Obsluha přerušení od sériového portu a Windows
- latence zpracování přerušení v chráněném režimu 80x86
- fronta 16550 (16B), nutnost povolení ze strany ovladače
- modemy na paralelním portu