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áni. Právě podle způsobu 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á při bitově orientovaném přenosu, 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 plantosti 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, 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 a trvá
stejnou dobu jako následující bitové intervaly. Asynchronní 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; jejich vymezení se pak děje explicitně např. pomocnm signále sdíleným mezi vysílačen
i přijímačem. Naproti tomu 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
- 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é rozhraní EIA RS232C
přijato jako standard CCITT V.24 (+ V.28 definuje význam signálů a protokol)
Terminologie CCITT: DTE-Data Terminal Equipment, DCE - Data Circuit Equipment
Zahrnuje mechanickou, elektrickou a procedurální specifikaci.
Vzdálenosti do 15m
Napěťové úrovně +-(3 až 15V); (praktické zkušenosti s tolerancí)
Proudová smyčka, RS 422
Signály (používané): Signal GND, Chassis GND, RxD, TxD, DTR, DSR, RTS, CTS, CD, RI
Propojení DTE-DCE:
- úplné
- 3-vodičové: vzájemně RxD-RxD, TxD-TxD, Gnd-Gnd, ChassisGround-ChassisGround;
lokálně vždy RTS-CTS, DSR-DCD-DTR
Propojení DTE-DTE - "null modem" (např. přenos počítač-počítač)
- úplné: symetricky RxD-TxD, RTS-CTS, DSR+DCD-DTR, ChassisGround-ChassisGround
- 3-vodičové: vzájemně RxD-TxD, Gnd-Gnd, ChassisGround-ChassisGround;
lokálně vždy RTS-CTS, DSR-DCD-DTR
RS449
Definuje mechanické (konektor s více piny kvůli balanced obvodům), funkční (rozšíření okruhů oproti RS232)
a procedurální charakteristiky, elektrická specifikace se odkazuje na jiné standardy:
- RS423A: obdoba RS232 (unbalanced), společná referenční zem
- RS422A: balanced, 2 Mbps, 60m
Sériová komunikace na PC
USART: 8250,16450,16550
Použitá přerušení: COM1: IRQ4 (INT0Ch), 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 nebo 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ít 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