Portul Serial

download Portul Serial

of 24

Transcript of Portul Serial

  • 8/6/2019 Portul Serial

    1/24

    3. PORTUL SERIAL

    Aceast lucrare prezint principiile comunicaiei seriale i structura porturilor seriale alecalculatoarelor IBM PC, n particular a familiei 16x50 de controlere seriale utilizate pentru acestecalculatoare.

    3.1. Modelul comunicaiei seriale

    Un exemplu de sistem pentru comunicaia serial este ilustrat n figura 3.1.

    Figura 3.1. Sistem de comunicaie serial.

    Componentele unui sistem de comunicaie serial sunt urmtoarele:

    1. ETD Echipamente terminale de date (calculatoare, terminale de date). Acestea conin iinterfeele seriale sau controlerele de comunicaie.

    2. ECD Echipamente pentru comunicaia de date. Aceste echipamente se numesc modemuri i permit calculatorului s transmit informaii printr-o linie telefonic analogic. Funciileprincipale realizate de un modem sunt urmtoarele:

    Conversia digital/analogic a informaiilor din calculator i conversia analog/digital asemnalelor de pe linia telefonic analogic.

    Modularea/demodularea unui semnal purttor. La transmisie, modemul suprapune(moduleaz) semnalele digitale ale calculatorului peste semnalul purttor al liniei

    telefonice. La recepie, modemul extrage (demoduleaz) informaiile transportate desemnalul purttor i le transfer calculatorului.

    3. Linia de comunicaie reprezint o linie fizic sau o linie telefonic. Linia telefonic poate fi olinie comutat (conectat la o central telefonic) sau o linie nchiriat (dedicat).

    4. Circuitul de date cuprinde poriunea dintre dou echipamente terminale de date, deci,modemurile i linia de comunicaie. Pe distane reduse, este posibil comunicaia serialdirect ntre dou echipamente terminale de date prin linii fizice, fr utilizarea unormodemuri. n acest caz, circuitul de date este reprezentat de aceste linii.

  • 8/6/2019 Portul Serial

    2/24

    Sisteme de intrare/ieire2

    5. Legtura de date conine circuitul de date i interfeele seriale ale echipamentelor terminale dedate.

    n funcie de numrul de echipamente interconectate, o legtur serial poate fipunct la punct(dou echipamente) sau multi-punct(mai mult de dou echipamente).

    3.2. Parametrii comunicaiei serialeViteza de comunicaie (numit i debit binar) este msurat n bii/s (bps):

    TD

    1 [bii/s]

    unde Teste perioada de timp necesar pentru transmisia sau recepia unui singur bit.Modemul reprezint semnalele de date prin diferite stri electrice, n funcie de tipul de

    modulaie pe care l utilizeaz: frecven, amplitudine, sau faz. Fiecare stare electric este meninutla ieirea modemului pentru un interval de timp numitperioad de modulaie (). Viteza de modulaieeste inversul perioadei de modulaie, reprezentnd numrul schimbrilor pe secund ale strii electricea modemului:

    1mV [baud]

    Unitatea de msur a vitezei de modulaie este baud, dup numele inginerului i telegrafistuluifrancez Jean-Maurice Baudot. Relaia dintre viteza de comunicaie D i viteza de modulaie Vm este:

    D = Vm log2 n [bii/s]

    unde n este numrul strilor electrice distincte ale modemului. n cazul particular cnd exist doardou stri electrice distincte ale modemului, viteza de comunicaie este egal cu viteza de modulaie.n general ns, exist un numr mai mare de stri electrice ale modemului, astfel nct viteza decomunicaie este un multiplu al vitezei de modulaie.

    Viteza de modulaie este confundat adesea cu viteza de comunicaie (debitul binar). Viteza demodulaie (exprimat n baud) este rata cu care se modific strile electrice ale modemului ntr-o

    secund. De exemplu, dac se utilizeaz modulaia n frecven, iar frecvena semnalului purttor sepoate modifica de ctre modem cu o rat de 2.400 de ori pe secund, viteza de modulaie este de 2.400baud. Primele modemuri codificau un bit de 0 printr-o anumit frecven i un bit de 1 printr-o altfrecven. n acest caz particular, viteza de modulaie are aceeai valoare cu viteza de comunicaie . ngeneral ns, modemurile codific mai muli bii de informaie printr-o stare electric. De exemplu,dac modemul codific 4 bii de informaie printr-o anumit frecven, pentru exemplul anterior vitezade comunicaie va fi de 4 2.400 = 9.600 bii/s.

    3.3. Tipuri de comunicaie serial

    Din punctul de vedere al direciei de transfer, se pot distinge urmtoarele tipuri decomunicaie serial:

    Simplex; Semiduplex; Duplex.

    n cazul comunicaiei simplex, datele sunt transferate ntotdeauna n aceeai direcie, de laechipamentul transmitor la cel receptor. La comunicaiasemiduplex, fiecare echipament terminal dedate funcioneaz alternativ ca transmitor, iar apoi ca receptor. Pentru acest tip de conexiune, estesuficient o singur linie de transmisie (dou fire de legtur). ntr-o comunicaie duplex (numit iduplex integral), datele se transfer simultan n ambele direcii. Primele conexiuni duplex necesitaudou linii de transmisie (patru fire de legtur), dar conexiunile ulterioare necesit o singur linie.

  • 8/6/2019 Portul Serial

    3/24

    3. Portul serial 3

    Din punctul de vedere al sincronizrii dintre transmitor i receptor, exist dou tipuri decomunicaie serial:

    Asincron; Sincron.

    3.3.1. Comunicaia asincron

    Pentru a asigura sincronizarea dintre transmitor i receptor, fiecare caracter transmis este precedat de un bit de START, cu valoarea logic 0 (space), i este urmat de cel puin un bit deSTOP, cu valoarea logic 1 (mark). Biii de START i de STOP ncadreaz deci fiecare caractertransmis; caracterul transmis ntre aceti doi bii reprezint un cadru de date. Un asemenea cadrure prezint informaia digital de baz ntr-un sistem de comunicaie serial. n cazul comunicaieiasincrone, intervalul de timp ntre transmisia a dou caractere succesive este variabil, pe durata acestuiinterval linia de comunicaie fiind n starea 1 logic. Acest mod de comunicaie este numit istart-stop.

    Sincronizarea la nivel de bit se realizeaz cu ajutorul semnalelor de ceas locale cu aceeaifrecven. Atunci cnd receptorul detecteaz nceputul unui caracter indicat prin bitul de START,pornete un oscilator de ceas local, care permite eantionarea corect a biilor individuali aicaracterului. Eantionarea biilor se realizeaz aproximativ la mijlocul intervalului corespunztor

    fiecrui bit.Figura 3.2 ilustreaz transmisia caracterului cu codul ASCII 61h. Dup bitul de START,avnd durata T corespunztoare unui bit, transmisia caracterului ncepe cu bitul cel mai puinsemnificativ b0. Dup transmisia bitului cel mai semnificativ b7, se transmite un bit de paritate p; nacest exemplu, paritatea este impar. Bitul de paritate este opional, iar n cazul n care se adaug lacaracterul transmis, paritatea poate fi selectat pentru a fipar sau impar. Exist i posibilitatea ca bitul de paritate s fie setat la 0 sau 1, indiferent de paritatea efectiv a caracterului. n exemplulilustrat, la sfritul caracterului se transmit doi bii de STOPs1 is2, dup care linia rmne n starea 1logic un timp nedefinit. Acest timp corespunde unui interval de pauz.

    Figura 3.2. Comunicaie asincron.

    n cazul comunicaiei asincrone, sincronizarea la nivel de bit este asigurat numai pe duratatransmisiei efective a fiecrui caracter. O asemenea comunicaie este orientat pe caractere individualei are dezavantajul c necesit informaii suplimentare n proporie de cel puin 25% pentruidentificarea fiecrui caracter.

    3.3.2. Comunicaia sincron

    n cazul comunicaiei sincrone, un cadru nu conine un singur caracter, ci un bloc de caracteresau un mesaj. Sincronizarea la nivel de bit trebuie asigurat permanent, nu numai n timpul transmisieipropriu-zise, ci i n intervalele de pauz. De aceea, timpul este divizat n mod continuu n intervaleelementare la transmitor, intervale care trebuie regsite apoi la receptor. Aceasta pune anumitepro bleme. Dac ceasul local al receptorului are o frecven care difer ntr-o anumit msur defrecvena transmitorului, vor apare erori la recunoaterea caracterelor, din cauza lungimii blocurilorde caractere.

  • 8/6/2019 Portul Serial

    4/24

    Sisteme de intrare/ieire4

    Pentru a se evita asemenea erori, ceasul receptorului trebuie resincronizat frecvent cu cel altransmitorului. Aceasta se poate realiza dac se asigur c exist suficiente tranziii de la 1 la 0 i dela 0 la 1 n mesajul transmis. Dac datele de transmis constau din iruri lungi de 1 sau de 0, trebuieinserate tranziii suficiente pentru resincronizarea ceasurilor. Asemenea tehnici sunt dificil deimplementat, astfel nct se utilizeaz de obicei o tehnic numit comunicaie asincron sincronizat(numit n mod simplu comunicaie sincron).

    Acest tip de comunicaie este caracterizat de faptul c, dei mesajul este transmis ntr-un modsincron, nu exist o sincronizare n intervalul de timp dintre dou mesaje. Informaia este transmissub forma unor blocuri de caractere sau a unor bii succesivi, fr bii de START i STOP. Pentruajustarea oscilatorului local la nceputul unui mesaj, fiecare mesaj este precedat de un numr decaractere speciale de sincronizare, de exemplu, caracterul SYN (16h). Pentru meninerea sincronizrii,se pot insera caractere de sincronizare suplimentare n mesajul transmis, la anumite intervale de timp.

    La receptor exist trei nivele de sincronizare:

    Sincronizare la nivel de bit, utiliznd circuite cu calare de faz PLL (PhaseLocked Loop)1, pebaza tranziiilor existente n semnalul recepionat;

    Sincronizare la nivel de caracter, asigurat prin recunoaterea anumitor caractere desincronizare;

    Sincronizare la nivel de bloc sau mesaj, care depinde de protocolul de date utilizat.

    3.4. Standardul RS-232C

    Specificaiile electrice ale portului serial utilizat la calculatoarele IBM PC au fost definite nstandardul RS-232C ( Reference Standard No. 232, Revision C), elaborat n anul 1969 de ctreComitetul de Standarde din SUA, cunoscut azi sub numele de Asociaia Industriei Electronice (EIA Electronic Industries Association). Standardul a fost elaborat pentru comunicaia digital ntre uncalculator i un terminal aflat la distan sau ntre dou terminale, fr utilizarea unui calculator.Terminalele erau conectate prin linii telefonice, astfel nct erau necesare modemuri la ambele capeteale liniei de comunicaie.

    Standardul RS-232C a suferit diferite modificri, fiind elaborate mai multe revizii ale acestuia.De exemplu, n anul 1987 a fost elaborat o nou revizie a standardului, numit EIA RS-232D. n anul1991, EIA i Asociaia Industriei de Telecomunicaii (TIATelecommunications Industry Association)

    au elaborat revizia E a standardului (EIA/TIA RS-232E). Revizia curent este EIA RS-232F, publicatn anul 1997. Totui, indiferent de revizia acestuia, standardul este numit de cele mai multe ori RS-232C sau RS-232.

    n Europa, versiunea echivalent standardului RS-232C este V.24, elaborat de comitetulCCITT (Comit Consultatif International pour Tlphonie et Tlgraphie). Denumirea acestui comiteta fost schimbat la nceputul anilor 1990 nInternational Telecommunications Union (ITU). Ambelestandarde specific semnalele utilizate pentru comunicaie, nivelele de tensiune, protocolul util izatpentru controlul fluxului de date i conectorii interfeei seriale.

    Standardul RS-232C definete att o comunicaie asincron, ct i una sincron. Nu suntdefinite detalii cum sunt codificarea caracterelor (ASCII, Baudot, EBCDIC), ncadrarea caracterelor(lungimea caracterului, numrul biilor de stop, paritatea) i nici vitezele de comunicaie, deistandardul este destinat pentru viteze mai mici de 20.000 bii/s. Echipamentele actuale permit nsviteze superioare de comunicaie, utiliznd nivele de tensiune care sunt compatibile cu cele specificate

    de standard. Porturile seriale ale calculatoarelor permit, de obicei, selecia uneia din urmtoarele vitezede comunicaie: 150; 300; 600; 1.200; 2.400; 4.800; 9.600; 19.200; 38.400; 57.600; 115.200 bii/s.

    O legtur de baz RS-232C necesit doar trei conexiuni: una pentru transmisie, una pentrurecepie i una pentru masa electric comun. Cele mai multe legturi seriale utilizeaz ns i semnalepentru controlul fluxului de date.

    1 Un circuit PLL reprezint un sistem n bucl nchis pentru controlul frecvenei unui oscilator. Funcionarea sase bazeaz pe detectarea diferenei de faz ntre semnalele de intrare i de ieire ale oscilatorului controlat.

  • 8/6/2019 Portul Serial

    5/24

    3. Portul serial 5

    Spre deosebire de alte tipuri de comunicaie serial care sunt difereniale2, comunicaiaRS-232C este una obinuit, utiliznd cte un fir pentru fiecare semnal. Dei astfel se simplificcircuitele necesare interfeei, n acelai timp se reduce i distana maxim de comunicaie n cazul uneilegturi directe, fr utilizarea modemurilor. Standardul RS-232C specific o distan maxim de 15m. Distana poate fi mrit dac se utilizeaz viteze de comunicaie mai reduse.

    Tensiunile electrice specificate de standardul RS-232C sunt urmtoarele:

    Valoarea logic 0 corespunde unei tensiuni pozitive ntre +3 V i +25 V; Valoarea logic 1 corespunde unei tensiuni negative ntre3 V i25 V.

    3.5. Semnalele interfeei seriale

    Interfaa serial utilizeaz att semnale pentru transmisia i recepia datelor, ct i semnale pentru controlul fluxului de date ntre un echipament terminal de date i un echipament pentrucomunicaia de date. Figura 3.3 prezint semnalele interfeei seriale conform standardului RS-232C.Legtura ilustrat este cea pentru care a fost conceput iniial portul serial, i anume, conectarea unuimodem la calculator. Figura indic numrul pinilor conectorilor DB-25 utilizai n cazul uneiasemenea legturi prin modemuri; numerele din paranteze reprezint semnalele conform standarduluiV.24.

    Figura 3.3. Semnalele interfeei seriale.

    Cele mai importante semnale sunt descrise n continuare.

    Transmit Data, TD (Transmisie Date)

    Datele sunt transmise serial pe aceast linie de ctre calculator. Dup bitul de start, setransmite bitul cel mai puin semnificativ al unui caracter. n general, pentru transmisie este necesar ca

    2 O comunicaie diferenial utilizeaz cte o pereche de fire pentru fiecare semnal. Exemple de interfee careutilizeaz comunicaia diferenial sunt interfeele RS-422 i RS-485, sau magistralele USB i IEEE 1394.

  • 8/6/2019 Portul Serial

    6/24

    Sisteme de intrare/ieire6

    semnaleleRTS, CTS,DTR iDSR s fie active. Aceste semnale sunt activate n cadrul unei secvene destabilire a legturii cu modemul.

    Receive Data, RD (Recepie date)

    Aceast linie este utilizat de calculator pentru recepia datelor de la modem sau de la unechipament extern.

    Data Terminal Ready, DTR (Terminal de date operaional)Atunci cnd calculatorul este operaional i pregtit pentru comunicaia de date, activeaz

    semnalulDTR. Modemul va rspunde la semnalulDTRprin activarea semnalului DSR.

    Data Set Ready, DSR (Modem operaional)

    Atunci cnd modemul sau echipamentul extern este operaional i pregtit pentru comunicaiade date, activeaz semnalul DSR. Acest semnal este activat de modem ca rspuns la activareasemnaluluiDTR de ctre calculator. Calculatorul va transmite date ctre modem doar n cazul n caresemnalulDSR este activ.

    Request To Send, RTS (Cerere de emisie)

    Atunci cnd calculatorul este pregtit pentru transmisia datelor, activeaz semnalul RTS. Acestsemnal indic modemului faptul c poate transmite date ctre calculator. Un semnal RTS inactiv va preveni modemul de a transmite date ctre calculator. Aceasta permite calculatorului s controlezefluxul datelor transmise de modem. Rspunsul la semnalulRTSse recepioneaz de calculator pe liniaCTS.

    Clear To Send, CTS (Gata de emisie)

    Prin activarea acestui semnal, modemul sau echipamentul extern indic faptul c este pregtitpentru recepia datelor de la calculator. Semnalul CTSeste activat de modem ca rspuns la activareasemnaluluiRTSde ctre calculator. Un semnal CTSinactiv va preveni calculatorul de a transmite datectre modem. Aceasta permite modemului s controleze fluxul datelor transmise de calculator.

    Carrier Detect, CD (Detectare purttoare de semnal)

    Prin activarea acestui semnal, modemul semnaleaz calculatorului faptul c a detectatsemnalul purttor al altui modem pe linia telefonic, deci, exist o conexiune cu un modem aflat ladistan. ntr-o legtur serial fr modemuri, activarea semnalului CD indic faptul c este posibilcomunicaia cu un echipament de la cellalt capt al liniei. De multe ori, acest semnal este ignorat decalculator.

    Ring Indicator, RI (Indicator de apel)

    Atunci cnd modemul detecteaz pe linia telefonic semnalul de apel de la un alt modem,activeaz semnalul RI. Acest semnal permite programului care ruleaz pe calculator s rspund nmod automat la un apel telefonic de la distan.

    Transmit Clock, TC (Ceas pentru transmisie)

    Reprezint semnalul de ceas pentru transmisie furnizat calculatorului de ctre modem n cazulunei comunicaii sincrone. Nu este utilizat pentru comunicaia asincron.

    Receive Clock, RC (Ceas pentru recepie)Reprezint semnalul de ceas pentru recepie furnizat calculatorului de ctre modem n cazul

    unei comunicaii sincrone. Nu este utilizat pentru comunicaia asincron.

    Transmit Current Loop DataTransmit Current Loop ReturnReceive Current Loop DataReceive Current Loop Return

    Aceste semnale permit comunicaia ntre echipamente apropiate ntre ele, fr utilizarea unormodemuri. Metoda utilizat se numete transmisie prin bucl de curent. Nivelul logic 0 este indicat

  • 8/6/2019 Portul Serial

    7/24

    3. Portul serial 7

    printr-un curent de 20 mA, iar nivelul logic 1 este indicat prin absena acestui curent. C onectarea unuiechipament care utilizeaz comunicaia n bucl de curent la un port serial compatibil RS-232Cnecesit un translator al nivelului de tensiune.

    Secondary Transmit Data, STDSecondary Receive Data, SRD

    Reprezint semnalele de date pentru o a doua legtur serial. Dei teoretic sunt posibile dou

    legturi seriale duplex printr-un singur cablu, n practic a doua legtur este implementat foarte rar.Secondary Request To Send, SRTSSecondary Clear To Send, SCTSSecondary Carrier Detect, SCD

    Reprezint semnaleleRTS, CTS, respectiv CDpentru a doua legtur serial.

    Secvena de stabilire a legturii ntre calculator i modem const din urmtoarele operaii: programul activeaz semnalulDTR i ateapt rspunsul de la modem reprezentat de activareasemnalului DSR. n continuare,programul activeaz semnalulRTSi ateapt rspunsul de la modemreprezentat de activarea semnalului CTS.

    3.6. Controlul fluxului de date

    Pentru a fi posibil comunicaia ntre dispozitive cu viteze diferite, proiectanii interfeeiseriale au prevzut semnale speciale pentru controlul fluxului de date. Aceste semnale permit unuiechipament oprirea i apoi reluarea transmiterii datelor la cererea echipamentului de la cellalt capt alliniei de comunicaie serial. Pe lng aceast metod hardware pentru controlul fluxului de date,exist i o metod software, bazat pe transmiterea unor caractere speciale ntre cele douechipamente. Atunci cnd echipamentul receptor (de exemplu, o imprimant) nu mai poate primi datedeoarece bufferul acestuia este plin, transmite un anumit caracter de control echipamentuluitransmitor (de exemplu, calculatorului). Atunci cnd echipamentul receptor poate primi noi date,transmite un alt caracter de control care semnaleaz echipamentului transmitor c poate reluatransmiterea datelor.

    De obicei, metoda de control care va fi utilizat de calculator poate fi selectat prinintermediul driverului software al controlerului serial. Unele programe pot utiliza n mod implicit o

    anumit metod. n cazul perifericelor, metoda de control poate fi selectat fie prin program, fieprintr-un comutator. Este important s se utilizeze aceeai metod de control att pentru calculator, ctipentru periferic pentru a evita pierderile de date.

    3.6.1. Metoda de control hardware

    Metoda de control hardware presupune utilizarea unui protocol de comunicaie cu ajutorulsemnalelor de control ale interfeei seriale. Protocolul utilizat se bazeaz pe comunicaia serial prinintermediul unor modemuri i a unei linii telefonice, pentru care a fost elaborat interfaa serialoriginal. Acest protocol implic stabilirea conexiunii ntre dou modemuri prin linia telefonic imeninerea fluxului de date dintre acestea ct timp conexiunea este activ. Etapele acestui protocolsunt descrise n continuare. ntr-o form simplificat, acest protocol este utilizat i n cazul

    comunicaiei seriale directe ntre dou echipamente, fr utilizarea unor modemuri i a unei liniitelefonice.

    1. Atunci cnd un modem aflat la distan dorete stabilirea conexiunii cu modemul local,transmite semnalul de apel pe linia telefonic. Acest semnal este detectat de ctre modemullocal, care activeaz semnalul RI pentru a informa calculatorul local asupra existenei unuiapel telefonic.

    2. La detectarea activrii semnaluluiRI, pe calculatorul local se lanseaz n execuie un programde comunicaie. Acest program indic disponibilitatea calculatorului de a ncepe comunicaiaprin activarea semnaluluiDTR.

  • 8/6/2019 Portul Serial

    8/24

    Sisteme de intrare/ieire8

    3. Atunci cnd modemul local sesizeaz faptul c terminalul de date (calculatorul) este pregtit,rspunde la apelul telefonic i ateapt activarea semnalului purttor de ctre modemul aflat ladistan. Atunci cnd modemul local detecteaz semnalul purttor, activeaz semnalul CD.

    4. Modemul local negociaz cu modemul aflat la distan o conexiune cu anumii parametri. Deexemplu, cele dou modemuri pot determina viteza optim de comunicaie n funcie decalitatea legturii telefonice. Dup aceast negociere, modemul local activeaz semnalulDSR.

    5. La sesizarea activrii semnaluluiDSR, programul de pe calculatorul local activeaz semnalulRTSpentru a indica modemului c poate transmite date ctre calculator.

    6. Atunci cnd modemul sesizeaz activarea semnaluluiRTS, activeaz semnalul CTSpentru aindica faptul c este pregtit pentru recepia datelor de la calculator.

    7. n continuare, datele sunt transferate n ambele sensuri ntre echipamentele aflate la distan,pe liniile TD iRD.

    8. Deoarece viteza liniei telefonice este mai redus dect cea a legturii dintre calculator imodemul local, bufferul modemului se va umple. Modemul local solicit calculatoruluioprirea transmiterii datelor prin dezactivarea semnalului CTS. La golirea bufferului, modemulreactiveaz semnalul CTS.

    9. n cazul n care calculatorul nu mai poate primi date de la modem, dezactiveaz semnalulRTS.Atunci cnd calculatorulpoate primi din nou date de la modem, reactiveaz semnalulRTS.

    10. La ncheierea sesiunii de comunicaie, semnalul purttor este dezactivat, iar modemul localdezactiveaz semnalele CD, CTSiDSR.

    11. Atunci cnd sesizeaz dezactivarea semnalului CD, calculatorul local dezactiveaz semnaleleRTSiDTR.

    Din protocolul descris mai sus, rezult urmtoarele:

    Calculatorul trebuie s detecteze activarea semnalelorDSR i CTSnainte de a transmite datectre modem. Dezactivarea oricruia din aceste semnale va opri, de obicei, fluxul de date de lacalculator.

    Modemul trebuie s detecteze activarea semnalelorDTR iRTSnainte de a transmite date pe

    linia serial sau ctre calculator. Dezactivarea semnaluluiDTR va opri transmiterea datelor pelinia serial, iar dezactivarea semnaluluiRTSva opri transmiterea datelor ctre calculator.

    Starea semnalului CD nu este interpretat de toate sistemele de comunicaie serial. Laanumite sisteme, semnalul CD trebuie s fie activat nainte ca terminalul de date s nceaptransmiterea datelor. La alte sisteme, starea semnalului CD este ignorat.

    3.6.2. Metoda de control software

    Metoda software pentru controlul fluxului de date presupune transmiterea unor caractere decontrol ntre cele dou echipamente. De exemplu, perifericul va transmite un anumit caracter decontrol pentru a indica faptul c nu mai poate primi date de la calculator i va transmite un alt caracterde control pentru a indica faptul c transmiterea datelor poate fi reluat de calculator. Exist dou

    variante ale acestei metode. Prima variant utilizeaz caracterele de control XON/XOFF, iar a douavariant utilizeaz caracterele de control ETX/ACK.

    n cazul utilizrii variantei XON/XOFF, perifericul transmite caracterul XOFF pentru a indicafaptul c bufferul su este plin i transmiterea datelor trebuie oprit de calculator. Acest caracter maieste denumit DC1 (Device Control1) i are codul ASCII 13h, fiind echivalent cu caracterul Ctrl-S.Caracterul Ctrl-S poate fi introdus i de utilizator la anumite programe de comunicaie pentru a opritransmiterea datelor de ctre un echipament cu care este conectat calculatorul. Atunci cnd perifericuleste pregtit pentru a primi noi date, transmite calculatorului caracterul XON. Acest caracter mai estedenumit DC3 ( Device Control3) i are codul ASCII 11h, fiind echivalent cu caracterul Ctrl-Q. La

  • 8/6/2019 Portul Serial

    9/24

    3. Portul serial 9

    anumite programe de comunicaie, introducerea caracterului Ctrl-Q anuleaz efectul caracteruluiCtrl-S.

    n cazul utilizrii variantei ETX/ACK, transmiterea caracterului ETX (End of TeXt) de ctre periferic indic faptul c transmiterea datelor trebuie oprit de calculator. Acest caracter are codulASCII 03h i este echivalent cu caracterul Ctrl-C. Transmiterea caracterului ACK (ACKnowledge)indic posibilitatea relurii transmiterii datelor de ctre calculator. Acest caracter are codul ASCII 06hi este echivalent cu caracterul Ctrl-F.

    3.7. Conectori

    Porturile seriale pot utiliza unul din dou tipuri de conectori. Conectorul DB-25 cu 25 de pinia fost utilizat la calculatoarele din generaiile anterioare. La calculatoarele mai noi se utilizeazconectorul DB-9 cu 9 pini. Pentru porturile seriale ale calculatoarelor se utilizeaz conectori tat, iarpentru porturile seriale ale echipamentelor periferice se utilizeaz conectori mam.

    Conectorul DB-25 al portului serial are o form similar cu conectorul DB-25 al portuluiparalel. Portul serial care utilizeaz un conector DB-25 se poate deosebi de portul paralel prin faptul c pentru portul serial se utilizeaz un conector tat, n timp ce pentru portul paralel se utilizeaz unconector mam. Figura 3.4 ilustreaz conectorul DB-25 al portului serial.

    Figura 3.4. Conectorul DB-25 utilizat pentru porturile seriale ale calculatoarelor IBM PC din generaiileanterioare.

    Din cele 25 de semnale ale conectorului DB-25, se utilizeaz cel mult 10 semnale pentru oconexiune serial obinuit. Tabelul 3.1 indic numele acestor semnale i asignarea lor la piniiconectorului DB-25.

    Tabelul 3.1. Asignarea semnalelor la pinii conectorului DB-25 al portului serial.

    Pin Semnal Semnificaie In Out

    1 PG Protective Ground

    2 TD Transmit Data

    3 RD Receive Data

    4 RTS Request To Send

    5 CTS Clear To Send

    6 DSR Data Set Ready

    7 SG Signal Ground

    8 CD Carrier Detect

    20 DTR Data Terminal Ready

    22 RI Ring Indicator

    Pentru a se reduce spaiul ocupat de conectorul portului serial, conectorul DB-25 a fostnlocuit cu un conector de dimensiuni mai reduse, conectorul cu 9 pini DB-9 (figura 3.5).

  • 8/6/2019 Portul Serial

    10/24

    Sisteme de intrare/ieire10

    Figura 3.5. Conectorul DB-9 utilizat pentru porturile seriale ale calculatoarelor IBM PC.

    Tabelul 3.2 indic asignarea semnalelor portului serial la pinii conectorului DB-9.

    Tabelul 3.2. Asignarea semnalelor la pinii conectorului DB-9 al portului serial.

    Pin Semnal Semnificaie In Out

    1 CD Carrier Detect

    2 RD Receive Data

    3 TD Transmit Data

    4 DTR Data Terminal Ready

    5 SG Signal Ground

    6 DSR Data Set Ready

    7 RTS Request To Send

    8 CTS Clear To Send

    9 RI Ring Indicator

    3.8. Cabluri

    Exist mai multe variante de cabluri care se pot utiliza pentru comunicaia serial. Pentruviteze de comunicaie reduse i lungimi scurte, se pot utiliza cabluri obinuite, care nu sunt ecranate.Pentru a reduce interferenele cu alte echipamente, trebuie utilizate cabluri ecranate care conin unnveli sub forma unei folii de aluminiu. n mod ideal, ecranul cablului trebuie conectat la masa de

    protecie a conectorului, dac acesta este de tip DB-25. Conectorul DB-9 nu conine un pin pentrumasa de protecie. n cazul utilizrii conectorilor de acest tip, ecranul cablului se poate conecta la masaelectric.

    Observaii

    n cazul cablului serial care utilizeaz conectori DB-25, masa electric sau masa de semnal SG(Signal Ground) este separat de masa mecanic sau masa de protecie PG (ProtectiveGround). Masa de protecie este conectat direct la carcasa conectorului (i a echipamentului),avnd un rol de protecie. Prin realizarea acestei conexiuni, carcasele metalice ale celor douechipamente conectate prin cablul serial se vor afla la acelai potenial, evitndu -se formareaunor diferene de tensiune ntre cele dou echipamente, tensiuni care pot fi periculoase pentruacestea. Deseori, conexiunea mesei de protecie lipsete din cablurile seriale.

    Masa de proteciePG nu trebuie conectat niciodat la masa electric SG.Semnalele interfeei seriale au fost prevzute n scopul conectrii unui echipament terminal de

    date (ETD) la un echipament pentru comunicaia de date (ECD). Atunci cnd se conecteaz douasemenea echipamente, de exemplu, un calculator cu un modem, care dispun de conectori de acelaitip (de exemplu, DB-25), este necesar un cablu care conecteaz pinii cu acelai numr ai conectorilorde la cele dou capete. Acesta este un cablu direct. Dac se conecteaz dou echipamente cu conectoridiferii, este necesar un cablu adaptor. Dac se conecteaz dou echipamente terminale de date, deexemplu, dou calculatoare, datele transmise pe pinul TD al unui echipament trebuie recepionate pe

  • 8/6/2019 Portul Serial

    11/24

    3. Portul serial 11

    pinul RD al celuilalt echipament. De aceea, conexiunile acestor pini trebuie inversate la cele doucapete ale cablului; un asemenea cablu este numit cablu inversor.

    3.8.1. Cabluri directe

    ntr-un cablu direct, fiecarepin corespunztor unui anumit semnal de la un capt este conectat

    cu pinul corespunztor aceluiai semnal de la cellalt capt. n mod frecvent, se utilizeaz doar o partea semnalelor interfeei seriale. Chiar n cazul n care fluxul de date este controlat prin metodahardware, trebuie conectate doar un numr de nou semnale ntre un calculator i un modem, presupunnd o comunicaie asincron. De exemplu, dac se utilizeaz conectori DB-25 la ambelecapete ale cablului, pinii care trebuie conectai sunt: 2, 3, 4, 5, 6, 7, 8, 20 i 22. Pentru o comunicaiesincron, sunt necesare dou conexiuni suplimentare, reprezentnd semnalele de ceas pen trutransmisie i recepie, care sunt generate de modemul sincron. Dac se utilizeaz conectori DB -9, toipinii trebuie conectai, cu excepia pinului 9 (semnalulRI).

    Figura 3.6 ilustreaz conexiunile necesare pentru un cablu serial n cazul conectrii unuimodem sincron la un calculator, presupunnd c se utilizeaz conectori DB-25 la ambele echipamente.

    Figura 3.6. Conectarea unui modem sincron la un calculator (conectori DB-25).

    3.8.2. Cabluri adaptoare

    n cazul n care cei doi conectori ai unei legturi seriale sunt de tipuri diferite, de exemplu,DB-25 la un capt i DB-9 la cellalt capt, este necesar un cablu adaptor. Dei la calculatoarele IBMPC actuale se utilizeaz numai conectori DB-9, la unele periferice, ca imprimante seriale, plottere saumodemuri, se utilizeaz conectori DB-25. Adaptorul poate fi de forma unei cuple avnd doi conectoride tipuri diferite, sau a unui cablu adaptor avnd conectori de tipuri diferite la cele dou capete.

    Tabelul 3.3 prezint conexiunile necesare pentru un cablu adaptor ntre un conector DB-25 iun conector DB-9.

    Tabelul 3.3. Conexiunile pentru un cablu adaptor ntre un conector DB-25 i un conector DB-9.

    Pin DB-25 Pin DB-9 Semnal Semnificaie2 3 TD Transmit Data

    3 2 RD Receive Data

    4 7 RTS Request To Send

    5 8 CTS Clear To Send

    6 6 DSR Data Set Ready

    7 5 SG Signal Ground

    8 1 CD Carrier Detect

  • 8/6/2019 Portul Serial

    12/24

    Sisteme de intrare/ieire12

    Pin DB-25 Pin DB-9 Semnal Semnificaie

    20 4 DTR Data Terminal Ready

    22 9 RI Ring Indicator

    3.8.3. Cabluri inversoare

    Cablurile inversoare sunt necesare pentru conectarea a dou echipamente terminale de date,cum sunt dou calculatoare. Aceste cabluri sunt necesare ipentru conectarea unor tipuri de perifericela calculator, cum sunt imprimantele i plotterele seriale, deoarece atunci cnd a fost conceputinterfaa serial, aceste periferice au fost considerate ca echipamente terminale de date.

    n continuare se prezint dou tipuri de cabluri inversoare. Primul tip se poate utiliza atuncicnd controlul fluxului de date se realizeaz prin metoda software, iar al doilea tip se poate utilizaatunci cnd controlul fluxului de date se realizeaz prin metoda hardware.

    Multe sisteme de comunicaie serial nu utilizeaz toate semnalele pentru controlul fluxului dedate, astfel nct la aceste sisteme conexiunile pot fi simplificate. n cazul cel mai simplu, cnd seutilizeaz metoda software pentru controlul fluxului de date, sunt necesare doar trei conexiuni, pentrudatele transmise, datele recepionate i masa electric. De exemplu, dac se utilizeaz conectoriDB-25, pinii care trebuie conectai sunt 2, 3 i 7, iar dac se utilizeaz conectori DB -9, aceti pini sunt

    2, 3 i 5. Un asemenea cablu se numete cablu null-modem.Un cablu null-modem se poate utiliza pentru conectarea direct a dou echipamente terminalede date, de exemplu, a dou calculatoare. Conexiunile sunt realizate astfel nct, din punctul de vedereal calculatorului, comunicaia s se desfoare ca i cum la cellalt capt s-ar afla un modem, i nu unalt calculator. Datele transmise de primul calculator trebuie recepionate de al doilea calculator, astfelnct pinul TD de la primul calculator este conectat cu pinul RD de la cel de-al doilea calculator, iinvers. Cei doi pini pentru masa electric SG trebuie conectai mpreun. La ambii conectori, pinulDTR este conectat cu pinii DSR i CD de la acelai capt al conexiunii. Astfel, atunci cnd semnalulDTR este activat, semnaleleDSR i CD sunt activate i ele. SemnaleleDSR i CD se activeaz deci nacelai mod ca i cum la cellalt capt al conexiunii s-ar afla un modem. n mod similar, la ambiiconectori pinul RTS este conectat cu pinul CTS de la acelai capt al conexiunii. Deoarececalculatoarele comunic cu aceeai vitez, controlul fluxului de date nu este necesar.

    Figura 3.7 ilustreaz conexiunile necesare pentru un cablu null-modem, presupunnd c se

    utilizeaz conectori DB-9 la ambele capete.

    Figura 3.7. Conectarea a dou echipamente terminale de date printr-un cablu null-modem (conectori DB-9).

    Atunci cnd se utilizeaz metoda hardware de control a fluxului de date, cele trei linii alecablului null-modemprezentat anterior nu sunt suficiente. n acest caz, trebuie s se utilizeze un cabluinversor cu conexiuni suplimentare pentru aceast metod de control. Pinii de date i pinul pentrumasa electric sunt conectai n acelai fel ca i la cablul null-modem. La ambii conectori, pinul DTReste conectat cu piniiDSR i CD de la cellalt capt al conexiunii. Prin aceast conexiune, fiecare dincele dou echipamente terminale de date poate determina momentul n care cellalt echipamentterminal de date este pregtit. Semnalele utilizate pentru controlul fluxului de date suntRTSi CTS. Laambii conectori, pinul RTS este conectat cu pinul CTS de la cellalt capt al conexiunii. Aceast

  • 8/6/2019 Portul Serial

    13/24

    3. Portul serial 13

    conexiune asigur controlul fluxului de date prin metoda hardware, n modul descris n seciunea3.6.1.

    Figura 3.8 ilustreaz legturile necesare pentru un cablu inversor care permite un controlhardware al fluxului de date, presupunnd c se utilizeaz conectori DB-9 la ambele capete.

    Observaie

    De multe ori, cablul inversor cu conexiunile ilustrate n figura 3.8 este numit, n mod eronat,cablu null-modem.

    Figura 3.8. Conectarea a dou echipamente terminale de date printr-un cablu inversor cu controlul fluxului dedate prin hardware (conectori DB-9).

    3.9. Circuite UART

    Componenta principal a unui port serial este un circuit UART (Universal AsynchronousReceiver/Transmitter). Acest circuit realizeaz conversia datelor paralele de la calculator n formatulnecesar pentru transmisia serial i conversia datelor seriale recepionate n formatul paralel utilizat decalculator. Circuitul adaug bitul de start, bitul de stop i bitul de paritate la datele seriale transmise idetecteaz aceti bii n cadrul datelor seriale recepionate.

    La calculatoarele IBM PC i calculatoarele IBM PC/XT originale au fost utilizate circuite

    UART din familia 8250. ncepnd cu primele sisteme de 16 bii, a fost utilizat circuitul UART 16450,produs de firmaNational Semiconductor. Acest circuit este compatibil cu circuitele din familia 8250la nivelul registrelor, dar permite comunicaia cu viteze mai ridicate. La calculatoarele IBM PS/2 afost utilizat circuitul UART 16550, care a fost adoptat ipentru sistemele bazate pe procesorul 80386i urmtoarele. Circuitul 16550 funcioneaz similar cu circuitele 8250 i 16450, dar conine n pluscte o memorie FIFO de 16 octei pentru transmisie i recepie. Aceast memorie permite viteze decomunicaie superioare fa de vitezele permise de circuitele anterioare. ncepnd cu sistemele bazatepe procesorul Pentium, circuitul UART 16550 (sau o versiune mai recent a acestuia) a fost inclus nsetul de circuite de pe placa de baz. Versiuni mbuntite ale circuitului UART 16550 sunt circuitele16650, 16750 i 16850.

    n continuare se descriu principalele caracteristici ale unor circuite UART.

    8250

    Acest circuit a fost utilizat la primele calculatoare IBM PC. Circuitul nu coninea un buffer detransmisie i nici un buffer de recepie, motiv pentru care viteza de comunicaie asigurat era redus.Circuitul avea mai multe erori de funcionare. Programele ROM BIOS ale calculatoarelor IBM PC iPC/XT au fost realizate astfel nct s in cont de aceste erori.

    8250A

    La aceast versiune, s-au corectat unele erori ale circuitului UART 8250, printre care i oeroare de funcionare a registrului de validare a ntreruperilor. Deoarece programele ROM BIOS alecalculatoarelor IBM PC i PC/XT ineau cont de aceast eroare, circuitul 8250A nu funciona corect

  • 8/6/2019 Portul Serial

    14/24

    Sisteme de intrare/ieire14

    cu acele calculatoare. Circuitul 8250A funciona cu calculatoarele IBM PC/AT, dar nu funcionacorespunztor la viteze de 9.600 bii/s i mai mari, din cauza lipsei bufferelor de transmisie i derecepie.

    8250B

    La aceast ultim versiune a circuitelor din familia 8250, s-au corectat erorile ntlnite la cele

    dou versiuni anterioare. Eroarea de funcionare a registrului de validare a ntreruperilor din versiuneaoriginal 8250 a fost reintrodus, pentru ca circuitul s funcioneze n modul ateptat de programeleROM BIOS ale calculatoarelor IBM PC i PC/XT. Nici acest circuit nu funciona corespunztor laviteze de 9.600 bii/s i mai mari.

    16450

    Acest circuit a fost utilizat la primele calculatoare IBM PC/AT. Circuitul permitea viteze decomunicaie superioare datorit unor buffere de transmisie i de recepie de cte un octet. La acestcircuit, a fost adugat la setul de registre un registru de lucru de un octet, utilizat ca memorietemporar.

    16550

    Reprezint varianta mbuntit a circuitului 16450, coninnd buffere de transmisie i derecepie de cte 16 octei, organizate sub forma unor memorii FIFO. Circuitul permite i transferuriprin canale multiple DMA. Versiunea iniial a acestui circuit nu permitea utilizarea memoriilor FIFO,eroare care a fost corectat n versiunea 16550A. Ultima versiune produs deNational Semiconductoreste 16550D. Prin utilizarea memoriilor FIFO, vitezele de comunicaie pot fi crescute in modsemnificativ, eliminndu-se posibilitatea pierderii unor caractere la vitezele mai ridicate. Vitezamaxim de comunicaie permis de circuitul 16550 este de 115.200 bii/s.

    16650, 16750 i 16850

    Au fost produse diferite versiuni mbuntite ale circuitului 16550, care sunt compatibile cuacesta, dar conin memorii FIFO de dimensiuni mai mari:

    Circuitul 16650 conine dou memorii FIFO de cte 32 octei;

    Circuitul 16750 conine dou memorii FIFO de cte 64 octei; Circuitul 16850 conine dou memorii FIFO de cte 128 octei.

    Aceste circuite permit viteze de comunicaie superioare, de 230,4 Kbii/s (16650), 460,8Kbii/s (16750) i 921,6 Kbii/s (16850). Utilizarea acestor circuite este recomandat n cazul unorlegturi seriale externe de vitez ridicat, cum sunt cele realizate printr-un adaptor ISDN.

    3.10. Porturile seriale ale calculatoarelor IBM PC

    Sistemul ROM BIOS al calculatoarelor IBM PC originale permitea utilizarea a dou porturiseriale, cu numele COM1 i COM2. Ulterior, numrul porturilora fost extins cu nc dou, cu numeleCOM3 i COM4. ncepnd cu sistemul de operare Windows 95, numrul porturilor seriale a fost extinsla 128. Aceste porturi sunt gestionate cu ajutorul driverelor de dispozitiv care le controleaz.

    Accesul la porturile seriale se poate realiza prin funcii BIOS (ntreruperea 14h), prin funciiale sistemului de operare, sau direct prin registrele circuitelor UART. Fiecare circuit UART asociatunui port serial dispune de un numr de opt registre de I/E ncepnd de la adresa de baz a portuluiserial. ROM BIOS memoreaz adresele de baz ale porturilor seriale COM1..COM4 n patru cuvintesuccesive de 16 bii, ncepnd cu adresa 0000:0400h corespunztoareportului COM1.

    Adresele de baz ale porturilor seriale COM1..COM4 sunt indicate n tabelul 3.4. n general,adresele porturilorCOM1 i COM2 sunt fixe, avnd valorile indicate n acest tabel. Adresele porturilorCOM3 i COM4 pot fi diferite de cele indicate. n tabelul 3.4 se indic i nivelele de ntrerupereutilizate de porturile seriale COM1..COM4.

  • 8/6/2019 Portul Serial

    15/24

    3. Portul serial 15

    Tabelul 3.4. Asignarea standard a adreselor de baz i a nivelelor de ntrerupere la porturile seriale.

    Port serial Adresa de baz ntrerupere

    COM1 3F8h IRQ 4

    COM2 2F8h IRQ 3

    COM3 3E8h IRQ 4

    COM4 2E8h IRQ 3

    n principiu, fiecare port serial necesit propriul nivel de ntrerupere. n cazul n care existmai mult de dou porturi seriale n calculator, poate fi necesar partajarea unor nivele de ntrerupere.De exemplu, portul COM3 partajeaz ntreruperea de nivel 4 (IRQ 4) cu portul COM1, iar portulCOM4partajeaz ntreruperea de nivel 3 (IRQ 3) cu portul COM2. Magistrala PCI permite partajareanivelelor de ntrerupere, astfel nct pentru plcile de extensie bazate pe magistrala PCI este posibilutilizarea unui singur nivel de ntrerupere fr apariia unor conflicte.

    3.11. Registrele circuitelor UART 16x50

    Registrele circuitelor UART sunt accesibile prin instruciuni de I/E. Pentru primul port serial,registrele au adrese cuprinse ntre 3F8h i 3FFh, iar pentru al doilea port registrele au adrese ntre2F8h i 2FFh. Primele dou adrese permit accesul la mai multe registre ale circuitului. Exist anumiteregistre care nu sunt accesibile prin program.

    Adresele registrelor accesibile prin program pentru primele dou porturi seriale, modul deacces la acestea (R citire, W scriere, R/W citire/scriere), abrevierile i denumirile lor suntprezentate n tabelul 3.5. Coloana Offsetindic deplasamentul adresei fiecrui registru fa de adresade baz a portului serial. Coloana DLAB (Divisor Latch Access Bit) reprezint valoarea bitului 7 alregistrului de control al liniei (LCR). Atunci cnd este setat la 1, acest bit permite accesul la douregistre utilizate pentru setarea vitezei de comunicaie.

    Tabelul 3.5. Registrele circuitelor UART 16x50.

    Adr. COM1 Adr. COM2 Offset DLAB Acces Abreviere Denumire

    3F8h 2F8h + 0

    0 W THR Transmitter Holding Register

    0 R RBR Receiver Buffer Register

    1 R/W Divisor Latch Register LSB

    3F9h 2F9h + 10 R/W IER Interrupt Enable Register

    1 R/W Divisor Latch Register MSB

    3FAh 2FAh + 2X R IIR Interrupt Identification Register

    X W FCR FIFO Control Register

    3FBh 2FBh + 3 X R/W LCR Line Control Register

    3FCh 2FCh + 4 X R/W MCR Modem Control Register

    3FDh 2FDh + 5 X R LSR Line Status Register

    3FEh 2FEh + 6 X R MSR Modem Status Register

    3FFh 2FFh + 7 X R/W Scratch Register

    Observaie

    Circuitele 16650, 16750 i 16850 conin registre suplimentare fa de cele indicate n tabelul3.5. Structura acestor registrepoate varia de la un productor la altul, motiv pentru care acesteregistre nu sunt descrise n acest document.

  • 8/6/2019 Portul Serial

    16/24

    Sisteme de intrare/ieire16

    THR - Transmitter Holding Register

    Reprezint bufferul de transmisie, care este selectat dac bitul DLAB al registrului LCR este 0.Caracterul care urmeaz a fi transmis trebuie nscris n acest registru. Dac registrul TSR (TransmitterShift Register) se golete (deci, circuitul poate ncepe transmisia unui nou caracter), coninutulregistrului THR (sau, dac memoriile FIFO sunt validate, un octet din memoria FIFO de transmisie)este transferat n registrul TSR i se ncepe transmisia caracterului.

    Dac registrul THR se golete (deci, poate fi nscris cu un nou caracter), circuitul genereaz ocerere de ntrerupere dac generarea acestui tip de ntrerupere este validat. Starea acestui registru sepoate determina prin testarea bitului 5 al registrului LSR.

    TSR - Transmitter Shift Register

    Este un registru intern care nu este accesibil prin program. La terminarea transmisiei unuicaracter, coninutul registrului THR (sau, dac memoriile FIFO sunt validate, un octet din memoriaFIFO de transmisie) este transferat n mod automat n registrul TSR i se ncepe transmisia acestuia.

    Dac registrul TSR se golete (deci, poate ncepe transmisia unui nou caracter), dar registrulTHR este gol (sau, dac memoriile FIFO sunt validate i memoria FIFO de transmisie se golete subun anumit nivel de prag), circuitul genereaz o cerere de ntrerupere n cazul n care acest tip dentrerupere este validat. Starea acestui registru se poate determina prin testarea bitului 6 al registruluiLSR.

    RBR - Receiver Buffer Register

    Reprezint bufferul de recepie, fiind selectat dac bitul DLAB al registrului LCR este 0. Uncaracter recepionat este depus n acest registru. Prezena unui caracter n registrul RBR se poatedetermina prin testarea bitului 0 al registrului LSR. Dac memoriile FIFO sunt invalidate, caracterulrecepionat trebuie citit de program din registrul RBR naintea recepiei unui nou caracter; n cazcontrar, va apare o eroare de suprapunere (overrun error). Recepia unui caracter determin generareaunei cereri de ntrerupere, dac acest tip de ntrerupere este validat. Dac memoriile FIFO suntvalidate, este posibil ca ntreruperea de recepie s fie generat doar dup recepionarea unui anumitnumr de caractere n memoria FIFO de recepie. Aceast valoare de prag poate fi programat prinsetarea biilor 7..6 ai registrului FCR.

    RSR - Receiver Shift RegisterEste un registru intern care nu este accesibil prin program. Fiecare caracter este recepionat n

    acest registru. La terminarea recepiei unui caracter, coninutul registrului RSR este transferat n modautomat n registrul RBR dac memoriile FIFO sunt invalidate. Dac aceste memorii sunt validate,caracterele recepionate sunt depuse n memoria FIFO de recepie.

    Divisor Latch Register LSB & MSB

    Aceste registre conin valoarea cu care trebuie divizat frecvena ceasului propriu al circuitului16x50 (1,8432 MHz) pentru a se obine debitul binar dorit. Registrul LSB conine octetul mai puinsemnificativ al divizorului, iar registrul MSB conine octetul mai semnificativ al divizorului. Cele douregistre divizor sunt accesibile dac bitul DLAB al registrului LCR este 1. Pentru calculul valoriidivizorului, trebuie s se in cont de factorul de ceas al circuitului 16x50 . De obicei, acest factor este16 (debitul binar este de 16 ori mai mic dect frecvena obinut prin divizare). Se poate utilizaurmtoarea formul:

    Divizor= 1.843.200 / (DebitBinar 16)

    Tabelul 3.6 conine divizorii corespunztori diferitelor debite binare.

  • 8/6/2019 Portul Serial

    17/24

    3. Portul serial 17

    Tabelul 3.6. Divizorii frecvenei de 1,8432 MHz pentru diferite debite binare.

    Debit binar(bii/s)

    Divizor Debit binar(bii/s)

    Divizor

    50 0900h 4.800 0018h

    150 0300h 9.600 000Ch

    300 0180h 19.200 0006h

    600 00C0h 38.400 0003h

    1.200 0060h 57.600 0002h

    2.400 0030h 115.200 0001h

    IER - Interrupt Enable Register

    Reprezint registrul de validare a ntreruperilor, fiind accesibil dac bitul DLAB al registruluiLCR este 0. Circuitul UART poate genera cinci tipuri de cereri de ntrerupere, cu nivele de prioritatediferite. Registrul IER permite validarea individual a acestor ntreruperi. Structura acestui registrueste ilustrat n figura 3.9.

    Figura 3.9. Registrul de validare a ntreruperilor (IER).

    Biii registrului IER sunt descrii n continuare.

    Biii 7..4 sunt neutilizai (setai la 0).

    Bitul 3 (Enable Modem Status Interrupt) valideaz prin valoarea 1 generarea unei cereri de

    ntrerupere la modificarea registrului de stare al modemului (MSR).

    Bitul 2 (Enable Receiver Line Status Interrupt) valideaz prin valoarea 1 generarea unei cereride ntrerupere la modificarea registrului de stare a liniei (LSR), de obicei, la apariia unor eroride recepie.

    Bitul 1 (Enable Transmitter Holding Register Empty Interrupt) valideaz prin valoarea 1generarea unei cereri de ntrerupere la golirea registrului THR, deci, dup transferareaconinutului acestui registru n registrul TSR. La apariia acestei ntreruperi se poate nscrie unnou caracter n registrul THR.

    Bitul 0 (Enable Received Data Available Interrupt) valideaz prin valoarea 1 generarea uneicereri de ntrerupere la recepia unui caracter. Dac memoriile FIFO sunt validate, acest bitvalideaz i generarea ntreruperii de depire a timpului (time-out). Aceast ntrerupere este

    descris n seciunea urmtoare.

    IIR - Interrupt Identification Register

    Reprezint registrul de identificare a ntreruperilor. Acest registru poate fi accesat doar pentrucitire. Dei ntreruperile generate de circuitul 16x50 apar pe un singur nivel de ntrerupere (IRQ 4pentru primul port serial i IRQ 3 pentru portul al doilea), aceste ntreruperi pot avea patru tipuri decauze, cu nivele de prioritate diferite. Identificarea cauzei ntreruperii se poate realiza prin testarea biilor 3..0 din registrul de identificare a ntreruperilor (IIR). Ceilali bii ai acestui registru indicstarea memoriilor FIFO.

  • 8/6/2019 Portul Serial

    18/24

    Sisteme de intrare/ieire18

    Semnificaia biilor registrului IIR care permit identificarea cauzei unei ntreruperi esteindicat n tabelul 3.7.

    Tabelul 3.7. Biii registrului IIR utilizai pentru identificarea cauzei unei ntreruperi.

    Bii 3..0 Prioritate Tip ntrerupere Cauza ntreruperii Resetarea ntreruperii

    0 0 0 1 Nu exist ntrerupere

    0 0 0 0 3 (minim) Modificare staremodem

    Semnalul CTS sau DSR sau RIsau CD s-a modificat

    Citirea registrului MSR

    0 0 1 0 2 Terminare transmisiecaracter

    Registrul THR este gol Citirea IIR sau scriereaunui caracter n THR

    0 1 0 0 1 Recepie caracter Registrul RBR conine uncaracter recepionat saumemoria FIFO de recepie s-aumplut peste nivelul de prag

    Citirea registrului RBRsau golirea memorieiFIFO de recepie subnivelul de prag

    1 1 0 0 1 Depirea timpului(time-out)

    Nu s-au citit sau depuscaractere din/n memoria FIFOde recepie pe durata a patrucaractere i exist cel puin uncaracter n memoria FIFO

    Citirea registrului RBR

    0 1 1 0 0 (maxim) Modificare stare linie Eroare de suprapunere, dencadrare sau de paritate, sauntrerupere Break

    Citirea registrului LSR

    Din tabelul 3.7 se observ c circuitul UART se poate utiliza i prin interogare software,testnd periodic bitul 0 al registrului de identificare a ntreruperilor. Dac acest bit este 0, nseamn ca aprut o ntrerupere.

    Nivelul de prag al memoriei FIFO de recepie se refer la numrul de caractere care trebuierecepionate nainte ca circuitul s genereze o ntrerupere de recepie, dac acest tip de ntrerupere estevalidat. Setarea acestui nivel de prag este descris n seciunea dedicat registrului de control almemoriilor FIFO (FCR).

    La o operaie de recepie cu memoriile FIFO validate, circuitul UART va genera o cerere dentrerupere chiar dac memoria FIFO de recepie conine un numr de caractere mai mic dectvaloarea de prag, dar nu s-au mai recepionat caractere ntr-un timp egal cu durata necesartransferului a patru caractere. Aceasta reprezint ntreruperea de depire a timpului (time-out) i a fost prevzut pentru cazul n care transmitorul oprete transmisia caracterelor pentru a atepta unrspuns de la receptor. Fr aceast ntrerupere, ar fi posibil ca receptorul s nu sesizeze faptul c aufost recepionate caractere, deoarece memoria FIFO de rece pie nu conine un numr suficient decaractere pentru a se genera o ntrerupere de recepie. Combinaia de bii din registrul IIR care indicaceast cauz de ntrerupere poate fi ignorat, deoarece circuitul UART va indica i faptul c suntdisponibile caractere n bufferul de recepie.

    Biii 7..4 ai registrului IIR sunt descrii n continuare.

    Biii 7..6 indic starea memoriilor FIFO:

    00: Nu exist memorii FIFO (circuitul este de tip 8250 sau 16450).01: Combinaie rezervat.10: Memoriile FIFO sunt validate, dar nu sunt utilizabile. Aceast situaie poate apare la

    circuitul 16550, din cauza erorii de utilizare a memoriilor FIFO.11: Memoriile FIFO sunt validate i operaionale.

    Biii 5..4 sunt rezervai (setai la 0).

    FCR - FIFO Control Register

    Reprezint registrul de control al memoriilor FIFO, fiind disponibil la circuitul UART 16550i la urmtoarele. Structura registrului FCR este ilustrat n figura 3.10.

  • 8/6/2019 Portul Serial

    19/24

    3. Portul serial 19

    Figura 3.10. Registrul de control al memoriilor FIFO FCR.

    Biii registrului FCR sunt descrii n continuare.

    Biii 7..6 (Receiver Trigger) permit setarea numrului de caractere recepionate n memoriaFIFO de recepie dup care circuitul va genera o ntrerupere de recepie, dac acest tip dentrerupere este validat. Dac acest numr este setat la o valoare mai mare dect 1, circuitulnu va genera o cerere de ntrerupere dup fiecare caracter recepionat, ceea ce va reducetimpul necesar tratrii ntreruperilor. Semnificaia biilor 7..6 este urmtoarea:

    00: Cererea de ntrerupere se genereaz dup fiecare caracter recepionat;01: Cererea de ntrerupere se genereaz dup 4 caractere recepionate;10: Cererea de ntrerupere se genereaz dup 8 caractere recepionate;11: Cererea de ntrerupere se genereaz dup 14 caractere recepionate.

    Biii 5..4 sunt rezervai (setai la 0).

    Bitul 3 (DMA Mode Select), prezent la circuitul 16550 i urmtoarele, permite selectareamodului de transfer prin DMA. Atunci cnd memoriile FIFO sunt validate, exist dou moduride transfer prin DMA care pot fi selectate, modul 0 i modul 1. Modul 0, selectat dac bitul 3al registrului FCR este 0, permite transferuri DMA singulare, de cte un singur cuvnt. Modul1, selectat dac bitul 3 al registrului FCR este 1, permite transferuri DMA multiple, care suntexecutate n mod continuu pn cnd memoria FIFO de recepie se golete sau memoria FIFOde transmisie se umple. La circuitul 16450, este permis doar modul 0.

    Bitul 2 (Transmitter FIFO Reset) permite tergerea memoriei FIFO de transmisie prin setareaacestui bit la 1.

    Bitul 1 (Receiver FIFO Reset) permite tergerea memoriei FIFO de recepie prin setareaacestui bit la 1.

    Bitul 0 (FIFO Enable) valideaz prin valoarea 1 memoriile FIFO de transmisie i de recepie.n mod implicit, aceste memorii sunt invalidate, pentru compatibilitate cu circuitele UART8250 i 16450. Prin setarea acestui bit la 0 se vor invalida memoriile FIFO, datele memoraten acestea fiind pierdute.

    Observaie

    n cazul n care nu se utilizeaz memoriile FIFO, sau biii 7..6 ai registrului FCR sunt setaiastfel nct s se genereze o cerere de ntrerupere dup fiecare caracter recepionat, n rutina detratare ntreruperii de recepie este suficient s se citeasc registrul de recepie RBR o singurdat. Dac se utilizeaz memoriile FIFO, n rutina de tratare a ntreruperii de recepie trebuieimplementat o bucl de program pentru citirea cte unui caracter din registrul de recepieRBR, ct timp exist cel puin un caracter n acest registru. Prezena unui caracter n registrulde recepie RBR este indicat prin faptul c bitul 0 din registrul LSR este setat la 1. Dupcitirea unui caracter din registrul RBR, circuitul va ncrca n mod automat urmtorul caracterdin memoria FIFO, dac mai exist caractere n aceast memorie.

  • 8/6/2019 Portul Serial

    20/24

    Sisteme de intrare/ieire20

    LCR - Line Control Register

    Prin nscrierea registrului de control al liniei se pot stabili parametrii comunicaiei seriale.Structura registrului LCR este ilustrat n figura 3.11.

    Figura 3.11. Registrul de control al liniei LCR.

    Semnificaia biilor registrului LCR este urmtoarea:

    Bitul 7 (Divisor Latch Access Bit) modific funcia registrelor accesibile prin adresele 3F8h(2F8h) i 3F9h (2F9h). Dac acest bit este 0, registrele accesibile sunt Transmitter / ReceiverBuffer Register, respectivInterrupt Enable Register. Dac bitul 7 este 1, registrele accesibilesunt cele utilizate pentru nscrierea divizorului care stabilete debitul binar (LSB, respectivMSB).

    Bitul 6 (Set Break). Dac este setat la 1, circuitul foreaz linia de comunicaie la nivelul 0logic (spaiu). Aceasta corespunde strii break a liniei, care permite atenionarea unuiterminal aflat la distan printr-o ntrerupere generat la detectarea acestei stri a liniei. Liniapoate fi adus n starea normal prin setarea bitului 6 la 0.

    Bitul 5 (Stick Parity) permite transmiterea sau ateptarea unor bii de paritate cu valoare fix, 0sau 1:

    0: Paritatea este testat n mod obinuit, conform biilorParity Enable i Even Parity Select;1: Dac bitul Parity Enable este 1, se transmit sau se verific bii cu valoare fix n locul

    bitului de paritate, conform bitului Even Parity Select. Dac bitul Even Parity Select este 0,bitul de paritate este ntotdeauna 1, iar dac bitul Even Parity Select este 1, bitul de paritateeste ntotdeauna 0.

    Bitul 4 (Even Parity Select) indic tipul paritii utilizate, dac generarea i verificareaparitii este validat prin bitul Parity Enable:

    0: Paritate impar;1: Paritate par.

    Bitul 3 (Parity Enable) valideaz sau invalideaz generarea i verificarea paritii:

    0: Generarea i verificarea paritii este invalidat;1: Generarea i verificarea paritii este validat.

    Bitul 2 (Number of Stop Bits) indic numrul biilor de stop generai sau ateptai de circuitulUART:

    0: 1 bit de stop;1: 2 bii de stop (1,5 bii dac lungimea caracterelor este de 5 bii).

    Receptorul testeaz doar primul bit de stop, indiferent de numrul biilor de stop selectai.

    Biii 1..0 (Word Length Select) specific lungimea caracterelor transmise sau recepionate:

  • 8/6/2019 Portul Serial

    21/24

    3. Portul serial 21

    00: 5 bii/caracter;01: 6 bii/caracter;10: 7 bii/caracter;11: 8 bii/caracter.

    MCR - Modem Control Register

    Registrul de control al modemului MCR (figura 3.12) se utilizeaz pentru controlulcomunicaiei cu modemul.

    Figura 3.12. Registrul de control al modemului MCR.

    Semnificaia biilor registrului MCR este urmtoarea: Biii 7..5 sunt neutilizai (setai la 0).

    Bitul 4 (Loop) permite testarea circuitului UART i a programelor de comunicaie. Prinsetarea acestui bit la 1 se vor efectua urmtoarele operaii:

    1. Ieirea serial a transmitorului este plasat n starea 1 logic.

    2. Intrarea serial a receptorului este deconectat.

    3. Datele de la ieirea registrului TSR vor fi recepionate n bufferul de recepie RBR.

    4. Liniile de intrare pentru controlul modemuluiDSR, CTS, RIi DCD sunt deconectate,iar comanda lor se poate realiza cu biii 0..3 ai registrului MCR (Data Terminal Ready,Request To Send, OUT1, respectiv OUT2). Dac ntreruperile sunt validate,

    modificrile acestor bii vor genera cereri de ntrerupere ca i n cazul n care semnalelear fi activate de modem.

    Biii 2 i 3 (OUT1 i OUT2) se pot utiliza pentru implementarea unei comunicaii definitede utilizator.

    Bitul 1 (Request To Send) activeaz prin valoarea 1 semnalulRTSal interfeei.

    Bitul 0 (Data Terminal Ready) activeaz prin valoarea 1 semnalulDTR al interfeei.

    Observaie

    SemnaleleDTR,RTS, OUT1 i OUT2 sunt active n starea 0 logic.

    LSR - Line Status Register

    Acest registru indic starea liniei de comunicaie. Biii 6..5 se refer la transmisie, iar bi ii 4..0se refer la recepie (figura 3.13). Semnificaia biilor registrului LSR este urmtoarea:

    Bitul 7 (Error in Receiver FIFO) este setat la 1 atunci cnd memoriile FIFO sunt validate i aaprut cel puin o eroare de paritate, eroare de ncadrare sau o condiie de break n timpulrecepiei caracterelor aflate n memoria FIFO de recepie.

    Bitul 6 (Transmitter Shift Register Empty) este setat la 1 dac att registrul THR ct i registrulTSR s-au golit. Dac memoriile FIFO sunt validate, acest bit este setat la 1 atunci cnd attmemoria FIFO de transmisie ct i registrul TSR s-au golit.

  • 8/6/2019 Portul Serial

    22/24

    Sisteme de intrare/ieire22

    Bitul 5 (Transmitter Holding Register Empty) este setat la 1 atunci cnd coninutul registruluiTHR este transferat n registrul TSR i se ncepe transmisia caracterului. Aceasta indic faptulc circuitul UART este pregtit pentru a accepta un nou caracter pentru transmisie. Atuncicnd registrul THR se golete, circuitul UART genereaz o cerere de ntrerupere dac acest tipde ntrerupere este validat. Acest bit este resetat la 0 atunci cnd se nscrie un nou caracter nregistrul THR. Dac memoriile FIFO sunt validate, acest bit este setat la 1 atunci cndmemoria FIFO de transmisie se golete i este resetat la 0 atunci cnd se nscrie cel puin uncaracter n memoria FIFO de transmisie.

    Bitul 4 (Break Interrupt) este setat la 1 dac sunt sesizate spaii (0 logic) pe linie pentru operioad mai mare dect cea necesar pentru transmisia unui caracter. n acest caz, se nscrieun octet cu valoarea 0 n bufferul de recepie i se genereaz o cerere de ntrerupere. Acest biteste resetat prin citirea registrului LSR.

    Bitul 3 (Framing Error) indic o eroare de ncadrare, fiind setat la 1 dac un caracter serecepioneaz fr biii de stop corespunztori. Receptorul testeaz numai primul bit de stop,indiferent de numrul biilor de stopprogramai. La detectarea acestei erori, circuitul ncearcs se resincronizeze. Acest bit este resetat la 0 prin citirea registrului LSR.

    Bitul 2 (Parity Error) indic o eroare de paritate, fiind setat la 1 dac se recepioneaz uncaracter cu paritatea diferit de cea ateptat. Acest bit este resetat la 0 prin citirea registruluiLSR.

    Bitul 1 (Overrun Error) indic o eroare de suprapunere. Este setat la 1 dac se recepioneaz unnou caracter naintea citirii caracterului din registrul RBR de ctre program. n acest caz, sepierd unul sau mai multe caractere. Eroarea de suprapunere, ca i celelalte erori, genereaz ocerere de ntrerupere. Acest bit este resetat la 0 prin citirea registrului LSR. Dac memoriileFIFO sunt validate i memoria FIFO de recepie se umple peste nivelul de prag, o eroare desuprapunere va fi semnalat doar dup ce memoria FIFO s -a umplut i urmtorul caracter afost recepionat n registrul RSR.

    Bitul 0 (Data Ready) este setat la 1 atunci cnd a fost recepionat un caracter i acesta a fosttransferat n registrul RBR sau n memoria FIFO. Acest bit este resetat la 0 prin citireacaracterului din registrul RBR sau n urma citirii tuturor caracterelor din memoria FIFO derecepie. Recepia unui caracter va genera o cerere de ntrerupere dac acest tip de ntrerupereeste validat.

    Figura 3.13. Registrul de stare a liniei LSR.

    MSR - Modem Status Register

    Acest registru conine informaii despre starea modemului (figura 3.14). Semnificaia biilorregistrului MSR este urmtoarea:

    Biii 7..4 indic starea curent a semnalelorCD,RI,DSR, respectiv CTS. Un semnal activ esteindicat prin bitul corespunztor din registrul MSR setat la 1. Dac bitul Loop al registrului

  • 8/6/2019 Portul Serial

    23/24

    3. Portul serial 23

    MCR este 1, starea biilor 7, 6, 5, 4 din registrul MSR este echivalent cu starea biilorOUT2,OUT1, Data Terminal Ready, respectiv Request To Send din registrul MCR.

    Biii 3..0 indic modificarea strii semnalelorCD,RI,DSR, respectiv CTS, de la ultima citire aregistrului MSR. Aceti bii sunt resetai la citirea registrului MSR.

    Observaie

    Semnalele CTS,DSR,RIi CD sunt active n starea 0 logic.

    Figura 3.14. Registrul de stare a modemului MSR.

    Scratch Register

    Acest registru nu este utilizat pentru comunicaie; poate fi utilizat pentru memorareatemporar a unui octet.

    3.12. Aplicaii

    3.12.1. Rspundei la urmtoarele ntrebri:

    a. Care este deosebirea dintre unitatea de msur a vitezei de modulaie i cea a vitezei de

    comunicaie?b. Cum se poate asigura sincronizarea ntre ceasul receptorului i ceasul transmitorului n cazul

    unei comunicaii sincrone?

    c. Cum se poate asigura corectitudinea blocurilor de date transmise n cazul unei comunicaiisincrone?

    d. Care este funcia fiecruia din urmtoarele semnale ale interfeei seriale:DTR, DSR, RTSiCTS?

    e. Descriei protocolul utilizat pentru controlul fluxului de date prin metoda hardware n cazulunei legturi seriale directe ntre dou echipamente (fr modemuri i linie telefonic).

    3.12.2. Scriei o funcie care transmite un caracter prin portul serial COM1. Utilizai aceast

    funcie pentru scrierea unui program care transmite un ir de caractere prin portul serialCOM1

    .Conectai un cablu serial inversor ntre porturile COM1 ale dou calculatoare. Verificai parametriisetai de sistemul de operare pentru portul serial al calculatorului utilizat ca transmitor. Lansai nexecuie programulHyperTerminalpe calculatorul utilizat ca receptor i creai o conexiune cu aceiaiparametri ca i cei ai portului serial transmitor. Lansai apoi n execuie programul de transmisie iverificai funcionarea acestuia urmrind caracterele afiate n fereastra programuluiHyperTerminal.

    3.12.3. Scriei o funcie care recepioneaz un caracter prin portul serial COM1. Utilizaiaceast funcie pentru scrierea unui program care recepioneaz un ir de caractere prin portul serialCOM1. Programul va afia pe ecran fiecare linie recepionat, terminat cu caracterul CR (0Dh), i se

  • 8/6/2019 Portul Serial

    24/24

    Sisteme de intrare/ieire24

    va termina atunci cnd se recepioneaz caracterul ESC (1Bh). Conectai un cablu serial inversor ntreporturile COM1 ale dou calculatoare. Verificai parametrii setai de sistemul de operare pentru portulserial al calculatorului utilizat ca receptor. Lansai n execuie programul HyperTerminal pecalculatorul utilizat ca transmitor i creai o conexiune cu aceiai parametri ca i cei ai portului serialal calculatorului receptor. Lansai apoi n execuie programul de recepie i verificai funcionareaacestuia introducnd linii de text n fereastra programuluiHyperTerminal.

    3.12.4. Modificai programul de recepie scris pentru aplicaia 3.12.3 astfel nct acesta stransmit napoi (n ecou) fiecare caracter recepionat la portul serial COM1. Verificai funcionareaprogramului ntr-un mod similar cu procedura descris la aplicaia 3.12.3.

    3.12.5. Conectai dou calculatoare printr-un cablu serial inversor. Utilizai programul detransmisie scris pentru aplicaia 3.12.2 i programul de recepie scris pentru aplicaia 3.12.3 pentrutransmiterea unui ir de caractere de la unul din calculatoare la cellalt. Calculatorul receptor va afiape ecran irul de caractere recepionat.

    3.12.6. Scriei o funcie pentru iniializarea portului serial COM1 cu urmtorii parametri:debitul binarde 19.200 bii/s, lungimea caracterelor de 8 bii, fr bit de paritate, 1 bit de stop.

    Bibliografie

    [1] Baruch, Z., Sisteme de intrare/ieire, ndrumtor de lucrri de laborator, Editura U.T.PRES,Cluj-Napoca, 1998.

    [2] National Semiconductor Corp., PC16550D Universal Asynchronous Receiver/Transmitter withFIFOs, 1995, www.national.com/ds.cgi/PC/PC16550D.pdf.

    [3] Peacock, C., Interfacing the Serial / RS232 Port, Beyond Logic, 2005,http://beyondlogic.org/serial/serial.htm.

    [4] Rosch, W. L.,Hardware Bible, Sixth Edition, Que Publishing, 2003.

    [5] Strangio, C. E., The RS232 Standard, CAMI Research Inc., Lexington, Massachusetts,2003-2005, http://www.camiresearch.com/Data_Com_Basics/RS232_standard.html.

    [6] *** RS-232, Wikipedia, The Free Encyclopedia, 2005, http://en.wikipedia.org/wiki/V.24.