Articole similare

Comunicatii seriale

Cuprins:
  1. Transmisia seriala - date, semnale si temporizari
  2. Sincronizare - frecventa si faza
  3. Codificarea datelor si controlul erorilor - paritate, sume de control, coduri Hamming si CRC-uri
  4. Controlul fluxului de date - metode hardware si software
  5. Circuitul UART 16550 - RS232
  6. USB - Universal Serial Bus
  7. Modem-uri
  8. Medii optice de transmisie seriala

Transmisia seriala - date, semnale si temporizari

Transmisia digitala de date a evoluat de la conexiunea intre un calculator cu echipamentele periferice, la calculatoare care comunica in retele internationale complexe. Mai sunt insa multe de invatat de la simpla legatura punct la punct, sau RS232 dupa standardul EIA. Cu toate ca transferul paralel este mai rapid, majoritatea transmisiilor de date intre calculatoare sunt facute pe cale seriala pentru a reduce costul cablului si conectorilor. Exista si limitari fizice de distanta, care nu pot fi depasite de magistrale paralele. In comunicatia seriala, datele sunt transmise bit cu bit. Toate comunicatiile sunt caracterizate de trei elemente principale:

  • Date - intelegerea lor, scheme de codificare, cantitate
  • Temporizari - sincronizarea intre receptor si emitator, frecventa si faza
  • Semnale - tratarea erorilor, controlul fluxului si rutare

Sincronizare - frecventa si faza

Este necesar un mecanism care sa permita receptorului sa citeasca corect bitul curent de intrare la jumatatea duratei lui. Receptorul trebuie sa stie durata unui bit si de unde incepe bitul respectiv, adica trebuie sa cunoasca frecventa si faza secventei de date. Daca emitatorul si receptorul au acelasi semnal de tact, sincronizarea este perfecta; emitatorul scrie bitul pe frontul crescator al tactului, iar receptorul citeste bitul pe frontul coborator al tactului. Problemele apar cand receptorul si emitatorul nu au un semnal de tact comun. Daca duratele celor doua semnale de tact, pentru emitator si receptor, nu sunt egale, apare o decalare, care dupa un anumit numar de biti rezulta intr-o eroare. Pentru a evita aceasta, receptorul trebuie resincronizat regulat la nivel de bit. Din alte motive, trebuie resincronizate si inceputul unui caracter, pachet sau mesaj. In figura de mai jos, in primul caz, fiecare bit este citit la mijlocul duratei lui, iar in cazul al doilea, bitul 4 se pierde deoarece tactul receptorului este prea incet.

Daca emitatorul si receptorul au acelasi semnal de tact atunci se spune ca lucreaza in mod Sincron. Altfel, daca au semnale de tact separate, atunci lucreaza in mod Asincron.

In modul Asincron, emitatorul nu trimite un tact deodata cu datele, ci insereaza un pseudo-impuls de tact, cunoscut ca Bit de Start, in fata fiecarui octet transmis. Astfel, pentru fiecare caracter ASCII avem o transmisie independenta, cu adaugarea bitilor de Start, Stop si Paritate. Viteza de lucru se stabileste manual la inceputul transmisiei. Pentru informatia de faza, receptorul trebuie sa detecteze inceputul bitului de Start. Pentru ca aceasta metoda sa functioneze, trebuie sa existe, o perioada de liniste intre caractere, realizata cu bitul de Stop.

In modul Sincron, caracterele sunt transmise rapid, unul dupa altul, fara biti de Start si de Stop. Pentru sincronizare, mesajul transmis este precedat de caractere speciale de sincronizare, detectabile de circuistica receptorului. Acestea sunt transmise incontinuu si cand nu sunt date de transmis. Transmisiile in mod sincron pot folosi scheme de inteligente de modulare, care se bazeaza pe circuistica suplimentara, iar semnalele de date si tact folosesc aceeasi pereche de fire. Aceasta metoda, cunoscuta sub numle de codificare Manchester, este folosita in retele Ethernet.

O metoda sincrona alternativa este folosita pentru transmsii seriale rapide non-caracter, orientate pe bit. Protocoale care folosesc aceasta metoda permit transferul de date la viteze mari. Un astfel de protocol este si protocolul HLDC.

Codificarea datelor si controlul erorilor

Erorile pot apare cand circuistica folosita pentru conexiune este afectata de zgomot (interferente electrice) cum ar fi: lampi fluorescente, comutarea unor motoare mari, etc& Aceste varfuri sunt induse in firele de comunicatie care se comporta ca niste antene. Deoarece tensiunile cu care se lucreaza in calculatoare sunt mici, efectul pe care i-l are acest zgomot este important. Circuistica respectiva trebuie sa fie imuna la aceste zgomote.

Canalele moderne de comunicatie sunt din ce in ce mai fiabile. Metodele de detectie si corectie a erorilor se indreapta spre domeniile CD-ROM-urilor si DVD-urilor. Toate aceste metode implica introducerea de informatie neesentiala, pe langa date utile, in transmisia datelor. Exista mai multe metode care merita sa fie studiate:

  • Biti de paritate - simplu de aplicat , nu ofera siguranta mare
  • Sume de control la nivel de bloc - simplu de aplicat , nu ajuta prea mult
  • Impartire polinomiala - mai complicat de calculat, ofera securitate

De exemplu, receptorul trimite inapoi o copie a datei primite. Acest mecanism injumatateste latimea de banda folosita. O alternativa ar fi ca emitatorul sa trimita data urmata de o copie a acesteia.

Toate metodele de tratare a erorilor folosesc informatie redundanta. De cele mai multe ori, aceste informatii sunt codificate inainte de transmisie.

Paritatea este cea mai discutata metoda de detectie a erorilor pentru protectia transmisiilor seriale de caractere ASCII. La oricare din metode, emitatorul prelucreaza o parte din date si genereaza un fel de semnatura pe care apoi o transmite impreuna cu date utile. Cand mesajul ajunge la receptor, acesta prelucreaza datele primite si genereaza o semnatura pe care o compara cu cea primita. Daca cele doua semnaturi nu coincid, atunci s-a produs o eroare. Metoda bitului de paritate se poate aplica pentru date binare de orice lungime. Pentru fiecare cuvant este adaugat un bit de paritate (semnatura). Paritatea poate fi para (cuvantul contine un numar par de 1) sau impara (cuvantul contine un numar impar de 1). Calcularea paritatii se poate face cu operatorul XOR (SAU Exclusiv) intre bitii cuvantului. Prin aceasta metoda este posibila doar detectia erorii singulare, cand sunt afectati un numar impar de biti. O eroare dubla (afecteaza un numar par de biti) nu poate fi detectata prin acest mecanism. Prin urmare, aceasta metoda nu ofera prea multa securitate. Un singur bit de paritate nu ofera informatii despre pozitia erorii.

Codurile Hamming reprezinta o alta metoda care permite si localizarea erorii prin adaugarea a mai mult de un bit de paritate dupa bitii utili. Este astfel posibila detectia si corectia erorii. Problema este "unde sunt pozitionati bitii de paritate intre bitii utili ?" Raspuns: pentru bitii de paritate se aloca pozitiile care sunt puteri ale lui 2 in cuvantul dat. De xemplu, pentru 4 biti utili avem urmatoarea asezare:

unde D1, D2, D3, D4 sunt biti utili si P1,P2,P3, P4 sunt biti de paritate.

Cu formula d=2p - (p+1) se poate calcula numarul de biti utili (d) acoperiti de un numar (p) de biti de paritate.

Exemplu:

Calcularea bitilor de paritate (sindrom) se poate face prin inmultire de matrici.

(bitii ingrosati sunt selectori pentru bitii de paritate, iar 001 sindrom 4d-3p)

De exemplu, daca bitul 5 este afectat de eroare, la receptie, sindromul recalculat va fi [1 0 1], adica 5 (in zecimal), pozitia bitului eronat. Cuvantul primit poate fi astfel corectat prin inversarea bitului 5. Acest mecanism permite corectia erorii singulare si detectia erorii duble.

Suma de control la nivel de bloc este alt mecanism de detectie a erorilor de transmisie. Prima data este necesar ca datele sa fie impartite in blocuri, care apoi se insumeaza si se obtine o suma care va fi trunchiata, inversata si adaugata la sfarsit. La receptie, blocurile primite, care includ si suma de la sfarsit, se aduna pe masura ce sosesc, si daca suma obtinuta nu este 0 atunci inseamna ca datele sunt eronate si secventa trebuie retransmisa. Nu este posibila corectia erorii. Pentru identificarea erorilor multiple si corectia lor, s-a dezvoltat mecanismul BCH, dar acesta nu va fi prezentat.

O alta metoda de detectie a erorilor este CRC (Cyclic Redundant Check). Si in acest caz se calculeaza o suma de control, dar prin impartire aritmetica. Secventa de biti este impartita cu un numar special ales. Impartirea se face in modulo 2, adica folosind operatorul XOR. Restul impartirii reprezinta semnatura care va fi adaugata la sfarsit, dupa bitii utili. Divizorul se obtine cu algoritmul folosit la codurile Hamming. La receptie, se recalculeaza restul impartirii si daca nu coincide cu cel primit, atunci secventa este eronata.

Performantele acestei metode sunt impresionante. Un CRC care genereaza un rest de 16 biti poate detecta:

  1. toate erorile in rafala de maxim 16 biti
  2. toate numerele impare de biti din eroare
  3. 99.998 % din toate erorile de orice lungime

CRC-ul se poate calcula mai usor prin metode hardware, folosind registre cu deplasare si porti logice XOR.

Controlul fluxului de date - metode hardware si software

Controlul fluxului de date este necesar pentru a preveni erorile de depasire, cand receptorul nu poate prelucra datele care vin cu viteza prea mare. La inceput, datele sunt receptionate corect, dar nu pot fi prelucrate cu viteza cu care alte date sosesc si astfel se umple buffer-ul de receptie, rezultand o eroare de depasire. In acest caz, datele vechi din buffer vor fi inclocuite de date noi, inainte de a fi prelucrate. Pentru a evita aceasta eroare, receptorul trebuie sa poata sa-i ceara emitatorului sa opreasca transmisia pana cand sunt prelucrate toate datele din buffer-ul de receptie (golire). Aceasta facilitate se numeste controlul fluxului de date si este un element esential pentru toate legaturile de comunicatie.

Mecanismul poate fi implementat in mai multe moduri:

  1. Cu ecou - receptorul trimite inapoi la emitator fiecare caracter primit
  2. Hardware - folosind liniile de control RTS/CTS (RequestToSend/ClearToSend)
  3. Software - prin coduri de control ^S/^Q (Stop/Continuare)
  4. La nivel de cadru - prin codurile ACK/NAK (Acknowledge/Negativeacknowledge)

Circuitul UART 16550 - Standardul RS232

La nivelul hardware cel mai de jos al unei comunicatii seriale, cel mai folosit este standardul RS232 sau V24. Acesta presupune un conector D cu 25 sau 9 pini, la care de cele mai multe ori sunt legate doar 3 fire. Un bit de 1 logic este transmis ca aproximativ -9 volti, iar un bit de 0 logic ca +9V.

In standardul RS232 datele se transmit in urmatorul format:

Modul in care un octet furnizat de catre utilizator este serializat si trimis pe linia TxD, respectiv receprecetionat pe linia RxD este invizibil utilizatorului. Aceste operatiuni sunt executate la nivel hardware de portul serial implementat cu circuitul UART 16550 (Receptie si Transmisie Universala in mod Asincron). Toate calculatoarele ofera porturi seriale pentru conectare de modem sau alte echipamente UART. Acest circuit face legatura intre magistrala de date paralela, din interiorul calculatorului, si linia seriala din exterior. Pe linga liniile de date si control, circuitul ofera si linii de semnalizare a erorilor de cadrare, depasire, paritate si semnale de intrerupere pentru a anunta procesorul de sosirea unei date. Porturile seriale pot fi configurate la nivel utilizator prin interfete grafice oferite de sistemul de operare, care permit stabilirea parametrilor unei comunicatii seriale: viteza de lucru, numarul de biti de date, tipul de paritate, modul de control al fluxului de date.

Cupla seriala cu 9 pini (partea de la calculator) are urmatoarea configuratie:

Acest tip de comunicatie este folosit pentru a transmite un semnal digital de la un calculator la un modem, care folosind mai departe alte standarde de comunicatie, transmite semnalul sub forma analogica, pe linia de telefon, spre un alt modem legat la alt calculator. Computerul se numeste DTE (Data Terminal Equipment), iar modem-ul DCE (Data Communications Equipment). In figura urmatoare este ilustrat rolul pe care-l are legatura RS232 in comunicatiile de date.

USB - Universal Serial Bus

USB sau Magistrala Seriala Universala este un nou standard de comunicatie seriala de viteza mica, care are ca scop interfatarea mai usoara intre echipamente periferice si calculator, fara sa fie nevoie sa se instaleze cate o placa PCI pentru fiecare periferic nou, fara configurare manuala sau necesitatea restartarii sistemului. Latimea de banda a portului USB este de 1.5 Mo/s, impartita intre maxim 127 de dispozitive atasate. Cablul de comunicatie are 4 fire din care doua sunt de date si doua pentru alimentare (5V si 0V). Pentru a face mai usoara interconectarea intre echipamate, se folosesc conectori standard Master si Slave. Lungimea cablului este de maxim 5m. Acesta are la un capat conectori de tip A, pentru conectarea la calculator (master) si la celalalt conectori de tip B, petru conectare la periferic (slave).

Standardul USB foloseste o conexiune de tip arbore in care sunt prezente urmatoarele elemente: USB Host (sau gazda), USB HUB (sau dispozitiv de rutare) si unitati functionale conectate (periferice). Host este in general calculatorul (radacina arborelui), la care se pot lega doua sau mai multe HUB-uri (doua HUB-uri pe port USB) sau direct periferice. La un HUB se pot conecta alte HUB-uri sau direct periferice.

USB foloseste un protocol master - slave. Hub-ul radacina adreseaza toate dispozitivele conectate, cu un cadru de sinconizare la fiecare milisecunda. Acesta constituie un cadru de comunicatie, in care dispozitivul Master poate trimite date la un Slave, sau poate cere date de la acesta. Exista 4 tipuri de cadre care pot fi folosite intr-o comunicatie: de control, izocrone, simple (neizocrone) si de intreruperi. Un cadru poate contine mai multe pachete de date de intrare sau iesire. Fiecare cadru incepe cu un pachet SOF (inceput de cadru). Pachetele de date pot contine pana la 64 octeti de informatie utila. Fiecare pachet incepe cu un octet de sincronizare si se termina cu un octet CRC pentru detectarea erorilor.

Modem-uri

Modem-ul este folosit intr-o conexiune Dial-Up pentru a permite calculatoarelor sa comunice la distante mari prin intermediul retelei telefonice publice. Un modem tipic permite o viteza de comunicatie inte 300 si 56000 bps (bauds pe secunda).

Liniile telefonice lucreaza cu semnale analogice, cel putin la nivelul bucllor locale. Dar calculatoarele lucreaza cu semnale digitale. Apare deci o problema de conectare. Aici intervine modem-ul, care se conecteaza intre calculator si linia telefonica. Numele de modem provine din termenii modulare-demodulare. Modem-ul converteste nivelele logice de 0 si 1, prezente in calculator, in diferite tonuri. Frecventa tonurilor trebuie sa apartina spectrului vorbirii (300 - 3400 Hz) pentru a putea fi transmise pe liniile telefonice. Exista doua moduri de a face converisa. Un singur ton reprezinta 1 logic, iar nici un ton reprezinta 0 logic. Penru al doilea mod, 1 si 0 logic sunt reprezntate prin tonuri diferite (FSK). Pentru a permite comunicatia in amble directii simultan (full-duplex), se folosesc 4 tonuri diferite, cate doua pentru ficare directie.

Modem-urile trebuie sa rezolve si urmatoarele probleme de interconectare: tensiunile folosite de un port serial RS232 sunt de +/-9V, in timp ce linia telefonica foloseste tensiuni de 0/-50V; canalele telefonice de voce sunt limitate electronic sa lucreze la frecventa maxima de 4 KHz, iar un port serial lucreaza in general la 9.6 kbps, necesitand un canal de 19.2 KHz. Modem-ul trebuie sa faca conversia de la linia telefonica de 2 fire la linia seriala RS232 de 4 fire si sa implementeze un mecanism complex de detectie si corectie a erorilor. Pentru a imbunatati rata de transfer se folosesc mecanisme de compresie a datelor. Astfel, se pot obtine viteze de transfer de 56 kbps. Pentru modularea purtatoarei pe linia telefonica, modem-urile moderne folosesc tehnici complexe de modulare in amplitudine si faza care sunt prezentate schematic mai jos:

  1. modulatia in amplitudine (AM) nu se foloseste in transmisiile de date, deoarece e foarte sensibila la zgomot am
  2. modulatia in frecventa (FM) este des folosita deoarece are o toleranta mare la zgomot fm
  3. modulatia in faza (PM) faza semnalului sinusoidal se schimba in functie de valoarea logica a semnalului digital pm

    Daca pentru un bit de 1 logic, faza se schimba cu 180�, iar pentru un bit de 0 logic cu 0� (nu se schimba), atunci pentru fiecare slot de timp se transmite un bit de informatie. Daca faza se schimba cu multiplii de 90�, atunci se pot transmite doi biti simultan in alelasi slot de timp. Aceasta tehnica de modulatie este prezentata in figura urmatoare:

    qam
  4. modulatia in amplitudine si faza (QAM) este folosita de modem-urile de mare viteza. In aceasta tehnica de modulatie se schimba simultan si amplitudinea si faza semnalului.

Mediii fizice pentru transmisia seriala

In mod uzual, mediul fizic de transmisie este bazat pe fire de cupru, acesta fiind si cazul standardului RS232 prezentat anterior. Comunicatiile seriale pot folosi si alte medii de transmisie, cum ar fi: fascicole de raze infrarosii sau laser in aer sau conduse prin fibra optica, ultrasunete, microunde sau radiofrecventa. In continuare sunt prezentate trei domenii in care comunicatia se face prin modularea luminii.

Telecomenzi in infrarosu

Telecomanda permite controlul de la distanta al unui dispozitiv, in cazul de fata apart electronic de uz casnic (televizor, videorecorder, combina muzicala, climatizator, etc...). Astazi, cele mai folosite sunt telecomenzile in infrarosu, care folosesc ca suport fizic pentru transmiterea datelor, un fascicol de raze infrarosii provenit de la o dioda LED care lucreaza in spectrul respectiv.

O astfel de telecomanda are un microcontroler care citeste o minitastatura si in functie de butonul apasat, emite un cod sub forma unui semnal digital pe o linie seriala. Semnalul moduleaza fascicolul infrarosu emis de LED.

Exista mai multe tipuri de codificare si modulare a fascicolului infrarosu. Una din cele mai folosite este codificarea RC5. Aceasta presupune transmiterea seriala a bitilor de cod cu urmatorul format pe 14 biti:

Bitii A0-A4 se numesc biti de adresa si selecteaza dispozitivul caruia ii este adresata comanda. Bitii C0-C5 se numesc biti de comanda si reprezinta comanda propriuzisa la care trebuie sa reactioneze dispozitivul comandat. Pentru reprezentarea valorilor de 1 si 0 logic se foloseste codificarea Manchester.

Astfel, un bit de 1 logic este reprezentat printr-o tranzitie din starea High in starea Low a semnalului electric, iar un bit de 0 logic printr-o tranzitie din starea Low in starea High. Aceasta este o modulatie in impuls. Semnalul astfel obtinut, moduleaza dioda LED. Durata unui bit este de 1,8 ms. Se poate calcula durata unui cod: 1.8ms/bit X 14 biti = 25,2 ms/cod. Intre doua coduri succesive exista o pauza de 114 ms. La prima apasare unui buton de pe telecomanda se trimit automat doua coduri identice corespunzatoare butonului. Daca dupa terminarea transmisiei, butonul este mentinut apasat in continuare, se va trimite incontinuu cate un cod urmat de pauza, pana cand butonul nu mai este apasat. Bitii de Start au rol de sincronizare, iar bitul de Control isi schimba starea la fiecare apasare a aceluiasi buton. Alte tipuri de telecomenzi folosesc modulatia in durata. In aceasta tehnica, inceputul fiecarui bit este marcat de un impuls de scurt; un bit de 1 logic este reprezentat de o durata mai mica intre doua impulsuri, iar un bit de 0 logic de o durata mai mare intre doua impulsuri.

In toate cazurile, semnalul electric de la iesirea microcontrolerului este o purtatoare modulata cu tehnicile descrise mai sus, adica un impuls este reprezentat de un burst cu frecventa de 36-56 KHz.

IrDA (Infrared Data Asociation)

IrDA defineste un set de standarde care specifica felul in care se transmit datele, fara fir, prin intermediul radiatiei infrarosii. Specificatiile IrDA se refera atat la dipozitivele fizice implicate in comunicatie, cat si la protocoalele folosite. Dispozitivele IrDA comunica folosind LED-uri cu emisie in infrarosu cu lungimea de unda de 875 nm.

Conform standardul IrDA 1.0, distanta la care se comunica este de maxim 1 m la lumina zilei (10 Klux) si un unghi de deflexie de 15 grade. Viteza de transmisie variaza intre 2400 si 115200 bps. Semnalul emis este modulat in impuls si are o durata de 3/16 din durata unui bit. Formatul unui cadru IR este acelasi cu formatul unui cuvant emis de portul serial asincron. Un impuls IR reprezinta 0 logic, iar lipsa lui reprezinta 1 logic.

Se pot obtine viteze de 4 Mbiti/s folosind tehnica de modulatie 4PPM, care presupune un impuls cu 1/4 din durata unui bit, pozitionat in una din cele 4 pozitii posibile, codificand astfel 2 biti de date intr-un singur impuls IR. Un astfel de pachet foloseste un cod CRC pe 32 de biti.