Universālais asinhronais raiduztvērējs

**Universālais asinhronais raiduztvērējs** jeb ***UART*** () ir elektroniska shēma, kas nodrošina asinhronus seriālos sakarus. Tas nosūtāmos datus no paralēlām ķēdēm pārveido vienā seriālā bitu straumē, ko var pārraidīt vienā fiziskā līnijā citai *UART* ierīcei. Analoģiski pa otru līniju ienākošā bitu straume tiek konvertēta vajadzīgajā formā.
"Asinhronais" nozīmē to, ka sakaru līnijā nav takts impulsu signāla, kas sinhronizētu pārraidāmos datus starp raidītāju un uztvērēju.

[thumb|right|200px|''[USB* un *UART* adapters]]
*UART* var būt realizēts kā savrupa [[integrālā shēma]] vai arī integrēts kādā ierīcē, piemēram, [[mikrokontrolieris|mikrokontrolierī]].

Līdzīga ierīce ir [[universālais sinhronais un asinhronais raiduztvērējs]] (*Universal synchronous and asynchronous receiver-transmitter*, *USART*), kas nodrošina gan asinhrono, gan sinhrono datu pārraidi.

== Fiziskā uzbūve ==
*UART* shēmas galvenās sastāvdaļas ir:
* [[taktimpulsu ģenerators]]
* ieejas un izejas [[pārbīdes reģistrs]]
* raidīšanas un uztveršanas vadība
* lasīšanas un rakstīšanas vadības loģika

Citas papildu sastāvdaļas:
* raidīšanas un uztveršanas buferi
* sistēmas datu kopnes buferis
* [[FIFO]] bufera atmiņa

*UART* parasti tieši neģenerē vai neuztver ārējos signālus no citām ierīcēm. *UART* izejas un ieejas loģikas līmeņi atbilst attiecīgajām pusvadītāju loģikas saimēm, piemēram *TTL*. Tādu fizisko līmeni var pielietot tikai vienas ierīces robežās, bet lielākos attālumos līnijā rodas traucējumi. Lai ierīci savienotu ar attālinātu ierīci, tiek izmantoti sakaru standarti (piemēram, *RS-232*, *RS-422*, *RS-485*). Visi šie standarti nosaka atšķirīgas līnijas fiziskā signāla ģenerēšanas metodes, kas atšķiras arī no *TTL* ķēžu [[loģikas līmenis|loģikas līmeņa]]. Šāda fiziskā signāla pārveidošana raidītāja pusē un otrādi, atkarībā no sakaru standarta, tiek veikta ar atdalītu shēmu, kas var būt arī kā atsevišķa mikroshēma.

Dati pārraidīšanai *UART* shēmai tiek nodoti baitu veidā, visbiežāk no paralēlās kopnes. *UART* datus pārraida secīgi pa vienam bitam. Otrā līnijas galā cita *UART* ierīce saņemtos bitus saformē pilnos baitos. Šim nolūkam katram *UART* ir [[pārbīdes reģistrs|pārbīdes reģistri]], kas veic pārveidošanu starp seriālo un paralēlo formu un otrādi.

Sakari *UART* var būt organizēti [[simplekss|simpleksā]] (dati tiek sūtīti tikai vienā virzienā), [[pusduplekss|pusdupleksā]] (vienā laika vienībā var vai nu nosūtīt vai saņemt datus) vai [[pilnduplekss|pilndupleksā]] veidā (abas ierīces var vienlaicīgi nosūtīt un saņemt datus).

== Datu pārraidīšana un saņemšana ==
Datu pārraidīšana *UART* ir organizēta [[Pakete (informācijas tehnoloģijas)|paketēs]]. Katrā paketē ir viens [[startbits]], 5 līdz 9 datu biti (atkarībā no *UART* realizācijas), neobligāts [[pārības bits]] un viens vai divi [[stopbits|stopbiti]].

*UART* pārraides līnijā normāli tiek turēts augsts sprieguma līmenis pat tad, kad nenotiek datu pārraide. Tas ir vēsturisks mantojums no [[telegrāfs|telegrāfa]], kur sakaru līnija tiek turēta sprieguma augstā līmenī, lai pārliecinātos, ka līnija un raidītājs nav bojāts. Lai sāktu datu pārraidīšanu, raidošais *UART* vienā takts ciklā pārslēdz pārraidošo līniju no augsta līmeņa uz zemu. Kad uztverot *UART* konstatē sprieguma pāreju no augsta uz zemu līmeni (startbits), tas sāk lasīt bitus datu kadrā bodu ātruma frekvencē. 

Pēc startbita seko datu kadrs. Tas var būt 5 līdz 9 bitu garš, bet parasti ir 8 biti, kas atbilst vienam baitam. Ja neizmanto pārības bitu, tad kadrs var būt 9 bitu garš. Visbiežāk dati tiek sūtīti ar [[visnenozīmīgākais bits|visnenozīmīgāko bitu]] pirmo.

Datu kadra beigās var būt pārības bits, kas rāda, vai skaitlis ir pāra vai nepāra. Pārības bits ir veids, kā saņēmēja *UART* var uzzināt, vai raidīšanas laikā ir mainījušies dati. Bitus var izmainīt elektromagnētiskais starojums, neatbilstoši bodu ātrumi vai liela attāluma datu pārsūtīšana. Pēc tam, kad uztverošais *UART* nolasa datu kadru, tas saskaita bitus ar vērtību 1 un pārbauda, vai šis skaits ir pāra vai nepāra skaitlis. Ja pārības bits ir 0 (pāra pārība), datu kadrā 1 bitiem ir jābūt pāra skaitā. Ja paritātes bits ir 1 (nepāra pārība), datu kadrā 1 bitiem ir jābūt nepāra skaitā. Ja pārības bits atbilst datiem, tas nozīmē, ka pārraidē nav kļūdu. Savukārt, ja paritātes bits ir 0, un skaits ir nepāra; vai paritātes bits ir 1 un skaits ir pāra, tātad datu kadrā esošie biti ir mainīti.

Datu paketes beigu signāls ir stopbits. *UART* pārslēdz pārraidošo līniju no sprieguma zema līmeņa uz augstu. Dažas *UART* realizācijas izmanto divus stopbitus, lai samazinātu sinhronizācijas nojukšanas iespējamību uztvērēja galā.

Lai veidotu laika intervālus (takts impulsus), gan raidošajam gan uztverošajam *UART* ir taktimpulsu ģenerators. Tā precizitātei jābūt tādai, lai uztvērēja un raidītāja laika impulsu nobīdes kļūdu summa no starta impulsa līdz stop impulsam nepārsniegtu pusi bita intervāla. 8 bitu paketei 0,5 / 9,5 = 5 %. Tā kā jāņem vērā arī iespējamie signāla kropļojumi sakaru līnijā, tad *UART* taktimpulsu ģeneratora rekomendējamā neprecizitāte ir ne lielāka par 1,5 %.

== Ārējās saites ==

* [http://www.freebsd.org/doc/en_US.ISO8859-1/articles/serial-uart/ FreeBSD Serial and UART Tutorial]
* [http://www.societyofrobots.com/microcontroller_uart.shtml UART Tutorial for Robotics]
* [https://www.eltima.com/uart-sniffer.html UART Sniffer] programmatūra, lai pārraudzītu *UAR'' portu
* UART Protocol