Uniwersalny asynchroniczny odbiornik-nadajnik - Universal asynchronous receiver-transmitter

Schemat blokowy dla UART

Uniwersalnego asynchronicznego odbiornika-nadajnika ( UART / Ju ɑːr t / ) jest sprzętu komputerowego urządzenia do asynchronicznej komunikacji szeregowej , w którym format danych, a prędkość transmisji konfiguruje. Wysyła bity danych jeden po drugim, od najmniej znaczącego do najbardziej znaczącego, obramowane bitami startu i stopu, dzięki czemu kanał komunikacyjny obsługuje precyzyjne taktowanie. Poziomy sygnalizacji elektrycznej są obsługiwane przez obwód sterownika znajdujący się poza UART. Dwa typowe poziomy sygnału to RS-232 , system 12 V i RS-485 , system 5 V.

Było to jedno z najwcześniejszych komputerowych urządzeń komunikacyjnych, używane do podłączania dalekopisów do konsoli operatora . Był to również wczesny system sprzętowy dla Internetu .

UART to zwykle pojedynczy (lub część) układ scalony (IC) używany do komunikacji szeregowej przez port szeregowy komputera lub urządzenia peryferyjnego . Jedno lub więcej urządzeń peryferyjnych UART jest zwykle zintegrowanych z chipami mikrokontrolera . Wyspecjalizowane UART są używane w samochodach , kartach inteligentnych i kartach SIM . Wczesne dalekopisy wykorzystywały pętle prądowe .

Pokrewne urządzenie, uniwersalny synchroniczny i asynchroniczny odbiornik-nadajnik (USART) również obsługuje pracę synchroniczną.

Przesyłanie i odbieranie danych szeregowych

Uniwersalny asynchroniczny odbiornik-nadajnik (UART) pobiera bajty danych i przesyła poszczególne bity w sposób sekwencyjny. W miejscu docelowym drugi UART ponownie składa bity w pełne bajty. Każdy UART zawiera rejestr przesuwny , który jest podstawową metodą konwersji między formami szeregowymi i równoległymi. Szeregowa transmisja informacji cyfrowych (bitów) za pośrednictwem pojedynczego przewodu lub innego medium jest mniej kosztowna niż równoległa transmisja wieloma przewodami.

UART zwykle nie generuje ani nie odbiera bezpośrednio sygnałów zewnętrznych używanych między różnymi elementami wyposażenia. Oddzielne urządzenia interfejsowe są używane do konwersji sygnałów poziomów logicznych UART na i z zewnętrznych poziomów sygnalizacji, które mogą być znormalizowanymi poziomami napięcia, poziomami prądu lub innymi sygnałami.

Komunikacja może być simpleksowa (tylko w jednym kierunku, bez możliwości wysyłania informacji przez urządzenie odbierające z powrotem do urządzenia nadawczego), full duplex (oba urządzenia wysyłają i odbierają w tym samym czasie) lub half duplex (urządzenia na zmianę wysyłają i odbierają ).

Ramki danych

Schemat przedstawiający taktowanie UART

Stan bezczynności, brak danych to wysokie napięcie lub zasilanie. Jest to historyczna spuścizna telegrafii, w której linia jest trzymana wysoko, aby pokazać, że linia i nadajnik nie są uszkodzone. Każdy znak jest obramowany jako logiczny bit startu dolnego, bity danych, ewentualnie bit parzystości i jeden lub więcej bitów stopu. W większości aplikacji najmniej znaczący bit danych (ten po lewej stronie na tym schemacie) jest przesyłany jako pierwszy, ale są wyjątki (takie jak terminal drukowania IBM 2741 ).

Bit startowy sygnalizuje odbiornikowi, że nadchodzi nowy znak. Następne pięć do dziewięciu bitów, w zależności od użytego zestawu kodów, reprezentuje znak. Jeśli używany jest bit parzystości, zostanie on umieszczony po wszystkich bitach danych. Kolejny jeden lub dwa bity są zawsze w stanie znaku (wysoki stan logiczny, tj. „1”) i nazywane są bitami stopu. Sygnalizują odbiorcy, że postać jest kompletna. Ponieważ bit startu ma stan logiczny niski (0), a bit stopu jest stanem logicznym wysokim (1), zawsze są co najmniej dwie gwarantowane zmiany sygnału między znakami.

Jeśli linia jest utrzymywana w stanie logicznym niskim przez czas dłuższy niż czas znaku, jest to warunek przerwania, który może zostać wykryty przez UART.

Odbiorca

Wszystkie operacje sprzętu UART są sterowane przez wewnętrzny sygnał zegarowy, który działa z wielokrotnością szybkości transmisji danych, zwykle 8 lub 16-krotnością szybkości transmisji. Odbiornik testuje stan przychodzącego sygnału na każdym impulsie zegarowym, szukając początku bitu startu. Jeśli pozorny bit startu trwa co najmniej połowę czasu bitu, jest ważny i sygnalizuje początek nowego znaku. Jeśli nie, jest uważany za impuls fałszywy i jest ignorowany. Po odczekaniu kolejnego bitu stan linii jest ponownie próbkowany, a wynikowy poziom jest taktowany do rejestru przesuwnego. Po upływie wymaganej liczby okresów bitowych dla długości znaku (zwykle od 5 do 8 bitów), zawartość rejestru przesuwnego jest udostępniana (równolegle) systemowi odbiorczemu. UART ustawi flagę wskazującą, że nowe dane są dostępne, a także może generować przerwanie procesora, aby zażądać, aby procesor hosta przesłał odebrane dane.

Komunikujące się UART nie mają wspólnego systemu taktowania poza sygnałem komunikacyjnym. Zazwyczaj układy UART ponownie synchronizują swoje zegary wewnętrzne przy każdej zmianie linii danych, która nie jest uważana za fałszywy impuls. Uzyskując w ten sposób informacje o taktowaniu, niezawodnie odbierają, gdy nadajnik wysyła z nieco inną prędkością niż powinien. Proste UART-y tego nie robią; zamiast tego resynchronizują się tylko na opadającej krawędzi bitu startowego, a następnie odczytują środek każdego oczekiwanego bitu danych, a ten system działa, jeśli szybkość transmisji danych jest wystarczająco dokładna, aby umożliwić niezawodne próbkowanie bitów stopu.

Jest to standardowa funkcja dla UART, która przechowuje ostatni znak podczas odbierania następnego. To „podwójne buforowanie” daje komputerowi odbierającemu cały czas transmisji znaku na pobranie odebranego znaku. Wiele UART ma małą pamięć buforową FIFO (pierwsze weszło, pierwsze wyszło ) między rejestrem przesuwnym odbiornika a interfejsem systemu hosta. Daje to procesorowi hosta jeszcze więcej czasu na obsłużenie przerwania z UART i zapobiega utracie odbieranych danych przy dużych szybkościach.

Nadajnik

Operacja transmisji jest prostsza, ponieważ taktowanie nie musi być określane na podstawie stanu linii, ani nie jest związane z żadnymi ustalonymi przedziałami czasowymi. Gdy tylko system wysyłający złoży znak w rejestrze przesuwnym (po uzupełnieniu poprzedniego znaku), UART generuje bit startu, przesuwa wymaganą liczbę bitów danych na linię, generuje i wysyła bit parzystości (jeśli jest używany ) i wysyła bity stopu. Ponieważ praca w pełnym dupleksie wymaga wysyłania i odbierania znaków w tym samym czasie, UART używają dwóch różnych rejestrów przesuwnych dla nadawanych i odbieranych znaków. Wysokowydajne układy UART mogą zawierać bufor transmisji FIFO (pierwszy wchodzi, pierwszy wychodzi), aby umożliwić procesorowi CPU lub kontrolerowi DMA umieszczenie wielu znaków w serii w FIFO, zamiast konieczności umieszczania jednego znaku na raz w rejestrze przesuwnym. Ponieważ transmisja jednego lub wielu znaków może zająć dużo czasu w stosunku do szybkości procesora, UART utrzymuje flagę pokazującą stan zajętości, tak aby system hosta wiedział, czy w buforze nadawczym lub rejestrze przesuwnym znajduje się co najmniej jeden znak; "gotowy na następny znak(i)" może być również sygnalizowany przerwaniem.

Podanie

Transmisja i odbiór UART muszą być ustawione na tę samą szybkość bitową, długość znaków, parzystość i bity stopu, aby zapewnić prawidłowe działanie. Odbierający UART może wykryć niedopasowane ustawienia i ustawić bit flagi „błąd ramek” dla systemu hosta; w wyjątkowych przypadkach odbierający UART wytworzy niekonsekwentny strumień uszkodzonych znaków i przekaże je do systemu hosta.

Typowe porty szeregowe używane z komputerami osobistymi podłączonymi do modemów używają ośmiu bitów danych, bez parzystości i jednego bitu stopu; w tej konfiguracji liczba znaków ASCII na sekundę jest równa przepływności bitowej podzielonej przez 10.

Niektóre bardzo tanie komputery domowe lub systemy wbudowane rezygnują z UART i używają procesora do próbkowania stanu portu wejściowego lub bezpośredniego manipulowania portem wyjściowym w celu transmisji danych. Chociaż bardzo intensywnie obciąża procesor (ponieważ taktowanie procesora jest krytyczne), układ UART można w ten sposób pominąć, oszczędzając pieniądze i miejsce. Technika ta jest znana jako bit-banging .

Historia

Niektóre wczesne schematy telegraficzne wykorzystywały impulsy o zmiennej długości (jak w kodzie Morse'a ) i obracające się mechanizmy zegarowe do przesyłania znaków alfabetycznych. Pierwszymi urządzeniami komunikacji szeregowej (z impulsami o stałej długości) były obrotowe mechaniczne przełączniki ( komutatory ). Różne kody znakowe wykorzystujące 5, 6, 7 lub 8 bitów danych stały się powszechne w teledrukarkach, a później jako komputerowe urządzenia peryferyjne. Dalekosiarz stanowił doskonałe urządzenie I/O ogólnego przeznaczenia dla małego komputera.

Gordon Bell z DEC zaprojektował pierwszy UART, zajmując całą płytkę drukowaną o nazwie Jednostka linia , dla PDP serii komputerów rozpoczynających z PDP-1 . Według Bella, główną innowacją UART było wykorzystanie próbkowania do konwersji sygnału na domenę cyfrową, co pozwoliło na bardziej niezawodne taktowanie niż poprzednie obwody, w których stosowano analogowe urządzenia do pomiaru czasu z ręcznie regulowanymi potencjometrami . Aby obniżyć koszty okablowania, płyty montażowej i innych komponentów, komputery te były również pionierami w sterowaniu przepływem za pomocą znaków XON i XOFF, a nie okablowania sprzętowego.

DEC skondensował projekt jednostki liniowej we wczesny jednoukładowy UART do własnego użytku. Firma Western Digital rozwinęła to w pierwszy szeroko dostępny jednoukładowy układ UART, WD1402A, około 1971 roku. Był to wczesny przykład układu scalonego o średniej skali . Innym popularnym układem był SCN2651 z rodziny Signetics 2650 .

Przykładem UART z początku lat 80. był układ National Semiconductor 8250 używany w oryginalnej karcie IBM PC Asynchronous Communications Adapter. W latach 90. opracowano nowsze UART z buforami na chipie. Pozwoliło to na większą prędkość transmisji bez utraty danych i bez konieczności tak częstej uwagi komputera. Na przykład popularny National Semiconductor 16550 ma 16-bajtowe FIFO i zrodził wiele wariantów, w tym 16C550, 16C650, 16C750 i 16C850 .

W zależności od producenta do identyfikacji urządzeń realizujących funkcje UART stosowane są różne terminy. Intel nazwał swoje urządzenie 8251 „Programowalnym interfejsem komunikacyjnym”. Technologia MOS 6551 była znana pod nazwą „Asynchronous Communications Interface Adapter” (ACIA). Termin „Serial Communications Interface” (SCI) został po raz pierwszy użyty w Motoroli około 1975 roku w odniesieniu do ich asynchronicznego interfejsu szeregowego start-stop, który inni nazywali UART. Zilog wyprodukował szereg kontrolerów komunikacji szeregowej lub SCC.

Począwszy od 2000 roku, większość komputerów kompatybilnych z IBM PC usunęła zewnętrzne porty COM RS-232 i używała portów USB, które mogą szybciej przesyłać dane. Dla użytkowników, którzy nadal potrzebują portów szeregowych RS-232, obecnie powszechnie stosowane są zewnętrzne mostki USB-UART . Łączą kable sprzętowe i układ scalony, aby wykonać konwersję USB i UART. Cypress Semiconductor i FTDI to dwaj znaczący komercyjni dostawcy tych chipów. Chociaż porty RS-232 nie są już dostępne dla użytkowników znajdujących się poza większością komputerów, wiele procesorów wewnętrznych i mikroprocesorów ma wbudowane UART w swoje chipy, aby dać projektantom sprzętu możliwość łączenia się z innymi chipami lub urządzeniami korzystającymi z RS-232 lub RS- 485 do komunikacji.

Struktura

UART zwykle zawiera następujące elementy:

  • generator zegara, zwykle wielokrotność przepływności, aby umożliwić próbkowanie w środku okresu bitowego
  • rejestry przesuwne wejściowe i wyjściowe
  • kontrola nadawania/odbierania
  • logika sterowania odczytem/zapisem
  • Pomiar Autobaud (opcjonalnie)
  • bufory nadawania/odbioru (opcjonalnie)
  • bufor systemowej magistrali danych (opcjonalnie)
  • Pamięć buforowa pierwsze weszło , pierwsze wyszło ( FIFO ) (opcja)
  • Sygnały wymagane przez kontroler DMA innej firmy (opcjonalnie)
  • Zintegrowany kontroler DMA do zarządzania magistralą (opcjonalnie)

Specjalne warunki nadawczo-odbiorcze

Błąd przekroczenia

„Błąd przepełnienia” występuje, gdy odbiorca nie może przetworzyć znaku, który właśnie wszedł, zanim nadejdzie następny. Różne urządzenia mają różne ilości miejsca w buforze do przechowywania odebranych znaków. Sterownik CPU lub DMA musi obsługiwać UART w celu usunięcia znaków z bufora wejściowego. Jeśli procesor lub kontroler DMA nie obsłuży UART wystarczająco szybko i bufor się zapełni, wystąpi błąd przepełnienia, a przychodzące znaki zostaną utracone.

Błąd niedomiaru

„Błąd niedopełnienia” występuje, gdy nadajnik UART zakończył wysyłanie znaku, a bufor nadawczy jest pusty. W trybach asynchronicznych jest to traktowane jako wskazanie, że nie pozostały żadne dane do przesłania, a nie błąd, ponieważ można dołączyć dodatkowe bity stopu. To wskazanie błędu jest powszechnie spotykane w USART, ponieważ niedomiar jest poważniejszy w systemach synchronicznych.

Błąd kadrowania

UART wykryje błąd ramki, gdy nie zobaczy bitu „stop” w oczekiwanym czasie bitu „stop”. Ponieważ bit „startu” jest używany do identyfikacji początku przychodzącego znaku, jego synchronizacja jest odniesieniem dla pozostałych bitów. Jeśli linia danych nie znajduje się w oczekiwanym stanie (wysokim), gdy oczekiwany jest bit „stop” (zgodnie z liczbą bitów danych i parzystości, dla których ustawiony jest UART), UART zasygnalizuje błąd ramki. Stan „przerwy” na linii jest również sygnalizowany jako błąd ramki.

Błąd parzystości

Błąd parzystości występuje, gdy parzystości liczby jeden bitów zgadza się z podanego przez bit parzystości. Sprawdzanie parzystości jest często wykorzystywane do wykrywania błędów transmisji. Użycie bitu parzystości jest opcjonalne, więc ten błąd wystąpi tylko wtedy, gdy włączono sprawdzanie parzystości.

Warunek zerwania

Stan przerwa występuje wówczas, gdy odbiornik jest wejście w „przestrzeni” (logiczny niski, tj „0”) poziomie dłużej niż jakiś okres czasu, zwykle, więcej niż raz znaków. Niekoniecznie jest to błąd, ale odbierany jest jako znak wszystkich bitów zerowych z błędem w ramce. Termin „przerwa” wywodzi się z sygnalizacji pętli prądowej , która była tradycyjną sygnalizacją używaną w dalekopisach . Stan „odstępu” linii pętli prądowej jest wskazywany przez brak przepływu prądu, a bardzo długi okres braku przepływu prądu jest często spowodowany przerwą lub inną usterką w linii.

Niektóre urządzenia celowo przekazują poziom „przestrzeni” dłużej niż postać jako sygnał uwagi. Gdy wskaźniki sygnalizacji są niedopasowane, nie można wysłać żadnych znaczących znaków, ale długi sygnał „przerwy” może być użytecznym sposobem na zwrócenie uwagi niedopasowanego odbiornika, aby coś zrobił (na przykład sam się zresetował). Systemy komputerowe mogą wykorzystywać długi poziom „przerwy” jako żądanie zmiany szybkości sygnalizacji, aby obsługiwać dostęp wdzwaniany z wieloma szybkościami sygnalizacji. DMX512 protokół używa warunek przerwania sygnalizować początek nowego pakietu.

Modele UART

Podwójny UART lub DUART łączy dwa UART w jeden chip. Podobnie poczwórny UART lub QUART łączy cztery UART w jeden pakiet, taki jak NXP 28L194. Ósemkowy UART lub OCTART łączy osiem UART w jeden pakiet, taki jak Exar XR16L788 lub NXP SCC2698.

Model Opis
WD1402A Pierwszy jednoukładowy UART w ogólnej sprzedaży. Wprowadzony około 1971. Kompatybilne chipy to Fairchild TR1402A i General Instruments AY-5-1013.
Exar XR21V1410
Intersil 6402
CDP 1854 (RCA, obecnie Intersil)
Zilog Z8440 Uniwersalny synchroniczny i asynchroniczny odbiornik-nadajnik . 2000 kb/s. Async, Bisync , SDLC , HDLC , X.25 . CRC . 4-bajtowy bufor RX. 2-bajtowy bufor TX. Dostarcza sygnały potrzebne kontrolerowi DMA innej firmy do wykonywania transferów DMA.
Z8530/Z85C30 Ten uniwersalny synchroniczny i asynchroniczny odbiornik-nadajnik ma 3-bajtowy bufor odbiorczy i 1-bajtowy bufor nadawczy. Posiada sprzęt przyspieszający przetwarzanie HDLC i SDLC. Wersja CMOS (Z85C30) dostarcza sygnały umożliwiające kontrolerowi DMA innej firmy wykonywanie transferów DMA. Może wykonywać komunikację asynchroniczną, synchroniczną na poziomie bajtów i synchroniczną na poziomie bitów.
8250 Przestarzałe z buforami 1-bajtowymi. Maksymalna prędkość standardowego portu szeregowego tych UART wynosi 9600 bitów na sekundę, jeśli system operacyjny ma opóźnienie przerwania 1 milisekundę . 8250 UART było używane w IBM PC 5150 i IBM PC/XT, podczas gdy 16450 UART był używany w komputerach z serii IBM PC/AT .
8251
Motorola 6850
6551
Rockwella 65C52
16450
82510 Ten UART umożliwia asynchroniczną pracę do 288 kbit/s, z dwoma niezależnymi czterobajtowymi FIFO. Został wyprodukowany przez firmę Intel co najmniej od 1993 do 1996 roku, a Innovastic Semiconductor ma arkusz danych 2011 dla IA82510.
16550 FIFO tego UARTa jest zepsute, więc nie może bezpiecznie działać szybciej niż UART 16450. 16550A i nowsze wersje naprawiają ten błąd.
16550A Ten UART ma 16-bajtowe bufory FIFO. Poziomy wyzwalania przerwań odbierania mogą być ustawione na 1, 4, 8 lub 14 znaków. Jego maksymalna standardowa prędkość portu szeregowego, jeśli system operacyjny ma opóźnienie przerwania 1 milisekundę, wynosi 128 kbit/s. Systemy z mniejszymi opóźnieniami przerwań lub z kontrolerami DMA mogą obsługiwać wyższe szybkości transmisji. Ten układ może dostarczać sygnały, które są potrzebne, aby umożliwić kontrolerowi DMA wykonywanie transferów DMA do i z UART, jeśli włączony jest tryb DMA wprowadzany przez ten UART. Został wprowadzony przez firmę National Semiconductor, która została sprzedana firmie Texas Instruments. National Semiconductor twierdził, że ten UART może działać z prędkością do 1,5 Mbit/s.
16C552
16650 Ten UART został wprowadzony przez firmę Startech Semiconductor, która jest obecnie własnością Exar Corporation i nie jest powiązana ze Startech.com. Wczesne wersje mają uszkodzony bufor FIFO i dlatego nie mogą bezpiecznie działać szybciej niż 16450 UART. Wersje tego UART, które nie zostały uszkodzone, mają 32-znakowe bufory FIFO i mogą działać ze standardowymi prędkościami portu szeregowego do 230,4 kbit/s, jeśli system operacyjny ma opóźnienie przerwania 1 milisekundę. Aktualne wersje tego UART przez Exar twierdzą, że są w stanie obsłużyć do 1,5 Mbit/s. Ten UART wprowadza funkcje Auto-RTS i Auto-CTS, w których sygnał RTS# jest kontrolowany przez UART, aby zasygnalizować urządzeniu zewnętrznemu zatrzymanie transmisji, gdy bufor UART jest pełny do lub poza ustawionym przez użytkownika punktem wyzwalania i zatrzymać transmisję do urządzenia, gdy urządzenie generuje wysoki sygnał CTS# (logiczne 0).
16750 Bufory 64-bajtowe. Ten UART może obsłużyć maksymalną standardową prędkość portu szeregowego 460,8 kbit/s, jeśli maksymalne opóźnienie przerwania wynosi 1 milisekundę. Ten UART został wprowadzony przez firmę Texas Instruments. TI twierdzi, że wczesne modele mogą działać z prędkością do 1 Mbit/s, a późniejsze modele z tej serii mogą działać z prędkością do 3 Mbit/s.
16850 128-bajtowe bufory. Ten UART może obsłużyć maksymalną standardową prędkość portu szeregowego 921,6 kbit/s, jeśli maksymalne opóźnienie przerwania wynosi 1 milisekundę. Ten UART został wprowadzony przez firmę Exar Corporation. Exar twierdzi, że wczesne wersje mogą działać z prędkością do 2 Mbit/s, a nowsze mogą działać z prędkością do 2,25 Mbit/s, w zależności od daty produkcji.
16C850
16950 128-bajtowe bufory. Ten UART może obsłużyć maksymalną standardową prędkość portu szeregowego 921,6 kbit/s, jeśli maksymalne opóźnienie przerwania wynosi 1 milisekundę. Ten UART obsługuje znaki 9-bitowe oprócz znaków 5- do 8-bitowych, które obsługują inne UART. Zostało to wprowadzone przez firmę Oxford Semiconductor, która jest obecnie własnością PLX Technology. Oxford/PLX twierdzi, że ten UART może działać z prędkością do 15 Mbit/s. Warianty PCI Express firmy Oxford/PLX są zintegrowane z własnym kontrolerem magistrali PCIe DMA. Ten kontroler DMA wykorzystuje sygnały trybu DMA UART, które zostały zdefiniowane dla 16550. Kontroler DMA wymaga od CPU skonfigurowania każdej transakcji i odpytywania rejestru statusu po rozpoczęciu transakcji, aby określić, czy transakcja została wykonana. Każda transakcja DMA może przesyłać od 1 do 128 bajtów między buforem pamięci a UART. Warianty PCI Express mogą również umożliwiać procesorowi przesyłanie danych między sobą a UART za pomocą transferów 8-, 16- lub 32-bitowych przy użyciu zaprogramowanych wejść/wyjść.
16C950
16954 Czteroportowa wersja 16950/16C950. 128-bajtowe bufory. Ten UART może obsłużyć maksymalną standardową prędkość portu szeregowego 921,6 kbit/s, jeśli maksymalne opóźnienie przerwania wynosi 1 milisekundę. Ten UART obsługuje znaki 9-bitowe oprócz znaków 5–8-bitowych obsługiwanych przez inne UART. Zostało to wprowadzone przez firmę Oxford Semiconductor, która jest obecnie własnością PLX Technology. Oxford/PLX twierdzi, że ten UART może działać z prędkością do 15 Mbit/s. Warianty PCI Express firmy Oxford/PLX są zintegrowane z własnym kontrolerem magistrali PCIe DMA. Ten kontroler DMA jest kontrolowany przez sygnały trybu DMA UART, które zostały zdefiniowane dla 16550. Kontroler DMA wymaga od procesora skonfigurowania każdej transakcji i odpytywania rejestru statusu po rozpoczęciu transakcji, aby określić, czy transakcja została wykonana. Każda transakcja DMA może przesyłać od 1 do 128 bajtów między buforem pamięci a UART. Warianty PCI Express mogą również umożliwiać procesorowi przesyłanie danych między sobą a UART za pomocą transferów 8-, 16- lub 32-bitowych przy użyciu zaprogramowanych wejść/wyjść.
16C954
16C1550/16C1551 UART z 16-bajtowymi buforami FIFO. Do 1,5 Mb/s. ST16C155X nie jest zgodny ze standardem przemysłowym 16550 i nie będzie działać ze standardowym sterownikiem portu szeregowego w systemie Microsoft Windows.
16C2450 Podwójny UART z 1-bajtowymi buforami FIFO.
16C2550 Podwójny UART z 16-bajtowymi buforami FIFO. Pin-to-pin i funkcjonalnie kompatybilny z 16C2450. Oprogramowanie kompatybilne z INS8250 i NS16C550.
SCC2691 Obecnie produkowany przez NXP model 2691 jest jednokanałowym UART, który zawiera również programowalny licznik/timer. 2691 ma jednobajtowy rejestr trzymania nadajnika i 4-bajtowy odbiór FIFO . Maksymalna standardowa prędkość 2692 to 115,2 kbit/s.

28L91 to zgodna w górę wersja 2691, oferująca wybieralne 8- lub 16-bajtowe FIFO nadajnika i odbiornika, ulepszone wsparcie dla rozszerzonych szybkości transmisji danych i szybsze charakterystyki taktowania magistrali, dzięki czemu urządzenie jest bardziej odpowiednie do użytku z wysokowydajnymi mikroprocesorami.

Zarówno 2691, jak i 28L91 mogą również pracować w trybach TIA-422 i TIA-485 , a także mogą być zaprogramowane do obsługi niestandardowych szybkości transmisji danych. Urządzenia są produkowane w pakietach PDIP-40, PLCC-44 i 44-pinowe QFP i można je łatwo dostosować zarówno do magistrali Motoroli, jak i Intela . Zostały również z powodzeniem przystosowane do autobusów 65C02 i 65C816 . 28L91 będzie działać przy napięciu 3,3 lub 5 woltów.

SCC28L91
SCC2692 Obecnie produkowane przez NXP, urządzenia te są podwójnymi UART-ami (DUART), składającymi się z dwóch kanałów komunikacyjnych, skojarzonych rejestrów kontrolnych i jednego licznika/timera. Każdy kanał komunikacyjny jest niezależnie programowalny i obsługuje niezależne szybkości transmisji i odbioru danych.

2692 ma jednobajtowy rejestr przechowujący nadajnik i 4-bajtowy odbiornik FIFO dla każdego kanału. Maksymalna standardowa prędkość obu kanałów 2692 wynosi 115,2 kbit/s.

26C92 to zgodna w górę wersja 2692, z 8-bajtowymi FIFO nadajnika i odbiornika dla lepszej wydajności podczas ciągłej dwukierunkowej transmisji asynchronicznej (CBAT) na obu kanałach przy maksymalnej standardowej prędkości 230,4 kbit/s. Litera C w numerze części 26C92 nie ma nic wspólnego z procesem produkcyjnym; wszystkie NXP UART są urządzeniami CMOS .

28L92 to zgodna w górę wersja 26C92, oferująca wybieralne 8- lub 16-bajtowe FIFO nadajnika i odbiornika, ulepszone wsparcie dla rozszerzonych szybkości transmisji danych i szybsze charakterystyki taktowania magistrali, dzięki czemu urządzenie jest bardziej odpowiednie do użytku z wysokowydajnymi mikroprocesorami.

2692, 26C92 i 28L92 mogą pracować w trybach TIA-422 i TIA-485, a także mogą być zaprogramowane do obsługi niestandardowych szybkości transmisji danych. Urządzenia są produkowane w pakietach PDIP-40, PLCC-44 i 44-pinowe QFP i można je łatwo dostosować zarówno do magistrali Motoroli, jak i Intela. Zostały również z powodzeniem przystosowane do autobusów 65C02 i 65C816. 28L92 będzie działać przy napięciu 3,3 lub 5 woltów.

SC26C92
SC28L92
SCC28C94 Obecnie produkowany przez NXP, poczwórny układ UART 28C94 (QUART) jest funkcjonalnie podobny do pary SCC26C92 DUART zamontowanych we wspólnym pakiecie, z dodatkiem systemu przerwań arbitrażowych dla wydajnego przetwarzania w okresach intensywnej aktywności kanału. Obecne są pewne dodatkowe sygnały do ​​obsługi funkcji zarządzania przerwaniami, a pomocnicze styki wejścia/wyjścia są rozmieszczone inaczej niż w 26C92. Poza tym model programowania dla 28C94 jest podobny do modelu 26C92, wymagając jedynie niewielkich zmian w kodzie, aby w pełni wykorzystać wszystkie funkcje. 28C94 obsługuje maksymalną standardową prędkość 230,4 kbit/s, jest dostępny w pakiecie PLCC-52 i można go łatwo dostosować zarówno do magistrali Motoroli, jak i Intela. Został również z powodzeniem przystosowany do autobusu 65C816.
SCC2698B Obecnie produkowany przez NXP, 2698 ósemkowy UART (OCTART) to w zasadzie cztery SCC2692 DUART w jednym opakowaniu. Dane techniczne są takie same jak SCC2692 (nie SCC26C92). Z powodu braku FIFO nadajnika i małego rozmiaru FIFO odbiornika, 2698 może powodować „burzę” przerwań, jeśli wszystkie kanały są jednocześnie zaangażowane w ciągłą dwukierunkową komunikację. Urządzenie jest produkowane w pakietach PDIP-64 i PLCC-84 i można je łatwo dostosować zarówno do magistrali Motoroli, jak i Intela. 2698 został również z powodzeniem przystosowany do autobusów 65C02 i 65C816.
SCC28L198 Obecnie produkowany przez NXP, 28L198 OCTART jest zasadniczo rozwiniętym rozszerzeniem SCC28C94 QUART opisanego powyżej, z ośmioma niezależnymi kanałami komunikacyjnymi, jak również z arbitrażowym systemem przerwań dla wydajnego przetwarzania w okresach intensywnej aktywności kanału. 28L198 obsługuje maksymalną standardową prędkość 460,8 kbit/s, jest dostępny w pakietach PLCC-84 i LQFP-100 i można go łatwo dostosować do magistral Motoroli i Intela. 28L198 będzie działać przy napięciu 3,3 lub 5 woltów.
Z85230 Tryby synchroniczne/asynchroniczne, 2 porty. Dostarcza sygnały potrzebne kontrolerowi DMA innej firmy, potrzebnemu do wykonywania transferów DMA. 4-bajtowy bufor do wysyłania, 8-bajtowy bufor do odbioru na kanał. Tryby SDLC/HDLC. 5 Mbit/s w trybie synchronicznym.
Hayes ESP Bufory 1 KB , 921,6 kbit/s , 8 portów.
Exar XR17V352, XR17V354 i XR17V358 Podwójne, poczwórne i ósemkowe układy UART PCI Express z zestawem rejestrów zgodnych z 16550, 256-bajtowe TX i RX FIFO, programowalne poziomy wyzwalania TX i RX, liczniki poziomów TX/RX FIFO, generator ułamkowej szybkości transmisji, automatyczny sprzęt RTS/CTS lub DTR/DSR sterowanie przepływem z programowalną histerezą, automatyczne sterowanie przepływem programowe Xon/Xoff, wyjście RS-485 half duplex sterujące kierunkiem z programowalnym opóźnieniem obrotu, Multi-drop z automatyczną detekcją adresu, koder/dekoder danych podczerwieni (IrDA 1.1). Są określone do 25 Mbit/s. Arkusze danych pochodzą z 2012 roku.
Exar XR17D152, XR17D154 i XR17D158 Podwójna, poczwórna i ósemkowa magistrala PCI UART z zestawem rejestrów 5G kompatybilnym z 16C550, 64-bajtowe transmisje i odbieranie FIFO, liczniki poziomów transmisji i odbioru FIFO, programowalny poziom wyzwalania TX i RX FIFO, automatyczne sterowanie przepływem RTS/CTS lub DTR/DSR, automatyczne Sterowanie przepływem w oprogramowaniu Xon/Xoff, wyjście sterujące RS485 HDX z wybieranym opóźnieniem, koder/dekoder danych podczerwieni (IrDA 1.0), programowalna szybkość transmisji danych z preskalerem, szybkość transmisji danych szeregowych do 6,25 Mb/s. Arkusze danych datowane są na lata 2004 i 2005.
Exar XR17C152, XR17C154 i XR17C158 Podwójne, poczwórne i ósemkowe szyny UART 5 V PCI z rejestrami kompatybilnymi z 16C550, 64-bajtowe transmisje i odbieranie FIFO, liczniki poziomów transmisji i odbioru FIFO, automatyczne sterowanie przepływem RTS/CTS lub DTR/DSR, automatyczna kontrola przepływu oprogramowania Xon/Xoff, RS485 Sterowanie półdupleksowe z wybieralnym opóźnieniem, koder/dekoder danych w podczerwieni (IrDA 1.0), programowalna szybkość transmisji danych z preskalerem, szeregowa szybkość transmisji danych do 6,25 Mbit/s. Arkusze danych datowane są na lata 2004 i 2005.
Exar XR17V252, XR17V254 i XR17V258 Podwójne, poczwórne i ósemkowe magistrale PCI UART 66 MHz z obsługą zarządzania energią, zestaw rejestrów zgodnych z 16C550, 64-bajtowe FIFO TX i RX z licznikami poziomów i programowalnymi poziomami wyzwalania, generator ułamkowej szybkości transmisji, automatyczny przepływ sprzętowy RTS/CTS lub DTR/DSR sterowanie z programowaną histerezą, automatyczne sterowanie przepływem przez oprogramowanie Xon/Xoff, wyjście sterujące kierunkiem RS-485 half duplex z wybieranym opóźnieniem obrotu, koder/dekoder danych podczerwieni (IrDA 1.0), programowalna szybkość transmisji danych z preskalerem. Arkusze danych datowane są na lata 2008 i 2010.

UART w modemach

Modemy do komputerów osobistych podłączane do gniazda płyty głównej muszą również zawierać na karcie funkcję UART. Oryginalny układ 8250 UART dostarczany z komputerem osobistym IBM miał po jednym buforze znakowym dla odbiornika i nadajnika, co oznaczało, że oprogramowanie komunikacyjne działało słabo przy prędkościach powyżej 9600 bitów/s, zwłaszcza w przypadku pracy w systemie wielozadaniowym lub w przypadku obsługi przerwań z kontrolerów dysków. Szybkie modemy wykorzystywały układy UART, które były kompatybilne z oryginalnym układem, ale zawierały dodatkowe bufory FIFO, dając oprogramowaniu dodatkowy czas na reakcję na przychodzące dane.

Spojrzenie na wymagania dotyczące wydajności przy wysokich przepływnościach pokazuje, dlaczego 16-, 32-, 64- lub 128-bajtowe FIFO jest koniecznością. Specyfikacja Microsoft dla systemu DOS wymaga, aby przerwania nie były wyłączane na dłużej niż 1 milisekundę na raz. Niektóre dyski twarde i kontrolery wideo naruszają tę specyfikację. 9600 bitów/s będzie dostarczać znak w przybliżeniu co milisekundę, więc 1-bajtowe FIFO powinno być wystarczające przy tej szybkości w systemie DOS, który spełnia maksymalny czas wyłączenia przerwań. Stawki powyżej tej wartości mogą otrzymać nowy znak przed pobraniem starego, a tym samym stary znak zostanie utracony. Nazywa się to błędem przekroczenia i powoduje utratę jednego lub więcej znaków.

16-bajtowe FIFO pozwala na odebranie do 16 znaków, zanim komputer będzie musiał obsłużyć przerwanie. Zwiększa to maksymalną szybkość transmisji bitów, jaką komputer może niezawodnie przetwarzać, z 9600 do 153 000 bitów/s, jeśli ma czas martwy przerwania wynoszący 1 milisekundę. 32-bajtowy FIFO zwiększa maksymalną szybkość do ponad 300 000 bitów/s. Drugą korzyścią z posiadania FIFO jest to, że komputer musi obsłużyć tylko około 8 do 12% przerwań, pozwalając procesorowi na aktualizowanie ekranu lub wykonywanie innych zadań. W ten sposób poprawią się również reakcje komputera.

Zobacz też

Bibliografia

Dalsza lektura

  • Kompletny port szeregowy: porty COM, wirtualne porty USB COM i porty dla systemów wbudowanych ; Wydanie II; Jana Axelsona; Badania Lakeview; 380 stron; 2007; ISBN  978-1-931-44806-2 .
  • Kompletny port szeregowy: Programowanie i obwody dla łączy i sieci RS-232 i RS-485 ; Wydanie I; Jana Axelsona; Badania Lakeview; 306 stron; 1998; ISBN  978-0-965-08192-4 .
  • Port szeregowy i mikrokontrolery: zasady, obwody i kody źródłowe ; Wydanie I; Grzegorza Niemirowskiego; Utwórz przestrzeń; 414 stron; 2013; ISBN  978-1-481-90897-9 .
  • Programowanie szeregowe (Wikibook) .

Zewnętrzne linki